docs/design/testing-strategy.md:229-249 introduces its package-verification list with "Install the tarball into a clean temporary prefix and verify:", so every bullet is a requirement on the packaging gate. Three of the six are not exercised by tests/integration/package/pack-smoke.test.ts, whose cases are packaged tarball contents (:59-98), installed executable (:99-127), and one lifecycle test (:129-160).
- Template seeding (
:245-247). The lifecycle test runs init --json through the installed tarball binary (:132) but asserts only expect(JSON.parse(init.stdout)).toMatchObject({ type: 'init', schema_version: 1 }) (:134). Nothing checks that a Role or Team file was seeded, so a regression that emitted empty or wrong template bodies would still pass. init --json already reports seeded (src/init.ts:163), so the assertion is available without new plumbing.
send / receive / reviewed Task flow (:245). The bullet reads "init + join + send + receive + reviewed Task flow". The lifecycle test is titled "runs init, join, agents, and leave through the packed executable" and does exactly those four (:132, :136-140, :150, :155). No send, no receive, and no Task transition ever runs against the tarball.
- Engine floor (
:248). "Node below the engine floor fails with a clear message" has no case in pack-smoke.test.ts — grep -n 'engine\|floor' over that file returns nothing. The floor is covered at tests/unit/node-floor.test.ts and tests/unit/bin-floor-fail.test.ts, neither of which runs against the installed tarball.
Impact: the Quality gates list at docs/design/testing-strategy.md:250 treats "The package smoke passes against the packed tarball" as a release gate, and the strategy document is what says what that gate proves. Three of its six stated proofs do not exist, so the gate certifies less than the contract claims — most consequentially for template seeding, the one mechanism that changed design (compiled-in string constants, src/templates.ts) and whose old description was corrected in #33 without the underlying assertion being added.
Acceptance: either the pack-smoke gains the missing assertions (template seeding via the seeded field, a send/receive and reviewed-Task round trip, and a below-floor invocation of the installed binary), or the three bullets are narrowed to what the suite actually verifies. Whichever direction is taken, docs/design/testing-strategy.md and the test file must agree at the end of the change.
Found while reviewing PR #76 (Closes #33), which corrected the import.meta.url wording in the first of these bullets. Deliberately kept out of that PR so it could keep its docs-only test exemption.
docs/design/testing-strategy.md:229-249introduces its package-verification list with "Install the tarball into a clean temporary prefix and verify:", so every bullet is a requirement on the packaging gate. Three of the six are not exercised bytests/integration/package/pack-smoke.test.ts, whose cases arepackaged tarball contents(:59-98),installed executable(:99-127), and one lifecycle test (:129-160).:245-247). The lifecycle test runsinit --jsonthrough the installed tarball binary (:132) but asserts onlyexpect(JSON.parse(init.stdout)).toMatchObject({ type: 'init', schema_version: 1 })(:134). Nothing checks that a Role or Team file was seeded, so a regression that emitted empty or wrong template bodies would still pass.init --jsonalready reportsseeded(src/init.ts:163), so the assertion is available without new plumbing.send/receive/ reviewed Task flow (:245). The bullet reads "init + join + send + receive + reviewed Task flow". The lifecycle test is titled "runs init, join, agents, and leave through the packed executable" and does exactly those four (:132,:136-140,:150,:155). Nosend, noreceive, and no Task transition ever runs against the tarball.:248). "Node below the engine floor fails with a clear message" has no case inpack-smoke.test.ts—grep -n 'engine\|floor'over that file returns nothing. The floor is covered attests/unit/node-floor.test.tsandtests/unit/bin-floor-fail.test.ts, neither of which runs against the installed tarball.Impact: the Quality gates list at
docs/design/testing-strategy.md:250treats "The package smoke passes against the packed tarball" as a release gate, and the strategy document is what says what that gate proves. Three of its six stated proofs do not exist, so the gate certifies less than the contract claims — most consequentially for template seeding, the one mechanism that changed design (compiled-in string constants,src/templates.ts) and whose old description was corrected in #33 without the underlying assertion being added.Acceptance: either the pack-smoke gains the missing assertions (template seeding via the
seededfield, asend/receiveand reviewed-Task round trip, and a below-floor invocation of the installed binary), or the three bullets are narrowed to what the suite actually verifies. Whichever direction is taken,docs/design/testing-strategy.mdand the test file must agree at the end of the change.Found while reviewing PR #76 (Closes #33), which corrected the
import.meta.urlwording in the first of these bullets. Deliberately kept out of that PR so it could keep its docs-only test exemption.