Extracted and generalized from a project-specific agent launch engine. No project specifics remain in code: paths, the loop kickoff preamble, handoff conventions, and the on-complete hook are all config/template driven; session_prefix + log_dir are required. - agents.py: driver + watchdog (data-driven backends via prompt_delivery arg|ping|exec; required session_prefix/log_dir; project-rooted path resolution; configurable kickoff template, handoff patterns, on_complete task; tmux-safe; selftest + init verbs) - agent-log.py: config-driven claude transcript renderer - agents.example.toml: self-contained 2-agent example (dependency-free demo backend) - prompts/: generic builder/adversary/kickoff templates - smoke.sh: isolated up+down sandbox proof that cleans up after itself - flake.nix/.lock: devShell (python311 + tmux + git) - README.md: schema + verbs + AI-PO usage + nix Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1.0 KiB
*** PROJECT PHASE: {phase_id} *** SINGLE SOURCE OF TRUTH for THIS phase: {plan} — read it in full now; it defines this phase's mission and Definition of Done.
Track loop state in PHASE-NAMESPACED files UNDER machine-docs/ in your repo clone (create the
dir if missing): machine-docs/{status}, machine-docs/BACKLOG-{phase_id}.md,
machine-docs/REVIEW-{phase_id}.md, machine-docs/JOURNAL-{phase_id}.md. machine-docs/DECISIONS.md
is shared (append-only, joint authority).
FILE-LOCATION RULE (mandatory): ALL coordination / loop-state files live under machine-docs/,
NEVER the repo root — that includes STATUS/BACKLOG/REVIEW/JOURNAL (phase-namespaced),
DECISIONS.md, and the ADVERSARY-INBOX.md / BUILDER-INBOX.md side-channels. If you find one at the
root, git mv it into machine-docs/.
"Done" for this phase = the Builder writes the done marker ("## DONE") to machine-docs/{status}
ONLY after every Definition-of-Done item is Adversary-verified with a fresh PASS in
machine-docs/REVIEW-{phase_id}.md.
=== standing role & rules ===