Files
Claude-Code-Game-Studios/.claude/skills/story-done/references/6-completion-report.md
T
DonchitosandClaude Opus 5.5 be8993bbc5 Release 1.1.3 — long skills keep their later steps
Fix release for 1.1.2: the 14 longest skills keep their later phases
after a compaction, a question nobody answered is never taken as an
answer, settings read the same from a subfolder, the commit check works
for a project in a subfolder of a larger repository, every skill opens
with a title, and the shipped allow rules no longer approve deleting a
branch or writing files without asking. Details in CHANGELOG.md; upgrade
steps in UPGRADING.md (v1.1.2 → v1.1.3).

Refs #83
Refs #133

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0185en4t76fPn7315q4c3nko
2026-10-08 17:52:48 +11:00

5.8 KiB

/story-done — Phase 6: Present the Completion Report

Part of /story-done. SKILL.md names when to read this file; the settings it resolved and the rules under its later headings still apply here.

Phase 6: Present the Completion Report

In this file:

  • The completion report template
  • Verdict definitions
  • NOT ASSESSED and verdict precedence

Before updating any files, present the full report:

## Story Done: [Story Name]
**Story**: [file path]
**Date**: [today]

### Acceptance Criteria: [X/Y passing]
- [x] [Criterion 1] — auto-verified (test file present)
- [x] [Criterion 2] — confirmed
- [ ] [Criterion 3] — FAILS: [reason]
- [?] [Criterion 4] — DEFERRED: requires playtest

### Test-Criterion Traceability
| Criterion | Test | Status |
|-----------|------|--------|
| AC-1: [text] | [test file::test name] | COVERED |
| AC-2: [text] | Manual confirmation | COVERED |
| AC-3: [text] | — | UNTESTED |

### Test Evidence
**Story Type**: [Logic | Integration | Visual/Feel | UI | Config/Data | Not declared]
**Required evidence**: [unit test file | integration test or playtest | screenshot + sign-off | screenshot of each screen touched | smoke check pass]
**Evidence found**: [YES — `[path]` | NO — BLOCKING | NO — ADVISORY]

### Deviations
[NONE] OR:
- BLOCKING: [description] — [GDD/ADR reference]
- ADVISORY: [description] — user accepted / flagged for tech debt

### Scope
[All changes within stated scope] OR:
- Extra files touched: [list] — [note whether valid or scope creep]

### Verdict: COMPLETE / COMPLETE WITH NOTES / NOT ASSESSED / BLOCKED

Verdict definitions:

  • COMPLETE: all criteria pass, no blocking deviations
  • COMPLETE WITH NOTES: every criterion passes or is DEFERRED (Phase 3 — evaluable, awaiting a playtest), with advisory deviations or deferred criteria documented — list each DEFERRED criterion so it is not lost
  • NOT ASSESSED: one or more acceptance criteria could not be evaluated at all — name which, and why
  • BLOCKED: failing criteria or blocking deviations must be resolved first

NOT ASSESSED — the story nobody could verify. Rank: it outranks COMPLETE and COMPLETE WITH NOTES (a review that could not evaluate a criterion has not shown the criterion is met) and ranks below BLOCKED (a criterion known to fail is more actionable than one nobody could check, and demoting it would bury it). It is not a gentler BLOCKED: "this acceptance criterion fails" and "I could not tell whether it passes" send the reader to different fixes.

Verdict precedence — first matching rule wins, evaluated in this order: BLOCKED, then NOT ASSESSED, then COMPLETE WITH NOTES, then COMPLETE. A run with both a failing criterion and an unassessable one is BLOCKED. Stating the order mechanically, rather than leaving it to be inferred from the rank sentence, is what keeps two reviewers from grading the same story differently.

Emit it when any of:

  • An acceptance criterion cannot be evaluated at all — it names no observable outcome, so no evidence could settle it either way.

    Not the same as Phase 3's DEFERRED. A criterion that is evaluable but needs a playtest is DEFERRED — requires playtest session, it does not block, and Phase 3 keeps ownership of it. This trigger is for a criterion no session could ever settle as written. If Phase 3 already marked it DEFERRED, that classification stands and this trigger does not fire.

  • A criterion the user answered Not tested yet (Phase 3) — it could be checked, but nobody has. Name it and what would settle it: launch the build, check it, then re-run /story-done.
  • QL-TEST-COVERAGE or LP-CODE-REVIEW returned NOT ASSESSED and the input it named was not supplied.
  • The test evidence is present but unreadable or unclassifiable — corrupt, empty, or of a type that cannot be determined.

    Absent evidence is Phase 3's, not this trigger's. Phase 3 resolves a missing file through testing.strict: BLOCKING types produce BLOCKED, ADVISORY types produce COMPLETE WITH NOTES. Both outrank or are already decided, so re-routing "absent" here would silently override an explicit advisory ruling. Unreadable is the genuinely unassessable case, and it is the only one this trigger claims.

  • /test-evidence-review returned NOT ASSESSED for this story — applicable only when that skill was actually run against it, which this skill does not do itself. It propagates: that skill's whole point is that "could not check" is not "checked and fine", and collapsing its unknown into a COMPLETE here would undo the distinction one skill downstream. coding-standards.md marks Logic and Integration evidence BLOCKING, so this is the path where an unverifiable story would otherwise acquire a verdict saying somebody verified it.
  • A deviation's severity cannot be determined because the GDD or ADR it would be judged against is missing.

A NOT ASSESSED verdict takes the same Phase 7 path as BLOCKED: do not automatically proceed, list what could not be checked and what would make it checkable. Closing anyway remains the user's explicit call, and stays gated by Phase 7's scope_changes always-ask rule.

If the verdict is BLOCKED: do not automatically proceed to Phase 7. List what must be fixed and offer to help fix the blocking items. This is the default path, not an absolute stop — the user may still explicitly ask to close the story anyway despite the blockers. That request is what routes to Phase 7's menu below, and Phase 7's own scope_changes always-ask rule is exactly what stands between that request and a silent close in autonomous mode. Do not treat "do not automatically proceed" as "Phase 7 is now unreachable" — it is reachable, on request, and gated when reached.