Skip to content

docs(qa): re-point the cli / platform-core / records-forms bad-citation anchors (#18104 cut 3) - #19232

Merged
os-try-charles merged 1 commit into
mainfrom
claude/issue-18104-residual-cut-3
Sep 20, 2026
Merged

os-try-charles merged 1 commit into
mainfrom
claude/issue-18104-residual-cut-3

Conversation

@os-try-charles

Copy link
Copy Markdown
Collaborator

Part of #18104 — cut 3 of the SHARED_RESOLVER_RESIDUAL drain. Five area files and the eight accept-set rows remain, so this PR closes nothing.

What moved

Fifteen bad-citation rows leave the ledger by repair: each anchor is re-pointed at a symbol scripts/symbol-anchors.mjs genuinely resolves, its row is deleted from SHARED_RESOLVER_RESIDUAL in the same edit, and SHARED_RESOLVER_RESIDUAL_CEILING comes down with it (33 → 18, rows == ceiling). ⛔ No floor was touched, ⛔ the shared resolver was not widened, ⛔ no #symbol was dropped to bare prose.

file old anchor re-pointed to why the old one did not resolve
areas/cli.json commands/compile.ts#emitJson #Compile imported and called, never declared here
areas/cli.json doctor-deprecation-hint-commands.test.ts#Doctor #unregisteredHintsIn imported and driven; the sweep itself is the local function
areas/cli.json utils/format.exit-code.test.ts#emitJson #asExitCode imported and called; asExitCode is the binding that carries the #4873 rejection
areas/cli.json templates/blank/package.json#objectstack #scripts.dev objectstack is a VALUE in that manifest, never a key
areas/cli.json verify/src/verify.ts#VALIDATION_FAILED #ObjectVerifyResult survives only inside a regex literal; the six-member union is on the interface
areas/platform-core.json engine.ts#objectExtensions #registerApp read off the manifest — a member access; the loop lives in registerApp
areas/platform-core.json auth-plugin.ts#Providers #nav_sso_providers a substring of longer tokens and label strings
areas/platform-core.json package-first-authoring.dogfood.test.ts#writable_package_required #WRITABLE_PACKAGE_REQUIRED lower-case spelling is only in a test title and comments; the test pins the ADR-0112 code
areas/platform-core.json runtime/src/domains/notifications.ts#markRead #handleNotificationRequest a provider method called off the inbox capability — a member access
areas/platform-core.json runtime/src/route-ledger.ts#commitId #ROUTE_LEDGER a route PATH PARAMETER inside a route string
areas/records-forms.json object.zod.ts#query #sharingModel query is not a key this schema declares
areas/records-forms.json seed/index.ts#Specimen #fieldZoo only inside the record names, a substring of a longer string
areas/records-forms.json validate-action-locations.ts#action #ACTION_NO_PLACEMENT a local binding inside the walk, not a declared surface
areas/records-forms.json object.zod.ts#FEEDS_DISABLED #enable.feeds named only inside a .describe() string and a comment
areas/records-forms.json rest-route-ledger.ts#jobId #REST_ROUTE_LEDGER a route PATH PARAMETER inside a route string

⚠️ areas/records-forms.json still carries its 2 accept-set rows and that is correct, not half-done: they are #18101's letter, and reaching them would mean widening the shared core. That file mixes both verdicts, so this slice judged it row by row by verdict, never by file.

Every re-pointed value carries the re-pointed #18104 trace cut 2 established, so the next cut can see what this one moved.

Verification (at 76e8df900)

node scripts/check-platform-checklist.mjs — exit 0:

before  symbol anchors: 600/633 resolved … 33 on the named #16898 residual, 17 file floors held
after   symbol anchors: 615/633 resolved … 18 on the named #16898 residual, 17 file floors held

resolved rose by exactly 15, residual fell by exactly 15, the 633 census total and the 310 cited sources are unchanged, and 17 file floors held on both sides — a repair moves an anchor from residual to resolved and leaves the floor population where it was.

node scripts/check-platform-checklist.mjs --self-test — exit 0, 221 assertions (unchanged from cut 2).

Positive control, both directions (ablation; committed first, restored byte-exact)

A — a repaired anchor is what resolves, not a row that merely left. Reverting one repaired citation to its old anchor while its ledger row stays deleted:

✗ areas/cli.json: ABSENT SYMBOL — `packages/cli/src/commands/compile.ts#emitJson` … exit 1

B — an unrelated row still reds. Deleting one still-listed residual row (areas/studio-authoring.json, untouched by this slice):

✗ areas/studio-authoring.json: ABSENT SYMBOL — `packages/rest/src/rest-route-ledger.ts#REST` … exit 1

Both legs restored with git checkout HEAD -- <path>, proven by an empty git diff HEAD plus a git hash-object match against the HEAD blob, and the gate re-read 615/633 · exit 0 after each.

Gate family

Derived with node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack from the merge base — 31 commands; 30 run locally green (check:pm-dispatch-gates runs detached, its reference line records 430–450s while this container measures 535–712s). Repo-wide scans (pnpm lint and the 53 artifact-roster families the derivation scores silent for every card) are CI's.

No changeset — measured, not assumed

Every changed path (docs/qa/platform-checklist/areas/*.json, scripts/check-platform-checklist.mjs) is at the repo root, outside every one of the 70 published package directories, so no package's files[] can pack it and nothing this PR touches is published. skip-changeset applied.

Acceptance notes

  • The $comment on scripts/checklist-symbol-anchor-baseline.json still reads «the count of anchors that RESOLVED in that family file» where an entry is now resolved + residual. That file is maintainer-only by its own $authority line; Drain the 47 bad-citation rows on SHARED_RESOLVER_RESIDUAL — a closed ledger with no owner is how it turns back into an allow-list #18104's body already records the one-sentence edit it is owed. ⛔ Not touched here.
  • SHARED_RESOLVER_RESIDUAL now stands at 10 bad-citation + 8 accept-set. The gate's own self-test asserts accept-set count is strictly less than bad-citation count, so the next cut that drains more than one bad-citation row has to reckon with that assertion — noted for the next slice's dispatch, not a defect today.

Generated by Claude Code

…on anchors (#18104 cut 3)

Fifteen `bad-citation` rows leave `SHARED_RESOLVER_RESIDUAL` by repair: each
anchor is re-pointed at a symbol `scripts/symbol-anchors.mjs` genuinely
resolves, the row is deleted in the same edit, and the grow-never ceiling comes
down with it (33 -> 18). No floor is touched and the shared resolver is not
widened — a repair moves an anchor from residual to resolved and leaves the
floor population exactly where it was.

The two `accept-set` rows on records-forms.json are deliberately untouched:
that file mixes both verdicts, so the slice judges row by row by verdict.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017ef78bLdybu3AffehKkhfk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants