Filed unassigned from the #13768 dispatch. Recording only -- no severity
asserted, routing is triage's. Surfaced while measuring what would actually turn
red for that card; it is not caused by it.
Measured on aee1fd9ec2
1. Nothing runs tsc over this package.packages/metadata-protocol/package.json
declares build, dev, clean, test, test:watch -- and no typecheck.
lint.yml's typecheck-workspace lane runs
turbo run typecheck --filter='./packages/*' ..., which for a package with no
such script runs nothing (turbo exits 0 and shows the task in the dry-run graph
without running it -- the behaviour check:turbo-task-graph exists for).
So the package's only type coverage is the dts half of its tsup build.
2. That coverage is real but reports only one file per run. Two probes, each
a real pnpm --filter @objectstack/metadata-protocol build:
- A type error confined to
src/runtime-authoring-gate.ts fails the build:
error TS2322, DTS Build error, Exit status 1. So the build IS a working
type gate. - An edit that produces errors in BOTH
src/runtime-authoring-gate.ts (a
violated satisfies clause) and src/protocol.ts (a violated as cast)
printed only the protocol.ts diagnostic. The satisfies violation was
not printed, though an isolated tsc run over the same pattern proves it
errors (TS2322).
Consequence: a developer repairing the one reported error can rebuild and meet a
second error they were never shown. It is a slow loop, not a false green -- the
build does fail.
3. The test surface is type-checked by nothing. The package's tsconfig.json
INCLUDES src/**/*, so its 138 *.test.ts files are in the program -- but no
typecheck script runs, and the tsup dts build follows imports from
src/index.ts, which does not reach them. Running tsc --noEmit -p tsconfig.json
by hand reports 159 error lines, every one of them in a *.test.ts and none
in a non-test source. Top offenders: protocol.stored-migration.test.ts (27),
seed-loader-multi-value-reference.test.ts (10),
protocol.stored-conversions.test.ts (7).
This is adjacent to, but not the same as, the state eslint.config.mjs records
around QUERY_OPTIONS_TEST_GLOBS (packages whose OWN tsconfig excludes
**/*.test.ts). Here the tsconfig includes them; the script that would check
them does not exist.
Why it is filed rather than fixed
Adding a typecheck script is a one-line manifest edit that goes immediately
red on those 159 lines, so the real work is the triage of those errors (fix, or
exclude tests from the typecheck program and say so). That is a decision about
this package's type-coverage policy, not a rider on an unrelated card.
Not measured by me: how many other packages in the workspace are in the same
state (no typecheck script), or whether the one-file dts diagnostic limit is a
tsup setting rather than a fixed behaviour.
Generated by Claude Code
Filed unassigned from the #13768 dispatch. Recording only -- no severity
asserted, routing is triage's. Surfaced while measuring what would actually turn
red for that card; it is not caused by it.
Measured on
aee1fd9ec21. Nothing runs
tscover this package.packages/metadata-protocol/package.jsondeclares
build,dev,clean,test,test:watch-- and notypecheck.lint.yml'stypecheck-workspacelane runsturbo run typecheck --filter='./packages/*' ..., which for a package with nosuch script runs nothing (turbo exits 0 and shows the task in the dry-run graph
without running it -- the behaviour
check:turbo-task-graphexists for).So the package's only type coverage is the
dtshalf of itstsupbuild.2. That coverage is real but reports only one file per run. Two probes, each
a real
pnpm --filter @objectstack/metadata-protocol build:src/runtime-authoring-gate.tsfails the build:error TS2322,DTS Build error,Exit status 1. So the build IS a workingtype gate.
src/runtime-authoring-gate.ts(aviolated
satisfiesclause) andsrc/protocol.ts(a violatedascast)printed only the
protocol.tsdiagnostic. Thesatisfiesviolation wasnot printed, though an isolated
tscrun over the same pattern proves iterrors (
TS2322).Consequence: a developer repairing the one reported error can rebuild and meet a
second error they were never shown. It is a slow loop, not a false green -- the
build does fail.
3. The test surface is type-checked by nothing. The package's
tsconfig.jsonINCLUDES
src/**/*, so its 138*.test.tsfiles are in the program -- but notypecheckscript runs, and thetsupdts build follows imports fromsrc/index.ts, which does not reach them. Runningtsc --noEmit -p tsconfig.jsonby hand reports 159 error lines, every one of them in a
*.test.tsand nonein a non-test source. Top offenders:
protocol.stored-migration.test.ts(27),seed-loader-multi-value-reference.test.ts(10),protocol.stored-conversions.test.ts(7).This is adjacent to, but not the same as, the state
eslint.config.mjsrecordsaround
QUERY_OPTIONS_TEST_GLOBS(packages whose OWN tsconfig excludes**/*.test.ts). Here the tsconfig includes them; the script that would checkthem does not exist.
Why it is filed rather than fixed
Adding a
typecheckscript is a one-line manifest edit that goes immediatelyred on those 159 lines, so the real work is the triage of those errors (fix, or
exclude tests from the typecheck program and say so). That is a decision about
this package's type-coverage policy, not a rider on an unrelated card.
Not measured by me: how many other packages in the workspace are in the same
state (no
typecheckscript), or whether the one-file dts diagnostic limit is atsupsetting rather than a fixed behaviour.Generated by Claude Code