Skip to content

A bad author override holds only its own slots; the tick keeps running - #450

Merged
renmengye merged 1 commit into
mainfrom
fix/override-slot-hold
Oct 1, 2026
Merged

renmengye merged 1 commit into
mainfrom
fix/override-slot-hold

Conversation

@renmengye

Copy link
Copy Markdown
Member

One bad OUTERLOOP_AUTHOR_OVERRIDES entry (for example a codex entry whose bridge runtime is missing, or a model with no endpoint profile) made every tick exit at startup. The whole fleet then stopped: sweeps, wakes, message delivery, merges and the board for every target, not just the misconfigured slot.

  • The tick no longer validates every entry at startup. Each claim (intake and self-initiated) checks its own slot through the existing author preflight.
  • A bad entry holds fresh claims for its slots, with one log line per tick naming the target, slots and error. It never falls back to the fleet author. Self-initiated selection skips the held slot and tries the next free one. Runs bound earlier keep running and waking.
  • An unparseable setting holds fresh claims for the targets it names (or for all targets when none can be read); sweeps, wakes, delivery, ledger and board work continue.
  • outerloop start and outerloop init stay strict, so an operator still sees the error when they change the setting.
  • Docs: install guide, override section. CHANGELOG under [Unreleased].

Compatibility: no persisted state changes (run records, inbox, ledger and caches are untouched), so no backfill or fixture is needed; rolling back restores the strict startup check.

Review: built by Codex; I reviewed it, checking every remaining reader of the setting (only the manual, unbound climb path reads it directly, and tick-launched jobs are always bound) and that a held slot never binds the fleet author. Gate: pytest, ruff check, ruff format --check, mypy.

The tick no longer validates every override entry at startup and exits on
the first bad one. Each claim checks its own slot: a bad entry holds fresh
claims for its slots with one log line per tick, without falling back to
the fleet author; an unparseable setting holds claims for the targets it
names (or all), while sweeps, wakes and delivery continue. outerloop start
and init still refuse a bad setting.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Round 1 — reviewed head e2776094 — reviewer summarizer:hermes/gpt-5.6-terra over coverage+credentials+deployment+general+lifecycle+prose.

terra
Advisory findings from outerloop — the code owner decides. Reply to disagree; the outerloop:no-review label opts this PR out.

Verdict: no defects found.

No findings were reported by any review lens. Rejected findings: none.

@renmengye
renmengye merged commit 7cce3cc into main Oct 1, 2026
16 checks passed
@renmengye
renmengye deleted the fix/override-slot-hold branch October 1, 2026 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant