Skip to content

Resume's 'iteration=0; starting fresh' warning misleads operators #202

@sriumcp

Description

@sriumcp

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions