fix(warm): the pool survives the burst it exists for - #343
Merged
Conversation
Three hours of journals taught four defects, each pinned by test. The capacity ledger excluded closed members' totals while counting their residents' allocations -- under a partial-pressure burst the fleet read 20 GiB over-allocated while an open member had 14 GiB free, and warm could never build exactly when it was most valuable; totals now count every online member, pressure samples stay open-member-only as the live stop, and the scriptlet still enforces each closed gate. A scriptlet refusal arriving after fleet-level admission said yes is a capacity deferral (placement-refused), not a failed reconcile. An instance deleted mid-wait by a claim hides its not-found inside retry wrappers and is consumption, whatever the wrapper says. And a booting instance can answer one state poll with a transient parse error; one bounded retry separates the blink from a failure. Claude-Session: https://claude.ai/code/session_01LsGid6U5RrQdFvJmvYdGCF
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.
Deep journal audit (3 h, all five hosts) taxonomized every warm-pool failure; four code defects, each measured live and pinned by test:
clusterHostStateexcluded closed members' totals while allocations stay fleet-wide →remaining_memory_mib: -20873with 14 GiB actually free on the open member; warm deferred through every burst. Totals now count every online member; PSI samples stay open-only (the live stop); the scriptlet still enforces each closed gate per member. The old test pinned the exclusion — its protective intent (a stale sample must not mask a healthy sibling) is preserved and the capacity expectation updated to the ledger contract the code's own comment describes.placement-refused), not a failed reconcile (was 3× unit failures).Instance not foundinside "attempt count exceeded" wrappers = consumption (was 6× failures).Invalid PIDfrom a booting instance's state poll — one bounded retry (was 12× failures).Provider bytes changed → release v0.1.5-nddev.106 (reproducible, built twice, cmp clean). Post-cleanup journals already read 0 failures since 12:56; this makes the remaining classes structurally quiet.
https://claude.ai/code/session_01LsGid6U5RrQdFvJmvYdGCF