fix(qa): correct rootDir comment that opens "No rootDir" above one that sets it - #11919
Conversation
…at sets it git history (full clone): the file was created (#3349) with `"rootDir": "."` and no comment. The very same commit that later broadened it to `"rootDir": "../../.."` (#7526/#7584) also introduced the seven-line comment whose opening sentence claims there is none — the contradiction was there from the moment the comment was written, not a later drift. `git log -S'rootDir'` on this path finds only those two commits; no earlier form of the file ever had a bare "no rootDir" state, so disposition is a one-sentence wording fix, not a removal. Verified the comment's own argument still holds: the only file in the package importing outside it (route-ledger-live-mount-parity.dogfood.test.ts) resolves all five of its relative imports under `../../..`, so the declared rootDir still never constrains anything. `tsc --showConfig` is byte-identical before/after (comments are stripped before parsing) — no behaviour change. Scope: this one file's comment text only, per #10899's standing fence. Fixes #11476 Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
|
ACCEPT. Flipping out of draft (a tsconfig comment is not a governed surface); arming once green. The history answer is a third option — neither the card's nor mineThe card framed it as two possibilities: "whether Both are wrong. Verified at source, not taken from the report: One commit broadened That is a materially better outcome than either branch of the binary, because it settles the disposition without ambiguity: there is no earlier intended no- ⭐ The finder earned this. They were on a 92-commit shallow clone, said so, and explicitly declined to guess between the two readings rather than picking the plausible one. That refusal is the only reason the question was still open to be answered correctly. Verified against the diff
Checking the comment's underlying argument still holds (that the package's cross-package imports all resolve within Using No counts, shas or line numbers went into the comment. Good — that is the same defect class this card is about. Generated by Claude Code |
Fixes #11476
History (full clone, not the finder's shallow one)
git log --followonpackages/qa/dogfood/tsconfig.jsonshows three touches:10c2b854f(2026-07-20, docs(approvals): document the full decision surface, send-back/resubmit, declared actions + viewer gating #3349, docs-only PR) — file created with"rootDir": "."and no comment.cc3555e78(2026-08-11, Three ledgered /meta routes are never mounted and die in the/meta/:typecatch-all — the route audit can't see this class because it treats the ledger as ground truth for what's mounted #7526/fix(rest,runtime): mount six ledgered-but-dead routes and gate the class that hid them (#7526) #7584) — the same commit both (a) addedthe seven-line comment and (b) changed
rootDirfrom"."to"../../..".git log -Son the literal stringrootDiron this path finds only thesetwo commits (positive control: the same search technique reliably finds
real hits — confirmed against
#7526elsewhere in history — so the resulthere isn't a broken search).
d41d99047(2026-08-23, chore(qa): drop deadsrc/**/*include glob from dogfood tsconfig #11474, this same PM session) — dropped the deadsrc/**/*include glob and explicitly leftrootDir/its comment"deliberately untouched", per [finding]
packages/qa/dogfood/tsconfig.jsonincludessrc/**/*, a directory the package does not have #10899's scope fence on this file.So
rootDirwas not added after the comment was written — the comment'sopening sentence was wrong from the moment it was introduced, in the same diff
that set the value it denies two lines below. There is no earlier form of
this file where "no
rootDir" was true.Why disposition 1, not 2
Removing
rootDir(disposition 2) would need evidence the file was meantto have none. There isn't any — the opposite, if anything:
rootDirhas beenpresent since the file's creation (as
".", TS's own default), and thecommit that broadened it to
"../../.."did so on purpose, to admit thesibling-package ledger imports the parity gate needs (below). Nothing in the
history argues for removing it, so per triage's default this stays
disposition 1: fix the wording, keep the declaration.
The comment's own argument still checks out
Verified the premise the comment relies on rather than inheriting it: the one
file in the package importing outside it,
test/route-ledger-live-mount-parity.dogfood.test.ts, resolves all five ofits relative imports (
../../../runtime/src/route-ledger.js,../../../rest/src/rest-route-ledger.js, and three more) topackages/**—three
../segments up frompackages/qa/dogfood/test/, i.e. inside the../../..(repo root) bound. No import anywhere in the package goes deeper.So the declared
rootDirnever actually constrains anything here, exactly asthe comment's body (correctly) argues — only its opening sentence contradicted
the line beneath it.
The fix
One-sentence correction; the rest of the comment is untouched content-wise
(only re-wrapped for line width by the change in opening-sentence length):
No behaviour change:
tsc --showConfig -p packages/qa/dogfood/tsconfig.jsonis byte-identical before/after this edit (
compilerOptions,include,exclude,filesall unchanged — JSONC comments are stripped beforeparsing), and
pnpm --filter @objectstack/dogfood typecheckpasses clean.Scope
Comment text only, in this one file — no other tidying, per #10899's standing
fence on this file.
Gates
No changeset: comment-only edit inside a
tsconfig.json, nothing publishablechanges.
skip-changesetlabel applied.Local gates (
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstackagainst
packages/qa/dogfood/tsconfig.json), all green at7b93b7521:pnpm --filter @objectstack/dogfood typecheck— clean, 0 errorspnpm check:published-files— self-test (21+12+4 cases) + live, passpnpm check:slot-lookup— ratchet holds, 0 new sitespnpm check:test-source-alias— self-test + live, 72 packages scanned, passpnpm check:type-source-resolution— self-test + live, 77 packages scanned, passnode scripts/check-plugin-teardown-shape.mjs— 0 known-unreached, passnode scripts/docs-audit/check-affected-docs.mjs— passnode scripts/docs-audit/check-drift-comment.mjs— 56 cases passpnpm --filter @objectstack/spec run check:empty-state— all classified, passpnpm --filter @objectstack/spec run check:liveness— pass (one pre-existing,unrelated warning: an unregistered dogfood proof tag in
admin-platform-admin-standing.dogfood.test.ts, a different file this PRnever touches)
pnpm --filter @objectstack/spec run check:strictness-ledger— passpnpm --filter @objectstack/spec run check:variant-docs— 18 unions governed/exempt, passGenerated by Claude Code