agent: builder model: sonnet max_turns: 60 budget_usd: 8 —

Brief: batch, status and cycle say what is wrong, not “no target/fast/nikaia” (#862)

Score: S=1 (tooling, no program meaning), O=1 M (every main-session restart: the 2026-10-26 restart lost turns on a misleading line; a Result: done. ... report cuts a finished batch), C=2 M (three scripts under 150 lines each, no compiler build beyond the binary), process lane, after the two bugs.

Problem (issue #862, copied)

Locations

scripts/status.nika status_batch (about line 46); scripts/batch.nika batch_run (about line 66), batch_cut (about line 52), header comment lines 1-16; scripts/cycle.nika main (about line 108, println("no target/fast/nikaia")). Test pattern: tests/compiler/tests/batch_frontmatter.nika (+ .stdout), which runs batch.nika on a temporary DIR.

To build

  1. batch.nika: no DIR/batch.txt prints BATCH none (no DIR/batch.txt) and exits 0; a listed brief that does not exist prints CUT <brief>: brief missing; Result: counts as done when its first word is done (done. too); a Gate: field present and not starting with green prints CUT <brief>: Gate: <text>. Update the header comment.
  2. status.nika: BATCH unknown (no target/fast/nikaia) only when neither binary exists; when batch.nika fails, BATCH error: <first line of its stderr, or stdout> (at most 160 characters).
  3. cycle.nika: with no binary, print BUILD cargo build --profile fast -p nikaia (first build about 3 min, run it in the background) and exit 1.
  4. Tests: extend batch_frontmatter.nika (or a new batch_lines.nika beside it, same pattern) with: no batch.txt; a missing brief; Result: done. text; Gate: red x; Gate: green. Run it with target/fast/nikaia test on that file; gate; commit scripts: batch, status and cycle name what is missing with Fixes #862.

  5. (main session, 2026-10-26, from two runs) agent.nika (about line 202) looks for <stem>.report.md only, but briefs name <brief>.md.report.md (docs/architect.md), so every run wrote a false ESCALATE no report. Accept both (as batch.nika does), prefer <brief>.md.report.md.
  6. batch.nika: Owner: counts as empty when it is none or starts with none; a report whose Result: first word is noop (nothing to change, e.g. a fix-forward that does not reproduce) counts as done. Add noop to the report form in docs/briefs/common.part and docs/architect.md (Briefs and reports: Result: done | noop | partial | blocked), and one line there: Owner: is a question for the owner or none, never a role. Tests as step 4.

Files you may change

scripts/batch.nika, scripts/status.nika, scripts/cycle.nika, scripts/agent.nika, docs/briefs/common.part, docs/architect.md (Briefs and reports only), tests/compiler/tests/batch_frontmatter.* or the new batch_lines.*. The main session runs these scripts between builders: keep their output lines’ first words (NEXT, CUT, OWNER, BATCH DONE, CI, BUMP) unchanged.

Rules (CLAUDE.md; this block is pasted into every brief, also a fix-forward)

Report (at most 15 lines, to exactly /home/user/Nikaia/docs/briefs/b-batch-status-lines.md.report.md)

Fields of docs/architect.md, Briefs and reports: Result: done|partial|blocked (the bare word first), Files, Commit, Fixes, Pushed, Tests, Gate (green|red), Deviation, Found, Needs, Changelog, Owner, Disk freed. none where nothing. Final answer, one line: done <sha>, report <path> (or BLOCKED: ... / PUSH REJECTED ...).

Attribution: Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01GFeMqxRbtUMiGVyDMxsvEq

This site is open source. Improve this page.