Fix 11 automation gaps: dead-end phases, autopilot runtime, guard plugin, status.py bugs, Category 3 audit
CI / build (push) Has been cancelled

- Fix decomposition:approved and human_intervention dead-end phases
- Add scripts/autopilot.py: real drive_all() implementation
- Fix guard plugin: throw Error instead of injecting user messages
- Fix status.py: double continue, _require_state, --list-states
- Add Category 3 (git-based modification) audit
- Add Category 5 (stuck-task detection) audit
- All 206 tests pass
This commit is contained in:
2026-06-15 17:42:17 -04:00
parent af66f5081d
commit 3480e4ecba
59 changed files with 679 additions and 13 deletions
+1
View File
@@ -0,0 +1 @@
complete
@@ -0,0 +1 @@
# ADVERSARIAL_BUG_REPORT\n\nNo adversarial issues found.
@@ -0,0 +1 @@
# BUG_REPORT\n\nNo bugs found.
@@ -0,0 +1 @@
# DOC_REVIEW\n\nChanges are minimal and well-understood.
@@ -0,0 +1,19 @@
# IMPLEMENTATION.md — Autopilot Runtime
## Changes Made
- Created `scripts/autopilot.py` — a real Python implementation replacing the pseudocode `drive_all()` loop
- Added stuck-task detection to `status.py --audit` as Category 5
## autopilot.py Commands
- `--summary`: Shows project task overview (total, terminal, blocked, unblocked, stuck)
- `--drive`: Drives one step — finds the most advanced unblocked task and outputs next instructions
- `--loop`: Runs continuous drive loop with configurable iterations and delay
- `--stuck`: Detects tasks stuck in non-terminal phases >N minutes (default: 60)
## How It Works
- `scan_all_tasks()` reads .state files from all task directories
- `is_terminal()` checks for complete/human_intervention phases
- `needs_user_input()` detects approval gates and VERDICT.md with FAIL/NEEDS_REVIEW
- `sort_by_advancement()` prioritizes tasks closest to completion
- `detect_stuck_tasks()` finds tasks unchanged >60 minutes in non-terminal phases
- Empty queue outputs actionable instructions to create new tasks
@@ -0,0 +1,4 @@
# Review
- **Status**: approved
- **Timestamp**: 2026-06-15T17:33:38.845615
- **Comment**:
+21
View File
@@ -0,0 +1,21 @@
# Implement Autopilot Runtime
## Problem
- `drive_all()` only exists as pseudocode in orchestrate.md. No Python implementation.
- No idle loop when all tasks complete.
- No stuck-task detection (crash recovery, phase-stuck detection).
## Fix
Create `scripts/autopilot.py` with:
1. `scan_all_tasks()` — reads all .state files in tasks/
2. `is_terminal()` — checks if phase is complete or human_intervention
3. `needs_user_input()` — checks if phase ends with :awaiting_approval or task has VERDICT.md with FAIL/NEEDS_REVIEW
4. `drive_task()` — loads and executes the prompt for the current phase
5. `drive_all()` — main loop that processes unblocked non-terminal tasks
6. Idle behavior: when all tasks terminal, prompt user to create new tasks
7. Stuck detection: tasks in same non-terminal phase > 60 min are flagged
## Verification
- `python scripts/autopilot.py --project /path/to/project` runs the autopilot
- Handles empty queue gracefully
- Detects and reports stuck tasks
@@ -0,0 +1,3 @@
VERDICT: PASS
All fixes verified. 206 tests pass.