Apply model_groups fallback when a subagent spawn hits provider errors (429/401) #2589

Open
opened 2026-10-24 19:31:07 +01:00 by conductor · 0 comments
Owner

In plain English:

Actor spawn with model=ultra (kimi-code-plan/k3) dies with AI_APICallError when the provider rejects the call; the configured fallback (ultra.models[1]=Verboo Code/glm-5.3-flash) never engages. Evidence 2026-10-24: 429 usage-limit reached followed by 401 invalid-key; spawn of general-2 for rune#2532 failed hard instead of degrading to flash. Expected: retry on the next model in the group's models list, marking the run degraded in the log. Without this, KIMI PROTOCOL v2's mechanical fallback exists only in config, not in behaviour.

What is this about:

Why do we need it: <the itch — what happens today that shouldn't, or what becomes possible>

Why is it still open: <"not started yet" | "part done, X remains" | "deliberately parked as a future idea">

Example

What would let us close this

  • <condition 1 — observable>
  • <condition 2>

Version impact (declared at submission — verified at merge)

  • major — breaking: changes a contract, schema, or interface others depend on
  • minor — new capability: something becomes possible that wasn't
  • patch — repair: same behaviour, done correctly
  • none — touches no released artifact (docs, memory, process notes)

Technical details

WHAT:
WHY:
FILES:
ACCEPTANCE:
DEPENDENCIES:

Pipeline requirements

  • TDD: frozen tests written first, red → green (N passed)
  • ruff check and ruff format --check clean
  • Spec-compliance review gate: PASS
  • Code-quality review gate: Approved
  • Full orchestration suite regression green (suite total)
  • Canary passes (name)
  • Closed with a properly formatted closing comment + commit/PR references

Cognitive invariants (memory/cognition issues — both handoffs)

  • Owner — which existing subsystem owns this (audit before creating modules)
  • Trigger — what event activates it
  • Read/write authority — which canonical state it reads/changes
  • Provenance — derived state traceable to evidence
  • Verification — how we know the change helped
  • Failure visibility — how failure surfaces
  • Reversibility — bad learned state can be superseded/replayed/rolled back
  • Dormant cost — what it costs when irrelevant
  • Benchmark + ablation — what measurable behaviour improves; what happens when disabled
  • No duplicate authority — why extend vs create

Hard invariants: derived cognition preserves evidentiary ancestry · epistemic confidence ≠ attentional utility ≠ current applicability · retrieval never increases utility · self-model-induced behaviour is not independent evidence · historical truth survives present-state change · raw evidence is never destroyed by promotion.

Related umbrella

  • Memory
  • Governance
  • Identity
  • Growth
  • Perception
  • Infrastructure
  • Life (Nick's)
  • Custodian
  • Orchestration

Priority (REQUIRED — the priority gate)

  • P0 — critical — breaks the spine / core correctness, or blocks other work
  • P1 — high — material user value or a real defect (money, correctness bugs, next-stage dependency)
  • P2 — medium — quality/consolidation improvement (check the fold-into mapping first)
  • P3 — low — measurement / benchmark / deferred policy
## In plain English: <restate the issue title here in everyday words> <!-- The heading ITSELF must carry the summary — a scan of issue headings alone should tell the whole story of the board. TOP PRIORITY: if a technical detail below contradicts this section, the issue is buggy — fix the issue. A non-technical reader must be able to retell this section. 3-6 sentences, no jargon. --> Actor spawn with model=ultra (kimi-code-plan/k3) dies with AI_APICallError when the provider rejects the call; the configured fallback (ultra.models[1]=Verboo Code/glm-5.3-flash) never engages. Evidence 2026-10-24: 429 usage-limit reached followed by 401 invalid-key; spawn of general-2 for rune#2532 failed hard instead of degrading to flash. Expected: retry on the next model in the group's models list, marking the run degraded in the log. Without this, KIMI PROTOCOL v2's mechanical fallback exists only in config, not in behaviour. What is this about: <what> Why do we need it: <the itch — what happens today that shouldn't, or what becomes possible> Why is it still open: <"not started yet" | "part done, X remains" | "deliberately parked as a future idea"> ## Example <!-- A concrete before/after in plain terms: "If X happens, the system will Y instead of Z." --> ## What would let us close this <!-- Checkable statements, verifiable by looking at something that EXISTS — a file, a log line, a passing test. Not "when appropriate". --> - [ ] <condition 1 — observable> - [ ] <condition 2> ## Version impact (declared at submission — verified at merge) <!-- The pipeline derives the real bump from merged conventional commits and compares against this declaration. A mismatch is flagged, not fatal: either the declaration was wrong or the work grew. Both facts matter. --> - [ ] major — breaking: changes a contract, schema, or interface others depend on - [ ] minor — new capability: something becomes possible that wasn't - [ ] patch — repair: same behaviour, done correctly - [ ] none — touches no released artifact (docs, memory, process notes) ## Technical details <!-- WHAT — one-line objective. WHY — design-spec reference (S#) or reason. FILES — affected components. ACCEPTANCE — frozen-test file + test count + canary name. DEPENDENCIES — parent epic + preceding stage/plan refs. --> **WHAT:** **WHY:** **FILES:** **ACCEPTANCE:** **DEPENDENCIES:** ## Pipeline requirements <!-- Every stage must clear these before the issue closes. --> - [ ] TDD: frozen tests written first, red → green (N passed) - [ ] `ruff check` and `ruff format --check` clean - [ ] Spec-compliance review gate: PASS - [ ] Code-quality review gate: Approved - [ ] Full orchestration suite regression green (suite total) - [ ] Canary passes (name) - [ ] Closed with a properly formatted closing comment + commit/PR references ## Cognitive invariants (memory/cognition issues — both handoffs) <!-- Complete ONLY if this issue touches memory, learning, or self-model state. --> - [ ] **Owner** — which existing subsystem owns this (audit before creating modules) - [ ] **Trigger** — what event activates it - [ ] **Read/write authority** — which canonical state it reads/changes - [ ] **Provenance** — derived state traceable to evidence - [ ] **Verification** — how we know the change helped - [ ] **Failure visibility** — how failure surfaces - [ ] **Reversibility** — bad learned state can be superseded/replayed/rolled back - [ ] **Dormant cost** — what it costs when irrelevant - [ ] **Benchmark + ablation** — what measurable behaviour improves; what happens when disabled - [ ] **No duplicate authority** — why extend vs create Hard invariants: derived cognition preserves evidentiary ancestry · epistemic confidence ≠ attentional utility ≠ current applicability · retrieval never increases utility · self-model-induced behaviour is not independent evidence · historical truth survives present-state change · raw evidence is never destroyed by promotion. ## Related umbrella - [ ] Memory - [ ] Governance - [ ] Identity - [ ] Growth - [ ] Perception - [ ] Infrastructure - [ ] Life (Nick's) - [ ] Custodian - [ ] Orchestration ## Priority (REQUIRED — the priority gate) <!-- Pick exactly one. An issue without a priority is not filed. --> - [ ] **P0 — critical** — breaks the spine / core correctness, or blocks other work - [ ] **P1 — high** — material user value or a real defect (money, correctness bugs, next-stage dependency) - [ ] **P2 — medium** — quality/consolidation improvement (check the fold-into mapping first) - [ ] **P3 — low** — measurement / benchmark / deferred policy
conductor added the infrastructurefeatureP3 — low labels 2026-10-24 19:31:07 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: conductor/rune#2589