CI / build (push) Has been cancelled
State Enforcement (v2.0):
- .state file as single source of truth for task phase
- Approval gates for research, decomposition, design, test_design
- status.py --transition refuses illegal phase transitions
- status.py --validate-folder detects out-of-order artifacts
- status.py --audit checks all tasks for violations
- status.py --create-task is the only valid way to create tasks
- Pre-v2.0 tasks without .state are UNTRACKED -- all commands refuse them
- New --upgrade command bootstraps .state files for existing tasks
Project Scoping:
- --project flag added to all status.py commands across 16+ files
- _find_project_dir errors instead of silently falling back to ~/.automaton/
- --scope-check marks framework files OUT_OF_SCOPE when working on a project
- Dashboard handlers use stored project_root instead of re-detecting from CWD
- Prompts reference ~/.automaton/scripts/vram_detect.py (not {project}/.automaton/)
Harness Integration:
- status.py --can-edit now supports project-level checks (no --task required)
- --can-edit --file checks file scope without --task
- --json output for machine-readable harness integration
- opencode plugin (plugins/automaton-guard/plugin.ts) intercepts edit/write
- Git pre-commit hook (scripts/git-hooks/pre-commit) blocks commits without task
- Formal integration contract (contracts/harness-integration.md)
Other:
- upgrade.sh delegates to status.py --upgrade instead of manual heuristics
- Phase prompts reference --project {project} for multi-project scoping
- 200 tests passing (14 new)
2.1 KiB
2.1 KiB
Implementation: Autopilot Gate Integration
Changes Made
1. Gate-between-phases in autopilot
The orchestrator prompt (prompts/orchestrate.md) now defines an explicit gate-check loop:
- Read
.state→ confirm current phase - Run
status.py --validate-folder→ check for out-of-order artifacts - If violations found → STOP and report
- Load phase prompt → confirm ALLOWED/FORBIDDEN boundaries
- Execute phase → produce required artifact
- If phase requires approval →
--transition {phase}:awaiting_approval, pause for user sign-off,--approve,--transition {next-phase} - If phase does NOT require approval →
--transition {next-phase}
2. Resumption from .state
- The orchestrator reads
.statefor each task, no artifact re-derivation needed - Approval sub-states are preserved across sessions
3. Persona switching
- Orchestrator loads the prompt for the current phase based on
.state - FORBIDDEN sections in phase prompts constrain what the orchestrator can do
- Orchestrator must NOT override phase-level FORBIDDEN rules
4. Approval gates in autopilot
- Research, decomposition, design, and test_design phases ALWAYS pause for user approval in autopilot
- The pause is enforced by
status.py --transitionrefusing past:awaiting_approval - After user says "APPROVED",
status.py --approveis called, then transition proceeds
5. Session break recovery
.statefile records the last completed phase (including approval sub-states)- Next session reads
.stateand resumes exactly where it left off - No phase progress is lost on session break
6. Manual mode coexistence
- Orchestrator reads
.stateand reports current phase - User triggers phases manually, orchestrator calls
status.py --transitionandstatus.py --approve
7. Periodic audit
- Orchestrator calls
status.py --auditat session start and after task completion - Catches violations that might slip through individual phase gates
Files Modified
prompts/orchestrate.md(rewritten, 143 lines with gate-check loop)prompts/workflow.md(referenced from orchestrate.md)