Skip to content

[sub of #209] Make the default runner green and deterministic on a clean checkout #292

Description

@RafaelGorski

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

  1. 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.
  2. 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.
  3. 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.
  4. Confirm dependency setup does not rewrite tracked files: run the suite, then assert git status --porcelain is empty.
  5. Re-run the consolidated runner twice from the same commit and confirm identical totals (NFR.01).

Acceptance criteria

  • pwsh -File run-tests.ps1 -NoOpen exits 0 with provider-gated suites reported as skipped, not failed
  • node --test evals/tests/dependency-pins.test.mjs passes, including the overrides assertion
  • The dashboard e2e passes on a checkout where the dashboard has never been generated
  • git status --porcelain is empty after a full run
  • Two consecutive runs from the same commit report identical totals

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.

git status --porcelain

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

  • Two consecutive pwsh -File .\run-tests.ps1 -NoOpen executions 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions