Skip to content

chore(qa): drop dead src/**/* include glob from dogfood tsconfig - #11474

Merged
os-steve merged 1 commit into
mainfrom
claude/issue-10899-dogfood-tsconfig-include
Aug 23, 2026
Merged

os-steve merged 1 commit into
mainfrom
claude/issue-10899-dogfood-tsconfig-include

Conversation

@claude

@claude claude Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Fixes #10899

packages/qa/dogfood is test-only by design. Its tsconfig.json declared
include: ["src/**/*", "test/**/*"], and the package has no src/. One glob
removed; nothing else in the file touched.

The load-bearing measurement: the program tsc compiles is unchanged

tsc --showConfig -p packages/qa/dogfood/tsconfig.json, TypeScript 6.0.3 (the
version the package declares), run before and after the edit:

reading before after
resolved files entries 151 151
files identical, same order — true
entries only in before / only in after — [] / []
compilerOptions identical — true
exclude identical — true
include as echoed ["src/**/*","test/**/*"] ["test/**/*"]

diff over the two complete --showConfig outputs is exactly one line:

170d169
<         "src/**/*",

That single line is the echoed glob itself. Every one of the 151 resolved files
is under ./test/; the dead glob contributed none of them. This is a removal of
a declaration, not a change to the compiled program.

Ratchets: reverse-verified, readings do not move

The fix was committed first, then git restore --source= stood the base file
back up (tree only — porcelain showed a lone M, never MM), the two ratchets
that read tsconfig include sets were re-run, and the file was restored.

Both printed byte-identical verdict lines at base and at head:

check-type-check-coverage: OK — 65/78 workspace packages type-checked (plus the root),
  13 in the DEBT ledger (436 frozen raw errors), 1 exempt.
  test layer: 20 package(s) still hide their own tests from tsc (1048 files hidden ...)
  source layer: 9 directory(ies) ... (9 files as counted by this run).
  generated layer: 3 `include` entr(ies) across 1 package(s) ...

check-type-source-resolution OK — 77 packages with a tsconfig.json scanned;
  51 registered as still resolving a workspace dep's types through `dist/`.

The generated layer row is apps/docs, untouched by this diff. dogfood's
src root was never in that population: that invariant's detector asks whether
an include root is gitignored, and src here is neither checked in nor
ignored — the distinction #10880 drew deliberately.

Gates

Derived with node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack
(no paths passed; it takes its own change set from the merge base), then treated
as a floor. All run at 99eee07a, exit codes captured before any pipe:

gate exit
check:empty-state (spec) 0
check:liveness (spec) 0
check:strictness-ledger (spec) 0
check:variant-docs (spec) 0
check:published-files 0
check:slot-lookup 0
check:test-source-alias 0
check:type-source-resolution 0
check-ci-filter-parity.mjs 0
check-plugin-teardown-shape.mjs 0
check-affected-docs.mjs 0
check:type-check-coverage 0 (added above the derived list)
check:nul-bytes 0 (added above the derived list)

check:type-check-coverage is the floor extension that matters here: it reads
every package's include array, and the derivation did not name it.

Declared narrowing: repo-wide pnpm lint not run

Measured rather than assumed, all three pieces:

  1. Population, read from eslint's own config, not from a guess. pnpm exec eslint --no-inline-config --format json packages/qa/dogfood/tsconfig.json
    returns one result whose only message is File ignored because no matching configuration was supplied. The changed file is not in eslint's population.
  2. Count, read from --format json. 1 result entry, 0 errors, 1 warning,
    and that warning is the not-configured notice above — 0 files in this diff
    are linted.
  3. Invariance for untouched files. eslint.config.mjs states in-repo, with
    a positive control behind it, that this repo "never enables type-aware
    linting (no parserOptions.project, no typed @typescript-eslint rules) for
    ANY file, test or not." No tsconfig include change can move an eslint
    verdict on a file it does not appear in.

Deliberately not done

  • No src/ directory created. The declaration was wrong, not the tree.
  • rootDir: "../../.." and its comment untouched. That shape is load-bearing
    — the route-ledger to live-mount parity gate imports five sibling packages'
    ledgers as relative sources — and was reasoned about. Only the dead glob moved.
  • No changeset. @objectstack/dogfood is private: true and this diff
    changes no published artifact; skip-changeset is applied.

Files changed

packages/qa/dogfood/tsconfig.json — 1 insertion, 1 deletion.


Generated by Claude Code

The dogfood package is test-only by design: its tree is CHANGELOG.md,
README.md, package.json, test/, tsconfig.json, vitest.config.ts. The
`src/**/*` include glob has never matched anything.

Measured with `tsc --showConfig -p packages/qa/dogfood/tsconfig.json`
before and after: the resolved `files` array is byte-identical (151
entries, same order), `compilerOptions` and `exclude` unchanged. The
only delta in the whole emitted config is the echoed dead glob itself.

`rootDir` and its comment are deliberately untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx
@claude claude Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

Nothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 1 changed package(s)), so this run has no opinion about the docs.

What this run could not see
  • 1 changed file(s) yielded no anchor (packages/qa/dogfood/tsconfig.json) — pages documenting those are invisible to this run

Coarse fallback — 2 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json 905019b1bf2f291e6a1a4fb87bf7f667f2af9088 → packageMentionDocs.

@os-steve
os-steve marked this pull request as ready for review August 23, 2026 21:46
@os-steve
os-steve added this pull request to the merge queue Aug 23, 2026
Merged via the queue into main with commit d41d990 Aug 23, 2026
36 checks passed
@os-steve
os-steve deleted the claude/issue-10899-dogfood-tsconfig-include branch August 23, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[finding] packages/qa/dogfood/tsconfig.json includes src/**/*, a directory the package does not have

2 participants