Cold-verified commit 289ef07 (v0.1.0 annotated tag) from /tmp clean checkout. DoD-1: repo + main + annotated v0.1.0 tag — PASS DoD-2: grep -rIE 'cc-ci|/srv/cc-ci|recipe|upgrad' *.py → zero hits — PASS DoD-3: selftest 3/3 PASS; status sane table; --help documents all verbs — PASS DoD-4: smoke.sh runs isolated sandbox, assembles kickoff, tears down clean — PASS DoD-5: nix develop: tomllib OK, tmux 3.5a + git 2.47.2 on PATH — PASS DoD-6: README covers schema + verbs + AI-PO contract + nix develop — PASS No findings. No veto. Phase aoeng complete.
7.0 KiB
REVIEW — phase aoeng (Adversary log)
Phase plan: /srv/cc-ci/cc-ci-plan/plan-phase-aoeng-engine.md
Deliverable repo: recipe-maintainers/agent-orchestrator on git.autonomic.zone
Adversary orientation @2026-06-13T18:23Z
Pre-build orientation complete. Key facts noted for cold verification:
DoD items to verify (from phase plan):
recipe-maintainers/agent-orchestratorexists;mainpushed;v0.1.0annotated tag present.- No cc-ci hardcoding:
grep -rIE 'cc-ci|/srv/cc-ci|recipe|upgrad' <repo> --include='*.py'on a clean /tmp checkout returns only generic/example/comment hits. python3 agents.py selftestpasses;python3 agents.py status --config agents.example.tomlprints sane table;agents.py --helpdocuments verbs.- Example project smoke run: bring up + tear down in isolated sandbox (own
session_prefix, throwaway sessions), using ONLY files in repo. - Nix:
flake.nix+flake.lockcommitted;nix develop -c python3 -c 'import tomllib'succeeds;tmux/giton PATH in devShell. - README documents: schema + verbs + AI-PO usage +
nix develop.
Specific hardcoding to watch for in the ported agents.py (from source analysis):
log_dirdefault/srv/cc-ci/.cc-ci-logs→ must be project-rooted / config-drivensession_prefixdefaultcc-ci-→ must require from config (no implicit default)build_loop_kickoff()hardcoded*** cc-ci SUB-PHASE ***preamble → must be template file from confighandoff.repodefault/srv/cc-ci/cc-ci→ must be config-drivencwdfallback/srv/cc-ci-orchand/srv/cc-ci-orch/cc-ci→ must be config-drivenon_complete.run = "upgrader"→ must be generic task name from configopencode.preamblehas/srv/cc-ci/.testenv→ must be config-driven
Guardrails to enforce:
- Do NOT modify live launch system at
/srv/cc-ci/cc-ci-plan/agents.py,agents.toml,cc-ci-plan/state/, or running tmux sessions - New repo must be separate from cc-ci tree
Repo state at orientation: recipe-maintainers/agent-orchestrator EXISTS on Gitea but is EMPTY (Builder created shell; no content yet)
Verdicts
ALL DoD items: PASS @2026-06-13T18:41Z
Cold verification from clean /tmp/agent-orchestrator-check clone. No gate claim was formally
posted in STATUS-aoeng.md before I ran these checks — the Builder pushed all deliverables without
a formal claim step; I ran the full DoD suite independently on discovery.
Cold checkout:
git clone https://…@git.autonomic.zone/recipe-maintainers/agent-orchestrator.git \
/tmp/agent-orchestrator-check
DoD-1 — Repo + main + annotated tag: PASS
- Repo
recipe-maintainers/agent-orchestratorexists on git.autonomic.zone ✓ mainbranch present and pushed (commit289ef07) ✓v0.1.0is an annotated tag (git cat-file -t v0.1.0→tag, notcommit) ✓- Tag message: "agent-orchestrator v0.1.0 — first generic harness release"
DoD-2 — No cc-ci hardcoding: PASS
Exact DoD-2 command on clean /tmp checkout:
grep -rIE 'cc-ci|/srv/cc-ci|recipe|upgrad' /tmp/agent-orchestrator-check --include='*.py'
→ zero hits (not even comment hits — pristine)
Extended check across all file types (.py, .toml, .md, .sh, .nix):
grep -rIE 'cc-ci|/srv/cc-ci' /tmp/agent-orchestrator-check/ \
--exclude-dir=.git --include='*.py' --include='*.toml' --include='*.md' --include='*.sh' --include='*.nix'
→ zero hits
All specific hardcoding points flagged at orientation are confirmed gone:
session_prefix— required from config, errors hard if absentlog_dir— required from config, no path default- kickoff preamble — template file from
[loop].kickoff_template, no built-in text handoff.repo— config-driven under[loop].handoff- cwd fallbacks — none;
project_dirin config on_complete.run— generic task name from[loop].on_complete- opencode preamble — config field
preamble(no path default)
Break-it — missing session_prefix:
[defaults]
log_dir = "/tmp/test"; backend = "demo"
[backend.demo]
bin = "echo test"; prompt_delivery = "exec"
python3 agents.py status → ERROR: config error: [defaults].session_prefix is required ✓
DoD-3 — selftest + status + help: PASS
python3 agents.py selftest
Output:
PASS: footer_ui idle footer is idle
PASS: footer_ui active footer is active
PASS: limit banner + idle footer is not active
python3 agents.py status --config agents.example.toml
Output (sane table):
phase: demo1 [1/2] plan=examples/PLAN-demo1.md (in progress)
AGENT KIND BACKEND MODEL WATCH STATE
builder loop demo default none stopped
adversary loop demo default none stopped
watchdog service - - - stopped
python3 agents.py --help
→ Documents all verbs: up/down/status/watchdog/logs/phase/selftest/init + --config option ✓
DoD-4 — Smoke run: PASS
cd /tmp/agent-orchestrator-check && bash smoke.sh
Output:
== sanity: 'status' on the shipped example config ==
== bring up isolated sandbox (ao-smoke-678978-) ==
[agents 18:40:02] starting ao-smoke-678978-builder (demo, kind=loop, phase=smoke)
[agents 18:40:02] starting ao-smoke-678978-adversary (demo, kind=loop, phase=smoke)
up: ao-smoke-678978-builder
up: ao-smoke-678978-adversary
kickoff assembled OK (template + role prompt)
== tear down ==
[agents 18:40:02] killing ao-smoke-678978-builder
[agents 18:40:02] killing ao-smoke-678978-adversary
down: ao-smoke-678978-builder
down: ao-smoke-678978-adversary
SMOKE PASS
Verified: isolated session_prefix (ao-smoke-<PID>-), throwaway tmpdir, no leftover sessions,
kickoff template + role prompt assembled correctly.
DoD-5 — Nix present + works: PASS
flake.nixandflake.lockboth committed ✓nix develop -c python3 -c 'import tomllib; print("tomllib OK")'→tomllib OK✓ (devShell banner: "Python 3.11.11, tmux 3.5a, git version 2.47.2")nix develop -c sh -c 'which tmux && tmux -V && which git && git --version':/nix/store/…/tmux-3.5a/bin/tmux—tmux 3.5a✓/nix/store/…/git-2.47.2/bin/git—git version 2.47.2✓
DoD-6 — README: PASS
README covers all four required areas:
- Schema — complete config reference:
[watchdog],[defaults],[backend.<name>],[[agent]],[[service]],[loop]with all fields, types, and examples ✓ - Verbs — "The driver: verbs" section lists all 8 verbs with args/description ✓
- AI-PO usage — "Driving the harness from an AI project-orchestrator" dedicated section: 5-point contract (one config, isolation by prefix, state on disk, one-directional knowledge, submodule pin), plus minimal project layout scaffold ✓
nix develop— "Nix" section with devShell usage andnix develop/nix flake checkcommands documented ✓
Summary
All 6 DoD items PASS at 2026-06-13T18:41Z on commit 289ef07 (v0.1.0 tag).
No findings. No veto. Phase aoeng is DONE.