Some checks failed
continuous-integration/drone/push Build is failing
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.
184 lines
7.0 KiB
Markdown
184 lines
7.0 KiB
Markdown
# 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):**
|
|
1. `recipe-maintainers/agent-orchestrator` exists; `main` pushed; `v0.1.0` annotated tag present.
|
|
2. **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.
|
|
3. `python3 agents.py selftest` passes; `python3 agents.py status --config agents.example.toml` prints sane table; `agents.py --help` documents verbs.
|
|
4. Example project smoke run: bring up + tear down in isolated sandbox (own `session_prefix`, throwaway sessions), using ONLY files in repo.
|
|
5. Nix: `flake.nix`+`flake.lock` committed; `nix develop -c python3 -c 'import tomllib'` succeeds; `tmux`/`git` on PATH in devShell.
|
|
6. README documents: schema + verbs + AI-PO usage + `nix develop`.
|
|
|
|
**Specific hardcoding to watch for in the ported agents.py (from source analysis):**
|
|
- `log_dir` default `/srv/cc-ci/.cc-ci-logs` → must be project-rooted / config-driven
|
|
- `session_prefix` default `cc-ci-` → must require from config (no implicit default)
|
|
- `build_loop_kickoff()` hardcoded `*** cc-ci SUB-PHASE ***` preamble → must be template file from config
|
|
- `handoff.repo` default `/srv/cc-ci/cc-ci` → must be config-driven
|
|
- `cwd` fallback `/srv/cc-ci-orch` and `/srv/cc-ci-orch/cc-ci` → must be config-driven
|
|
- `on_complete.run = "upgrader"` → must be generic task name from config
|
|
- `opencode.preamble` has `/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-orchestrator` exists on git.autonomic.zone ✓
|
|
- `main` branch present and pushed (commit `289ef07`) ✓
|
|
- `v0.1.0` is an annotated tag (`git cat-file -t v0.1.0` → `tag`, not `commit`) ✓
|
|
- 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 absent
|
|
- `log_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_dir` in config
|
|
- `on_complete.run` — generic task name from `[loop].on_complete`
|
|
- opencode preamble — config field `preamble` (no path default)
|
|
|
|
Break-it — missing session_prefix:
|
|
```toml
|
|
[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.nix` and `flake.lock` both 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 and `nix develop`/`nix flake check`
|
|
commands 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.
|