Smoke JSDoc names disjointness, not coverage, as what the loaded-only cut rests on (#761) - #795
Conversation
VerdictApprove with fixes applied. The change is correct and does what #761 asked: it replaces a Reviewed at head What checks out
Findings1. Low - the JSDoc claims exclusivity its own paragraph contradicts
The sentence immediately before it states a second load-bearing premise: that The Fixed in 2. Low - the test comment's failure mode holds only for riders
True only when the overlapping name is a rider. Only two bundled manifests declare Verified empirically rather than by reading:
The non-rider break is not silent everywhere, though: Fixed in Deliberately left alone
Gates after the fixes
|
VerdictApprove with fixes applied. Round 2 of 2, reviewed at head Round 1's fixes verified
Re-verified against the tree (not taken on round 1's word)
Findings1. Low - the smoke JSDoc still makes the unscoped claim round 1 removed from the test
Fixed in 2. Low - the test comment names only the boot profile the product does not run
The identical Fixed in Deliberately left alone
Gates after the fixes
|
|
Triage at head |
Finding
Issue #761 had two halves. The second (the missing disjointness test) landed on
masterin PR #767; that PR carried no closing trailer, so the issue stayedopen. The first half was never fixed and is still on
master: the JSDoc oncomposedRidersin the walkthrough smoke justifies its loaded-only read with apremise that does no work.
The stale text claimed the read agrees with
ridersInDefaultSet"because theallowlist and the excluded set together cover every bundled plugin". Coverage is
not what the agreement rests on, in either direction:
lands in
unknownDirs(src/core/runtime/bundled.js:151-157), so it isinvisible to both
composedRidersandbuildPluginCatalog.coverage true and breaks agreement:
discoverBundledPluginstests theallowlist first, so such a plugin stays in
loadedand the smoke composes it,while
ridersInDefaultSet(src/core/cli/walkthrough.js:2212-2220) drops itand the install never writes it. The smoke goes red on a plugin the install
never receives.
The load-bearing property is that the two sets are disjoint.
Fix
hypaware-core/smoke/flows/walkthrough_picker_to_first_query.js: the JSDoc nowstates disjointness as the property the cut rests on, spells out why (the
allowlist is checked before the exclude set, so a name in both would survive
into
loaded), keeps the separate observation about a plugin in neither list,and points at the test that guards it.
test/core/bundled-sets.test.js: added the reciprocal pointer, so theinvariant's consumer is discoverable from the guard as well as the other way
round. This is the recurrence the issue flagged: a true conclusion resting on
an unstated invariant, twice in this one file.
No behavior change; both edits are comments.
Proof the guard actually guards
The test asserted by #767 was verified to be a real guard rather than a
tautology, by breaking the invariant and observing the failure.
Perturbation: added
'@hypaware/context-graph'(already inV1_BUNDLED_PLUGIN_ALLOWLIST) toV1_EXCLUDED_FROM_DEFAULT, making the two setsoverlap while leaving coverage intact - exactly the case the old JSDoc's premise
could not detect.
The perturbation was reverted (
git checkout -- src/core/runtime/bundled.js) andthe test passes again on the tree in this PR. The failure names the cause
directly, which was the point: without it the same break surfaces only as the
walkthrough smoke disagreeing with its golden.
Gates
npm test: 4216 pass, 0 fail, 1 skipped.npm run typecheck: exit 0.npm run smoke -- walkthrough_picker_to_first_query: ok.Note for anyone reproducing: the shared
node_modulesin this environment wasmissing
marked(a declared dependency), which produced 22 test failures and 1TS2307on unmodifiedorigin/master. After installing it, both gates areclean. The failure set was byte-identical with and without this change before
that install.
Fixes #761