Repository navigation
Commit 68ffa5d
Part of #23050
Clause-②: no
Slice 9 of the `rest-server.ts` split, by slice 1's pattern (landed note
`6136102437`, steps 1–6), slice 2's getter refinement (`6189011700`) and
slices 3–8's shape (PR #23670, PR #23705, PR #23719, PR #23729, PR
#23763, PR #23882): the body of `RestServer#registerSearchEndpoints`
(`GET {basePath}/search`, the cross-object search door onto the
protocol's `searchAll`) moves to ONE new module,
`packages/rest/src/search-routes.ts`. Routes, the ordered registrations,
every handler's source digest, the published `dist/*.d.ts` and both
bundles' export lists are byte-identical, and every reader whose reading
included a moved line now reads it where it is, with its sum unchanged.
**No token of the body changed.** The body calls no class `static` (AST
walk below), so the `static` exception (seat ruling `6205442867`) is not
used. It reads no provider field either, so the seat's provider ruling
(`6215084478`) does not apply: nothing in the host is a getter.
`rest-server.ts` goes from 10,047 to 9,995 lines (base `d5666be876`).
The card stays open for the later slices; #23050 remains open after this
PR.
## The pattern, applied
**Members the moved body reads**, from an AST walk of the method
(TypeScript compiler API, symbol-resolved, base `d5666be876`):
`registerSearchEndpoints` (JSDoc `:8993`, method `:8997`-`:9063`, body
`:8998`-`:9062`, 65 lines).
| kind | member | reads | class declaration |
|---|---|---|---|
| field | `routeManager` | 1, the `register` call (`:8999`) | `:2024`,
private |
| method | `resolveProtocol` | 1 (`:9005`) | `:2402`, private async |
| method | `resolveExecCtx` | 1 (`:9006`) | `:2870`, private async |
| method | `enforceAuth` | 1 (`:9007`) | `:2470`, private |
No bare `this`, no element access on `this`, no `this`-rebinding
`function`, and no `RestServer.NAME` access (static reads: none). The
seat's text count (the same four members, one read each) is confirmed.
**Control walk** (the same walker, same base, on the neighbouring
methods): `resolveSecurityService` (`:8976`, just above) reads
`kernelManager` ×2, `resolveRequestEnvironmentId` ×1 and
`securityServiceProvider` ×2, which is what its source says; the
`registerEmailEndpoints` stub (`:9084`, just below) reads
`emailServiceProvider`, `enforceAuth`, `resolveExecCtx` and
`routeManager` once each, slice 8's host literal.
**Module-level reads** (uses outside the method counted by the same
walk):
- `GLOBAL_SEARCH_PARAMS` (`:661`, 0 other uses),
`UNDECLARED_WHOLE_NUMBER_PARAM` (`:767`, 2) and
`readDeclaredQueryNumber` (`:832`, 5): declared in `rest-server.ts` and
**already exported** there; the module imports them from
`./rest-server.js`. One declaration each, never a copy. No `export` was
added anywhere.
- `refuseUnknownQueryParams` (`./query-allowlist.js`, 11 other uses),
`refuseRepeatedQueryParams` (`./query-multiplicity.js`, 14),
`mapDataError` and `logUnexpectedRouteError` (`./error-response.js`, 8
and 6): still used in `rest-server.ts`, so every import stays; the
module imports the same names from the same modules. No import moved.
**Host shape (slice 1's shape B):** `SearchRouteHost` (4 members) lists
exactly the members the body reads, each typed `RestServer['m']`. The
class keeps the private method with its name, docblock and position; its
body is now a host literal plus `registerSearchEndpoints.call(host,
basePath)`. Methods go as late-bound closures, `(...a) => this.m(...a)`.
The call site in `registerRoutes`' `registerForBase`
(`this.registerSearchEndpoints(bp);`, `:4806`, under `api.enableSearch`)
is unchanged.
**Fields, checked one by one:**
| field | read when | reassigned after registration? | handed over as |
|---|---|---|---|
| `routeManager` | registration only (one `register` call, a top-level
statement of the body) | its one swap (`:5177` / `:5181` at base) wraps
`registerMetadataEndpointsInner`, not this registrar | value |
No other field is read. The protocol the door searches is resolved per
request by `resolveProtocol`, a method, so no getter is owed.
**Late binding, measured** (a one-off vitest file, copied in, run under
the verify lock, deleted; not committed): a source `RestServer`
registers its routes, the door is driven once, then `resolveProtocol`,
`resolveExecCtx` and `enforceAuth` are replaced ON THE INSTANCE after
`registerRoutes()` and the door is driven again.
- head: `MEASURE before: 200 {"hits":["early"]} | after: 200
{"hits":["late"]} | seen early:early-user,late:late-user | late
enforceAuth calls 1`, `Tests 1 passed (1)`.
- ablation through `scripts/ablation-replace.mjs`: the search host
literal's `resolveProtocol: (...a) => this.resolveProtocol(...a),`
replaced by `resolveProtocol: this.resolveProtocol.bind(this),` (a
three-line anchor naming the literal; anchor 1 → 0, blob `1c7f7e45a921`
→ `507220e525a3`): `after` stays `{"hits":["early"]}`, `Tests 1 failed
(1)`. Restored by the tool: blob `1c7f7e45a921` equals `HEAD`, `git diff
HEAD` empty.
- base leg (base `rest-server.ts`, blob `2ba4159180`, restored into the
tree under a trap, then `git checkout HEAD` with blob and diff proof):
the same answers as the head, `Tests 1 passed (1)`.
## Proof of move-only
- **`.d.ts`:** `packages/rest/dist/index.d.ts` and `index.d.cts` built
at base `d5666be876` (this worktree, before any edit), at the move
commit `6a57870fe` and at the merge head `06bd4fcbc` are byte-identical:
sha256
`7489de84bc6feccb7cb1f28bcbe4a97775324959c61c9bfc35e8a8c45a6f3bc9` for
all, `cmp` silent. The head bundle carries a head-only marker
(`registerSearchEndpoints.call`: 2 hits in `index.js`, 0 at base), so
the declaration was rebuilt from the moved source, not replayed.
`SearchRouteHost` and `search-routes` appear 0 times in the `.d.ts`;
`private registerSearchEndpoints;` is still there. `src/index.ts` is
untouched.
- **Export lists:** the base and merge-head ESM and CJS bundles each
load with 39 exports and one sorted export-name list (sha256
`b3246be6a1718700…` on all four). No search-module name is among them.
- **Routes:** a source `RestServer` on a recording mock server, with a
protocol that answers every member, dumped under slice 7's seven configs
(default; scoped-optional; scoped-required; every provider set;
`enableDiscovery: false`; `enableOpenApi: false`; both off under
scoped-optional) plus an eighth, `enableSearch: false` under
scoped-optional. Each dump holds `getRoutes()` (functions as arity), the
ordered server registration calls, a whitespace-free sha256 of every
handler's source, and the source itself.
- **32 of 32 dump files byte-identical**, base `d5666be876` vs merge
head `06bd4fcbc` (`diff -r` exits 0). default 75 routes (1 search door),
scoped-optional 150 (2), scoped-required 75 (1), every-provider-set
equals default, discovery-off 73 (1), openapi-off 73 (1),
both-off-scoped-optional 142 (2), search-off-scoped-optional 148 (0). A
second base run was identical to the first.
- Because no token changed, every handler digest is identical, the
search door's included, with no mapping.
- **The handler digest can fail:** a positive control added one
character to the moved handler (`'Search not supported by this
protocol'` → `…protocol!'`, through `ablation-replace.mjs`; anchor 1 →
0, blob `7161079aedd6` → `d2a5eb7f70dd`). Routes and calls were
unchanged in all eight configs, and the handler digests differed in
exactly the search door of each mounted base (`GET /api/v1/search`, and
`GET /api/v1/environments/:environmentId/search` where scoped), nothing
else, and nothing under `enableSearch: false`. Restored, blob
`7161079aedd6` equals `HEAD`.
- **Moved body:** base `rest-server.ts` lines 8998-9062, one 4-space
indent removed, against `search-routes.ts` lines 74-138: `diff` exits 0
(65 lines). The body has no empty line, no trailing whitespace, and its
one template literal (`${basePath}/search`) sits on one line; every
other backtick in the range is in a line comment.
- **Moved-line accounting:** `git diff --color-moved=plain
--color-moved-ws=allow-indentation-change` base → `6a57870fe` over the
two files: all 65 deleted lines are detected as moved. `rest-server.ts`
is +13 / −65 in the whole PR: the stub body (host literal plus `.call`,
11 lines in place of 65) and the module's import with its comment (+2).
## Readers re-pointed (sums unchanged, no gate loosened)
`packages/rest/src/rest-server-registrar-files.ts` gains
`search-routes.ts` with a `[#23050 slice 9]` comment (length 9 → 10).
Every reader that pins its length re-reads its number:
| reader | sum over the list | change |
|---|---|---|
| `rest-server-query-number-census.test.ts` | 9 = 8 + 1 + 0 ×8 | the
search body READS its two caps through `readDeclaredQueryNumber`, never
coerces one; length 9 → 10 |
| `rest-server-canonical-query-ast.test.ts` (`repo` project) | 4 = 1 + 3
+ 0 ×8 `query:` slots | floor `search-routes.ts: 0`; length 9 → 10 |
| `meta-draft-read-door-census.test.ts` | 8 = 6 + 0 + 0 + 0 + 0 + 2 + 0
+ 0 + 0 + 0 | the search body reads no draft; length 9 → 10 |
| `rest-server-docblock-position.test.ts` | floors 4 + 3 + 3 + 8 + 3 + 8
+ 5 + 3 + 3 = 40 | floor `search-routes.ts: 3` (header, host interface,
function; the body held no TSDoc block); `rest-server.ts` keeps 164
blocks, floor 100; length 9 → 10 |
| `execctx-consumer-census.test.ts` | 62 sites = 23 + 9 + 5 + 7 + 8 + 1
+ 5 + 2 + 1 + 1 | the search site is BARE and guarded on its next line,
as before (46 bare / 16 caught unchanged). Mentions 117 → 121: the seam
once (forwarder ×2 in `rest-server.ts`, interface member ×2 in the
module); `rest-server.ts` 58 → 59. Forwarders 11 = (10 − 1) + 3 − 1;
neither map gains an entry |
| `ui-view-route-identity.measurement.test.ts` /
`ui-view-route-tenancy.measurement.test.ts` | `this.enforceAuth(` 58,
`this.resolveExecCtx(` 73 over the list (57 / 72 before, +1 each for the
search literal's forwarders); ownership guard 1 | length 9 → 10 |
| dogfood `authz-conformance.test.ts` (realtime tripwires) | 0 hits over
the ten files | length 9 → 10 |
| dogfood `authz-probe-blind-spot.census.ts`, `rest-server.ts` row | 70
/ 19 / 51 unchanged; `this.routeManager.register(` 63 = 21 + 9 + 5 + 7 +
8 + 1 + 6 + 4 + 1 + 1; `private register*Endpoints(` 16 | new control
`search-routes.ts: this.routeManager.register(` 1; `registrar list
length` 10; `enforceAuth` 100 → 104 re-anchored (the one call site moved
and is counted in both readings; the four new occurrences are the seam
once; no call site added); `populationRule` names the new module |
The module header names none of the three closures in prose, so no
census that counts those spellings reads a comment as a seam (a second
commit, `6a57870fe`, reworded the first draft's header for exactly that
reason).
Readers outside the list:
- `scripts/check-route-envelope.mjs` (a gate's target paths,
`domain:spec`): `search-routes.ts` is discovered by the `*-routes.ts`
convention and declared `dialectOnly` with ratchet #9559, as the eight
earlier modules are, at its measured `stringError 0` / `siblingCode 0`.
Its one hand-built refusal, the 501 `{ code: 'NOT_IMPLEMENTED', message
}`, has no `error` key, and its catch sends `mapDataError`'s computed
body, so neither rule counts it. `rest-server.ts` stays 16 / 14, so the
sums 16 + 13 + 8 + 1 + 0 + 0 + 0 + 0 + 1 + 0 = 39 and 14 + 15 + 8 + 9 +
4 + 1 + 0 + 0 + 3 + 0 = 54 are unchanged (the gate compares both counts
exactly, in both directions). Its output differs from `origin/main` only
by the new row (19 → 20 modules, 10 → 11 ratcheted). `--self-test`
green.
- No new ADR anchor: the body cites no `ADR-NNNN Dk`, and
`check-adr-anchors` output is identical at `origin/main` and head (1770
decision-letter citations).
- No platform-checklist anchor names the search registrar;
`check:platform-checklist` output is identical at `origin/main` and
head.
**Red before the re-points**, each measured with the move in place
(`6a57870fe`, the readers at their base text): `@objectstack/rest`
`local` read `Test Files 6 failed | 280 passed (286)`, `Tests 7 failed |
5887 passed | 326 skipped (6220)` (six length pins and the docblock
pin's unfloored new module); `rest-server-canonical-query-ast.test.ts`
(`repo`) read `Tests 2 failed | 244 passed | 10 skipped (256)`; the
dogfood pair read `Tests 2 failed | 106 passed (108)` (the realtime
tripwire's length pin, and `control "registrar list length" moved …
expected 10 to be 9`). `tsc --noEmit` was clean, but
`check:test-typecheck` found 2 type errors, the two typed floor tables
without the new module. `check:route-envelope` (at `e8386a523`) read
`search-routes.ts NOT DECLARED` (MODULES and EXPRESS_RESPONSE_MODULES).
Each is green after the re-point.
## Readers examined and not re-pointed
- **`packages/spec` (stopped at, per the dispatch, not edited):** no
reader there includes a moved line.
`packages/spec/liveness/rest_api.json` cites
`rest-server.ts#registerRoutes` for the `if
(this.config.api.enableSearch)` gate, the call site that did not move.
`packages/spec/src/api/rest-server.zod.ts` (about `:154`) and
`packages/spec/src/system/core-services.zod.ts` (about `:153`) name the
method without a file, and the method still registers the door.
`check:liveness` output is identical at `origin/main` and head.
- `packages/metadata-protocol/src/protocol.ts` (about `:8304`, another
lane's comment) says "`registerSearchEndpoints`
(packages/rest/src/rest-server.ts) 501s exactly when `typeof
protocol.searchAll !== 'function'`". The 501 line now lives in
`search-routes.ts`; the method of that name still registers the door. No
gate reads the comment. Not edited.
- `rest-server.ts`' `UNDECLARED_WHOLE_NUMBER_PARAM` docblock lists `GET
/search` among the doors "in this file"; the export (slice 1) and
approvals (slice 3) doors it names left earlier. A module-level const
the package entry does not re-export, so not in the `.d.ts`;
pre-existing deixis. Not edited.
- `GLOBAL_SEARCH_PARAMS` stays declared in `rest-server.ts`, where the
ruling keeps helpers; it now has no use in that file (its readers are
the module and `rest-server-closed-query-params.test.ts`, both importing
it from `./rest-server.js`).
- Prose that names the method or the door without a file, still true:
`discovery-routes.ts` (about `:392`),
`discovery-search-capability-agreement.test.ts`,
`query-multiplicity.ts`, `rest-route-ledger.ts` (by route).
- `docs/audits/2026-06-record-search-liveness.md` cites
`rest-server.ts:3309`, a dated audit line outside the moved range.
Released `CHANGELOG.md` text: not edited.
- Gates that walk `packages/rest/src` reach the moved code in its new
file: their outputs at `origin/main` and head differ only by the one
scanned file (`check-meta-type-normalized` 37 → 38,
`check-dispatcher-error-vocabulary`, `check-error-status-conformance`,
`check-undeclared-dep-imports`), `check-affected-docs` (route sources 27
→ 28, registration call sites 22 → 23, by the `*-routes.ts` convention),
and `check-scripts-symbol-anchors` (+4 file-level anchors, the gate's
new comments). Identical: `check-single-authz-resolver`,
`check-system-context-census`, `check-rest-log-declared`,
`check:rest-log-spy-declared`, `check-durability-degradation-log-level`,
`check-filter-alias-parity`, `check-adr-anchors`,
`check-adr-symbol-anchors`, `check:platform-checklist`,
`check:liveness`.
- No `rest-server.ts:NNNN` line citation in a gated document falls in
the moved range (`:8993`-`:9063`).
## Acceptance notes
- `objectql-slot-consumer-census.test.ts` (slice 8's extra reader) is
not touched: the search body reads no provider slot, and it stays green.
- The moved `[#7606]` comment's pointer ("same order and same envelope
as the export route — see `query-allowlist.ts`") still reads true; the
export route lives in `data-action-routes.ts`.
## Gates and tests
Measured at this branch: base `d5666be876`, the move `e8386a523` plus
its header wording `6a57870fe`, the re-points `0ba4e5617`, and one merge
of `origin/main` `b9dbc3d89` (`06bd4fcbc`: six commits in cli, runtime,
plugin-security, spec, lint tests and scripts; no file in this diff).
All builds and tests went through `os-verify-lock`. Every exit code was
captured to a file before any pipe. **Final head: `06bd4fcbc`.**
- `pnpm install --frozen-lockfile` exit 0; `pnpm
--workspace-concurrency=2 --filter '@objectstack/rest...' --filter
'@objectstack/verify...' build` exit 0 at base and at the merge head;
then `pnpm turbo run build --concurrency=2`, the whole workspace, exit 0
(`Tasks: 76 successful, 76 total`), after which the `@objectstack/rest`
`.d.ts` / `.d.cts` still equal base.
- `pnpm --filter @objectstack/rest typecheck`: exit 0 (`tsc --noEmit`,
then `check:test-typecheck`: 0 file(s) / 0 error(s)).
- `pnpm --filter @objectstack/rest exec vitest run --project local
--maxWorkers=2`: Test Files 286 passed (286), Tests 5894 passed / 326
skipped (6220).
- `pnpm --filter @objectstack/rest exec vitest run --project repo
--maxWorkers=2`: Test Files 5 passed (5), Tests 246 passed / 10 skipped
(256).
- `pnpm --filter @objectstack/dogfood exec vitest run
test/authz-probe-blind-spot.test.ts test/authz-conformance.test.ts`:
Test Files 2 passed (2), Tests 108 passed (108).
- `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack`, no paths, at `06bd4fcbc` (stderr names that
commit; the `--repo` assertion holds; 13 paths against merge base
`b9dbc3d89`, 350 changed lines): 78 commands, all run at `06bd4fcbc`
after the whole-workspace build, every one exit 0. `--ran`: `Run
reconciliation — 78 derived, 78 run, 0 NOT-MEASURED, 0 UNRUN.` Among
them: `pnpm check:route-envelope`, `pnpm --filter @objectstack/spec run
check:liveness`, `pnpm check:durability-log-level`, `pnpm
check:dispatcher-error-vocabulary`, `pnpm check:dts-closure`, `pnpm
check:dual-build-cjs-loads`, `pnpm check:published-files`, `pnpm
check:cross-package-test-inputs`, `pnpm check:nul-bytes` and `pnpm
check:pm-dispatch-gates`. `check-adr-anchors` and
`check-platform-checklist` (not derived) also ran: exit 0, output
identical to `origin/main`.
- `origin/main` moved on after the merge (to `7277c07f6`, 13 commits):
none touches a file in this diff; its one `packages/rest` addition is a
new test that drives the `/meta` save door through `RestServer` and
reads no source, and its checklist additions add no anchor into
`rest-server.ts`. It also adds a gate (`check:pnpm-flag-spellings`) the
derivation above could not name; CI's `Lint & Repo Gates` runs it on the
merge ref. Not merged again.
**Per command (exit code), 78 lines:**
```text
node scripts/check-ci-filter-parity.mjs :: exit 0
node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0
node scripts/check-closing-keyword-parity.mjs :: exit 0
node scripts/check-comment-mask-adoption.mjs --self-test :: exit 0
node scripts/check-comment-mask-adoption.mjs :: exit 0
node scripts/check-comment-mask-corpus.mjs :: exit 0
node scripts/check-declaration-mirrors.mjs --self-test :: exit 0
node scripts/check-declaration-mirrors.mjs :: exit 0
node scripts/check-dts-emitted.mjs --self-test :: exit 0
node scripts/check-issue-citations.mjs :: exit 0
node scripts/check-keyed-text-bounds.mjs --self-test :: exit 0
node scripts/check-keyed-text-bounds.mjs :: exit 0
node scripts/check-platform-object-tenancy-census.mjs --self-test :: exit 0
node scripts/check-platform-object-tenancy-census.mjs :: exit 0
node scripts/check-plugin-teardown-shape.mjs --self-test :: exit 0
node scripts/check-plugin-teardown-shape.mjs :: exit 0
node scripts/check-registry-log-declared.mjs --self-test :: exit 0
node scripts/check-registry-log-declared.mjs :: exit 0
node scripts/check-rest-log-spy-declared.mjs --self-test :: exit 0
node scripts/check-rest-log-spy-declared.mjs :: exit 0
node scripts/check-scripts-symbol-anchors.mjs --self-test :: exit 0
node scripts/check-scripts-symbol-anchors.mjs :: exit 0
node scripts/check-self-test-wired.mjs --self-test :: exit 0
node scripts/check-self-test-wired.mjs :: exit 0
node scripts/check-self-test-workflow-commands.mjs --self-test :: exit 0
node scripts/check-self-test-workflow-commands.mjs :: exit 0
node scripts/check-system-context-census.mjs --self-test :: exit 0
node scripts/check-system-context-census.mjs :: exit 0
node scripts/check-undeclared-dep-imports.mjs --self-test :: exit 0
node scripts/check-undeclared-dep-imports.mjs :: exit 0
node scripts/check-whole-set-label-write.mjs --self-test :: exit 0
node scripts/check-whole-set-label-write.mjs :: exit 0
node scripts/docs-audit/check-affected-docs.mjs :: exit 0
node scripts/docs-audit/check-drift-comment.mjs :: exit 0
node scripts/pm/bare-root-worklist.mjs --self-test :: exit 0
pnpm --filter @objectstack/spec run check:duration-unit-keys :: exit 0
pnpm --filter @objectstack/spec run check:empty-state :: exit 0
pnpm --filter @objectstack/spec run check:liveness :: exit 0
pnpm --filter @objectstack/spec run check:strictness-ledger :: exit 0
pnpm --filter @objectstack/spec run check:variant-docs :: exit 0
pnpm check:agent-test-spelling :: exit 0
pnpm check:authz-resolver :: exit 0
pnpm check:bash32-floor :: exit 0
pnpm check:cli-command-ids :: exit 0
pnpm check:cross-package-test-inputs :: exit 0
pnpm check:dispatcher-error-vocabulary :: exit 0
pnpm check:doc-authoring :: exit 0
pnpm check:driver-memory-census :: exit 0
pnpm check:dts-closure :: exit 0
pnpm check:dual-build-cjs-loads :: exit 0
pnpm check:durability-log-level :: exit 0
pnpm check:engine-double-contract :: exit 0
pnpm check:entry-guard :: exit 0
pnpm check:error-status-conformance :: exit 0
pnpm check:gitlink-declared :: exit 0
pnpm check:issue-citations :: exit 0
pnpm check:lean-entry-closure :: exit 0
pnpm check:logger-receiver-detach :: exit 0
pnpm check:nul-bytes :: exit 0
pnpm check:objectql-double-limit :: exit 0
pnpm check:org-identifier :: exit 0
pnpm check:page-declaration-shape :: exit 0
pnpm check:parse-guard :: exit 0
pnpm check:pm-dispatch-gates :: exit 0
pnpm check:pnpm-filter-targets :: exit 0
pnpm check:published-files :: exit 0
pnpm check:query-options-erasure :: exit 0
pnpm check:ratchet-remedy-authority :: exit 0
pnpm check:refd-timer-probe :: exit 0
pnpm check:route-envelope :: exit 0
pnpm check:slot-lookup :: exit 0
pnpm check:sourcemap-no-sources-content :: exit 0
pnpm check:test-source-alias :: exit 0
pnpm check:tier-file-adoption :: exit 0
pnpm check:type-check-coverage :: exit 0
pnpm check:type-check-debt :: exit 0
pnpm check:watch-hint-literal :: exit 0
pnpm check:where-matcher :: exit 0
```
- Lint: `pnpm exec eslint --no-inline-config --format json` over the 13
changed files: exit 0, 13 results, 0 errors, 0 warnings. The published
`.d.ts` is byte-identical, so no consumer outside `packages/rest` can
lint differently. Repo-wide `pnpm lint` is CI's (`Lint & Repo Gates`).
- `check:dev-prereqs` and `check:skill-frame-freshness` (local-only)
were not run: this diff touches no `packages/spec` build input and no
four-axis frame file.
- No changeset: nothing any released package publishes changes (`.d.ts`,
export lists and routes above). `skip-changeset` is the seat's to apply
on its own check.
**Cross-lane files in this diff:** `scripts/check-route-envelope.mjs`
(`domain:spec`, a gate's target paths: one new MODULES entry and two
history comments on the `rest-server.ts` row, counts and sums
unchanged). The dogfood files
(`packages/qa/dogfood/test/authz-conformance.test.ts`,
`authz-probe-blind-spot.census.ts`) are re-pointed as in slices 3–8.
`check-governed-merges --test` over the 13 paths: NOT governed; 350
changed lines.
---
_Generated by [Claude
Code](https://claude.ai/code/session_018t6a5rvqPRvEDMCVVW9kYT)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6d1660d commit 68ffa5d
13 files changed
Lines changed: 260 additions & 90 deletions
File tree
- packages
- qa/dogfood/test
- rest/src
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1630 | 1630 | | |
1631 | 1631 | | |
1632 | 1632 | | |
1633 | | - | |
| 1633 | + | |
| 1634 | + | |
1634 | 1635 | | |
1635 | 1636 | | |
1636 | 1637 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
520 | 520 | | |
521 | 521 | | |
522 | 522 | | |
523 | | - | |
524 | | - | |
525 | | - | |
526 | | - | |
527 | | - | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
528 | 529 | | |
529 | 530 | | |
530 | 531 | | |
| |||
745 | 746 | | |
746 | 747 | | |
747 | 748 | | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
| 756 | + | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
748 | 761 | | |
749 | 762 | | |
750 | 763 | | |
751 | | - | |
| 764 | + | |
752 | 765 | | |
753 | 766 | | |
754 | 767 | | |
| |||
757 | 770 | | |
758 | 771 | | |
759 | 772 | | |
| 773 | + | |
760 | 774 | | |
761 | 775 | | |
762 | 776 | | |
763 | 777 | | |
764 | 778 | | |
765 | 779 | | |
766 | 780 | | |
767 | | - | |
| 781 | + | |
768 | 782 | | |
769 | 783 | | |
770 | 784 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
106 | 106 | | |
107 | 107 | | |
108 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
109 | 112 | | |
110 | 113 | | |
111 | 114 | | |
| |||
119 | 122 | | |
120 | 123 | | |
121 | 124 | | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
128 | 132 | | |
129 | 133 | | |
130 | 134 | | |
| |||
666 | 670 | | |
667 | 671 | | |
668 | 672 | | |
669 | | - | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
670 | 684 | | |
671 | | - | |
| 685 | + | |
672 | 686 | | |
673 | 687 | | |
674 | 688 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
251 | 251 | | |
252 | 252 | | |
253 | 253 | | |
254 | | - | |
255 | | - | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
256 | 258 | | |
257 | 259 | | |
258 | 260 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
149 | 149 | | |
150 | 150 | | |
151 | 151 | | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
152 | 157 | | |
153 | 158 | | |
154 | 159 | | |
| |||
160 | 165 | | |
161 | 166 | | |
162 | 167 | | |
| 168 | + | |
163 | 169 | | |
164 | 170 | | |
165 | 171 | | |
| |||
352 | 358 | | |
353 | 359 | | |
354 | 360 | | |
355 | | - | |
| 361 | + | |
| 362 | + | |
356 | 363 | | |
357 | 364 | | |
358 | 365 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
173 | 178 | | |
174 | 179 | | |
175 | 180 | | |
| |||
180 | 185 | | |
181 | 186 | | |
182 | 187 | | |
| 188 | + | |
183 | 189 | | |
184 | 190 | | |
185 | 191 | | |
| |||
212 | 218 | | |
213 | 219 | | |
214 | 220 | | |
215 | | - | |
| 221 | + | |
| 222 | + | |
216 | 223 | | |
217 | 224 | | |
218 | | - | |
| 225 | + | |
219 | 226 | | |
220 | 227 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
326 | 326 | | |
327 | 327 | | |
328 | 328 | | |
329 | | - | |
330 | | - | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
331 | 334 | | |
332 | 335 | | |
333 | 336 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
| 48 | + | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
341 | 341 | | |
342 | 342 | | |
343 | 343 | | |
| 344 | + | |
| 345 | + | |
344 | 346 | | |
345 | 347 | | |
346 | 348 | | |
| |||
8995 | 8997 | | |
8996 | 8998 | | |
8997 | 8999 | | |
8998 | | - | |
8999 | | - | |
9000 | | - | |
9001 | | - | |
9002 | | - | |
9003 | | - | |
9004 | | - | |
9005 | | - | |
9006 | | - | |
9007 | | - | |
9008 | | - | |
9009 | | - | |
9010 | | - | |
9011 | | - | |
9012 | | - | |
9013 | | - | |
9014 | | - | |
9015 | | - | |
9016 | | - | |
9017 | | - | |
9018 | | - | |
9019 | | - | |
9020 | | - | |
9021 | | - | |
9022 | | - | |
9023 | | - | |
9024 | | - | |
9025 | | - | |
9026 | | - | |
9027 | | - | |
9028 | | - | |
9029 | | - | |
9030 | | - | |
9031 | | - | |
9032 | | - | |
9033 | | - | |
9034 | | - | |
9035 | | - | |
9036 | | - | |
9037 | | - | |
9038 | | - | |
9039 | | - | |
9040 | | - | |
9041 | | - | |
9042 | | - | |
9043 | | - | |
9044 | | - | |
9045 | | - | |
9046 | | - | |
9047 | | - | |
9048 | | - | |
9049 | | - | |
9050 | | - | |
9051 | | - | |
9052 | | - | |
9053 | | - | |
9054 | | - | |
9055 | | - | |
9056 | | - | |
9057 | | - | |
9058 | | - | |
9059 | | - | |
9060 | | - | |
9061 | | - | |
9062 | | - | |
| 9000 | + | |
| 9001 | + | |
| 9002 | + | |
| 9003 | + | |
| 9004 | + | |
| 9005 | + | |
| 9006 | + | |
| 9007 | + | |
| 9008 | + | |
| 9009 | + | |
| 9010 | + | |
9063 | 9011 | | |
9064 | 9012 | | |
9065 | 9013 | | |
| |||
0 commit comments