Parent: #209 — Restore the cited specification and baseline testability on main
This sub-issue was opened to address the problems found while auditing the whole open
backlog with the Problem-Based SRS methodology (/problem-based-srs functional-requirements,
2026-09-27). It carries the executable plan, the acceptance criteria and the verification
evidence its parent needs in order to close.
Problem addressed
CP.05 — The default test runner is red and order-dependent, so green proves nothing. Running the documented consolidated command on a clean checkout exits non-zero with twelve failures caused by stale fixtures, a lockfile that describes a different package version, and a dashboard the end-to-end suite reads before it is regenerated — so a contributor cannot distinguish a real regression from the standing baseline.
Observed in this parent: pwsh -File run-tests.ps1 -NoOpen exits 1 with 12 failures on a clean checkout. Eleven are skill evals (dependency-pins, distribution-drift, docs-version-parity, release-hygiene, release-preflight, release-trains) and one is the canvas dashboard e2e, which passes only after the dashboard is regenerated. package-lock.json declares 1.1.3 against package.json 1.1.5. Every other issue in this backlog is supposed to close on evidence from this runner, so this is the first thing that has to be true.
Requirements discharged
| ID |
Statement |
Traces to |
FR.05.1.1 |
The consolidated runner shall exit zero on a clean checkout with no provider credentials present. |
CN.05.1 → CP.05 |
FR.05.1.2 |
The consolidated runner shall leave every tracked file unmodified when it completes. |
CN.05.1 → CP.05 |
FR.05.2.1 |
The canvas extension lockfile shall declare the same version as the package.json beside it. |
CN.05.2 → CP.05 |
FR.05.3.1 |
The end-to-end suite shall regenerate the skills-health dashboard before any test asserts against it. |
CN.05.3 → CP.05 |
NFR.01 |
The default test suite shall produce the same result on every run from the same commit, without network access or provider credentials. |
quality — Reliability |
Plan
- Align
.github/extensions/srs-navigator/package-lock.json with package.json (1.1.5) and re-apply the declared dependency overrides, so dependency-pins.test.mjs describes the package it sits beside.
- Derive the release fixtures in
release-hygiene, release-preflight and release-trains from .claude-plugin/plugin.json and VERSION at run time instead of the pinned v2.6 assumptions they still carry.
- Regenerate the skills-health dashboard as a pre-step of the e2e project that reads it, so the suite stops depending on whether a previous run wrote the file.
- Confirm dependency setup does not rewrite tracked files: run the suite, then assert
git status --porcelain is empty.
- Re-run the consolidated runner twice from the same commit and confirm identical totals (NFR.01).
Acceptance criteria
Verification
Closure requires reproducible evidence: a Playwright capture for anything user-visible in
the app or the site, a CLI transcript for anything in the skills or the pipeline. A green
claim without an attached artefact does not close this issue.
App / site — Playwright with screenshots
npm run test:e2e --prefix .github/extensions/srs-navigator -- --grep "dashboard names the same version as the site badge"
Evidence to attach: .github/extensions/srs-navigator/test-results/skills-health-dashboard.png plus a green run on a checkout with no pre-generated dashboard.
Skills / pipeline — CLI transcript
pwsh -File run-tests.ps1 -NoOpen
Evidence to attach: Transcript showing exit code 0 and the per-suite totals table.
node --test evals/tests/dependency-pins.test.mjs
Evidence to attach: pass 2 / fail 0 for the lockfile and overrides assertions.
Evidence to attach: Empty output captured immediately after the runner finishes.
Playwright captures land in .github/extensions/srs-navigator/test-results/ (git-ignored —
attach them to the issue rather than committing them). Every CLI transcript must record the
command, its exit code and its totals.
Sequencing
|
|
| Step |
1 of 28 in the dependency-ordered sequence |
| Wave |
0 — Baseline green |
| Blocked by |
nothing — can start now |
| Blocks |
#291, #217, #211, #220, #219, #225, #289, #149 |
Nothing else can close on evidence while the runner is red and the surfaces disagree. Everything downstream cites a run of this suite.
Supersedes
This parent already carries 1 duplicate child restating the
same work across earlier passes. This issue replaces it; close #278 as
superseded once this lands, so the parent is left with exactly one active child.
Generated from the Problem-Based SRS requirement model for this backlog. Full traceability:
.spec/01-customer-problems.md, .spec/03-customer-needs.md,
.spec/functional-requirements/_index.md.
Acceptance verification
Parent: #209 — Restore the cited specification and baseline testability on main
This sub-issue was opened to address the problems found while auditing the whole open
backlog with the Problem-Based SRS methodology (
/problem-based-srs functional-requirements,2026-09-27). It carries the executable plan, the acceptance criteria and the verification
evidence its parent needs in order to close.
Problem addressed
CP.05 — The default test runner is red and order-dependent, so green proves nothing. Running the documented consolidated command on a clean checkout exits non-zero with twelve failures caused by stale fixtures, a lockfile that describes a different package version, and a dashboard the end-to-end suite reads before it is regenerated — so a contributor cannot distinguish a real regression from the standing baseline.
Observed in this parent:
pwsh -File run-tests.ps1 -NoOpenexits 1 with 12 failures on a clean checkout. Eleven are skill evals (dependency-pins,distribution-drift,docs-version-parity,release-hygiene,release-preflight,release-trains) and one is the canvas dashboard e2e, which passes only after the dashboard is regenerated.package-lock.jsondeclares 1.1.3 againstpackage.json1.1.5. Every other issue in this backlog is supposed to close on evidence from this runner, so this is the first thing that has to be true.Requirements discharged
FR.05.1.1FR.05.1.2FR.05.2.1package.jsonbeside it.FR.05.3.1NFR.01Plan
.github/extensions/srs-navigator/package-lock.jsonwithpackage.json(1.1.5) and re-apply the declared dependency overrides, sodependency-pins.test.mjsdescribes the package it sits beside.release-hygiene,release-preflightandrelease-trainsfrom.claude-plugin/plugin.jsonandVERSIONat run time instead of the pinned v2.6 assumptions they still carry.git status --porcelainis empty.Acceptance criteria
pwsh -File run-tests.ps1 -NoOpenexits 0 with provider-gated suites reported as skipped, not failednode --test evals/tests/dependency-pins.test.mjspasses, including the overrides assertiongit status --porcelainis empty after a full runVerification
Closure requires reproducible evidence: a Playwright capture for anything user-visible in
the app or the site, a CLI transcript for anything in the skills or the pipeline. A green
claim without an attached artefact does not close this issue.
App / site — Playwright with screenshots
npm run test:e2e --prefix .github/extensions/srs-navigator -- --grep "dashboard names the same version as the site badge"Evidence to attach:
.github/extensions/srs-navigator/test-results/skills-health-dashboard.pngplus a green run on a checkout with no pre-generated dashboard.Skills / pipeline — CLI transcript
Evidence to attach: Transcript showing exit code 0 and the per-suite totals table.
Evidence to attach:
pass 2 / fail 0for the lockfile and overrides assertions.Evidence to attach: Empty output captured immediately after the runner finishes.
Playwright captures land in
.github/extensions/srs-navigator/test-results/(git-ignored —attach them to the issue rather than committing them). Every CLI transcript must record the
command, its exit code and its totals.
Sequencing
Nothing else can close on evidence while the runner is red and the surfaces disagree. Everything downstream cites a run of this suite.
Supersedes
This parent already carries 1 duplicate child restating the
same work across earlier passes. This issue replaces it; close #278 as
superseded once this lands, so the parent is left with exactly one active child.
Generated from the Problem-Based SRS requirement model for this backlog. Full traceability:
.spec/01-customer-problems.md,.spec/03-customer-needs.md,.spec/functional-requirements/_index.md.Acceptance verification
pwsh -File .\run-tests.ps1 -NoOpenexecutions passed from the same consolidated commit: plugin validation 1/1, canvas units 307/307, deterministic evals 974/974, Playwright 41/41; the second run completed with the same tracked dashboard outputs.