Problem
Resume after state.iteration=0 (which is the normal state during iter-1 — see [N2]) prints:
WARNING:orchestrator.campaign:state.json has iteration=0 (< 1); starting fresh.
The wording "starting fresh" suggests data loss — that the resume is going to discard prior progress. It doesn't. The resume actually preserves all DESIGN artifacts (bundle.yaml, problem.md, handoff_snapshot.md, etc.) and continues at the recorded state.phase. The "starting fresh" is just the iteration counter normalization.
Repro (paper-burst friction-test, 2026-05-26)
nous run campaign.yaml --max-iterations 1 --auto-approve --agent sdk
# Killed mid-run at state={phase: EXECUTE_ANALYZE, iteration: 0}
nous resume campaign.yaml --auto-approve --agent sdk
# Logs:
# WARNING:orchestrator.campaign:state.json has iteration=0 (< 1); starting fresh.
# Operator panic: did the resume blow away the artifacts?
# (No — DESIGN artifacts preserved; EXECUTE_ANALYZE turn picks up where it left off.)
Why this matters
The campaign-author skill from the SIGMETRICS submission flow tells authors to resume after interruption. A "starting fresh" warning naturally reads as "your prior work is gone." Operators have to either read the source or trust their ls of the artifact tree. Friction.
Fix
Two options, pick one:
(A) Fix [N2] first, then this warning never fires for legitimate iter-1 resumes. The warning would only trigger for genuine state-corruption cases, and the "starting fresh" wording might actually be appropriate there.
(B) Rephrase independently (cheap, can land before [N2]):
# orchestrator/campaign.py, ~line where the warning lives
logger.info(
"state.json has iteration=%d; treating as iter-1 (no completed "
"iterations yet). Existing artifacts preserved; resuming at "
"phase=%s.", state_iter, state["phase"],
)
Drop the WARNING level → INFO. Drop "starting fresh" entirely. Name what's actually happening.
Files to touch
orchestrator/campaign.py — replace the warning text.
tests/test_campaign.py — assert the new wording (or just assert the resume doesn't delete iter-1/ artifacts).
Discovered in
paper-burst friction-test, 2026-05-26.
Problem
Resume after
state.iteration=0(which is the normal state during iter-1 — see [N2]) prints:The wording "starting fresh" suggests data loss — that the resume is going to discard prior progress. It doesn't. The resume actually preserves all DESIGN artifacts (bundle.yaml, problem.md, handoff_snapshot.md, etc.) and continues at the recorded
state.phase. The "starting fresh" is just the iteration counter normalization.Repro (paper-burst friction-test, 2026-05-26)
Why this matters
The campaign-author skill from the SIGMETRICS submission flow tells authors to resume after interruption. A "starting fresh" warning naturally reads as "your prior work is gone." Operators have to either read the source or trust their
lsof the artifact tree. Friction.Fix
Two options, pick one:
(A) Fix [N2] first, then this warning never fires for legitimate iter-1 resumes. The warning would only trigger for genuine state-corruption cases, and the "starting fresh" wording might actually be appropriate there.
(B) Rephrase independently (cheap, can land before [N2]):
Drop the WARNING level → INFO. Drop "starting fresh" entirely. Name what's actually happening.
Files to touch
orchestrator/campaign.py— replace the warning text.tests/test_campaign.py— assert the new wording (or just assert the resume doesn't delete iter-1/ artifacts).Discovered in
paper-burst friction-test, 2026-05-26.