Problem
harness/tsconfig.json has:
so make typecheck and CI both typecheck harness/src and never harness/test. By contrast packages/k8s-sandbox/tsconfig.json has "include": ["src", "test"].
Why it matters, concretely
PR #188 added a required field (truncated) to the seam's ExecResult and leaned on "required, so a fourth implementation is a compile error" as a central design argument. That forcing function works in packages/ and does not reach harness/:
- In
packages/k8s-sandbox, tsc immediately flagged a hand-built fake in test/extension.test.ts, and it was fixed.
- In
harness/test, three SandboxTransport fakes silently kept compiling without the required field — two in run-leaf.test.ts and several in converge.test.ts. They passed only because undefined is falsy where the code reads truncated. They were found by review, not by the compiler.
So the design's own guarantee is only true for part of the repo, and the gap is invisible: a green make typecheck says nothing about harness test files.
A related symptom from the same PR: three type errors in packages/k8s-sandbox/test/operations.test.ts shipped in one commit because the task ran only vitest (which does not typecheck) — the compiler caught them one commit later. In harness/test, nothing would ever have caught them.
Acceptance
Refs
Found while executing #188 (ST6). Both the missing-field instances there are already fixed on that branch; this issue is about closing the hole that let them exist.
Problem
harness/tsconfig.jsonhas:so
make typecheckand CI both typecheckharness/srcand neverharness/test. By contrastpackages/k8s-sandbox/tsconfig.jsonhas"include": ["src", "test"].Why it matters, concretely
PR #188 added a required field (
truncated) to the seam'sExecResultand leaned on "required, so a fourth implementation is a compile error" as a central design argument. That forcing function works inpackages/and does not reachharness/:packages/k8s-sandbox,tscimmediately flagged a hand-built fake intest/extension.test.ts, and it was fixed.harness/test, threeSandboxTransportfakes silently kept compiling without the required field — two inrun-leaf.test.tsand several inconverge.test.ts. They passed only becauseundefinedis falsy where the code readstruncated. They were found by review, not by the compiler.So the design's own guarantee is only true for part of the repo, and the gap is invisible: a green
make typechecksays nothing about harness test files.A related symptom from the same PR: three type errors in
packages/k8s-sandbox/test/operations.test.tsshipped in one commit because the task ran onlyvitest(which does not typecheck) — the compiler caught them one commit later. Inharness/test, nothing would ever have caught them.Acceptance
harness/tsconfig.jsonincludestest.make typecheckand CI are green afterwards (expect a batch of fixes to hand-built fakes on the first run).packages/knative-server,packages/sandbox-relay,packages/ibac-stub,experiments) so the rule is uniform rather than per-package.Refs
Found while executing #188 (ST6). Both the missing-field instances there are already fixed on that branch; this issue is about closing the hole that let them exist.