# Implementation: Status Script ## Changes Made ### 1. Core script: `scripts/status.py` (980 lines) Full implementation of all commands specified in the SPEC: - `--task {name}` — Shows phase, allowed/forbidden actions, next artifact, next phase, approval status - `--list` — Lists all tasks with phase and next step - `--create-task {name}` — Creates task folder with `.state`=new, validates kebab-case, refuses duplicates - `--transition {phase}` — Validates and writes `.state` transitions, refuses illegal transitions, refuses past `:awaiting_approval` without `--approve`, validates required artifacts and forbidden artifacts - `--approve` — Transitions `:awaiting_approval` → `:approved`, records in `.state.approvals`, refuses if not in awaiting_approval sub-state - `--validate-folder` — Checks for out-of-order artifacts, flags manually created tasks - `--audit` — Four categories: out-of-order artifacts, state-artifact inconsistency, unauthorized git modifications, manually created tasks - `--claim / --release` — Multi-agent task claiming with `.state.lock` files, timeout, overclaiming - `--next-available / --available` — Work discovery for multi-agent, filters by agent role - `--can-edit` — Returns ALLOWED/DENIED based on current phase - `--scope-check` — Returns IN_SCOPE/OUT_OF_SCOPE for file paths - `--same-session` — Heuristic session check ### 2. Approval sub-states - Phases with approval: research, decomposition, design, test_design - Sub-states: `{phase}:awaiting_approval` and `{phase}:approved` - `--transition` refuses past `:awaiting_approval` without `--approve` - `--approve` records timestamp and approver in `.state.approvals` ### 3. Forbidden artifacts per phase - Full mapping from SPEC implemented in FORBIDDEN_ARTIFACTS dict - `--validate-folder` checks and reports violations - `--transition` refuses if forbidden artifacts exist ### 4. Multi-agent support - Agent Configuration parsed from `.agent.md` - `.state.lock` files with agent ID, phase, claimed timestamp, expiry - Configurable lock timeout (default 30 min) - `--claim` validates agent is configured for the phase - `--next-available` returns highest-priority unclaimed task matching agent phases ### 5. Tests: `tests/test_status.py` (25 tests) - Create task (valid, invalid names, duplicates) - State transitions (legal, illegal, approval gates) - Approval gates (approve, refuse wrong phase, record log) - Folder validation (valid, no state file, out-of-order artifacts) - Artifact validation (missing required, forbidden) - Show task (phase display, allowed/forbidden) - List tasks - Tool hooks (can-edit, scope-check) - Audit (manual tasks, clean tasks) ## Files Created - `scripts/status.py` (980 lines) - `tests/test_status.py` (25 test cases) ## Test Results - 183 tests passing (including all 25 new status.py tests) - Python compilation clean