Skip to content

Floor budget packs to the RAM-speed line (memory.high); stale 24GiB live cap converged to the applied 16GiB ruling - #6495

Merged
briansrls merged 2 commits into
mainfrom
fix/floor-budget-throttle-aware
Jul 11, 2026
Merged

briansrls merged 2 commits into
mainfrom
fix/floor-budget-throttle-aware

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

The 60m-wedge root, fixed at the budget edge. Four floors across four diffs and both hosts pinned floor_peak_post at exactly 16106127360 (15GiB) + sub-MiB overshoot, zero oom_kill events — the memory.high reclaim clamp. Between memory.high and memory.max a slot does not fail, it silently reclaim-throttles into swap (DESIGN §5's widening arm), so a width budget denominated at the kill line spends its tail at swap speed. And the plan-side budget was worse than kill-line-denominated: it still read the 2026-07-05 hand-set 24GiB live cap, stale since the 2026-07-10/11 allocation ruling (16GiB max / 15GiB high / 32GiB swap, APPLIED) — width sized for a slot that no longer exists.

Changes (single edge, consumers follow):

  • gunbc_ci_runner_slot_memory_max_live 24GiB → 16GiB, receipt refreshed (last 24GiB readbacks were 07-10, pre-apply; direct post-apply memory.max readback is owed and self-verifies on the next completed fleet floor via the executor's [measurement] line).
  • New gunbc_ci_runner_slot_memory_high_live (15GiB — the four-pin readback receipt) + gunbc_ci_runner_slot_ram_speed_ceiling() = min(high, max).
  • srv1_floor_memory_budget, falsifier spawn width, and ci_cargo_build_jobs_count (6 → 4; workflows regenerated via main_wet) pack to the ceiling. memory.max stays the kill authority.
  • Witness updates follow the arithmetic, not vibes: falsifier width pins ==1 at the ceiling; back-off keeps strict discrimination at a labeled synthetic 24GiB reference; budget ≤ per-runner-cap replaces the pre-converge budget > declared-cap relation.
  • One honest red kept honest: witness_falsifier_envelope_fits_live_cap was true only against the stale 24GiB row — the falsifier's envelope (~14.9GiB) genuinely does not fit a 16GiB slot, which is why the nightly has been dark (07-06..07-10 exit-137s). It is now a two-sided pinned deficit (exceeds live ceiling && fits 24GiB-class reference) with dissolve-on naming the owners: rehome the falsifier to a fitting offer (64GB-class holds it with 3× headroom — ubicloud receipt run 29162064482, 13.5GiB peak uncapped) or shrink executor base overhead.

Expected effect on the fleet: floor width 1, committed ~13.4GiB < 15GiB throttle line → the swap-crawl tail and the 15GiB+ε pin disappear from wide PRs; runs get serially slower but bounded and attributable. Verification is built in: the next completed fleet floor prints the cgroup memory.max readback this PR's refreshed row predicts.

All ci_budget_tree / ci_floor_plan / ci_floor_measurement / ci_spec / workflow-consumer witnesses green by execution (the one pre-existing unrelated red, affected_set_universe_gate_processes_match_declared_gates, fails identically on clean main).

Independent of #6489; ready for review.

🤖 Generated with Claude Code

Brian Searls added 2 commits July 11, 2026 18:32
… 24GiB live cap converges to the applied 16GiB ruling

Root of the 60m wedge class: four floors across four diffs and both
hosts pinned floor_peak_post at exactly 16106127360 (15GiB) + sub-MiB
overshoot with zero oom_kill events - the memory.high reclaim clamp.
Between memory.high and memory.max a slot does not fail, it silently
reclaim-throttles into swap (DESIGN 5: the widening arm), so a width
budget denominated at the kill line spends its last GiB at swap speed.
Meanwhile the plan-side budget still read the 2026-07-05 hand-set
24GiB live cap - stale since the 2026-07-10/11 allocation ruling
(16GiB max / 15GiB high / 32GiB swap, APPLIED) - so width was sized
for a slot that no longer exists.

- gunbc_ci_runner_slot_memory_max_live: 24GiB -> 16GiB (receipt
  refreshed; direct memory.max readback still owed and self-verifies
  on the next completed fleet floor via the executor measurement line)
- NEW gunbc_ci_runner_slot_memory_high_live (15GiB; the four-pin
  readback receipt) + gunbc_ci_runner_slot_ram_speed_ceiling() =
  min(high, max)
- srv1_floor_memory_budget, falsifier spawn width, and
  ci_cargo_build_jobs_count (6 -> 4, regenerated workflows) now pack
  to the ceiling; memory.max remains the kill authority
- witness updates follow the arithmetic: falsifier width pins ==1 at
  the ceiling (was ==2 at 24GiB); back-off keeps its strict
  discrimination at a labeled synthetic 24GiB reference where the
  formulas have room; budget<=per-runner-cap replaces the pre-converge
  budget>declared-cap relation

All ci_budget_tree / ci_floor_plan / ci_floor_measurement /
ci_spec / workflow-consumer witnesses green by execution.
…the applied slot shape no longer provides

witness_falsifier_envelope_fits_live_cap went honestly red under the
converged 16GiB/15GiB shape: base overhead + one cold-corpus shard =
~14.9GiB exceeds the slot's usable fraction. It fit only the stale
24GiB regime - which is why the nightly has been dark (the 07-06..07-10
exit-137 series). Weakening the assert would enshrine the degradation;
deleting it would zero the deficit's frequency (DESIGN 5). Instead the
witness pins the deficit as a typed, counted fact, two-sided so the
formula stays discriminated (exceeds the live ceiling AND fits the
24GiB-class reference - the deficit is the slot shape, not the width
fold), with dissolve-on naming the owners: falsifier rehomed to a
fitting runner offer (offer-rows lane; 64GB-class holds it with 3x
headroom, ubicloud receipt 29162064482) or executor base overhead
shrunk. ci_floor_plan witnesses green by execution.
gunbai-bot Bot pushed a commit that referenced this pull request Jul 11, 2026
…teration window closed, focus on merge)

Restores gunbc_ci_runner_spec() to the fleet derivation as the single
runner authority and the seam witnesses to pinning it (reverts
3f203d8 + 36e4cd3 as one motion); workflows regenerated via
main_wet back to [self-hosted, linux, arm64]. The CARGO_BIN
resolution (a03142d) stays - fleet-neutral portability fix, proven
by execution on both runner classes (fleet floors unchanged; ubicloud
build green run 29162064482). ci_runner_seam_holds and the serializer
keystone green by execution on the reverted head.

What the iteration window bought, for the record: the CARGO_BIN
portability bug (fixed), the 12.5-min full floor + 13.5GiB-uncapped
counterfactual receipt that pinned the fleet wedge on the memory.high
throttle (now fixed at the budget edge in #6495), and the surfacing of
the #6459 batch-2 panic (fixed in #6493).
@briansrls
briansrls merged commit 210c8dc into main Jul 11, 2026
1 check passed
@briansrls
briansrls deleted the fix/floor-budget-throttle-aware branch July 11, 2026 18:36
briansrls pushed a commit that referenced this pull request Jul 11, 2026
…or budget) into session/swift-bear-79

Conflict: src/v1/stage0/src/cli_run.rs — took main's #6493 fix (verified relative
spellings) over this branch's equivalent local fix for the same #6459 regression;
dropped the branch's now-redundant unit test (#6493 ships accept+refuse tests).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Jul 11, 2026
…er selection

Both red on clean main by direct execution, latent behind affected-set
skips and the batch-2 red era:

host_standup_spine: the spine gained the P0:host-identity-converge step
in #6253 (11 steps) while spine_step_tag matched exactly 10 phases with
no catchall - non-exhaustive panic on Assimilation{HostIdentityConverge}
whenever executed. Witness now describes the 11-step spine (tag arm +
ordinal shift + length/ledger pins 10->11, gap count 4 unchanged,
fn renamed ten->eleven to keep the name truthful).

fleet_show_effective_read: declared_runner_count() derives from
pool_budget / slot cap, so the #6495 re-carve (24->16GiB) moved it
10->5 and the 2026-07-03 width fixtures went stale. The parse-typing
witness now pins the literal it parses (a parse fixture must not depend
on a live-derived count - that fusion is how this went latent-red); the
srv1 convergence witness flips to assert the REAL fact, drift (the hosts
still run pre-carve width - the same oversubscription the falsifier
exit-137 receipts located), with a dissolve-on for a post-re-carve
readback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
briansrls pushed a commit that referenced this pull request Jul 12, 2026
… cost/routing work (#6489)

* witness-cost-locality lens v0: one typed verdict for the two ambient-coupling axes (receipt-only)

One law: witness cost must be denominated in its subject (the DESIGN 5
denomination law). Two detectable projections at module grain:
DataBreadth (closure reaches an ambient-read carrier: filesystem_read
callers + the decl_facts reflection home) and LayerDepth (closure spans
>=2 compiler pipeline stages - the round-trip shape). Verdict algebra +
census receipt + precision-frontier disclosures as data; six fixture
witnesses incl. the single-stage boundary and a red control (law
perturbed to >=1 flips single_stage_closure_stays_local red - receipted).

Census 2026-07-11 over the 732-entry roster: Local 483 / LayerDepth 229 /
DataBreadth 9 / both 11; derives the operator-ruled-offline enforcement
rows and the execution/ exclusions; falsified two naive laws (decl_facts
reflection invisible to filesystem_read grep; hermetic fixture rows
over-flagged - the declared InputEnvelope is the override authority).
LayerDepth is receipt-only until fn-grain call-graph reachability lands
(ci_yaml counter-receipt: stage-type imports are not stage execution).

Dissolve-on: fn-grain reachability + InputEnvelope declarations wired
into floor admission; the witness_exclusion hand-rows and this v0
roster retire together.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Add the required construction_justification row (cursor review)

WallAfterGrounding dissolving to SingleAuthority: the verdict is
validation-tier until fn-grain reachability + InputEnvelope declarations
let floor admission consume it, at which point non-Local rows are
structurally absent from the per-PR plan (the single authority) and the
lens dissolves per its precision-frontier note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* [ITERATION-ONLY - REVERT BEFORE MERGE] Route CI to ubicloud runners

Self-hosted fleet has no free slots (operator, 2026-07-11); route this
PR's iteration to ubicloud-standard-16-arm so the lens work is not
gated on fleet capacity. Same move as the #6107 -> #6111 precedent.

gunbc_ci_runner_spec() returns the ubicloud label; the fleet
derivation is preserved untouched as gunbc_ci_runner_spec_fleet_derived()
and ubicloud_iteration_routing_note carries the revert obligation.
Workflows regenerated from the authority via main_wet (drift gate
stays coherent): runs-on [ubicloud-standard-16-arm] at ci.yml
build_release/floor/emit-determinism and falsifier.yml.

Revert = git revert this single commit + regen (or just revert; the
regenerated ci.yml/falsifier.yml are included here).

* Closure facts + per-PR admission law: the transitive-carrier case becomes provable, and verdict x envelope decides the lane

Extends the v0 lens with the fact half its census note promised:

- ModuleImportFact + import_closure: module-grain closure over declared
  import facts, the |E|-sweeps fixpoint shape sanctioned by
  v2.lens.affected_set (pass + frontier-stability + doubled-facts fuel,
  early-stable). Terminates on cyclic FACT rows - the substrate refuses
  cyclic imports, but the fold must not trust its input.
- witness_cost_locality_from_facts: closes over the facts so the
  transitive carrier (the enforcement_live falsification - the corpus
  read two hops away) is provable in fixtures, not just prose.
- WitnessInputEnvelope + per_pr_admission: the admission matrix
  (verdict x declared envelope), fail-closed with
  declaration-wins-when-stricter. DeclaredCorpusInput always routes to
  the scheduled lane; DeclaredBoundedFixture is the hermetic override
  (reachability over-approximates; the scheduled falsifier lane is its
  audit); EnvelopeUndeclared admits only Local - the
  refused_undeclared_when_envelope_unknown shape from InputEnvelope P0.
  RouteScheduledLane is a typed routing verdict, never a silent drop.

Witnesses (7 new, 13 total, all green by execution; the suite itself
stays Local-class: 393ms resolve, 0ms eval, fixture-only):
- two-hop transitive carrier couples on DataBreadth; severing the mid
  hop flips it Local (the discriminating pair)
- cyclic facts terminate and still reach the carrier
- admission matrix cells incl. the RED control: undeclared + coupled
  never rides the continuous floor

* Resolve the cargo binary at toolchain-pin time; stop baking the fleet's shim path into the build line

The build line invoked "$CARGO_HOME/bin/cargo" - a fleet fact fused
into the job model. On a runner image whose rustup pre-exists (ubicloud,
GitHub-hosted), setup-rust-toolchain never runs rustup-init, so no shim
lands under the isolated $CARGO_HOME and the build dies with "No such
file or directory" (run 29161556017). The isolated RUSTUP_HOME/CARGO_HOME
env still governs whichever shim exists - only the shim's LOCATION is
realization-specific.

Fix: the pin step (already the "make the isolated toolchain invocable"
step, name unchanged so the cost-floor roster keeps resolving; no new
run-step so the raw-script count pin holds) resolves CARGO_BIN once -
isolated shim if present, else PATH - and refuses loudly when neither
exists (fail-closed, DESIGN 5). ci_release_build_line invokes
"$CARGO_BIN"; the retry escalations' env-prefix composition is
unchanged since it stays one word. Falsifier inherits via the shared
prelude. Workflows regenerated via main_wet.

witness_rustup_run_plain_not_quoted repinned as
witness_rustup_run_block_scalar_not_quoted: the pin step is now
multi-line so its run correctly serializes as a block scalar; the
property the witness guards (quote-laden content never YAML-escaped,
negative control kept) is unchanged. ci_yaml_serializer_keystone_holds
green by execution; 18-entry consumer sweep green except 3 witnesses
red on unedited baseline too (pre-existing/environmental).

* [ITERATION-ONLY - REVERT BEFORE MERGE] Reconcile the runner seam witness with the ubicloud override

Cursor catch (review on the folded #6490, restated on #6489): the
routing override left ci_runner_seam_holds red - it pinned
gunbc_ci_runner_spec() to the fleet derivation and the yaml to
[self-hosted, linux, arm64].

Reconciliation, discriminating in both directions during the window:
the fleet-derivation witnesses repoint to
gunbc_ci_runner_spec_fleet_derived() (the derivation authority stays
proven and un-drifted), the live-spec witnesses pin the override label
exactly (drift of the override itself is caught), and the
workflow==live-spec seam witness is unchanged. ci_runner_seam_iteration_note
carries the revert obligation; this commit reverts together with the
routing commit (3f203d8). ci_runner_seam_holds green by execution.

* Revert the iteration-only ubicloud routing (operator go 2026-07-11: iteration window closed, focus on merge)

Restores gunbc_ci_runner_spec() to the fleet derivation as the single
runner authority and the seam witnesses to pinning it (reverts
3f203d8 + 36e4cd3 as one motion); workflows regenerated via
main_wet back to [self-hosted, linux, arm64]. The CARGO_BIN
resolution (a03142d) stays - fleet-neutral portability fix, proven
by execution on both runner classes (fleet floors unchanged; ubicloud
build green run 29162064482). ci_runner_seam_holds and the serializer
keystone green by execution on the reverted head.

What the iteration window bought, for the record: the CARGO_BIN
portability bug (fixed), the 12.5-min full floor + 13.5GiB-uncapped
counterfactual receipt that pinned the fleet wedge on the memory.high
throttle (now fixed at the budget edge in #6495), and the surfacing of
the #6459 batch-2 panic (fixed in #6493).

* Runner offers modeled + one selection authority: labels, memory regime, and budgets project from the selected target

Operator asks 2026-07-11: model the runner rows (github, ubicloud;
fleet existed) and make the mappings clear - then "stay on ubicloud
for this change; self host runners are still contended."

extdeps (cited, zero fabrication):
- extdeps.cloud.ubicloud: the 10 documented runner shapes
  (runner-types.md anchor; arm 3GB/vCPU, x64 4GB/vCPU kept as vendor
  facts; the standard-16-arm observed MemTotal receipt recorded
  SEPARATELY from the catalog claim, discrepancy noted not reconciled)
- extdeps.github.hosted_runners: the Ubuntu family with repository
  VISIBILITY as a first-class axis (public 4vCPU/16GB vs private
  2vCPU/8GB for the same label - folding it away would be a
  state-space conflation); version-pinned labels, ubuntu-latest alias
  deliberately not a row

gunbc.ci_runner_target (the missing edge the iteration window proved):
- CiRunnerTarget = FleetSelfHosted | UbicloudRunner{row} |
  GithubHostedRunner{row}; selected_ci_runner_target() is THE switch
- projections: runs-on spec (fleet stays DERIVED from the fleet offer;
  cloud rows carry the provider's cited token), memory regime
  (SlotCarved{desired} with the 15GiB throttle line vs
  WholeMachine{ram}), RAM-speed budget (fleet -> slot ceiling;
  cloud -> catalog ram)
- ci_workflow, falsifier_workflow, floor budget, falsifier width all
  read the projections: flipping the selection row moved runs-on AND
  CARGO_BUILD_JOBS (4 -> 11, from the 48GB row) AND floor width in one
  regen - the propagation the label-only model could not do
- selection = ubicloud-standard-16-arm (operator routing, fleet
  contended); flip back = FleetSelfHosted + regen, nothing else moves
- falsifier now rides the selected shape too: its pinned fleet-slot
  capacity deficit witness stays parameterized on the FLEET ceiling
  (the deficit is a slot fact), while on 48GB its envelope fits with
  3x headroom - the nightly's dissolve-on path

Witnesses: ci_runner_target_witnesses (fleet-derivation identity,
ubicloud/github label projections, both regimes, cited arm ratio held
across the family, visibility-axis discrimination) + seam witnesses
repinned to the selection authority with the fleet derivation kept
live for the flip back.

* Width-fit witness measures against the machine the plan runs on (the selected target budget), not the fleet slot unconditionally

* Regen after folding the runner-offer selection into this branch (ubicloud labels + JOBS=11 + CARGO_BIN compose)

* Resolve the cargo binary at toolchain-pin time; stop baking the fleet's shim path into the build line

The build line invoked "$CARGO_HOME/bin/cargo" - a fleet fact fused
into the job model. On a runner image whose rustup pre-exists (ubicloud,
GitHub-hosted), setup-rust-toolchain never runs rustup-init, so no shim
lands under the isolated $CARGO_HOME and the build dies with "No such
file or directory" (run 29161556017). The isolated RUSTUP_HOME/CARGO_HOME
env still governs whichever shim exists - only the shim's LOCATION is
realization-specific.

Fix: the pin step (already the "make the isolated toolchain invocable"
step, name unchanged so the cost-floor roster keeps resolving; no new
run-step so the raw-script count pin holds) resolves CARGO_BIN once -
isolated shim if present, else PATH - and refuses loudly when neither
exists (fail-closed, DESIGN 5). ci_release_build_line invokes
"$CARGO_BIN"; the retry escalations' env-prefix composition is
unchanged since it stays one word. Falsifier inherits via the shared
prelude. Workflows regenerated via main_wet.

witness_rustup_run_plain_not_quoted repinned as
witness_rustup_run_block_scalar_not_quoted: the pin step is now
multi-line so its run correctly serializes as a block scalar; the
property the witness guards (quote-laden content never YAML-escaped,
negative control kept) is unchanged. ci_yaml_serializer_keystone_holds
green by execution; 18-entry consumer sweep green except 3 witnesses
red on unedited baseline too (pre-existing/environmental).

* Unbreak the post-merge-wave floor: absent declared roots skip loudly, the split-spanning gate universe, and the disposition-marker adjacency pin

Three content reds every completed floor now hits, all proven on clean
main (the 60m-timeout and batch-2-panic masks are gone, so the content
layer behind them is finally visible):

1. anchor_source_root panicked mid-floor on "dag/compiler" (run for
   PR #6497, cli_run.rs:365) - a DECLARED root from the
   medium-structure roster that does not exist on disk yet
   (modeled-before-implemented). The layer walk's own is_dir guard
   proves absence is a legitimate skip state there, but the anchorer
   panicked before the guard could run. New non-panicking
   try_anchor_source_root for declared-root walks: absence skips with
   a counted [layer-import] line (loud, never silent); CLI-provided
   roots keep the strict panicking contract.

2. affected_set_universe_gate_processes_match_declared_gates compared
   the Gate coproduct's 10 arms against gunbc_ci_gates - the ci JOB's
   slice (7) since the #6472 job split. The witness now unions
   floor+regen+emit_determinism (the same union its sibling
   witness_gate_roster_matches_coproduct_arms already used); probe
   receipt: the three slices partition the 10 arms exactly.

3. witness_floor_disposition_marker_initialized_before_docs_only_branch
   (landed in today's wave) pinned the stamp DIRECTLY adjacent to the
   docs-only branch, but the emitted script has a blank line between
   them - red on clean main from its first run. The pin now matches
   the emitted adjacency (stamp, blank, _ci_changed) and still proves
   the ordering it exists for.

Receipts: ci_spec_witnesses, all 4 affected_set_universe witnesses,
and the layering clean-tree witness green by execution with the fixed
binary. Remaining known main reds (predate today, tracked separately):
s1_closure_parses_holds (#6459 wrapper-retained diagnostic arm),
ci_deploy_witnesses.

* GithubHostedRunner projects the hosted scalar form (cursor catch)

Ground GithubHostedRunnerCatalogRow.runs_on_label in the actions grammar's
RunnerLabel closed vocabulary (extended with the cited ubuntu-24.04-arm /
ubuntu-slim spellings; runner_label_string stays the single spelling
authority) and route the GithubHostedRunner target through HostedRunner,
whose serialization is the scalar runs-on form GitHub uses for hosted
labels. A labels-list projection would have emitted the self-hosted
label-matching form. Witness repinned to the HostedRunner variant plus a
by-execution runner_yaml discrimination (scalar hosted vs flow-list
label-routed). Ubicloud stays SelfHosted label routing (provider tokens,
proven live 2026-07-11).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* ci_deploy witness: repin deploy invoke to the rooted source-root spelling

witness_deploy_run_script_invokes_gunbc_wet pinned the unrooted
'--source-root dag' while gunbc_ci_deploy_invoke emits the rooted
'--source-root "$ROOT/dag"' (witness_layer_source_flags_rooted, #6453)
- red on clean main, the third masked layer of the rooted-argv family
(#6493 repinned the scheduler-argv pair). Proven by execution: suite
false -> true on the repin, conjunct-bisected first.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* try_anchor_source_root: seed-retained scaffold receipt (cursor #6489 catch)

Hand-Rust expansion now carries the DESIGN §7 shape the same file
requires: authority rows (cli_run_source_root_anchor_scaffold sibling of
the workspace-root scaffold, bind to the declaration), named dissolve-on
(roots walk GENERATED via cli-run-reconcile-defork Chunk F, absence a
typed roster-layer diagnostic; or 5-dissolve-patches), checkable receipt
anchor + counted loc delta, scaffold witnesses green by execution, and a
discriminating unit pair (declared-present -> Some, declared-absent ->
None).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* s1_closure floor panic: wrapper-retained diagnostics must inhabit the Diagnostics coproduct

body_lower_wrapper_retained_shell constructed Accepted with a RAW
NonEmptyDiagnostics in the diagnostics field where the Diagnostics
coproduct (None | Some) is declared - the first downstream match over
Diagnostics (diagnostics_merge in the normalize child fold) panicked
non-exhaustive on every file with a wrapper-retained fn body, killing
the s1_closure witness whenever the affected set selected it. Fix wraps
the singleton in Some. Reproduced red (exact CI panic) and green by
execution via s1_file_parses on dag/std/error_primitives.dag; new
witness pins the shape and returns false (no panic) on the raw form.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Post-merge regen: plan docs re-derive the Lane D links from the merged authorities

This branch's earlier regen ran while the .dag plan authorities lacked
the link rows (pre-#6503), so it had written the docs linkless; the
merge kept that side while main brought the link rows. main_wet now
re-derives the linked docs - pair consistent, drift gate green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Two latent fleet-lane witness reds, first executed by this head's wider selection

Both red on clean main by direct execution, latent behind affected-set
skips and the batch-2 red era:

host_standup_spine: the spine gained the P0:host-identity-converge step
in #6253 (11 steps) while spine_step_tag matched exactly 10 phases with
no catchall - non-exhaustive panic on Assimilation{HostIdentityConverge}
whenever executed. Witness now describes the 11-step spine (tag arm +
ordinal shift + length/ledger pins 10->11, gap count 4 unchanged,
fn renamed ten->eleven to keep the name truthful).

fleet_show_effective_read: declared_runner_count() derives from
pool_budget / slot cap, so the #6495 re-carve (24->16GiB) moved it
10->5 and the 2026-07-03 width fixtures went stale. The parse-typing
witness now pins the literal it parses (a parse fixture must not depend
on a live-derived count - that fusion is how this went latent-red); the
srv1 convergence witness flips to assert the REAL fact, drift (the hosts
still run pre-carve width - the same oversubscription the falsifier
exit-137 receipts located), with a dissolve-on for a post-re-carve
readback.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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