A single Builder that builds AND self-verifies (same DoD rigor), with NO independent Adversary and no claim/review handoff. The control for measuring what the AI adversary costs (its tokens, ~half of a loop-pair run) and buys (independent cold verification vs self-certification). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
69 lines
2.4 KiB
TOML
69 lines
2.4 KiB
TOML
# examples/builder-solo — a single Builder, NO Adversary (self-verification baseline).
|
|
#
|
|
# Same pattern + same task spec as ../builder-adversary, but there is only ONE agent: the Builder
|
|
# builds AND verifies its own work, then self-certifies "## DONE". This is the control for measuring
|
|
# what the independent AI Adversary actually costs (its tokens) and buys (independent cold
|
|
# verification). No claim/review handoff — nothing to hand off to.
|
|
#
|
|
# python3 ../../agents.py status --config agents.toml
|
|
# python3 ../../agents.py up --config agents.toml # needs `claude` on PATH
|
|
|
|
[watchdog]
|
|
signal_interval = 30
|
|
heavy_interval = 300
|
|
limit_probe_fallback = 300
|
|
limit_reset_slack = 45
|
|
stall_grace = 180
|
|
|
|
[defaults]
|
|
session_prefix = "solo-"
|
|
log_dir = ".ao-state"
|
|
backend = "claude" # set to "demo" for a dependency-free mechanics-only run
|
|
model = "claude-sonnet-4-6"
|
|
watch = "heal"
|
|
|
|
[backend.claude]
|
|
bin = "claude"
|
|
flags = "--dangerously-skip-permissions"
|
|
remote_control = true
|
|
supports_resume = true
|
|
prompt_delivery = "arg"
|
|
process_name = "claude"
|
|
submit_key = "Enter"
|
|
stall_idle = 300
|
|
active_re = "esc to interrupt|Running tool|⠇|⠙|· \\d+"
|
|
limit_re = "spend limit|usage limit|limit reached|reached your .*limit|out of (credits|tokens)"
|
|
fatal_re = "redacted_thinking|blocks cannot be modified|cannot be modified"
|
|
|
|
[backend.demo]
|
|
bin = "echo '[demo] {session} up (kickoff: {kickoff})'; exec sleep 1000000"
|
|
prompt_delivery = "exec"
|
|
|
|
# The lone builder — builds and self-verifies.
|
|
[[agent]]
|
|
name = "builder" # tmux session: solo-builder
|
|
kind = "loop"
|
|
role = "builder" # kickoff = prompts/kickoff.md (per phase) + prompts/builder.md
|
|
dir = "./work"
|
|
watch = "heal+stall"
|
|
|
|
[[service]]
|
|
name = "cleanlogs"
|
|
command = "python3 ../../agent-log.py follow-all"
|
|
dir = "."
|
|
|
|
# Phase machine. No handoff (single agent); the watchdog auto-advances when the builder writes
|
|
# "## DONE" to the phase status file (read from handoff.repo's state_subdir).
|
|
[loop]
|
|
state_file = "phase-idx"
|
|
resume_phase = true
|
|
auto_advance = true
|
|
done_marker = "## DONE"
|
|
kickoff_template = "prompts/kickoff.md"
|
|
roles_dir = "prompts"
|
|
handoff = { repo = "./work", state_subdir = "machine-docs" }
|
|
phases = [
|
|
{ id = "wc", plan = "plans/wc.md", status = "STATUS-wc.md" },
|
|
{ id = "json", plan = "plans/json.md", status = "STATUS-json.md" },
|
|
]
|