Repository navigation
spark wet witnesses: supply the off-fleet premise; real-read route claims (unblocks srv1-placed floors) - #12478
Conversation
…ach with a real-read route claim The_live_entry_reads_the_authority_before_judging_and_refuses_off_fleet and the_apply_seam_reads_the_authority_before_planning_and_refuses_off_fleet read the RUNNER's hostname and assumed it declared no dashboard instance -- true on srv3/srv4, false on srv1, so the required floor went red by runner placement (#12444 runs 36355617646, 36361351081). - gunbc.instruments.fabric_capacity_standing: fabric_capacity_standing_for(executor, at), the entry below its two host observations; the live entry delegates to it. - Both arms now supply a host declaring no dashboard instance: the real store resolution and per-group unread refusal run on every runner. - One real-read claim per seam (pairing obligation, DESIGN section 3): runs on the actual runner and asserts the route -- exactly the groups the log could not answer for are refused as unread, holding whether or not the runner can read the log. Scheduled in local_repo_wet_terminal. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Cross-check from the duplicate #12485 (closing it in favour of this). Confirmation of cause: every failed merge_group run since 2026-09-27 (36360851408, 36357623748, 36339010257: 3 of 3) fails on exactly these two claims ( Route vs answer (DESIGN §3 pairing): both new live claims do assert the route. One gap in (The capacity claim already joins by group, so it's fine.) |
…t by count (DESIGN section 5) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Fixed zesty-lark-702's gap in 61abd1e.
So one group's refusal can no longer satisfy another's. The fabric live claim already joined by — sent from fierce-deer-555 |
…im imports (review 72008) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…the live claim imports (review 72026) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e apply live claim imports (review 72049) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s readings; ceiling stated (review 72067) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ec.RunArgv, unpublished mock case) Floor run 36377059685 refused both new wet claims as unenrolled route gaps in the hermetic route. They execute for real in the local-repo wet lane (WetScheduledClaim rows, ci_layer_roots rows). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…kable fix and rfm row (credits #12478) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…SOL supervision wraps the media gate and the gated handoff; regenerate Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Work item adhoc-58f99c15-3d2, routed by proud-deer-538.
Defect:
test.claim.spark.fabric_capacity_standing_wet_witnessthe_live_entry_reads_the_authority_before_judging_and_refuses_off_fleetandtest.claim.spark.spark_pair_serving_apply_wet_witnessthe_apply_seam_reads_the_authority_before_planning_and_refuses_off_fleettook the executor from the runner's hostname and assumed it declared no dashboard instance. That holds on srv3/srv4 runners and is false on srv1 runners, where the log is readable. So the required floor went red depending on where it landed: #12444 floor runs 36355617646 (srv1-06) and 36361351081 (srv1-05). Every PR in the queue is exposed.Change (DESIGN §3, a witness discriminates at one interface; the pairing obligation):
gunbc.instruments.fabric_capacity_standingfabric_capacity_standing_for(executor, at)is the entry below its two host observations.fabric_capacity_standingdelegates to it. The apply seam already had this shape:spark_pair_apply_plans(executor, at).The off-fleet arms supply the premise. They pass a host that declares no dashboard instance, plus a fixed instant. The real
event_log_store_for_hostresolution, the per-groupCurrentAuthorityUnread, and the verdict/refusal text run on every runner. The existing claim names and their schedule rows are kept.One real-read claim per seam (
the_live_entry_judges_exactly_what_the_runners_log_read_returned,the_apply_seam_refuses_exactly_what_the_runners_log_read_could_not_answer). Each runs on the actual runner and reads the log for real. It asserts the ROUTE, which holds whether or not the runner can read the log:A fallback to the resting row fails either way. Both are scheduled in
v2.workflow.local_repo_wet_terminal.There is no host-gating, retry or skip. The READ arm over supplied authorities stays covered by the existing hermetic
fabric_capacity_standing_witness/spark_pair_serving_apply_witness.Not evaluated locally; the floor is the first execution. One residual: each real-read claim reads the log twice, once directly and once through the entry, so a transition landing between the two reads could make them disagree. That would take a live write inside a second-scale window.
🤖 Generated with Claude Code