Invocation

Seed and drive

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1. Prepare a seed file
echo '{"plan_path": "<abs/plan.json>"}' > <out>/seed.json
# Or use the bootstrap helper:
python <epiphany-executor>/bootstrap.py prepare <abs/plan.json> --out <out>

# 2. Drive the executor graph inline
goatcs-harness run <epiphany-executor>/graph.json --seed <out>/seed.json --provider inline     --read-dir <plan-dir> --scratch-dir <out>/session

# 3. At each exit-11 pause: read the node contract, produce outputs, submit, resume
goatcs-harness submit <node> --session <out>/session --inline --outputs <out>/<node>.json
goatcs-harness run <epiphany-executor>/graph.json --resume <out>/session --provider inline     --read-dir <plan-dir>

Resume / fork / handoff

bash
1
2
3
4
5
6
7
8
# Resume a paused session
goatcs-harness run <epiphany-executor>/graph.json --resume <session_dir>     --provider inline --read-dir <plan-dir>

# Fork at a specific sequence number
goatcs-harness fork <session_dir> --at-seq <n>

# Hand off between agents
goatcs-harness handoff <session_dir> --from claude --to codex

At execute_step

You do the actual build work for that one step (TDD: failing test -> minimal impl -> green) and emit step_effects / effect_records as evidence.

At verify_dod

You adopt the independent-verifier lens: re-derive each acceptance criterion from the recorded evidence, never from your own build narration.