docs: re-anchor the last dead tracker citations in eleven lane packages' files outside src to the commits that decided them - #20923
Merged
Conversation
…packages' files outside src to the commits that decided them Stage 16 of the domain:cli lane's dead-citation sweep: 17 comment sites on 16 lines in 14 config and test files (tsconfig*.json, vitest.config.ts, test/**) across plugin-hono-server, plugin-dev, client, qa/vitest-filter-preflight, cloud-connection, mcp, qa/downstream-contract, rest, runtime, types and verify. Each dead number now cites the commit that decided it, in ruling C+D's form C; comments only, every file keeps its line count. Claude-Session: https://claude.ai/code/session_01VvcEokUG1tvVxkceYfR5XB Co-authored-by: Claude <noreply@anthropic.com>
Contributor
📓 Docs Drift Check
What this run could not see
Coarse fallback — 48 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
objectstack-fleet
Bot
deleted the
claude/issue-20594-lane-outside-src
branch
September 30, 2026 19:55
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #20594
Clause-②: no
What changed
This is stage 16 of the
domain:clilane's dead-citation sweep: the 17 comment sites left in eleven lane packages' files outsidesrc/**(claim5917064266; the list on stage 15's landing5916232164). The file surface is the one stage 14 set:README.md,tsconfig*.json,vitest.config.*,tsup.config.*andtest/**.Every comment site on that surface whose tracker number answers 404 now cites the commit that decided what the line describes, in ruling C+D's form C (comment
5749154545on #19123). Stages 1 to 15 of this card are the precedents; the latest are PR #20883 and PR #20898.tsconfig.test.jsonin plugin-hono-server, plugin-dev and verify; plugin-hono-server'stsconfig.typecheck.json; client'stsconfig.json), 6vitest.config.ts(client, cloud-connection, mcp, rest, runtime, types) and 3 test files (qa/vitest-filter-preflight2,qa/downstream-contract1).describe/ittitles and messages are untouched (they belong to runtime strings in thedomain:clipackages carry tracker numbers (114 messages in 8 packages, 254 ledgered ids): this lane's share of the #20513 A/A burn-down #20752, fold5911936313).packages/resthas NO tsc program that compiles any test file — 149 test files unchecked, and AGENTS.md names this exact shape as how a@ts-expect-errorbecomes a phantom check #12542 and [finding] the silent partial-filter drop #17853 fixes in packages/cli is live in the seven other packages that declare vitestprojects#17978 all answer 200.Census
Instrument. The card's gate does not read these files (its declared surface is
packages/**/src/**), so the census is taken by hand with the gate's own grammar, as stages 14 and 15 took it:src/**, withCHANGELOG.mdleft out: 81 files. Each is classed ON stage 14's file list (48 files) or OFF it (33:package.json,LICENSE, ledgers,objectstack.config.tsand the like). Only ON-list comment sites are this stage's.extractCitationsfromscripts/check-issue-citations.mjs, with its comment-prose projection for code and JSONC files and the whole file for*.md. The whole-file extraction minus the comment projection gives the string sites.namesThisRepository).GET /repos/objectstack-ai/objectstack/issues/N; 404 means dead.cb4c31dd521e3782200fdefineStack({ themes })is parsed, ingested and never applied — the last hop from a storedthemeitem to the theme engine does not exist #10485,meta.deleteItemsends none of the three carriers the REST reset door reads — noIf-Match, no?state=draft, no?dropStorage, on either declaration #12181,@objectstack/plugin-securityexcludes**/*.test.tsfrom its only tsc program — 89 test files unchecked, 11 standing type errors behind a greentypecheck#13176,packages/verifyhides its own tests from itstypecheckscript and carries frozen TEST_DEBT instead of thetsconfig.test.jsonwiring 23 other packages use #15145, [finding] packages/cloud-connection/vitest.config.ts carries #16189's defect verbatim — "Notestblock" and "this file's only effect the alias above" are both false there too #16917) were only on the rewritten lines.Per package, dead on-list comment sites, before to after:
packages/plugins/plugin-hono-serverpackages/plugins/plugin-devpackages/clientpackages/qa/vitest-filter-preflightpackages/cloud-connectionpackages/mcppackages/qa/downstream-contractpackages/restpackages/runtimepackages/typespackages/verifyPer-number anchors
Each anchor was checked by blame on the site and in the anchor's own message or diff. "Reused" names earlier stages that gave the number the same anchor.
#13176tsconfig.test.json(:3 and :61 / :56)a68c61267tsconfig.test.jsonat zero residue, with notest-typecheck-debt.json; its diff writes the number into that config's header and into the TEST_DEBT graduation#11332tsconfig.typecheck.json:12dce5cd4f0capabilities/configuration/extensionscontainers asretiredKey()tombstones (ADR-0049); its changeset names the number#10724be21955bacontributesmembers asretiredKey()tombstones (ADR-0049); its subject names the number#12181tsconfig.json:8,vitest.config.ts:33cf71d73f8meta.deleteItem's reset carriers; this same commit wrote both blocks (thepathsrules and the alias for the real-door test), and its changeset names the number#17853vitest.config.ts08f5f0e5a#16917vitest.config.ts:647ce3154e6#8651vitest.config.ts:188c65046e4#10485test/contract.test.ts:4635ad101bcThemeSchemaand thethemescarrier key (ADR-0049, kept beside it); its subject names the number, and it wrote this line#15145tsconfig.test.json:145a72b0cctypecheckthrough this file; its diff writes the number into this line and into the coverage-ledger graduationADR and ruling records. A grep of
docs/adrandscripts/adr-anchorsfor the 9 numbers finds one hit: ADR-0088 names #10724 in a correction note (history, not the ruling), so that number stays on the commit every earlier stage anchored it to. The sentence it sits in already names ADR-0049. The control number7329finds 1 file in the same tree.Anchor checks:
git rev-parse --disambiguategives count 1 for each of the 9.merge-base --is-ancestoragainstcb4c31dd52exits 0 for all 9.01218124ae, the parent of the oldest anchor8c65046e4(2026-08-16), exits 0. Negative control: the base as an ancestor of8c65046e4exits 1.Verification
All at head
1e3782200f. Heavy runs went throughscripts/pm/os-verify-lock.shwithOS_VERIFY_LOCK_SLOT=issue-20594-outside.pnpm exec turbo run build --filter='./packages/*' --filter='./packages/*/*' --concurrency=2→ 71 successful, 71 total (9 cached), lock verdict command-exit 0.typecheckscript):pnpm --workspace-concurrency=2 --filterplugin-hono-server, plugin-dev, client, vitest-filter-preflight, mcp, downstream-contract, rest, runtime, types, verifyrun typecheck→ 10 of 10Done, 0error TS, lock verdict command-exit 0. That reads every touched JSONC config (plugin-hono-server's runstsconfig.typecheck.jsonby name; thetsconfig.test.jsonfiles are read bycheck:test-typecheck, all at their recorded ledgers).--listFilesOnlyholds all 3 touched test files in their packages' programs.vitest.config.tswas loaded by a run of its own package:test/config-wiring-sweep.test.ts,test/filter-preflight.test.ts→ 2 files, 97 tests passed.test/contract.test.ts→ 1 file, 13 tests passed.src/meta-delete-item-carriers.test.ts(the suite the edited alias block serves) → 20 passed.src/canonical-expression-envelopes.test.ts(the suite the alias exists for) → 16 passed.src/mcp-stdio-tools.test.ts(the engine doubles the edited block describes) → 12 passed.--project local):src/rest-exec-ctx-memo.test.ts4 passed,src/app-plugin.ordering.test.ts3 passed,src/email-verified.test.ts2 passed.cb4c31dd52against head, 14 files, 5,764 base tokens: 0 files differ. TypeScript files are compared as leaf tokens (getChildren, JSDoc nodes skipped), JSONC files as the scanner's non-trivia token stream plus their parsed value (0 of 5 values differ). Controls, in memory only: a comment inserted into each file, 0 of 14 differ; a statement appended, 14 of 14; one character flipped inside each file's first string token, 14 of 14 (9StringLiteral, 5 JSON strings).pnpm check:nul-bytesexits 0.npm pack --dry-runin each of the 9 public packages packs onlydist/**,README.md,CHANGELOG.md,LICENSEandpackage.json: 0 of the 11 touched files in those packages is packed. After the build, the first 48 characters of each of the 16 added comment lines occur in 0 files of any package'sdist/; control: asrcdocblock phrase an earlier stage wrote ("Maintainer-seat ruling, landed by commit cf71d73") occurs inpackages/client/dist/index.d.ts. The other two packages are private.Gates
All at head
1e3782200f, exit codes captured before any pipe.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands, no paths, derives 52 commands (14 paths against merge basecb4c31dd52). Re-derived after fetchingorigin/mainto4d0b9cd542: the same 52, and none of the 4 upstream commits touches a derivation input or a file here.dispatch-gates --ranover the recordedCOMMAND :: exit CODElist → "52 derived, 52 run, 0 NOT-MEASURED, 0 UNRUN", exit 0.packages/:pnpm check:authz-resolver,pnpm check:error-code-casingandpnpm check:filter-alias-parity→ exit 0 each.pnpm lint(repo-wideeslint . --no-inline-config, the family the derivation does not name) → exit 0, 2026-09-30T18:26:35Z to 18:30:31Z.node scripts/check-issue-citations.mjs(diff mode, in the 52) reads 0 files, because none of these paths is on its declared surface; the hand census above is the measurement for this surface.git merge-tree --write-treeof this head againstorigin/main4d0b9cd542is clean.The 52 derived commands: stage 15's list with
pnpm --filter @objectstack/spec run check:skill-examplesandnode scripts/check-tenant-audit-census.mjs(with its--self-test) in, andcheck:empty-state,check:liveness,check:strictness-ledgerandcheck:variant-docs(spec) out:node scripts/check-ci-filter-parity.mjsnode scripts/check-closing-keyword-parity.mjsand--self-testnode scripts/check-comment-mask-adoption.mjsand--self-testnode scripts/check-comment-mask-corpus.mjsnode scripts/check-issue-citations.mjsnode scripts/check-keyed-text-bounds.mjsand--self-testnode scripts/check-platform-object-tenancy-census.mjsand--self-testnode scripts/check-plugin-teardown-shape.mjsand--self-testnode scripts/check-registry-log-declared.mjsand--self-testnode scripts/check-rest-log-spy-declared.mjsand--self-testnode scripts/check-system-context-census.mjsand--self-testnode scripts/check-tenant-audit-census.mjsand--self-testnode scripts/check-undeclared-dep-imports.mjsand--self-testnode scripts/docs-audit/check-affected-docs.mjsnode scripts/docs-audit/check-drift-comment.mjspnpm --filter @objectstack/spec run check:skill-examplespnpm check:cross-package-test-inputs,check:dispatcher-error-vocabulary,check:doc-authoring,check:driver-memory-census,check:dts-closure,check:dual-build-cjs-loads,check:engine-double-contract,check:gitlink-declared,check:issue-citations,check:lean-entry-closure,check:logger-receiver-detach,check:nul-bytes,check:objectql-double-limit,check:org-identifier,check:page-declaration-shape,check:published-files,check:query-options-erasure,check:refd-timer-probe,check:slot-lookup,check:sourcemap-no-sources-content,check:test-source-alias,check:tier-file-adoption,check:type-check-coverage,check:type-check-debt,check:watch-hint-literal,check:where-matcherAcceptance notes
files(measured above), andqa/vitest-filter-preflightandqa/downstream-contractare private. The PR carriesskip-changeset.objectstack.config.ts(:19 Three plugin-manifest blocks —capabilities,configuration,extensions— have zero reads of the container itself, so all 8 keys beneath them are inert (configuration.properties.secretpromises encryption/masking) #11332, :26 Retire the nine dead members of the plugin-manifestcontributesblock (events/menus/themes/translations/actions/drivers/fieldTypes/functions/commands) — tombstone route,kindssurvives #10724), and 11 dead string sites: thetest-typecheck-debt.jsonnotes in client (1), mcp (1), rest (7) and runtime (1), and vitest-filter-preflight'spackage.jsondescription (1). All 13 are among the 55 off-list sites stage 14 listed.clisites with no deciding commit (merge queue 关键路径回归:Test Core 最慢分片 16m28s、Dogfood 11m43s —— #4859 的两条验收判据均已不成立,且 #5401 方向 C 的触发条件已满足(实测) #10149, [Decision] Withpackages: []shipped, theengines.pnpm >=10.15floor is now what refuses pnpm 10.0–10.4 — measured: they install with a lower floor, but never read the scaffold's build allowlist #11048, The PUBLISHED CLI puts its own stdout/stderr on the blocking write path every time it spawns a child with inherited stdio #14874 x3). None of them is touched here.#10374/#13522. On these 81 files that shape holds 4 such numbers (flaky: plugin-dev "init with mocked context" times out (15s) under full-parallelpnpm testload #3060, test(service-storage): resolve@objectstack/corefrom source so a stale dist can't decide a pin (#7668) #7778, test: repo-wide vitest console-intercept disarm + arrival gate (#10374) #13522, test(objectql,verify,runtime): declare OS_REGISTRY_LOG=warn in each suite's own vitest harness #14016), and all 4 answer 200 (2026-09-30T19:04Z), so the census above misses no dead site.cb4c31dd52; [finding]/exportwrites adate/datetimecell with a year below 1000 unpadded (0500-01-01→500-01-01), so the export does not re-import #20602 and [finding] the conversions defineStack applies still miss two door paths after PR #20579: os lint --json never reads the record, and a defineStack that converts then refuses drops them from --json #20583 on this seat stay inpackages/rest/srcandpackages/cli/src.Generated by Claude Code