* test(#3336): fold the installer & runtime surface issue-* cluster — Wave 4
Folds 10 legacy issue-*.test.cjs regression files (79 test() blocks) into
their module's main suite, per H3 (#3315) of the test-hygiene epic (#3053).
First of 4 issue-* waves (following the 3 fix-* waves, all merged).
- 1 file with no prior target coverage: renamed (git mv) into
legacy-cleanup.test.cjs (sole comprehensive suite for that module).
- 9 files merged into 6 pre-existing suites: golden-parity-single-source,
runtime-artifact-layout-surface, codex-config (4 sources merged jointly
in one pass per the issue's own instruction, to catch overlap between the
4 sources themselves, not just against the pre-existing target — zero
overlap found, all 20 blocks additive), runtime-config-adapter-registry
(1 of 10 source blocks dropped as a proven subset of existing coverage),
cline-install, install.test.cjs.
Incidental fixes required to keep this wave's own ratchets green:
- Fixed a stale ADR doc reference (docs/adr/1235) to a folded-away filename.
- scripts/lint-allow-test-rule-refs: pruned 4 stale allowlist entries for
renamed/merged-away files, cited 2 previously-uncited allow-test-rule
comments that surfaced as "new" only because their file path changed,
added 1 fresh allowlist entry for a pre-existing uncited comment that
predates this PR, and tightened the exemption-file ceiling 309 -> 305
to match the real post-fold high-water mark.
Zero net test-coverage loss. No production code changed.
* test(#3336): fix orthogonal-review findings — Wave 4 fold
Standards-axis review + Memtrace graph pass found real issues in the
just-folded suites, all fixed here:
- Standardized the fold-wrapper convention (block-scoped __foldDescribe)
across golden-parity-single-source.test.cjs, runtime-artifact-layout-
surface.test.cjs, runtime-config-adapter-registry.test.cjs, and
cline-install.test.cjs to match the pattern already used by
codex-config.test.cjs and install.test.cjs in this same wave (and by
earlier folds elsewhere in the epic) — repeats the exact inconsistency
Wave 3 (#3335) already fixed once in this epic.
- Fixed a stale allowlist entry's alphabetical position (cosmetic, not
tool-gated, caught by review anyway).
- Fixed two stale test-filename references in PRODUCTION code comments
(src/capability-writer.cts, src/runtime-config-adapter-registry.cts)
caught by lint-removed-but-needed — a class of stale reference this
wave's fold agents didn't check for, since they were scoped to docs/
and gsd-core/references/ only, not src/. First fix attempt wrongly
edited the gitignored gsd-core/bin/lib/*.cjs BUILD OUTPUT instead of
the tracked .cts source; caught and corrected before commit.
- Fixed one remaining stale doc reference in docs/adr/1235 (a prior
partial fix in this same wave missed it).
No test() count changed in any file. No production code BEHAVIOR
changed — comment-only fixes in src/.
---------
Co-authored-by: sim <sim@local>
Folds 15 tests/fix-*.test.cjs regression files (191 test() blocks) into
their module's main suite, per the wave decomposition of #3315 (H3 of
epic #3053). 187 blocks land in 8 existing suites (4 exact-duplicate
cases dropped, documented inline); 4 blocks move via git mv into 2 new
suite files with no prior coverage to merge into. Zero production
behavior change.
Also tightens two H1 (#3313) ratchets that the fold's own file-count
reduction moved past their grace window, per the ratchets' documented
dual failure mode (a stale/too-loose baseline fails exactly like a
novel violation):
- lint-test-file-count.allowlist.json: removes the stale "audit" entry
(folding fix-2766 into tests/uat.test.cjs drops that module back to
its 2-file cap).
- lint-allow-test-rule-refs.ceiling.json: lowers maxFiles 314 -> 309,
the real post-fold high-water mark (gsd-test's own repo-baseline
test caught this — CI, not a human, found it).
Two orthogonal review passes (Standards+Spec code-review, isolated
security-review) found and this commit fixes two issues before push:
a genuinely-distinct #2287 test case (file-absent vs. file-present-
resolved) that a prior fold pass had wrongly dropped as a duplicate —
restored verbatim into tests/uat.test.cjs; and a missing same-line
allow-test-rule citation on the #2196 block in
tests/debug-session-management.test.cjs, added for consistency with
its sibling #2257 block.
lint-removed-but-needed also caught two stale doc references to the
now-folded-away fix-2285-claude-orchestration-wiring.test.cjs filename
(docs/adr/1143-claude-orchestration-capability.md,
gsd-core/references/execute-phase-response-language.md) — updated both
to point at tests/claude-orchestration.test.cjs, its new home.
Co-authored-by: sim <sim@local>
Extends lint-allow-test-rule-refs.cjs with a second, independent check
alongside the existing uncited-citation identity ratchet: the total
number of distinct test files carrying any allow-test-rule marker
(cited or not) is now checked against a tight ceiling via the
previously-unwired assertTightCeiling primitive (allowlist-ratchet.cjs,
0 prior callers). A cited exemption is legitimate under ADR-456 but
nothing stopped the raw total from growing forever - this closes that
gap without duplicating the file walk (both checks consume one shared
walkTestFiles pass).
Ceiling introduced at the exact measured high-water mark (314 files,
grace 3) rather than a padded estimate, per "budgets may only
decrease."
Also lands the two F17 pieces (absorbed from the now-closed #1885)
that had no precondition:
- --max-warnings 0 added to lint/lint:ci
- local/no-source-grep promoted warn->error in the scripts/bin/
eslint-rules glob block (already error in the tests/ glob)
Both promotions were pre-verified against a zero-warning tree (fresh
non-cached eslint run) before flipping, per the maintainer's clean-
tree-first decision.
Not included: local/no-elapsed-assertion promotion, which stays warn
pending #3314 (H2) - 10 of 19 clock-touching src modules have no
sanctioned time-control mechanism until ADR-456 is amended there.
H1 of epic #3053, absorbing #1885 F17.
Co-authored-by: sim <sim@local>