Repository navigation
A train lane that declines because the live lane serves the base is TrainerUnavailable: it created nothing, so the bucket retries instead of wedging in RecoveryRequired (card 67feb736) - #5879
Merged
joelteply merged 1 commit intoNov 8, 2026
Conversation
…rainerUnavailable: it created nothing, so the bucket retries instead of wedging in RecoveryRequired (card 67feb736) Kimi's 27B on the Windows node, 2026-11-08: 16 buckets in recovery_required, 48 examples pending, each with 'a live lane now serves ...: its resident trainer takes the run, not a second copy'. refuse_if_resident returned Transient, which leaves the attempt Admitted (settles_as_not_created excludes it) and maps to Uncertain -> RecoveryRequired, answered Unknown every tick. The refusal is reached before any job, process or file exists: TrainerUnavailable's contract (card a9bc56ea), which settles the attempt and is retried, so the next selection takes the resident trainer. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE
joelteply
deleted the
67feb736/a-train-lane-that-declines-because-the-l
branch
November 8, 2026 19:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
How it serves the minds: Kimi's learning on the Windows node has stalled. 16 of her training buckets on ggml-org/Qwen3.8-27B-GGUF are stuck in
recovery_requiredand 48 examples are waiting, because a refusal that is meant to be retried is parked forever. Goal 8, learning; the genome lane.What happened (Codex 5e8b7aa6 / f415e865, 2026-11-08)
dispatch.error: "genome/job-create rejected: transient failure: a live lane now serves ggml-org/Qwen3.8-27B-GGUF: its resident trainer takes the run, not a second copy". The path:engine_lane::refuse_if_residentreturnsFineTuningError::Transient.job_create::settles_as_not_createdexcludesTransient, so the attempt staysAdmittedtoengine-lane.decode_job_createmapsTransienttoDispatchFailure::Uncertain, which puts the bucket inRecoveryRequired.Admittedrow answersUnknownand nothing re-dispatches. Onlygenome/training-trigger/resolveclears it.The comment at
engine_lane.rs:39("the dispatch retries and selection picks the resident lane") described behaviour the code didn't have.Likely trigger: at selection time
live_lane()briefly misses the resident record (theis_llama_serverprocess lookup, or a record rewrite), soengine-laneranks as the only trainer that serves the base. After the headroom wait it does see the lane, and refuses.The change
refuse_if_residentreturnsTrainerUnavailable. That variant's contract is "refused BEFORE creating anything ... the trigger retries the batch on a later fill and never parks it awaiting evidence" (card a9bc56ea, Sigurd's MLX wedge), and this refusal is reached before any job, process or file exists.As a result, the attempt settles as not created, the trigger retries, and the next selection takes the resident trainer. The comment and the test now say so.
Measured
engine_lanetests, 2 passed, local, IntelMac, on canary 8dfe0ba, 2026-11-08.a_base_that_became_resident_before_the_spawn_is_refused_as_not_createdassertsTrainerUnavailable; the old code (Transient) fails it.cargo run -p source-hygiene --bin ratchets -- origin/canarygives 95/95, base and head.genome/training-trigger/resolve notDispatched. The evidence is the recorded refusal text, which comes from a path that creates nothing. Codex offered to run it.🤖 Generated with Claude Code
https://claude.ai/code/session_01FRQWzgSfo79JtnwZywHKrE