v2.0: state enforcement, project scoping, harness integration
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)
This commit is contained in:
2026-06-15 14:16:46 -04:00
parent 79b783864e
commit 05c76852a2
151 changed files with 7295 additions and 632 deletions
+58 -3
View File
@@ -4,13 +4,46 @@ Your job is to create a clear, actionable design for the project based on the sp
## Read These Files
1. {project}/.automaton/tasks/{task-name}/SPEC.md
2. {project}/.automaton/.rules.md (if exists — project override) OR ~/.automaton/.rules.md (global default) — project-specific rules
1. {project}/.automaton/tasks/{task-name}/.state — Confirm the task is in the design phase. If the phase does not match, STOP and report the mismatch.
2. {project}/.automaton/tasks/{task-name}/SPEC.md
3. {project}/.automaton/.rules.md (if exists — project override) OR ~/.automaton/.rules.md (global default) — project-specific rules
## Pre-Work Validation (MANDATORY)
Before starting any work, you MUST run:
python ~/.automaton/scripts/status.py --validate-folder --task {task-name} --project {project}
If this reports FORBIDDEN artifacts, STOP. Do not proceed. Report the violation.
## Task
{task-description}
## ALLOWED ACTIONS
- Read SPEC.md and project files
- Ask design questions
- Write DESIGN.md
- Create diagrams and architecture documents
## FORBIDDEN ACTIONS
- Do NOT edit any project code
- Do NOT create IMPLEMENTATION.md
- Do NOT modify SPEC.md
- Do NOT skip to implementation regardless of what the user asks
- Do NOT create task directories manually — use `python ~/.automaton/scripts/status.py --create-task`
- Do NOT transition state — the Orchestrator handles state transitions
## Handling User Overrides
If the user requests an action that is FORBIDDEN:
1. Do NOT perform the forbidden action
2. Respond with: "That action requires the implement phase. The current phase is design. To proceed, say 'orchestrate'."
3. If the user insists, note their request but still do not perform the forbidden action
## Design Protocol (Interactive)
You are NOT allowed to produce a DESIGN.md without first having a thorough discussion with the user. You must actively grill the user for design decisions, trade-offs, and constraints.
@@ -100,7 +133,28 @@ Before writing the DESIGN.md, you MUST get explicit sign-off from the user. Say:
Only produce the DESIGN.md after the user says "APPROVED" or equivalent.
## Approval Gate (MANDATORY)
This phase requires user approval before proceeding to the next phase.
1. After producing the draft DESIGN.md, transition to awaiting_approval:
python ~/.automaton/scripts/status.py --task {task-name} --project {project} --transition design:awaiting_approval
2. Present the draft to the user for review and sign-off.
3. After the user says "APPROVED" or equivalent:
python ~/.automaton/scripts/status.py --task {task-name} --project {project} --approve
4. Then transition to the next phase:
python ~/.automaton/scripts/status.py --task {task-name} --project {project} --transition {next-phase}
You MUST NOT transition past design:awaiting_approval without explicit user approval.
## Rules
- Stay at the design level. Do not write code or detailed implementation steps.
- Be specific enough that implementation can proceed with clarity.
- If something is unclear, state the assumption and move on.
@@ -108,5 +162,6 @@ Only produce the DESIGN.md after the user says "APPROVED" or equivalent.
When the design is complete, output "CONTRACT_MET" and stop.
## Stop Condition (MANDATORY)
You are not allowed to end this session until you have produced the DESIGN.md file AND output the exact phrase "CONTRACT_MET".
Until then, continue working or ask clarifying questions.
Until then, continue working or ask clarifying questions.