Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
8.8 KiB
Skill Test Spec: /regression-suite
Skill Summary
/regression-suite [update | audit | report] maintains tests/regression-suite.md,
a curated manifest of existing tests that guard critical paths and fixed bugs.
audit maps each GDD acceptance criterion (scoped by workflow tier) to tests in
tests/unit/[system]/ and tests/integration/[system]/ as COVERED / PARTIAL /
MISSING / EXEMPT, raising MISSING formula or state-machine criteria to HIGH
PRIORITY. update checks bugs in production/qa/bugs/ with Status: Closed or
Status: Fixed for a regression test (HAS / MISSING REGRESSION TEST) and appends
new manifest entries without removing any. report is read-only. All modes
check for coverage drift.
At qa.level: minimal the skill stops before any scan with "Regression suite
not generated at qa.level minimal". With zero critical paths or zero test files
it reports Coverage: NOT ASSESSED — [no GDDs found | no test files found]
instead of a percentage. Before writing it asks "May I write/update
tests/regression-suite.md with the current regression suite manifest?".
Verdict, first match: NOT ASSESSED at the qa.level: minimal stop or when
coverage was not computed (never COMPLETE over a missing figure, even after a
write), BLOCKED if the user declines the write, COMPLETE after the
write — or, in read-only report mode, once the report is shown. qa.level
also sets timing — the suite is due at Polish-stage entry at standard and at
Production-stage entry at full — so each fixture pins project.stage. No
director gates apply.
Static Assertions (Structural)
Checked against the SKILL.md by /skill-test spec — no fixture needed.
- Has required frontmatter fields:
name,description,argument-hint,user-invocable,allowed-tools - Has ≥2 phase headings
- Contains verdict keywords: COMPLETE, BLOCKED, NOT ASSESSED
- Contains "May I write" language before writing
tests/regression-suite.md - Has a next-step handoff (
/test-helpersfor HIGH gaps,/regression-suite auditon drift,/test-flakinessfor quarantined tests)
Director Gate Checks
None. /regression-suite is a QA utility. It spawns no agents (Agent is not
in its allowed tools) and no director gates apply.
Test Cases
Case 1: Audit — Criteria Mapped, Formula Gap Raised to HIGH
Fixture:
qa.level: standard; workflow tierfull;project.stage: Polishdesign/gdd/systems-index.mdlistscombat;design/gdd/combat.mdhas 4 acceptance criteria: a damage formula, a hit-stun state transition, a knockback rule and a HUD damage-number displaytests/unit/combat/has tests for hit-stun (all cases) and knockback (happy path only); nothing tests the damage formulatests/regression-suite.mdexists
Input: /regression-suite audit
Expected behavior:
- Skill reads the existing manifest, globs the test inventory and reads the combat GDD's critical paths
- Coverage: hit-stun COVERED, knockback PARTIAL, damage formula MISSING, HUD display EXEMPT (UI, not automatable)
- The missing damage formula is raised to a HIGH PRIORITY gap with a suggested test file path
- The report shows the per-system table and a non-exempt coverage rate
- Skill asks "May I write/update
tests/regression-suite.mdwith the current regression suite manifest?"; on approval audit rewrites the full manifest - Verdict is COMPLETE; for the HIGH gap it suggests
/test-helpers
Assertions:
- Each criterion gets one of COVERED / PARTIAL / MISSING / EXEMPT, matching the fixture
- The HUD criterion is EXEMPT and excluded from the coverage rate
- The damage-formula gap is HIGH PRIORITY with a
tests/unit/combat/path - The manifest is written only after the "May I write/update" ask
- Verdict is COMPLETE and
/test-helpersis suggested
Case 2: Update — Fixed Bug Without a Regression Test
Fixture:
qa.level: standard;project.stage: Polishproduction/sprints/sprint-007.mdis the current sprint plan; its oneStatus: Completestory isproduction/epics/inventory/story-003.mdproduction/qa/bugs/BUG-0012.mdhasStatus: Closed, systeminventory- No test under
tests/unit/inventory/ortests/integration/inventory/references BUG-0012 or its failure scenario tests/regression-suite.mdhas 6 registered tests
Input: /regression-suite update
Expected behavior:
- Skill reads the sprint plan's completed stories and the closed bugs
- BUG-0012 is MISSING REGRESSION TEST, with suggested path
tests/unit/inventory/[bug-slug]_regression_test.[ext]and the note "Without this test, this bug can silently return in a future sprint." - Report shows the Bug Regression Coverage table with BUG-0012 marked NO
- After the "May I write/update" ask, new entries are appended with targeted
Editinsertions; the 6 existing entries remain - Skill says the next sprint should include a story to write the missing test; verdict COMPLETE
Assertions:
- BUG-0012 is reported as MISSING REGRESSION TEST
- The suggested path follows
tests/unit/[system]/[bug-slug]_regression_test.[ext] - No existing manifest entry is removed
- The next-sprint story recommendation appears because bug regression gaps > 0
- Verdict is COMPLETE after approval
Case 3: qa.level minimal — Suite Not Generated
Fixture:
qa.level: minimal- GDDs and test files exist
Input: /regression-suite audit
Expected behavior:
- The early
qa.levelguard fires before any scan - Skill reports "Regression suite not generated at qa.level minimal" and stops
- It does not fall into the workflow-tier
minimalbranch (smoke-report scope) - Verdict is NOT ASSESSED — the first rule of the verdict list
Assertions:
- The "not generated at qa.level minimal" message is shown
- No GDD, test or bug scan runs
- The smoke-report branch is not entered on account of
qa.level - Nothing is written and no "May I write" ask appears
- Verdict is NOT ASSESSED — not COMPLETE, and not a stop without a verdict
Case 4: Edge Case — No Test Files, Coverage NOT ASSESSED
Fixture:
qa.level: standard; workflow tierfull;project.stage: Polishdesign/gdd/holds GDDs with acceptance criteriatests/unit/,tests/integration/andtests/regression/contain no files- The user approves the manifest write
Input: /regression-suite audit
Expected behavior:
- The test globs return zero files
- Skill does not emit a coverage percentage
- It reports
Coverage: NOT ASSESSED — no test files found, naming the empty side and/test-setupas the skill that produces the test scaffold - The manifest is written only after the "May I write/update" ask
- Verdict is NOT ASSESSED — the first match, even though the write happened
Assertions:
- No
0%(or any percentage) coverage figure is reported - Coverage reads
NOT ASSESSED — no test files found /test-setupis named as the producing skill- Any manifest write still requires the "May I write/update" ask
- Verdict is NOT ASSESSED — never COMPLETE over a coverage figure that was not computed
Case 5: Director Gate Check — None; Report Mode Is Read-Only
Fixture:
qa.level: standard;project.stage: Polishtests/regression-suite.md, tests and closed bugs exist- Any review mode
Input: /regression-suite report
Expected behavior:
- Skill produces the Regression Suite Status report in conversation
- No director or other agent is spawned; no gate IDs appear
reportmode writes nothing and asks no write question
Assertions:
- No director gate is invoked and no gate skip message appears
- No subagent is spawned
- The status report is shown in conversation
- No file is written and no "May I write" ask appears
Protocol Compliance
- Stops before scanning at
qa.level: minimal - Reports
NOT ASSESSEDinstead of a percentage when GDDs or tests are absent - Asks "May I write/update
tests/regression-suite.md" before any write updateonly appends; existing manifest entries are never removed without approvalreportwrites nothing- Verdict, first match: NOT ASSESSED at the
qa.level: minimalstop or when coverage was not computed (even after a write); else BLOCKED if the user declines the write; else COMPLETE
Coverage Notes
- No-argument behaviour (runs
updatewhen a sprint is clearly active, else asks A/B/C) is not tested. - At workflow tier
minimal,auditmaps coverage against the latestproduction/qa/smoke-*.mdreport instead of GDD criteria, and stops if none exists; not separately tested. - Coverage-drift detection (new systems, stale manifest date) is not tested by a dedicated case.
- The skill does not run tests; it maps criteria and bugs to test files by name.