Uh oh!
There was an error while loading. Please reload this page.
build(objectql): give the package a test-layer tsc program and ledger its 242 errors - #14115
Merged
Merged
Conversation
Contributor
📓 Docs Drift Check
What this run could not see
Coarse fallback — 15 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
This was referenced Sep 1, 2026
…VER_MANAGED `gen:test-typecheck-debt` in `@objectstack/objectql` had no recorded merge disposition, so `check:merge-driver` refused the branch. The artifact it writes is a shrink-only ratchet — the same file, generator and trade as its `packages/spec`, `packages/client` and `packages/rest` siblings — so recomputing it mid-merge would record whatever the half-merged tree compiles to and let a file that gained errors enter the ledger as merge noise instead of as red. It therefore takes the NOT_DRIVER_MANAGED side, with no `.gitattributes` route: routing a shrink-only ratchet is what that ledger exists to prevent. Accounting in `reconcileGenerators` is keyed per (owner, script), so the entry carries both `gen` and `owner: '@objectstack/objectql'`; the `packages/client` and `packages/rest` copies of the same generator are accounted the same way.
zhuangjianguo
marked this pull request as ready for review
September 1, 2026 07:42
zhuangjianguo
enabled auto-merge
September 1, 2026 07:42
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Fixes#13676
packages/objectql/tsconfig.jsonexcluded**/*.test.ts, and the package'stypecheckscript wastsc --noEmitagainst that very config. Sopnpm --filter @objectstack/objectql typecheckexiting 0 was a true sentence carrying no information about any of the package's 251 test files. This adopts the sibling-config route the repo already prescribes (the #5286 mechanism, generalised in #5449, and the route #12542 took forpackages/rest).The premise, re-verified before anything was written
Measured at
2a181174a6, workspace closure built first:tsc --listFilesonpackages/objectql(build config)*.test.tsamong themsrc/**excludelinepackages/drivers/driver-memory(no test exclusion)The premise held.
engine-filter-array-lowering.test.ts— the negative pin required by maintainer ruling #13357 execution point 3, landed in #13673, proving a refused filter shape cannot reach the reference matcher — was in no tsc program at all.What this changes
packages/objectql/tsconfig.test.json(new) — module semantics matched to vitest (esnext/bundler/lib: ES2022) androotDirwidened to the package. ⛔ Strictness is untouched:strict,noUnusedLocals,noUnusedParameters,noImplicitReturns,noFallthroughCasesInSwitchall inherit from the root config.packages/objectql/package.json—typechecknow names the sibling viacheck:test-typecheck, plusgen:test-typecheck-debt.tsxadded to devDependencies: it was not linked into this package, and the three onboarded siblings all declare it.packages/objectql/test-typecheck-debt.json(new, generated) — 44 files / 242 errors / 69 pinned signatures, exact and shrink-only.scripts/check-type-check-coverage.mjs— the@objectstack/objectqlTEST_DEBTentry is deleted. The package graduated, and the gate itself demands the deletion.The number this card was dispatched to produce
242 errors across 44 files, from a raw 251 under the inherited NodeNext semantics. The config tier removed is 9:
TS2550x8 (Array.prototype.atagainst alibolder than es2022) andTS1470x1 (import.metain a CJS program).By code:
TS2339x115 ·TS7006x36 ·TS2345x34 ·TS2749x14 ·TS2322x14 ·TS6133x9 ·TS18048x8 ·TS2353x4 · 8 singletons.Top files:
engine.test.tsx102 ·datasource-mapping.test.tsx17 ·plugin.integration.test.tsx12 ·hook-condition-fail-loud.test.tsx12 ·registry.test.tsx10 ·protocol-package-lifecycle.test.tsx8.Every one of the 242 is pre-existing: this PR edits no test file, and each would have been reported on
origin/mainhad this program ever existed. They are ledgered per file rather than repaired, which is what #12542 did for rest's 37 and #5286 for spec's 691. Paying them down belongs on its own card, as rest's does.⛔ Not one
anyand not one@ts-expect-errorwas added anywhere to open this gate. Bulk-suppressing the residue is the exact shape this card exists to prevent — it turns a real gate into a phantom one.src/engine-filter-array-lowering.test.tsreports 0 errors and therefore carries no ledger entry, so any error it ever gains is red on arrival. But read the zero correctly — it is not evidence the pin is type-checked:const driver: any— the recording driver, whose captured AST is the unreachability evidence.interface SeenRead { ast: any }— solastWhere(), the expression the whole proof reads, is typed by nothing.as anycall sites, against the file's own header, which rejects "a bareas any" in favour ofas unknown as EngineQueryOptions(asFilterArrayQuery, used 14 times).A drifted
IDataDriversignature would still not redden this file. Putting it in a program is the precondition for repairing that, not the repair; it is recorded separately and is deliberately not smuggled in here.Verification
Run at
344681185a, workspace closure built first.pnpm --filter @objectstack/objectql typecheck— exit 0. Gate's own verdict:check:test-typecheck: OK — @objectstack/objectql's test layer compiles under packages/objectql/tsconfig.test.json; 44 file(s) / 242 error(s) / 69 pinned signature(s).pnpm --filter @objectstack/objectql exec vitest run --maxWorkers=2— 251 test files passed, 4331 tests passed.pnpm check:type-check-coverage— exit 0. Test layer now reads16 package(s) still hide their own tests/ 695 files / 908 frozen errors, down from 17 / 946 / 1159.pnpm check:type-check-debt— exit 0.27 ledger entr(ies) re-measured in 195.0s, 1217 raw tsc error(s) total, none above its recorded number. surplus: none.node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack, 34 commands): 32 exit 0, 1 already-green duplicate, 1 NOT MEASURED —check-test-completeness.mjsexits 3 without a CI test-run log, which its own text says to record as not measured rather than as a pass. Exit codes captured before any pipe.Ablation — the ledger deletion is required, not cosmetic. Mutant taken byte-exact from a real commit (
git checkout BASE -- scripts/check-type-check-coverage.mjs), confirmed on disk by hash (df3b0f68to84c4c608) and by the entry count going 0 to 1, then the gate run: exit 1,@objectstack/objectql: has a TEST_DEBT entry but has no test files -- it graduated; delete its entry from TEST_DEBT. Restore leg proven the same way and not merely trapped: on-disk hash back todf3b0f68, identical to the HEAD blob, withgit diff HEADempty.No changeset: this publishes nothing from any package (
filesisdist/README.md/CHANGELOG.md, and neither new file is in it), matching PR #12570, the identical change forpackages/rest, which merged underskip-changeset.Generated by Claude Code
Generated by Claude Code