Skip to content

Route facts about the realization that answered, not about a declaration - #11162

Merged
gunbai-bot[bot] merged 35 commits into
mainfrom
spark-route-facts-from-realization
Sep 13, 2026
Merged

gunbai-bot[bot] merged 35 commits into
mainfrom
spark-route-facts-from-realization

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 12, 2026 •

Copy link
Copy Markdown
Contributor

ROUTE FACTS ABOUT THE REALIZATION THAT ANSWERED, AND THE TWO PLACES A DECLARATION WAS STILL
STANDING IN FOR ONE. The subject is SparkServingRealization -- the hosts and the models-route
readback -- and both halves of the route are derived from it. An operator review at
3bcf3d8 found neither half finished; both are repaired here.

WHAT THIS CAPABILITY IS, STATED PLAINLY SO NOTHING READS AS MORE: IT IS REFUSAL-ONLY, FOR
LACK OF EVIDENCE. There is no conditional evidence-validation path in this diff, implemented
or tested. Nothing admits. The telemetry standing refuses for every input because no evidence
binds a reporter's effective configuration to the launch that answered, and the route's
service refuses whenever the readback does not identify the deployment.

THE TELEMETRY HALF. Matching the engine-reported configured_model_path against the
pair-serving snapshot establishes PATH AGREEMENT, not which process is running -- yet the
match authorised attributing spark_pair_container_env(lane), which renders the environment a
container is CREATED with and observes nothing. Same hosts, same configured path, a different
effective environment or runtime: every input to the join is identical. That standing fed
ProviderPathLocated/Absent and then admission, so it was a deciding attribution.

THE DEPENDENCY IS DELETED, NOT POSTPONED, which is the point rather than a detail. Keeping the
fold behind today's empty disable-term population would only postpone the same attribution, so
spark_lane_disables_usage_stats and spark_realization_lanes are deleted and
gunbc.spark.first_party_serving NO LONGER IMPORTS spark_pair_container_env AT ALL. The declared
environment cannot select any branch of the deciding standing, because the deciding module
cannot reach it. Grep is the check: its remaining occurrences are prose naming it as the thing
not read.

THE SERVICE HALF, WHICH NOBODY HAD LOOKED AT. spark_serving_route_standing read only the hosts,
so whenever the site allocation covered them it returned a route unconditionally naming
gunbc.spark.pair_serving_desired as its SERVICE. A first repair refused only the unreadable and
different-path readbacks, which left the MOTIVATING case intact: two deployments sharing a
configuration report the same string, and spark_realization_identity says in its own annotation
that the comparison establishes configuration agreement rather than identity. The service is
therefore unestablished for EVERY input and the refusing arm is unconditional -- the defect is
removed rather than its admission condition narrowed. The two halves of a route rest on DIFFERENT EVIDENCE: the REGION
is the operator's dated allocation, true whatever answered on those machines; the SERVICE is a
claim about which deployment answered. ServingRouteServiceUnidentified carries the allocation
and refuses the service, so a valid region assertion survives a refusal it has nothing to do
with, and the binder does not bind without it.

WHAT IS ESTABLISHED, EACH AT THE SEAM THAT OWNS IT.

  1. A matching readback does not establish the effective telemetry configuration --
    a_matching_readback_does_not_establish_the_effective_telemetry_configuration. Nonempty
    covered hosts, readback matching the declared launch, and the standing still returns
    Unread naming the MISSING LAUNCH-BOUND EVIDENCE. It also asserts the ABSENCE of the
    foreign-path and missing-membership causes, so an earlier refusal cannot pass for this
    one. It is NOT named "a foreign launch is detected": with no input distinguishing two
    launches that share a configuration, this producer cannot detect that distinction, only
    decline to infer it.
  2. The refusal survives the path conversion --
    the_missing_evidence_refusal_produces_an_unread_telemetry_path asserts Unread and refuses
    both Located and Absent.
  3. The refusal reaches admission --
    the_first_party_scope_refuses_while_its_environment_is_declared_not_read denies at the
    production admission producer, pinned to the route-facts obligation rather than to the arm
    alone.
  4. Service, and the motivating case is the MATCHING one. A matching reported configuration does
    not establish the specific deployment service --
    a_matching_configuration_does_not_establish_the_specific_service drives the case where the
    engine reports exactly the declared path on fully covered hosts, and the service is still
    refused; it pins the obligation to the configuration-agreement diagnosis so an "unreadable"
    refusal cannot pass for it. a_matching_configuration_does_not_bind_an_offer carries that
    refusal through the production binder. The easier cases are covered too --
    covered_hosts_with_an_unreadable_readback_refuse_the_service_and_keep_the_region and
    an_unidentified_service_does_not_bind_an_offer -- and
    the_allocation_survives_a_service_refusal_with_its_date proves the operator's dated assertion
    survives a refusal it has nothing to do with, rather than requiring a complete route that
    nothing establishes.

THREE WITNESSES WERE GOING GREEN WHILE PROVING NOTHING, and the floor caught it. Because this
repair makes the route refuse EARLIER, two rows asserting customer-scope and posture-stale
refusals would have passed on the ROUTE-FACTS refusal instead, and a third read its standings
off a permit arm that is now unreachable by design. Each is re-pointed at the seam that owns
its obligation: the dispositions at their own producers, the two refusal rows at facts that
reach their actual question.

THE ADMISSION FIXTURE IS A HYPOTHETICAL RESOLVED-ROUTE FIXTURE, and an earlier version of this
body defended it as "inventing nothing" because every slot reuses a value production already
returns. That defence is withdrawn and was wrong: copying a production value into a slot does not
make it an observation of that slot's destination, and assigning the execution path to the
telemetry slot constructs a closure no producer returns. What makes it admissible is the explicit
hypothesis and the bounded question -- GIVEN a resolved route, the production admission evaluator
still rejects an unsupported customer profile and a superseded posture, each for its own reason.
It is not production telemetry evidence and is not the deferred launch-bound positive control.

TWO ABSENCES THAT ARE DECISIONS. A deployment-independent service would have to MEAN that
rather than cite a particular desired deployment, and spark_first_party_service_ref names
spark_pair_serving_desired -- making that honest is a redesign, not this PR. And the positive
control carrying launch-bound evidence is NOT AUTHORABLE: no evidence-bearing path exists, and
inventing one is what the review forbids. It lands with that path, as does the
desired-enabled/desired-disabled control, which cannot pass or fail while the environment is
not an input.

THE OPERATOR'S 2026-09-11 JURISDICTION RULING IS NOT WITHDRAWN. It waives a located path's
JURISDICTION; it never established attributing a reporter to a launch. The Located arm is
retained, currently unreachable, and says so at the arm. gunbc.rung_drop
provider_path_jurisdiction_unread_admits now records that in its TYPED population field rather
than only in prose beside it -- gated, empty pending attribution evidence -- and
docs/design-rung-drops.md is regenerated in the same commit, because the typed row is what
projects and a correction made only in the annotation would have published the opposite.

Follows #11115 and #11139, both merged. First of the three joins from the operator-routed review of #11083.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL


THE DEFERRED POSITIVE CONTROL, STATED PLAINLY

The operator's Finding 1 asked for the telemetry repair "alongside a positive control with
the required evidence." That positive control is NOT BUILT, deliberately, and this section
says so rather than leaving a reader to infer it from an absence.

Why it is not built. No launch-bound evidence producer exists anywhere in the tree. Until
one does, spark_serving_usage_stats_standing cannot answer Observed at all — it
constructs UsageStatsLaunchUnread on every arm — so there is no success path for a positive
control to exercise. A fixture asserting a successful launch-bound read would have to invent
the evidence it claims to check, which is the fabricated-plausible-output failure DESIGN §5
forbids and the precise defect this PR exists to repair. Building it to clear a review would
be the worst available reason to build it.

This is the honest current rung, not a gap being hidden. The refusal is the deliverable.
The absence of a positive control is a property of the world (no producer), not of this change.

NEXT-RUNG TRIGGER — the CAPABILITY, not an artifact. A launch-bound evidence producer for
the process that answered, sufficient to establish its effective vLLM telemetry configuration for
this serving realization — both WHETHER the usage-stats reporter runs and, if it runs, WHERE IT
SENDS
(VLLM_USAGE_STATS_SERVER can change the recipient, and the marker-file path can disable
reporting independently). The positive control lands in the same change as that producer.
Home: keen-owl-253's Work-identity / wall-3 lane.

A control alone, a wider declaration comparison, or launch identity without those telemetry
facts
, does NOT discharge this trigger. Proving "this process is this launch" and reading some
runtime configuration can still leave undecided whether reporting is disabled or where an enabled
reporter sends — which is the capability, not merely the attribution. (An earlier revision of this
section named only the attribution half; the source itself has always stated the stronger
requirement, and this now matches it.)

A trigger naming only "a positive control is added", or any artifact short of that producer,
does NOT discharge this: a control without an evidence producer can only be satisfied by
fabricating its fixture, which is the thing being deferred.

NO PLACEHOLDER. There is no fabricated evidence and no placeholder Observed constructor
standing ready to host a future control. VllmUsageStatsLaunchStanding has exactly three arms
— UsageStatsDisabledByLaunch, UsageStatsEnabledByDefault, UsageStatsLaunchUnread — and no
new one was added. The ProviderPathLocated construction is retained for an established
applicable reporter, but no current producer can reach it: spark_usage_stats_telemetry_path
does not accept a standing from its caller, it calls spark_serving_usage_stats_standing
internally, and that producer returns UsageStatsLaunchUnread for every input. So no realization,
fixture or caller can select the Located branch without first changing the standing producer
itself. (An earlier revision of this section said "nothing constructs it", which was literally
false — the constructor exists and is unreachable, which is the property that matters.) The
deferral adds no writable invalid state.

Authority for the deferral: accepted by bright-eagle-728 under the operator's grant, to be
reported to the operator. The side-chat adjudication of this head found the operator's
Finding 2 ANSWERED, and Finding 1's substantive defect, same-host/same-path counterexample and
production-admission consumption all repaired, with only this clause outstanding.

gunbc-ci-auto-heal and others added 2 commits September 12, 2026 06:44
THE DEFECT WAS MINE AND IT WAS LATENT RATHER THAN THEORETICAL. The telemetry
fold read gunbc.spark.pair_serving_realization's container environment over the
GLOBAL fabric lane roster, and the service reference named
gunbc.spark.pair_serving_desired -- neither of which takes the launch being
offered. A native GLM launch, whose actual environment nothing here models,
would have inherited pair-serving's DESIRED answer and been admitted on route
facts describing a different deployment. Nothing was wrong while one deployment
existed; it fires the moment a second engine uses this path.

THE SUBJECT IS NOW THE REALIZATION THAT ANSWERED. SparkServingRealization
carries the endpoint and the hosts, which are the two things this module's
questions actually turn on: the hosts decide whether the operator's site
allocation covers the machines, and the endpoint decides whose container
environment may be attributed. Both the route standing and the route facts take
it, so the two answers can no longer come from different deployments.

SCOPING BY HOST IS ONLY HALF, AND THE SECOND HALF IS WHY THIS IS NOT A ONE-LINE
FILTER. spark_pair_container_env is keyed on a LANE, so scoping to the serving
hosts still hands a native launch on those same machines the pair-serving
container's environment. The environment this module can attribute is that
container's, and the discriminator present at the offer is the port that
answered. A deployment with no environment model is UNREAD -- and unread is an
unresolved data path, so provider-use admission REFUSES rather than inheriting.

Three REDs: a foreign deployment on the same hosts is unread and not inherited;
that refusal reaches admission as route-facts-incomplete rather than stopping at
the standing; and a pair realization with unreadable membership is unread for
its own distinct reason.

AND THE RECURRING FAILURE MODE ROW RIDES HERE. It was drafted to land with
#11139, which edited the string it is about, but #11139 merged without it -- and
a row parked behind a merged host is the quiet deferral the tripwire existed to
prevent, so it lands on the next legitimately-running change rather than in a
third PR. The class: an emitted diagnostic asserts a positive standing for a
check that did not run on the path that emitted it. Three receipts, all one
sentence: it misled its author, it misled a manager and a reviewer into
reporting both spark walls down, and it misled its author again into arguing his
own correction was pointless. Overlap checked against the three nearest rows
before minting.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…verage refuses

Both findings land on the same weakness: the first spelling of this repair moved
the subject to the realization but kept deciding from things that are not
evidence about the process that answered.

1. A PORT IS WHERE SOMETHING ANSWERED, NOT WHAT IT IS. Attribution keyed on the
endpoint's port, so a replacement engine on the same port inherited the
pair-serving container's environment with nothing observing it to have one --
the declaration-as-realization defect this change exists to remove, surviving
inside the removal. The join is now LAUNCH-BOUND: the models-route readback
carries the configured_model_path the running engine itself reported, and
gunbc.spark.pair_serving_realization derives the path the pair-serving launch is
declared to serve. Those agreeing is evidence about the process; a different
engine serving a different checkpoint answers with a different path, and an
unresolved readback identifies nothing at all.

WHAT IT STILL DOES NOT ESTABLISH, in the annotation rather than left to a later
reader: a configured path is strong evidence about intent and no evidence about
bytes, so this identifies WHICH DECLARED LAUNCH the process is, not which
weights it loaded. The incarnation join stays open.

2. PARTIAL COVERAGE IS MISSING EVIDENCE. The lane fold refused only an EMPTY
result, so a realization with one observed and one unobserved host resolved from
the observed one and silently dropped the other. Every host must now have an
observed lane; the unobserved set is computed and refuses on its own obligation,
distinct from the empty-membership one.

Three new REDs: a partly observed realization is unread rather than answered
from its observed half; an unresolved readback leaves the deployment
unidentified; and the foreign-deployment red now differs from the pair fixture in
WHAT THE ENGINE REPORTED rather than in where it answered, which is the
discrimination the port-keyed version could not make.

The harness threads the readback it already holds from HarnessBackendServing, so
the identity join reads the same observation the candidate was admitted on.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Addressing review 64424 — 011606a. Both findings are correct and they share a root: the first spelling moved the subject to the realization but kept deciding from things that are not evidence about the process that answered.

1. A port is where something answered, not what it is. You are right that keying attribution on the endpoint's port preserves the exact defect this PR exists to remove — a replacement engine on the same port inherits an environment nothing observed it to have, so the declaration is still standing in for the realization. That is the defect surviving inside its own removal.

The join is now launch-bound: gunbc.spark.vllm_observed's models-route readback carries the configured_model_path the running engine itself reported, and spark_pair_model_path_in_container derives the path the pair-serving launch is declared to serve. Agreement between those is evidence about the process — a different engine serving a different checkpoint answers with a different path, and an unresolved readback identifies nothing at all. That also puts the readback #11115 landed to its first production use, which is the sequencing this lane was ordered for.

I stated the residual in the annotation rather than leaving it implicit: a configured path is strong evidence about intent and no evidence about bytes, so this identifies which declared launch the process is, not which weights it loaded. The incarnation join stays open and nothing here closes it.

2. Partial coverage is missing evidence. Also correct, and it is the vacuous-empty-set trap one step along: refusing only the empty lane result meant one observed host and one unobserved host resolved from the observed one and silently dropped the other. Every realization host must now have an observed lane, and the unobserved set is computed so the refusal names its own obligation, distinct from the empty-membership one.

Three new REDs: a partly observed realization is unread rather than answered from its observed half; an unresolved readback leaves the deployment unidentified; and the foreign-deployment red now differs from the pair fixture in what the engine reported rather than in where it answered — the discrimination the port-keyed version was incapable of making.

The harness threads the readback it already holds on HarnessBackendServing, so the identity join reads the same observation the candidate was admitted on rather than a second probe.

— sent from keen-owl-253

… under prose saying it decides

TWO FINDINGS, AND THE FIRST IS THIS PR'S OWN NEW ROW APPLIED TO THIS PR.

1. AN ENDPOINT FIELD NOTHING READ, UNDER AN ANNOTATION CLAIMING IT DECIDED
ATTRIBUTION. Review 64424 moved attribution from the port to the readback; the
field survived the move and so did the sentence justifying it. Nothing in the
module read realization.endpoint -- the only field reads are hosts and readback
-- so it was a declaration with no consumer, carried by three callers and three
fixtures, under prose asserting an executing relation no operation performs.

That is exactly diagnostic_asserts_standing_no_check_evaluated, which this same
change files, found by that row's own review tell: name the producer the
sentence asserts an outcome for, and grep the arm for it. There was none. The
field is deleted rather than kept for later, the rationale in both modules now
describes the two fields that exist, and the fixtures and imports that existed
only to fill it go with it.

2. A REPURPOSED ARM KEPT THE OBLIGATION OF THE CONDITION IT NO LONGER TESTS. The
empty arm used to fire on an empty LANE ROSTER and its text said so -- read the
lanes. It now fires on unreadable HOST MEMBERSHIP, where reading every lane in
the roster fixes nothing. The diagnostic named the wrong located fact and the
wrong remedy, which is the same class again one arm over. It now names group
membership as the located fact, and its witness asserts on that rather than on
the stale sentence -- the witness whose own comment already said "what is
missing is which hosts serve it" while asserting "no fabric lane", which is the
mismatch made visible.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Addressing review 64438 — 8c433e5. Both correct, and the first one is this PR's own new row applied to this PR, found with that row's own review tell.

1. An endpoint field nothing read, under an annotation claiming it decided attribution. Review 64424 moved attribution from the port to the readback; the field survived the move and so did the sentence justifying it. The only field reads are hosts and readback — so endpoint was a declaration with no consumer, carried by three callers and three fixtures, under prose asserting an executing relation no operation performs.

That is precisely diagnostic_asserts_standing_no_check_evaluated, which this same change files — and you found it the way that row says to: name the producer the sentence asserts an outcome for, and grep the arm for it. There was none. I minted the class and then committed it in the adjacent annotation, in the same diff, which is the most useful possible evidence that the tell works and the least flattering way to learn it.

Deleted rather than kept for later. The rationale in both modules now describes the two fields that exist, and the fixtures and imports that existed only to fill it go with it.

2. A repurposed arm kept the obligation of the condition it no longer tests. The empty arm used to fire on an empty lane roster, and its text said so — read the lanes. It now fires on unreadable host membership, where reading every lane in the roster fixes nothing. Same class again, one arm over: the diagnostic named the wrong located fact and the wrong remedy.

Your sharpest observation is that my own fixture was already evidence of the mismatch — a_pair_realization_with_no_hosts_is_unread_for_membership, whose comment says "what is missing is which lanes serve it", asserting on "no fabric lane". The name and the comment knew; the assertion and the string did not. The obligation now names group membership as the located fact, and the witness asserts on that.

— sent from keen-owl-253

gunbc-ci-auto-heal and others added 2 commits September 12, 2026 07:25
…iling

bright-boar-435 supplied a fourth reading of the same sentence, and it is worth
more than the other three combined because it happened with the diagnosis
already in hand: after the class had been named and the correction written, they
told me the corrected string was unreachable, citing the dev end-to-end receipt
as corroboration -- and that receipt was the sentence being emitted.

So the cost line is four readers, not three: the author when he wrote it, a
manager and a reviewer reporting both spark walls down, the author again arguing
his own correction was pointless, and the person who caught it, after catching
it.

That settles what the row asks for. Four consecutive readings by three people
who all knew about the class is the argument that a review habit does not fix
this -- only the construction does, where a refusal note is built FROM the
check's outcome value so a standing with no evaluated outcome cannot reach the
text at all.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…t blocked everyone

gunbc#11137's transition-admission row admitted a TargetChanged binding on
extdeps.tools.sha256sum::extdeps_external_authority_anchor, created when a bare
import of extdeps.filesystem.filesystem_io became { Filesystem } and the
spelling's candidate set narrowed from three modules to two without changing
what it resolves to. Its stated trigger was "this row goes when #11137 merges".
#11137 merged at 06:35:25 today, so the base carries the named import, the delta
stopped being producible, and the deletion came due on this roster's next touch.
This is that touch. The roster is empty again, which the file already records as
its resting state.

DELETING A ROW WHOSE STATED TRIGGER HAS FIRED IS EXECUTING ITS DECLARATION, NOT
OVERRULING ITS OWNER. I asked rather than assumed, because it is another
program's roster; the ruling is bright-eagle-728's, on the measurement that four
unrelated lanes were each blocked by it and each reached the same deletion
independently.

AND IT DID NOT MERELY LINGER, which is the part worth leaving in the file. A
spent row matches no delta, so the wave phase reports it as an UnmatchedAdmission
refusal in stale_admissions -- correctly, since a row provable against neither
side is not evidence -- and that REFUSES the required floor for every pull
request whose base already carries the merge. Measured rather than inferred: PRs
based on 0c93af0 reported the stale row and a PR on an older base reported
none.

THE SHAPE TO FIX WHEN THIS ROSTER IS NEXT DESIGNED is recorded beside the empty
roster: a retirement condition written as a SENTENCE naming a merge does not
retire when that merge happens, because the trigger is readable by people and by
nothing else. The row outlives its own condition and the cost lands on whoever
opens the next pull request. Deriving retirement from the merge -- the positive
proof admission_consumed_at_base already performs for the consumed arm -- would
make the deletion structural rather than a debt passed between lanes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

On the floor red at caf8678 — it is structural, inherited from main, and one line in a file this PR had not touched. Fixed in 3334c52, on bright-eagle-728's ruling.

The diagnosis, measured rather than reasoned. The adjudication line is namespace-wave-admission (0 unadjudicated deltas, 1 stale admission, 0 consumed) with floor_class=structural — no MemoryStallRefusedPageThrash anywhere, so this is not the marginal envelope and a retry would not have cleared it. The distinction I drew on #11139 applies here and cuts the other way.

The stale row is gunbc#11137 extdeps.tools.sha256sum names Filesystem instead of reaching it. I confirmed it is not mine by comparing lanes rather than by reading my own diff:

base STALE ADMISSION
main's own green run — 0
#11154 (unrelated lane) 0c93af0d0 1, identical line
#11161 older base 0

#11137 merged as main's tip at 06:35:25, so the delta that row admits is already satisfied at my base and no diff of mine can produce it. The wall evaluates the roster content against the diff, not whether you edited the file — which is why an untouched file refuses you.

The row's own doc says TRIGGER: this row goes when #11137 merges. Deleting a row whose stated trigger has fired is executing its declaration, not overruling its owner — and this roster's convention is that a consumed row's deletion comes due on its next touch, with the previous author noting that paying the debt beats passing it to an unrelated lane. I asked before doing it, because it is another program's roster.

What I recorded beside the now-empty roster, because it will recur: a spent row does not merely linger — it matches no delta, so the phase refuses it as an UnmatchedAdmission and that refuses the required floor for every PR whose base carries the merge. Four lanes each paid a ~40-minute floor run to rediscover the same row. A retirement condition written as a sentence naming a merge is readable by people and by nothing else; deriving it from the merge — the positive proof admission_consumed_at_base already performs for the consumed arm — would make the deletion structural rather than a debt passed between lanes.

— sent from keen-owl-253

gunbc-ci-auto-heal and others added 4 commits September 12, 2026 08:34
Three corrections to the dissolution record, none to the deletion.

THE FILE ALREADY RULES ON THIS AND I ARGUED IT FROM CONVENTION INSTEAD. Its own
words: "the phase refused every unrelated change, so the shrink is the fix, not
housekeeping", and "each transition adds its rows here and removes them when its
subject lands". So the deletion is this roster's documented dissolution rather
than unrelated cleanup riding a route-facts diff, and it is the same motion as
the two shrinks already recorded here.

STALE AND CONSUMED ARE TWO FRAMES FOR ONE ROW AND THEY BLOCK DIFFERENTLY. The
dissolution records say consumed -- satisfied at the base, a typed receipt. The
floor said stale -- an UnmatchedAdmission refusal, which fires whether or not
anyone touched the roster. That is why this PR refused on a file byte-identical
to main's, and why a record saying only "consumed" would not explain the red
that forced the edit. Both are named now.

AND SHRINKING EARLY CANNOT FAIL OPEN, which is the argument for not waiting on
the row's owner: the file rules that empty does not mean permissive -- with no
rows, a real delta refuses as UNADJUDICATED. The worst case of an eager deletion
is a loud refusal naming the delta, never a silent admission.

Also recorded: this is at least the fourth occurrence of the shape, not a
novelty -- 53 rows once outlived their subject, a later state had 314 stale,
#9689 measured six, tonight one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…aying it was

Verified in main's source before rewriting, because the correction goes against
what the row itself claimed. admission_consumed_at_base's Binding arm proves
consumption only on set.len() == 1 && set.contains(target) -- "a singleton set
equal to it, not merely containing it" in its own doc -- and the retired row's
documented head set is {extdeps.shell, extdeps.tools.sha256sum}, two members.
len() == 1 is false for it forever.

SO ITS TRIGGER PROMISED A DISPOSITION THE EVALUATOR CANNOT ASSIGN. "CONSUMED
comes due on the roster's next touch" was never reachable; the row could only
ever report STALE, which is the arm that refuses every unrelated pull request
rather than the polite one that waits. My record repeated that false prediction
by framing stale and consumed as two frames on one row, as though the polite
path had been available. It was not. The accurate history is that the subject
landed, the delta stopped being producible, and the row went stale, refusing
everyone until deleted.

AND THE GENERALISATION IS BIGGER THAN THIS ROW: any TargetChanged binding row
whose head candidate set has more than one member has an unreachable CONSUMED
condition, because only a narrowing ending at exactly the target can be proved.
Every other shape can only go stale, and stale is fleet-wide. That is a section
4b(3) defect -- a declared trigger naming a disposition the evaluator cannot
assign, so the row never retires and the cost lands on whoever opens the next
pull request.

This file already carries the opposite correction -- a record predicting stale
for rows that reported consumed -- so both directions of the confusion are now
recorded beside each other, which is the argument for deriving the retirement
rather than writing it.

Found by the effectful reviewer reading the consumption predicate rather than
the row's explanation, and relayed by bright-boar-435; I re-derived each step in
source rather than taking it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…sposition

My dissolution record ended by proposing that retirement be derived from the
merge rather than written in a sentence. That work already exists: gunbc#11165,
"Derive admission consumption from exact candidate sets", checks
Binding.expected_candidates by equality at head before admission is granted,
derives consumption from the same proof at base, and removes the hand-written
lifecycle prediction so the evaluator prints the computed disposition.

So the paragraph would have been stale the moment that lands, and worse, it read
as my proposal for something someone else had already built. It now states the
defect as it stood today and NAMES the fix as a declared frontier with its
trigger beside it: when #11165 lands, a row's retirement stops being a sentence
anyone has to honour, stale means NEGLECT rather than structural impossibility,
and the unreachable-CONSUMED shape becomes unwritable rather than documented.

Verified the PR's subject and files before citing rather than relaying the
description.

The recurring_failure_mode row this PR carries is untouched and is not
duplicated by #11165's: mine is a diagnostic asserting a standing nothing
evaluated, theirs is a written row not being a firing mechanism. Neighbours, not
one claim.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…eleted

The finding is this PR's own subject, in this PR, for the third time -- and the
reviewer names that: a change whose entire point is prose asserting a standing
nothing evaluated, shipping prose asserting a discriminator nothing performs.

THREE SENTENCES SURVIVED THE MOVE. Commit 8c433e5 deleted the endpoint field
because attribution had moved to the readback; three annotations in the two
witness files went on describing attribution by port. The fixture header said
the realizations "differ in the single field that decides attribution -- the
port that answered", 27 lines above a sentence correctly saying they differ in
what the engine reported; the headline RED said "one different port"; and the
route witness said whose environment may be attributed is "the endpoint's
question". SparkServingRealization has had no port since that commit. All three
now describe the model path the running engine reported, which is what the
fixtures actually vary.

The route witness's note also now says why its readback is held UNRESOLVED: that
standing never consults it, and a fixture supplying a resolvable one would
invite a reader to think it did.

AND THE IDENTITY PAYLOAD IS CONSUMED RATHER THAN DROPPED.
RealizationIsPairServing carried configured_model_path and the only match
discarded it -- structurally the same unconsumed-field finding as the endpoint.
The standing's basis now names the path the join matched on, so an auditor reads
WHICH launch was identified rather than that one was, and the witness asserts
that path rather than only the arm. The expected value comes from the same
producer the module compares against, so the assertion cannot drift into
agreeing with itself.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Addressing review 64492 — ca18492. The finding is this PR's own subject, in this PR, for the third time, and the review says so better than I would: a change whose entire point is prose asserting a standing nothing evaluated, shipping prose asserting a discriminator nothing performs.

Three sentences survived the move. Commit 8c433e57 deleted the endpoint field because attribution had moved to the readback — and three annotations in the two witness files went on describing attribution by port:

  • the fixture header: realizations "differ in the single field that decides attribution — the port that answered", sitting 27 lines above a sentence correctly saying they differ in what the engine reported;
  • the headline RED: "same hosts, same site coverage, one different port" — a reader quoting that RED as the receipt for the repair would be quoting a discriminator the test does not exercise;
  • the route witness: whose environment may be attributed is "the endpoint's question".

SparkServingRealization has had no port since that commit. All three now describe the model path the running engine reported, which is what the fixtures actually vary. The route witness also now states why its readback is held unresolved: that standing never consults it, and a fixture supplying a resolvable one would invite a reader to think it did.

The identity payload is consumed rather than dropped. You gave both options; I took the first because it makes the diagnostic better rather than merely smaller. RealizationIsPairServing carried configured_model_path and the only match discarded it — the same unconsumed-field finding as the endpoint, one type over. The standing's basis now names the path the join matched on, so an auditor reads which launch was identified rather than that one was, and the witness asserts that path rather than only the arm. The expected value comes from the same producer the module compares against, so the assertion cannot drift into agreeing with itself.

Worth recording plainly: this is the third round on this PR where the defect was prose surviving a change to the code beneath it, and twice now the surviving prose was mine describing a mechanism I had just deleted. The row this PR mints is about exactly that, and the review tell it spells out — name the producer the sentence asserts an outcome for, grep the arm for it — is what found all three. I should be running it on my own diff before pushing, not learning it from the reviewer each round.

— sent from keen-owl-253

gunbc-ci-auto-heal and others added 2 commits September 12, 2026 09:36
The ground I gave for deleting the spent row was that it came due on the
roster's next touch and that this PR had to re-run anyway. Both are true and
both are arguments from convenience -- the "ride it along" shape that widens a
change's subject, which is the thing a reviewer should refuse whoever offers it.

The correct ground is SCOPE. With that row in its tree, this pull request could
not pass its OWN required gate: a spent row refuses the floor structurally for
every PR whose base carries the subject's merge. Deleting it is this PR
repairing its own blocker, which is inside any change's subject whatever file
the blocker lives in -- and it carries no freight, because the evaluator is
untouched and nothing about how admissions are judged rides along with the
removal.

That justification stands on its own terms rather than requiring anyone to
accept an economics argument, which is the difference between a defensible
bundle and a convenient one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…m-realization

# Conflicts:
#	src/v1/stage0/src/namespace_wave_admission.rs

@briansrls briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HOLD — exact head 3bcf3d8. Two located source findings, returned together. The four check-runs for run 34688873695 are successful; these findings are independent of CI. The settled composition ruling is not reopened, and the obsolete roster deletion is absent from the current net diff.

  1. dag/gunbc/spark/first_party_serving.dag — spark_realization_identity, spark_serving_usage_stats_standing, spark_lane_disables_usage_stats, spark_usage_stats_telemetry_path.

Matching the engine-reported configured_model_path against spark_pair_model_path_in_container(spark_pair_desired_snapshot) establishes path agreement, not which container/process configuration is running. Nevertheless the match constructs RealizationIsPairServing and authorizes attribution of spark_pair_container_env(lane). That function in pair_serving_realization.dag renders the declared container environment; it does not observe the responding process's environment. SparkServingRealization carries only hosts and models-route readback, with no evidence joining the live launch to that environment/runtime.

Counterexample by source inspection: keep the same hosts and configured model path, but run that model under a different effective environment or runtime. All inputs to this join remain identical, so the code still answers EnabledByDefault/DisabledByLaunch from the declared pair configuration instead of Unread. The configured path can agree even when the actual telemetry configuration does not. This does not depend on changing the weight bytes. The resulting standing feeds ProviderPathLocated/ProviderPathAbsent and then provider-use admission, so it is a deciding attribution, not a harmless label.

The existing foreign-deployment controls change the model path and therefore miss the same-path case; t_pair_realization supplies no environment observation yet is used by a positive admission control. Keep telemetry Unread until relevant launch-bound evidence establishes it, or consume an actual observation/convergence receipt tied to the offered realization. Do not simply wrap the declared environment in an Observed arm. Add same-host/same-path missing-or-mismatched-environment controls through the production admission producer, alongside a positive control with the required evidence.

  1. dag/gunbc/spark/serving_offer.dag — spark_serving_route_standing; dag/gunbc/spark/first_party_serving.dag — spark_first_party_route, spark_first_party_service_ref.

The service half of the realization join is still absent. spark_serving_route_standing(realization) reads only hosts and, whenever the site allocation covers them, returns spark_first_party_route(). That route unconditionally names gunbc.spark.pair_serving_desired.spark_pair_serving_desired as its service. An unreadable or foreign-deployment readback therefore receives the same specific pair-serving service reference. The updated route fixture explicitly supplies ModelsRouteDocumentUnreadable while expecting this route-bearing arm; it checks region/provider but not the service attribution.

The dated site allocation can establish the region independently; it cannot establish which deployment/service answered. Preserve that valid region assertion while deriving the specific service from adequate realization evidence or refusing the missing service identity. A deliberately deployment-independent service is another possible design, but it must actually have that meaning rather than cite a particular desired deployment. Add a control on the returned service/full offer route for covered hosts with unreadable or foreign readback.

These repairs do not require completing Work identity or running the currently unavailable DEV e2e. The existing missing-Work refusal and the fact that the harness has not run provider-use admission must remain honest. I inspected the exact-head source/diff, dependency producers, witness source, native review submissions and check-runs. I did not compile, execute witnesses, run CI or access the fleet.

gunbc-ci-auto-heal and others added 12 commits September 12, 2026 13:45
…he launch that answered

TWO FINDINGS FROM ONE OPERATOR REVIEW AT 3bcf3d8, REPAIRED TOGETHER BECAUSE THEY ARE
TWO HALVES OF THIS PR'S OWN CLAIM. The title says route facts come from the realization
that answered rather than from a declaration. Both halves still came from a declaration.

FINDING 1, THE TELEMETRY HALF. Matching the engine-reported configured_model_path against
the pair-serving snapshot establishes path agreement, not which process is running -- yet
the match authorised attributing spark_pair_container_env(lane), which RENDERS THE
ENVIRONMENT A CONTAINER IS CREATED WITH and observes nothing. The counterexample needs no
exotic input: same hosts, same configured path, a different effective environment or
runtime, and every input to the join is identical. The standing fed
ProviderPathLocated/Absent and then provider-use admission, so it was a deciding
attribution rather than a label.

THE REPAIR IS AT THE STANDING AND THE DEPENDENCY IS DELETED RATHER THAN POSTPONED. Missing
launch-bound evidence yields UsageStatsLaunchUnread; neither an enabled nor a disabled
standing is claimed. Keeping the declared-environment fold behind today's empty
disable-term population would only postpone the same attribution, so
spark_lane_disables_usage_stats and spark_realization_lanes are deleted and this module NO
LONGER IMPORTS spark_pair_container_env AT ALL.

FINDING 2, THE SERVICE HALF, WHICH NOBODY HAD LOOKED AT. spark_serving_route_standing read
only the hosts, so whenever the site allocation covered them it returned a route
unconditionally naming gunbc.spark.pair_serving_desired as its SERVICE -- an unreadable or
foreign readback received the pair service by default.

THE TWO HALVES OF A ROUTE REST ON DIFFERENT EVIDENCE, which is why this needs a fourth arm
rather than a stricter guard. The REGION is the operator's dated allocation: a fact about
where the machines sit, true whatever answered on them. The SERVICE is a claim about which
deployment answered. ServingRouteServiceUnidentified carries the allocation and refuses the
service, so the valid region assertion survives a refusal it has nothing to do with. The
service is now derived from spark_realization_identity, and the binder does not bind
without it.

WHAT IS DELIBERATELY NOT HERE. A deployment-independent service would have to MEAN that
rather than cite a particular desired deployment, and spark_first_party_service_ref names
spark_pair_serving_desired -- making it honest is a redesign of what the first-party
service is. And the positive control with launch-bound evidence is not authorable: no
evidence-bearing path exists, and inventing one is what the review forbids. It lands with
that path.

THE OPERATOR'S 2026-09-11 JURISDICTION RULING IS NOT WITHDRAWN. It waives a located path's
jurisdiction; it never established attributing a reporter to a launch. The Located arm is
retained and currently unreachable, said out loud at the arm, and the drop row records its
population as EMPTY PENDING attribution evidence rather than as a deleted subject.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…ntier the deleted fold left

CI'S FLOOR REFUSED STRUCTURALLY AT ff6c853, blockers=1, on
dag/test/claim/spark/spark_serving_offer_route_witness_test.dag:19: unresolved import,
module 'std.token_count' not found. token_count is declared by std.measure, which the
sibling witness added in the same push imports correctly. Review 64572 found it by reading;
the floor then refused on exactly it.

THE CONSEQUENCE IS WHY THIS IS A FLOOR DEFECT AND NOT A TYPO. Name resolution fails for the
WHOLE module, so both service-half rows this PR's second claim rests on --
covered_hosts_with_an_unreadable_readback_refuse_the_service_and_keep_the_region and
an_unidentified_service_does_not_bind_an_offer -- were not executing evidence for anything.
A witness that cannot resolve is not a weak witness, it is an absent one.

A SECOND UNRESOLVED SET, WHICH CI HAD NOT REACHED because resolution stops at the first
failure: spark_first_party_serving_witness_test matched ProviderPathUnread / Located /
Absent and called spark_usage_stats_telemetry_path without importing any of the four. That
is the row asserting the central claim that no established telemetry path may be produced,
so it too was asserting nothing. Both are now imported and every imported symbol in the
files this change touches is verified to exist in the module it is taken from.

AND THE FOLD'S DELETION LEFT AN UPSTREAM PREDICATE WITH NO CALL SITE.
extdeps.vllm.usage_stats vllm_usage_stats_assignment_disables was consumed only by the
deleted spark_lane_disables_usage_stats. It is kept as a DECLARED FRONTIER under DESIGN 3c
with its consumer and trigger stated beside it: it is what an effective-configuration
reading feeds once one exists, named at
spark_serving_usage_stats_declared_environment_obligation. It is kept because it holds a
CITED upstream reading -- the exact-equality semantics of envs.py, established by review
64043 after a first spelling erred in the admitting direction -- and re-deriving that is the
redundant work DESIGN 2 prices. Not because deleting it would be inconvenient: if the
reading never lands, this goes with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
REVIEW 64578 IS RIGHT AND THIS IS THE SEVENTH INSTANCE TODAY OF THE CLASS THIS PR MINTS,
the fourth of them in prose, and two of the paragraphs were added by this PR itself. They
described machinery that no longer exists: that the launch environment is "folded now"
against extdeps.vllm.usage_stats' disable terms; that "the fold still answers what the
LAUNCH IS DECLARED to do ... and the standing takes the WORST CASE for the process:
reporting is assessed as on"; and that "EVERY LANE MUST DISABLE IT, NOT ANY ... the
disabled arm is reached only when that set is empty".

NONE OF IT IS PERFORMED. spark_lane_disables_usage_stats is deleted, this module no longer
imports spark_pair_container_env or vllm_usage_stats_assignment_disables, and
spark_serving_usage_stats_standing returns UsageStatsLaunchUnread on EVERY arm -- verified
rather than asserted -- so there is no disabled arm to reach and nothing is assessed either
way. The text also contradicted this same function's own obligation ("no standing is
claimed for this launch either way") and this PR's own rung-drop correction.

A FOURTH PARAGRAPH THE REVIEW DID NOT NAME HAD THE SAME DEFECT, found by sweeping rather
than by fixing what I was shown: "THE REMEDY IF ZERO EGRESS IS EVER WANTED is one
environment variable on the launch". That is the stranded promise again -- setting
VLLM_NO_USAGE_STATS=1 edits what the launch is DECLARED to do, and this decision no longer
consults the declaration, so a reader would set it, see nothing change, and have no way to
learn why. An actionable false promise is worse than silence.

WHAT REPLACES THEM SAYS WHAT WAS REMOVED AND WHY, rather than vanishing: the paragraphs are
recorded as deleted, the direction of their error is named, and the reader is pointed at
what actually resolves the route -- evidence of the effective telemetry configuration of the
process that answered, bound to the offered launch, covering whether the reporter runs and
where it sends.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…igin 1

WHY A THIRD SPECIMEN RATHER THAN A TALLY MARK. Origin 1's two attested specimens both had
the executor die in a DIFFERENT change from the prose describing it, which leaves open the
reading that this class needs elapsed time, a hand-off, or a second author to fire. It does
not. In this pull request the deletion of spark_lane_disables_usage_stats and the
annotations describing that fold were the same diff, the same author, minutes apart -- and
two of the stranded paragraphs had been written earlier in this same pull request. The
minimum distance between removing an executor and stranding the claim that describes it is
zero, and a reviewer who looks for this class only across changes will miss it where it is
densest.

WHAT IS DELIBERATELY NOT IN THE ROW. The count. Four instances in one afternoon is a fact
about this author's afternoon rather than about the corpus; the corpus fact is the coupling,
and the count is only the anecdote that surfaced it.

AND THE ACTIONABLE ONE IS NOTED WITHOUT MINTING AN AXIS. One stranded paragraph told a
reader that setting VLLM_NO_USAGE_STATS=1 would change the route's answer, when the decision
no longer consults the declaration -- so the reader would set it, observe nothing, and have
no way to learn why. That is a difference in KIND from a descriptive stranding, recorded as
awaiting a second data point. Minting a severity axis on one case is the row-widening this
same ledger refused earlier today.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
… in the field that projects

THE FLOOR REFUSED STRUCTURALLY AT 7514dd4 WITH FOUR REAL FAILURES, counted as eight
because each appears twice -- once as claim_failed and once as
changed_witness_planned_without_terminal_verdict. Three of them are the hazard the review
named in advance: an earlier, correctly located refusal masking a later obligation.

MY OWN NEW RED FAILED ON A CASE MISMATCH. an_unidentified_service_does_not_bind_an_offer
asserted "the SERVICE is not" against a refusal reading "The SERVICE is not:". The witness
was right about the behaviour and wrong about the string, which is the cheapest possible
way to assert nothing.

THREE WITNESSES I DID NOT INTEND TO TOUCH WENT RED BECAUSE THIS PR MADE THE ROUTE REFUSE
EARLIER. every_use_program_is_not_engaged_and_names_its_basis read its three standings off
an ADMITTED permit; no realization admits any more, by design, so the permit arm is
unreachable and the row asserted nothing. It now reads the dispositions from the producers
that own them -- spark_sanctions_disposition, spark_export_disposition,
spark_prohibited_use_disposition -- which is where the not-engaged claim actually lives.

a_non_first_party_use_refuses_as_unsupported and
a_superseded_posture_makes_the_first_party_sanction_stale both fed admit_provider_use the
production route facts, whose telemetry path is now unread for every input. Route-facts
refusal fires FIRST, so both rows would have gone green while proving nothing about customer
scope or posture staleness. They now take facts whose paths all resolve and therefore reach
the question they are about.

THE ISOLATING FIXTURE INVENTS NOTHING, which is the only reason it is admissible. Every slot
in its closure reuses this module's OWN on-site path -- the one the production producer
already returns for execution, storage and logs on operator-owned hardware. It supposes the
telemetry path is as established as those already are, which is a supposition about a FIXTURE
INPUT and never a claim about a deployment. The row that would assert launch-bound evidence
is still deliberately absent.

AND THE LEDGER IS CORRECTED IN THE FIELD THAT PROJECTS, NOT BESIDE IT. The previous head
fixed the rung drop's annotations and left the TYPED population asserting a live
ProviderPathLocated return -- correcting the half no Accepted program reads while the half
that gunbc.rung_drop folds and publishes to docs/design-rung-drops.md went on claiming the
opposite. The field now states the population as gated and empty pending attribution
evidence, and the projection is regenerated IN THIS COMMIT so heal has nothing to add: a
separate auto-commit would move the head and cancel the run.

THE CLASS ROW IS WIDENED TO COVER ITS OWN WORST INSTANCE. unbacked_execution_claim was drawn
around prose stranding a claim about a deleted executor. A typed carrier is worse in kind,
because it is folded and projected, so a claim withdrawn in the annotation beside it survives
into a published artifact. The recognition rule now says to ask which TYPED rows in the same
file assert the withdrawn thing, and whether any is projected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
REVIEW 64611 FOUND TWO TYPED ROWS IN THE MODULE STILL ASSERTING WHAT THIS PR WITHDREW, and
the sweep it prompted found two more the review did not name. This is the sweep I said I
owed and did not actually run: I swept deleted SYMBOLS corpus-wide and corrected the rung
drop, and never swept the typed rows inside the module I was changing.

spark_export_not_engaged.basis said spark_usage_stats_telemetry_path "carries that path as
Located with an unread jurisdiction". It returns ProviderPathUnread for every input now.
Worse, this PR made that row NEWLY LOAD-BEARING by re-pointing
every_use_program_is_not_engaged_and_names_its_basis at these disposition producers -- so
the false claim moved from decorative to asserted by a witness in the same change. The
export CONCLUSION is unaffected and stands: an unestablished metadata path is still not an
export of route material.

spark_first_party_use_posture.data_subject cited spark_serving_usage_stats_standing "for
this fleet's launch" and told a reader zero egress was one environment variable away. The
standing establishes nothing for this launch, and this module no longer reads the declared
launch environment at all, so that remedy edits a producer the decision does not consult.

TWO MORE, FOUND BY SWEEPING RATHER THAN BY BEING TOLD, and both of the actionable kind.
spark_serving_usage_stats_unread_obligation ended "establish which hosts serve this
deployment before its telemetry path can be resolved", and
spark_serving_usage_stats_unobserved_hosts_obligation ended "read those lanes before this
route's telemetry path can be resolved". Both promise that satisfying them resolves the
route. Neither does: a realization with every host known and every lane covered still
refuses, because knowing which machines serve a deployment is not knowing what the process
on them does. Both now say necessary-and-not-sufficient and name what remains.

THE PATTERN, RECORDED WHERE IT BELONGS: the failure is not that prose rots. It is that a
correction feels complete when the ANNOTATIONS read true, while the typed rows -- the ones
folded, projected, and now asserted by witnesses -- keep the withdrawn claim. That is
already the widened recognition rule in unbacked_execution_claim; this commit is its first
application, and it took an external reviewer to start it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…the fixture evidence

THE SERVICE SEAM STILL NAMED A SPECIFIC DEPLOYMENT ON A CONFIGURATION MATCH. Refusing the
unreadable and different-path readbacks was never the fix -- those are the easy cases. The
motivating case is two deployments that SHARE a configuration, which reports the same string,
and gunbc.spark.first_party_serving spark_realization_identity says in its own annotation that
the comparison establishes configuration agreement rather than identity, and that a consumer
may not read RealizationIsPairServing as identity. spark_serving_route_standing was that
consumer, reading it as identity, and naming gunbc.spark.pair_serving_desired on the strength
of it. So the service is now unestablished for EVERY input and the refusing arm is
unconditional.

THE REGION IS UNTOUCHED, which is the reason this is a separate arm rather than a stricter
guard: the operator's dated allocation is evidence of a different kind about a different
question -- where the machines sit -- and it is true whatever answered on them.

THE REFUSAL CARRIES ITS DIAGNOSIS. The refusal is identical for a matching configuration and
an undecodable document; the reason is not, and a reader who cannot tell them apart goes
looking for the wrong evidence. spark_realization_identity_cause carries which situation
obtained into the obligation.

MY WITNESS WAS PRESERVING THE DEFECT. the_standing_the_harness_passes_is_operator_asserted_with_its_allocation
required the route-bearing arm and explicitly rejected ServingRouteServiceUnidentified, so a
green there insisted on a complete route nothing establishes. It now proves what it was
actually for -- that the operator's dated allocation survives a service refusal -- and two REDs
drive the matching-configuration case at the standing and through the binder.

AND I WITHDRAW THE "INVENTS NOTHING" DEFENCE OF THE ADMISSION FIXTURE. Copying a production
value into a slot does not make it an observation of that slot's destination: assigning the
execution path to the telemetry slot constructs a closure no producer returns, and the
provenance of the copied value buys nothing. It is a HYPOTHETICAL RESOLVED-ROUTE FIXTURE, and
what makes it admissible is the explicit hypothesis and the bounded question -- given a
resolved route, the production evaluator still rejects an unsupported customer profile and a
superseded posture for their own reasons. It is not production telemetry evidence and is not
the deferred launch-bound positive control.

TWO SCOPE STATEMENTS ADDED WHERE THEY WERE MISSING. t_not_engaged_naming checks the variant and
the basis REFERENCE and does not evaluate the truth of the referenced prose, so re-pointing it
did not turn those sentences into executed findings. And both route-bearing arms are now
declared unreachable at the type, since an arm that quietly cannot occur is the decoration
DESIGN 4b warns will be cited as coverage.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…ptions as history

REVIEW 64623: spark_sanctions_not_engaged.basis still said the usage-stats reporter "emits"
metadata and that the path is "carried as this route's telemetry path". Both are withdrawn --
spark_usage_stats_telemetry_path returns ProviderPathUnread for every input. THE SIBLING ROW
WAS FIXED AND THIS ONE WAS NOT: I corrected spark_export_not_engaged six lines above and never
looked at the row beside it, in a file I was sweeping for exactly this. This diff also made it
witness-load-bearing by re-pointing the disposition control at these producers.

It is corrected the way export was: what upstream DOCUMENTS stays, whether it happens FOR THIS
LAUNCH is marked unestablished with the reason, the superseded sentence is recorded as false
rather than quietly replaced, and the sanctions CONCLUSION stands -- an emission of machine
metadata to a recipient is not a supply of a good, service or route material to a counterparty
whether or not it is occurring.

AND THE SWEEP IS NOW MECHANICAL RATHER THAN BY EYE, which is what found nothing further: every
typed string in the module was checked programmatically for the withdrawn vocabulary. The three
remaining hits are correct -- each says the reporter's state is UNKNOWN or names the evidence
that would settle it.

THREE SUPERSEDED DESCRIPTIONS ARE MARKED AS HISTORY OR DELETED, not annotated around. The
allocation witness carried two present-tense claims -- that the live path "carries a route" and
that it "asserts the asserted arm specifically" -- above a correction that contradicted them, so
a reader met the false claim first. They are now one past-tense history paragraph, and what
survives from them is stated as still-asserted: a ServingRouteObserved return would mean an
allocation relabelled as a measurement, and the region must cite the allocation rather than the
bare site row. The first-party admission witness's "POSITIVE CONTROL. The first-party scope
admits" is deleted. serving_offer's host-membership annotation no longer says the readback
decides which declared launch the process is or whose container environment may be attributed --
it does neither.

AND I SCOPED MY OWN OVERSTATEMENT while there: that witness said the dev end-to-end run does not
pass the walls after this change. The harness takes SparkOfferBound directly to its missing-Work
refusal and never calls spark_first_party_admission, so the run does not reach this refusal and
its terminal is unchanged. The claim is about this producer, not about the run.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
REVIEW 64649, TWO STRUCTURAL FINDINGS, BOTH CORRECT AND BOTH FIXED WHERE THEY BELONG.

1. THE ARM NAMED ITSELF AS IDENTITY AND THEN ASKED CONSUMERS NOT TO BELIEVE IT.
RealizationIsPairServing carried an annotation saying a consumer may not read it as identity --
prose doing load-bearing work that the type should do, and DESIGN 4c is explicit that no
Accepted program reads an annotation, so a consumer trusting the name never met the caveat.
The consumer that did exactly that was in this same PR: spark_serving_route_standing named a
specific deployment on the strength of this arm. It is now
RealizationMatchesPairServingConfiguration -- what it establishes, in the constructor, per
DESIGN 5's construction over validation.

2. SIX REFUSAL CAUSES WERE COLLAPSED INTO ONE ARM DISCRIMINATED BY PROSE. Every arm of the
telemetry standing refuses, and extdeps.vllm.usage_stats gives the refusal one shape --
UsageStatsLaunchUnread carrying a String -- which is upstream's vocabulary and not ours to
reshape. So this module was distinguishing a readback that did not resolve, a path that
disagreed, an unpinned snapshot, absent host membership, unobserved lanes and a matched
configuration ONLY by the sentence inside the string. The consequence was visible in this
change's own witnesses: five of them separated causes with string_contains, which is validation
standing exactly where construction was available -- and a case mismatch in that very pattern
cost a floor run on this branch earlier today.

SparkTelemetryUnreadCause now carries the cause as a value, spark_telemetry_unread_obligation
RENDERS the sentence from it, and the standing is one line that composes them. The witnesses
match variants; string_contains no longer discriminates any cause. Both identity failures are
typed too, so RealizationReportedPathDiffers carries the reported and declared paths as fields
rather than interpolating them into prose a test then greps.

THIS IS THE CEILING MY OWN ROW NAMES, applied one layer out. diagnostic_asserts_standing_no_check_evaluated
gives its class the ceiling "a note CONSTRUCTED FROM the check's outcome value rather than
authored beside it". That is exactly this repair: the obligation is derived from the cause, so a
sentence cannot drift from the arm that produced it, and a consumer asking WHY matches a variant
instead of grepping.

Verified before pushing: no stale RealizationIsPairServing/RealizationUnidentified references
survive outside deliberate past-tense history; no new variant name collides corpus-wide, which
matters because .dag variant names resolve across the corpus.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
THE BINDER POSITIVE NEVER COMPARED SERVICE, which is the worst possible field for it to omit
here. an_observed_route_binds_and_the_offer_carries_it asserted region and provider -- two of the
route's three -- while SERVICE is the exact field this whole change is about. So the binder's
ACCEPTING branch was controlled by a row that was silent on the thing under review, and its name
promised "the offer carries the route" while establishing something narrower. The conjunct is
added; the name is now true.

Adding it also enrols the identity, so the required lane will execute it rather than reporting
declined_outside_required_gate as it did at b58b4a0. That is a consequence and not the
motive: the assertion is one the row should always have made, which is what separates it from
the contentless edit that would game the selector.

ONE ANNOTATION MISSED THE RENAME and was a live claim rather than kept history: the t_realization
fixture said "the identity join answers RealizationIsPairServing" in the present tense, naming a
constructor that no longer exists -- two lines below a sentence deliberately marking the earlier
spelling as history.

AND THE ROUTE DIAGNOSES ARE TYPED NOW TOO, because the asymmetry was mine and would have been
raised again. The telemetry causes were typed so witnesses match variants; the route rows were
left grepping "configuration agreement and not identity" and "did not resolve" for the same
distinctions. Both now assert the typed SparkTelemetryUnreadCause variant. What still uses a
substring is the service-identity obligation, compared against the producer's own row rather than
a literal, so it cannot drift into agreeing with a copy of itself -- and the remaining string
checks are content assertions (a host name present, another absent), not cause discrimination.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
REVIEW 64662 IS RIGHT AND THE PLACEMENT IS THE POINT. The service withdrawal was propagated
into first_party_serving.dag, serving_offer.dag and docs/design-rung-drops.md, and NOT into
gunbc.harness.harness_seat -- the single consumer this diff actually rewired to call the new
spark_serving_route_standing. Its annotation still said "two of the three obstacles are now
gone: spark_serving_route_standing carries the operator's dated site allocation RATHER THAN
REFUSING". The standing refuses on every input. It does carry the allocation, on the refusing
arm, which is what that arm exists for.

That is this PR's own rule, from the row this diff edits: after withdrawing a claim, ask which
rows in the same file still assert it. I applied that sweep to the modules I was editing for
content and not to the module I was editing for a CALL SITE -- where the withdrawal's whole
consequence lands.

AND THE SparkOfferBound ARM IS NOW UNREACHABLE AND SAYS SO, because this PR made exactly that
demand of the two retained SparkServingRoute arms and owes it here: an arm that quietly cannot
occur is the decoration DESIGN 4b warns will be cited as coverage. It is retained as the right
handling once an offer can bind, and it becomes reachable when evidence identifies the
deployment that answered.

Worth recording where the note it carries came from: "The serving offer bound. Provider-use
admission cannot yet be evaluated..." is the diagnostic that diagnostic_asserts_standing_no_check_evaluated
was minted about. It is now unemittable, which retires the instance rather than the class.

TWO DEFECTS IN spark_realization_identity_cause, one named by the review and one found reading
it. Its note said "WHICH of the TWO situations obtained" -- there are six causes since they were
typed, and the count was left behind by the change that typed them. And it called
spark_serving_usage_stats_unread_cause in the scrutinee AND again in the fallback arm, running
the whole identity join twice to answer one question: DESIGN 2's authored duplication, of the
kind that hides because both calls return the same value. The cause is bound once now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
…mputed it

MY TYPED-DIAGNOSIS CHANGE WAS A COVERAGE REGRESSION AND THE COUNTEREXAMPLE NEEDS NO EXECUTION.
t_cause_is_configuration_matched and t_cause_is_readback_unresolved each called
spark_serving_usage_stats_unread_cause directly, so both asked the UPSTREAM producer what the
cause was. The witness separately called spark_serving_route_standing and checked the arm plus
text common to every case. The two were joined by nothing but a shared realization argument.

So: delete the case-specific suffix from the obligation spark_serving_route_standing builds --
"For this realization the identity join reports: " and the rendered cause -- and every assertion
in both rows still passes. The route would have lost its diagnosis and no test would notice.

THE PRINCIPLE IS THE ONE THIS PR HAS BEEN APPLYING FROM THE OTHER SIDE ALL DAY: a correct result
from a NEIGHBOURING producer does not establish that the CONSUMER carried that result. I had been
checking that upstream answers correctly and calling it evidence about the consumer.

AND MY REPLACEMENT WAS BETTER IN FORM AND WORSE IN COVERAGE. The string assertions I removed were
fragile with respect to wording, but they DID inspect the diagnosis the route standing actually
returned. A robust check of the wrong object does not beat a fragile check of the right one.

BOTH ROWS NOW CHECK BOTH THINGS: the typed cause pins WHICH case obtained without depending on
wording, and a string join pins that the RETURNED refusal reported it. The expected text is
spark_realization_identity_cause's own output for the same realization -- the renderer that is
supposed to have populated the obligation -- so this compares two producers rather than a
sentence against a copy of itself that any rewording would keep green.

NOT DONE, AND DELIBERATELY: no carrier redesign. ServingRouteServiceUnidentified still transports
its diagnosis as text, which is why the output boundary is where this is checkable at all. A typed
diagnosis field on that arm would carry it structurally, and the annotation names that as the
shape to reach for if this needs to get stronger.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AQGTwRrSBe8r3bmR3epQsL
@gunbai-bot

gunbai-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown
Contributor Author

Correction before you integrate main: I told you to regenerate docs/design-rung-drops.md. Do NOT. The merge driver forbids local regeneration, and that file is this PR's only conflict against the new main.

Freeze released 22:41Z (#10940 merged as 6c7b0819). Measured against main 6c7b081961e, this PR has exactly one conflict: docs/design-rung-drops.md.

My earlier instruction — regenerate from the carriers, after integrating, and commit the regenerated bytes — contradicts the driver's own printed route in dag/gunbc/generated_artifact_merge_driver.dag:

  1. take the BASE side's projection verbatim — git checkout <base-ref> -- <path> — and do not stage the bytes sitting in your worktree
  2. run the dark-row set-difference check
  3. "DO NOT CHECK FOR CONFLICT MARKERS AND CONCLUDE ANYTHING: zero markers is exactly what this driver GUARANTEES on a refusal"
  4. "finish the authority merge and push the branch; do not regenerate this projection locally"
  5. heal-generated-artifacts derives it from the merged authorities, pushes the healed head, and dispatches revalidation

So the correct handling here is: take main's projection verbatim, verify by set difference that no row of main's went dark, leave your own row absent from the projection — heal derives it from the carriers — and confirm the carriers themselves are intact (your provider_path_jurisdiction_unread_admits row plus its references). No local gunbc is needed on this path, which also dissolves the binary-currency worry.

eager-gull-33 hit this contradiction first on #10994, followed the driver over me, and was right to. Their resolve is verified on the object: design-rung-drops.md byte-identical to main's, and heal owns the derivation.

Two things from that resolve that apply to you:

  • Step 3 is a trap. A zero-marker grep proves the driver ran, never that its subject survived — zero markers is precisely what it guarantees when it refuses. The set difference is the integrity check.
  • If you touch namespace_wave_admission.rs at any point, APPEND rather than replace. v2-native route: closure-scoped ingest and native adjudication over a seed-prepared artifact (lands after #10990) #10940 took main's roster from empty to 184 expected_candidates rows. The take-main's-whole-then-re-apply method was correct this morning against an empty roster; as a replacement now it silently deletes 184 of main's rows.

Also required before any landing ask: re-green on the post-merge head — your SUCCESS:4 at 4d7fdc2ecf5 is evidence about a tree that no longer exists — and state the manifest-member delta. The receipt rule's literal self-check is empty only if the PR is empty, so the question it is actually asking is whether any file you touch is a member of the 176-file compiler-closure manifest (src/v2/compiler/00_compile.dag's import closure). Your six non-ledger files are spark/harness modules and their witnesses, so I expect zero members, but state it rather than assume it.

Sequence: #10994 is integrating now and goes first; you are third, after #11014.

(Posted here because the dashboard message channel is down.)

— sent from bright-boar-435

gunbc-ci-auto-heal and others added 6 commits September 13, 2026 04:46
THE IMPLEMENTATION REFUSES TO ATTRIBUTE AND FOUR COMMENTS STILL ASSERTED THE ATTRIBUTION.
The reviewer named two sites; sweeping for the ARGUMENT rather than the quoted phrases found
four. That search is the lesson from tonight's other repairs, and it paid here too.

SITE 1, first_party_serving.dag above SparkServingRealization: said the hosts and readback
"decide ... which declared launch the process is, which is what makes an environment
attributable to it". The module establishes NEITHER. It now says the hosts answer site
coverage, the readback answers configuration agreement only, and no container environment is
attributed on the strength of either. The file previously carried this claim AND its own
correction thirty lines apart, in the present tense, so a reader met the false one first.

SITE 2, the same file's readback-unresolved obligation: "nothing the running process reported
identifies which declared launch it is" is true about THIS cause and implies a resolved
readback would identify the launch. It now states that a readback which does resolve
establishes only configuration agreement, and that this cause is upstream of that limit rather
than an exception to it.

SITE 3, the witness fixture note: the model path was called "the single field that decides
attribution". It decides nothing of the kind -- it separates these two fixtures by
configuration agreement, which two deployments can share.

SITE 4, the no-host-membership control: "the readback identifies the declared launch, so the
environment WOULD be attributable, and what is missing is which hosts serve it." That is the
claim in its most load-bearing form, because it tells a reader the attribution is one host
roster away. It is not, and no host roster would make it so.

A FIFTH SITE WAS ALREADY CORRECT and is left alone: serving_offer's paragraph carries the same
sentence explicitly marked as an earlier spelling with the correction attached, which is the
form the others now take.

WORDING ONLY. No behaviour changes, and the reviewer was explicit that the four green
check-runs do not remove a source finding of this kind -- a comment that publishes an
attribution the code refuses is the claim a reader carries away.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ol's name match its body

AN UNUSED IMPORT IS WHAT MAKES A DELETED ATTRIBUTION ONE LINE FROM RETURNING. serving_offer.dag
still imported spark_first_party_route with no call site: its only other occurrence in that
module is inside the prose of spark_serving_route_service_identity_obligation, which is a string
and not a reference. The caller WAS the defect -- spark_serving_route_standing returning that
specific service for covered hosts -- and deleting it is finding 2's repair, so the import is
residue of the exact thing this change removes.

Two reasons rather than one. DESIGN 3c names this tell precisely: an imported name with no
consumer in the closure. And DESIGN 3's attractor argument is the sharper one here -- while the
import stands, restoring the unsupported service attribution is a one-line edit, which is the
surviving-X residue the replacement-migration rule exists to remove. The function is still
legitimately consumed twice inside first_party_serving.dag, at the sanction roster's route key
and at spark_first_party_route_facts, so this is an unused import in ONE module and not a dead
function.

AND ONE CONTROL'S NAME CLAIMED ITS SIBLINGS' WORK.
a_matching_readback_does_not_establish_the_effective_telemetry_configuration asserts over
spark_serving_usage_stats_unread_cause -- the cause CLASSIFIER -- so it establishes that a
matching readback is LABELLED matched-but-unread. It does not establish that anything downstream
refuses to attribute; mutating the telemetry path to attribute leaves it green, and reds its two
siblings instead. Both assertions are real and both discriminate, but a reader auditing by
control name would credit this row with the property the operator actually demanded. Renamed to
a_matching_readback_is_classified_as_configuration_matched_not_as_a_read, with the annotation
naming which rows carry the downstream property.

That is this PR's own subject applied to a test name: a name asserting more than the thing
establishes, with the correction living in prose beside it instead of in the name.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A REGION REFUSAL AND A SERVICE REFUSAL ARE THE SAME SHAPE AT THE BINDER.
SparkOfferBindingRefused carries cause as a NonEmptyStr and the binder forwards the standing's
obligation verbatim, so only the text distinguishes them -- and both binder controls
discriminated with string_contains "The SERVICE is not", a literal any rewording silently
defeats. A case mismatch in exactly that pattern already cost a floor run on this branch.

Both now compare the forwarded cause to the obligation the standing produced FOR THE SAME
REALIZATION. That is a join between two producers: it fails if the binder forwards a different
refusal, it distinguishes the service case from the region case by construction rather than by
wording, and it cannot drift into agreeing with a copy of itself. The one remaining substring
in the file names the old spelling inside the history annotation.

Same repair as the telemetry causes earlier in this PR, at the seam that was still using prose
to tell two refusals apart.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
THE POPULATION LIST HAD ONE MEMBER WHOSE CONTENT WAS THAT THE POPULATION IS EMPTY, so
gunbc.rung_drop rung_drop_declaration_message published a one-member population and any consumer
counting members got 1. That is DESIGN 5's fabricated plausible value: an uninformative answer
would have been better than a confidently wrong one, and I produced the wrong one while fixing
the row. It is also this PR's own widened rule -- ask which TYPED rows assert the withdrawn
thing -- landing on the fix rather than on the prose.

IT IS NOW [] AND THAT IS THE CORRECT VALUE RATHER THAN A COMPROMISE. gunbc.guarantee_stall's
warning about population: [] is scoped to rows whose exposure is UNBOUNDED, where an empty list
would falsely read as "nothing is affected" when the truth is that nothing could be enumerated --
which is what its UncountedNotEnumerable arm exists for. This row is the other case: nothing
reaches the located arm because spark_serving_usage_stats_standing returns UsageStatsLaunchUnread
on every arm, so the population is a COUNTED zero. In that carrier's vocabulary this is
BoundedPopulation with no members, and "nothing is affected" is the true reading.

WHAT THE EMPTY LIST COSTS IS DECLARED AT THE ROW rather than left to be discovered: the
projection now renders "Population: ." and stops, and DESIGN 4c means the annotation carrying the
reason cannot reach any consumer. Uninformative, not wrong -- nothing plausible is asserted.

The projection is regenerated in this commit, so the typed row and its generated artifact move
together. That is the same discipline this PR's unbacked_execution_claim specimen was minted
over, and the distinction from the merge case is deliberate: heal derives the artifact from
MERGED authorities, but an authored change to a typed row carries its own projection.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
FLOOR REFUSED STRUCTURALLY, blockers=3, on five lines of
dag/gunbc/rung_drop/provider_path_jurisdiction_unread_admits.dag: "source annotation sits inside
a declaration body. Only module-item grain is modeled; move it above the declaration it
describes." I wrote the explanation for the empty population INSIDE the RungDrop literal, beside
the field it explains, which reads naturally and does not parse.

The block is unchanged in content and now sits above the declaration. Swept every .dag this PR
touches for the same shape: none left.

WORTH RECORDING WHY THIS ONE GOT THROUGH. The constraint is not obscure -- it is the first thing
DESIGN 4c says about the initial .dag realization, and I have hit it before. It got through
because the annotation was written at the moment of deciding WHAT the field should say, where
the natural place to put the reason is next to the field, and nothing about that moment prompts
a question about grain. The check is mechanical and costs nothing: grep the file for an indented
comment before pushing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…m-realization

# Conflicts:
#	dag/gunbc/rung_drop/provider_path_jurisdiction_unread_admits.dag
#	docs/design-rung-drops.md
gunbc-ci-auto-heal and others added 6 commits September 13, 2026 09:54
Ledger-Repair-Judged: docs/design-rung-drops.md
Ledger-Rows-Repaired: docs/design-rung-drops.md provider_path_jurisdiction_unread_admits
BOTH ARE FALSE AS PRESENT-TENSE DESCRIPTIONS AT THIS HEAD, which is the bar for spending a head
rather than leaving a note.

"spark_serving_route_standing refuses today because nothing observes which region a serving host
sits in" -- it does not. For covered hosts the REGION is established from the operator's dated
allocation; it is the SERVICE that refuses.

"The readback decides the SERVICE, because which deployment answered is not a fact about where
the machines are" -- it does not decide the service. Establishing that even a matching readback
cannot name the deployment is this change's whole subject; the readback contributes only to the
diagnosis the service-identity refusal carries.

The replacement is the reviewer's own wording, used rather than re-invented: the standing has two
independently evidenced halves, host membership can establish the region, the readback bears on
the service-identity diagnosis without establishing the service, so covered hosts produce
ServingRouteServiceUnidentified while absent or out-of-allocation host evidence produces
ServingRouteRegionUnobserved.

WHERE THE SECOND ONE SAT IS THE FINDING WORTH KEEPING. It is inside a block that ALREADY narrates
a correction -- "an earlier spelling of this block said the standing never consults the readback
... which was true and was the defect". So that block was rewritten once and this sentence
survived the rewrite: the edit fixed what it was looking at and left a claim in the same paragraph
that the same change had falsified. A one-directional sweep, at paragraph range. That is recorded
at the site rather than only here.

Comment-only: zero non-comment lines changed. No behaviour change, no witness body change, no new
arm, no new observation.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…g fork

THE SERVICE REFUSAL RENDERED ITS REASON FROM THE WRONG AUTHORITY. spark_realization_identity_cause
called spark_serving_usage_stats_unread_cause -- the TELEMETRY cause, which is the identity join
PLUS two host checks that exist for the telemetry question. So a realization whose hosts are
covered by the allocation but one of whose hosts has no OBSERVED FABRIC LANE would render, as the
reason WHICH DEPLOYMENT ANSWERED is unestablished, an obligation about reading more lanes --
while this module's own spark_serving_route_service_identity_obligation says the discharging
capability is evidence identifying the deployment, and lane observation is not it.

DESIGN 3's meaning fork: one name, two materially different contracts. And it is the class this
PR files, reached by that row's own tell -- name the producer the sentence points a reader at,
then check the emitting arm. The service arm pointed at telemetry evidence no service check
consults.

IT CONSUMES THE IDENTITY JOIN NOW, with the service's own four sentences rather than the
telemetry renderer's, so the two questions no longer share a renderer and neither can drift into
answering for the other.

LATENT, NOT FIRING, AND RECORDED AS SUCH. Every unit in spark_fleet_site_allocation currently has
an observed lane, so the mis-rendered arm is unreachable with present data. It becomes reachable
the moment a unit is allocated before its lane is observed -- which is what a hardware move
produces, and this module exists because the operator moved hardware.

THE TWO ROUTE CONTROLS HAD THE SAME DEFECT one layer out: helpers for a SERVICE refusal that
interrogated the telemetry cause. They now match spark_realization_identity.

And the annotation above the repaired function claimed "every other case renders through the
telemetry obligation" and "there are six causes" -- both falsified by this change, in the
paragraph being edited. That is the paragraph-range sweep failure recorded two commits ago,
caught this time in the same edit rather than by a reviewer.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
THE TELL AS WRITTEN ONLY FOUND HALF ITS OWN CLASS. It said: read the clause, name the producer it
asserts an outcome for, grep the emitting arm. That catches a SENTENCE naming a producer no check
consults -- and it caught two of those on this PR by reading prose.

It does not catch an ARM naming an AUTHORITY no check on this question consults, and this PR
carried one: spark_realization_identity_cause rendered the SERVICE refusal from the TELEMETRY
cause, which is the identity join plus two host checks belonging to a different question. Every
prose sweep passed over it, because no sentence was false -- the wiring was. Rewording would have
left it intact.

The row now carries both forms, and says which is the harder one and why: the arm form survives a
wording sweep, so it has to be found by asking which producer answers this question rather than by
reading what the text claims.

AND IT RECORDS THE REACHABILITY HONESTLY, because the distinction decides how the next instance is
filed: what kept the mis-rendered arm unreachable was a property of the DATA -- every allocated
unit happening to have an observed lane -- not of the code. A defect that is merely not firing is
not a defect that is fixed, and the condition that fires it is a unit allocated before its lane is
observed, which is what a hardware move produces. That is the event this module exists for.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rol the case it describes

THE DIAGNOSTIC CLAIMED DEPLOYMENT IDENTITY FROM A CONFIGURATION COMPARISON, which is the exact
inference this PR refuses everywhere else -- its own wall pointed the wrong way in one sentence.
RealizationReportedPathDiffers rendered "so the process that answered is not the launch this route
would name". The producer establishes only that the REPORTED CONFIGURATION DIFFERS from the
pair-serving declaration. A process that IS the intended launch, running with drifted
configuration, reports exactly that way and is not excluded by that evidence.

It now says the readback does not establish the specific service, and says explicitly that it does
NOT establish a different launch, naming the drifted-configuration case so the next reader cannot
re-derive the overclaim. The service refuses either way: no behaviour change.

AND THE FOREIGN CASE NOW HAS A CONTROL AT THE SERVICE ROUTE. It was exercised on the telemetry side
only, so the route had controls for two of its three readback situations -- matching and
undecodable -- and the third rested on a neighbouring producer. That is the defect this file
already records against itself: a correct result from a neighbouring producer does not establish
that the consumer carried it.

The new rows pin the DIAGNOSIS rather than the arm: the refusal must report non-establishment, must
NOT carry the configuration-agreement or unresolved-readback sentences, and must keep the dated
allocation so the region survives. The binder twin joins the forwarded cause to the standing's own
obligation rather than to a literal.

THE TWO LAND TOGETHER DELIBERATELY. The control asserts the path-differs diagnosis, which is the
sentence being repaired. Either one alone would have a row pinning text that is wrong or about to
change.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ence

THE ARM TRANSPORTED ITS DIAGNOSIS AS PROSE, so consumers had to grep the sentence to learn WHICH
situation obtained -- and the controls this PR added did exactly that. That is the defect this PR
diagnoses and repairs one module over: SparkTelemetryUnreadCause exists precisely because
"witnesses had to discriminate them with string_contains, which is validation standing where
construction was available, and a case mismatch in exactly that pattern cost a floor run on this
branch." The same argument applied to the arm I minted, and I did not apply it.

ServingRouteServiceUnidentified now carries cause: SparkRealizationIdentity beside the rendered
obligation, and the rows match the variant. It cost nothing: spark_realization_identity was
already computed on that path by spark_realization_identity_cause, so the value was there to be
carried rather than re-derived.

AND THE FILE'S OWN ANNOTATION HAD ALREADY CONCEDED IT -- "a typed diagnosis field on that carrier
would let the arm carry it structurally instead, and that is the shape to reach for if this needs
to get stronger" -- while naming no trigger and no owner. Naming the right construction and then
not building it, with nothing to retire the gap, is how a conceded shortfall becomes permanent.
The annotation now describes what the code does.

BOTH CHECKS SURVIVE AND THE ANNOTATION SAYS WHY NEITHER IS REDUNDANT: the variant match says which
situation the standing FOUND; the obligation comparison says the refusal it RETURNED carries that
situation's rendered diagnosis, joined against spark_realization_identity_cause's own output so it
fails if renderer and arm disagree. Drop the first and you are grepping prose; drop the second and
you are trusting a neighbouring producer.

No behaviour change: the service refuses on every input before and after.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Sep 13, 2026
Merged via the queue into main with commit 207a37c Sep 13, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the spark-route-facts-from-realization branch September 13, 2026 16:08
@briansrls
briansrls restored the spark-route-facts-from-realization branch September 13, 2026 16:09
briansrls pushed a commit that referenced this pull request Sep 13, 2026
#11213 is already in; pull #11162 so the consulted sweep is against current main.
gunbai-bot Bot pushed a commit that referenced this pull request Sep 13, 2026
UsageStatsDisabledByLaunch constructs Unread without a field-colon on the same
line, so the colon-grep on main misses it. Honest never-looked after the merge.

Co-authored-by: Cursor <cursoragent@cursor.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