diff --git a/.aios-core/development/tasks/qa-gate.md b/.aios-core/development/tasks/qa-gate.md index bce9035077..543a3f0fe1 100644 --- a/.aios-core/development/tasks/qa-gate.md +++ b/.aios-core/development/tasks/qa-gate.md @@ -394,6 +394,23 @@ If blast radius returned HIGH risk: 3. Keep status_reason to 1-2 sentences maximum 4. Use severity values exactly: `low`, `medium`, or `high` +## MANDATORY FINAL STEP — Update Story Status + +After creating the gate file, **ALWAYS** update the story's `| **Status** |` row in the metadata table and append to the Change Log. This step is non-negotiable — a gate file without a corresponding story Status update is an incomplete task execution. + +| Gate verdict | Story Status → | +|--------------|-----------------| +| PASS | Done | +| CONCERNS | Done | +| FAIL | InProgress | +| WAIVED | Done | + +**Change Log entry (append, do not replace):** + +``` +| {YYYY-MM-DD} | @qa (Quinn) | Gate: {verdict} — Status: {old} → {new} | +``` + ## Example Story Update After creating gate file, append to story's QA Results section: diff --git a/.claude/rules/story-lifecycle.md b/.claude/rules/story-lifecycle.md index eb17b17702..8cc4cddde8 100644 --- a/.claude/rules/story-lifecycle.md +++ b/.claude/rules/story-lifecycle.md @@ -18,10 +18,13 @@ Draft → Ready → InProgress → InReview → Done | Ready | @po validates (GO) | @po | **MUST update status field in story file from Draft → Ready** | | InProgress | @dev starts implementation | @dev | Update status field | | InReview | @dev completes, @qa reviews | @qa | Update status field | -| Done | @qa PASS, @devops pushes | @devops | Update status field | +| Done | @qa PASS / CONCERNS / WAIVED | **@qa** | **MUST update status field InReview → Done** | +| InProgress (return) | @qa FAIL | **@qa** | **MUST update status field InReview → InProgress** | **CRITICAL:** The `Draft → Ready` transition is the responsibility of @po during `*validate-story-draft`. When verdict is GO (including conditional GO after fixes are applied), @po MUST update the story's Status field to `Ready` and log the transition in the Change Log. A story left in `Draft` after a GO verdict is a process violation. +**CRITICAL:** The `InReview → Done` and `InReview → InProgress` transitions are the responsibility of @qa during `*qa-gate`. @qa MUST update the story's Status field immediately after creating the gate file (see `qa-gate.md` — MANDATORY FINAL STEP). A story left in `InReview` after a gate verdict is a process violation. @devops does NOT own this transition — @devops only executes `git push` after the story is already `Done`. + ## Phase 1: Create (@sm) **Task:** `create-next-story.md`