Skip to content

Declare the rung: a blocking emit-stage diagnostic can stand on main with no required phase that fails - #9153

Merged
briansrls merged 4 commits into
mainfrom
design/emit-stage-diagnostic-rung-drop
Aug 25, 2026
Merged

briansrls merged 4 commits into
mainfrom
design/emit-stage-diagnostic-rung-drop

Conversation

@briansrls

@briansrls briansrls commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

A §4b(3) rung declaration in Building & checks, beside the regen-cut and cited-symbol rows and modelled on them. It declares a class, not a defect; the gcp repair it names is a separate PR.

Summary

A BLOCKING diagnostic sits on main (extdeps.cloud.gcp.gcp ReadADC declares three structured output keys over a byte-carrying transport file) and no required phase stops on it. Those two facts cannot both be innocent, so the question was which: does the floor not perform the compile that surfaces it, or does it compile and absorb the result?

It does not compile. Ruling out each of the three required phases:

  1. Parse sweep — parses. The refusal is built at EMIT (v1.05_emit file_binding_refusal, returning FileEmissionRefusal), and file_emission_target_is_modeled answers Rust => true with Python/Go/Dag false — so the escape surface is Rust-target emission specifically, and a parse cannot reach it.
  2. --required-regen — emits, but only the src/v1-rooted closure. Nothing under src/v1 imports extdeps.cloud.gcp, and nothing anywhere imports gunbc.auth.credentials.
  3. Witness floor — the entire compile-clean family is inert on main run 32778026868 (08488aee2): compile_clean_shard_a_exemplar_compile_green, cross_shard_seam_preservation_holds_on_live_tree and the three perturb_* fixtures are NO-ROUTE; dag_compile_clean_scope_witness and dag_compile_clean_shard_totality_witness declare ReadsLiveTree and are declined; compile_clean_shard_entry_paths_fast_hand_rust_witness declares nothing, so the fail-closed default declines it too. The one passer, dag_compile_clean_cli_floor_agreement, is SubstrateInputsOnly and checks that two realizations agree about a policy row.

And the coverage would not have helped even had it routed: shard_a_exemplar_entry_path is dag/std/logic.dag. At full strength the family compiles ONE module. That pair — inert AND, if routed, single-module — is the finding, and it is stronger than either half.

What is NOT claimed as new

DESIGN.md already declares, measured 2026-08-20, that the compile-clean capability is gone (entry_file_touched_via_import_closure and compile_clean_scope_plan_for_ci unreferenced, no CLI flag, only Bool-returning pub surfaces). That half is prior record. What is new is that the witness family named for compile-clean, which a reader would count as compensating, is also inert.

Three escape modes, all found by accident

Mode 1 — no required phase emits over this closure. The sole-blocking measurement at 63501ff7e0 was taken from --entry dag/gunbc/systemctl_show_read.dag, whose closure reaches the gcp call site and reaches emit. That measurement is witty-lark-735's, not mine.

A second compile from a different entry is not a failed reproduction of it. Compiling gunbc.auth.credentials — the module that contains the call site — as its own entry refuses earlier, at typecheck, so it never reaches the stage that produces the channel refusal. Different entries, different closures, different phases; nothing is contradicted. What the pair establishes is sharper than either alone: the refusal is reachable from an entry whose closure includes the call site and unreachable from the file that holds it. An emit-stage diagnostic is a property of a closure, not a file — which is why the restoration trigger names a phase over closures and not a linter, and why a per-file check would not have caught this either.

Mode 2 — no closure reaches this module at all. gunbc.auth.credentials has zero import edges anywhere in dag/ or src/v2/. It is an orphan carrying four hard typecheck errors (two undefined variable shell, two unresolved AuthPrintAccessToken) that stand on main for a reason having nothing to do with which phases emit.

Mode 3 — cited as an authority, typechecked by nothing. The orphan is not unreferenced. gunbc.tailscale_acl_phase2_credential carries two DeclarationRef rows naming gunbc.auth.credentials as its credential authority (gcp_secret_credential, gcp_oauth_access_token_via_adc_refresh). So the module is claimed as an authority by a carrier that depends on it being correct, while no import edge reaches it and nothing typechecks it. An unreferenced orphan misleads nobody; a cited one asserts that a fact has a home, and the home does not compile.

This is where two declared drops compose, and neither row alone predicts it. The 2026-08-23 cited-symbol row declares that nothing checks whether an authored citation resolves. This row declares that nothing emits over the closure a citation names. These two DeclarationRef rows were authored into exactly that window, so a citation to a module that typechecks nowhere is invisible to both mechanisms at once — the first stopped asking does this symbol exist, the second stopped asking does this module compile. That is not a complaint about either operator decision; it is what makes the population claim concrete rather than rhetorical.

None of the three modes was found by searching. All three were tripped over while measuring something else, which is the strongest available argument that the population is not two or three.

One measurement that corrects the obvious assumption, recorded in the row: compiling extdeps/cloud/gcp/gcp.dag as an entry returns 0 blocking, 79 advisory. The declaration alone does not refuse.

Population

UNCOUNTED AND UNBOUNDED, in those words. §4b(3) wants a bounded population; this row does not have one and does not pretend to. Two specimens are named, escaping by three distinct modes; how many others stand on main is unmeasured by a deliberate scope decision, so they must not be read as the denominator.

This row claims no operator approval for that, which is where it differs from the cited-symbol row it otherwise follows. That row's unbounded exposure is an operator-approved exception to §4b(3); this row's is simply an unmet requirement, declared as unmet. A waived clause and an unmet one are different things, and reading the second as the first would manufacture an approval nobody gave — the authority-substitution failure. The row now says so in its own text, because two review summaries have made exactly that collapse, and a reading the text permits twice is a defect in the text rather than in the reader.

Rungs and trigger

Previous rung mechanically preventable (the compile-clean gate ran ahead of everything until the 2026-08-15 floor cut). Temporary rung outside the ladder, not mitigatable — the regen row's shape: an operation that lost its only route has nothing to mitigate. Unlike the cited-symbol drop, review diligence is not even a weak substitute, because a reviewer does not run an emitter. Restoration trigger is the compile re-add on the floor cut's queue, explicitly NOT the gcp repair: fixing the specimen closes the specimen, only the phase closes the class.

Diff note — three changes in this PR are not mine

DESIGN.md is generated from gunbc.design_document; I edited the authority and regenerated through the modeled actuator (gunbc.ci_spec ci_heal_author_commit_regen_command → dag/tools/generated_artifact_gate.dag main_wet), rather than hand-editing the artifact. That run revealed main's DESIGN.md is stale against its own authority: a 2026-08-24 measurement-bankruptcy row and two edited paragraphs exist in design_document.dag on main and were never regenerated into the committed artifact. The heal picks them up, so they appear in this diff without being my content. Regeneration is not partitionable — extracting "only my paragraphs" would mean hand-editing a generated artifact — so they ride along by ruling rather than by oversight. This is a live consequence of the generated-artifact drift gate sitting on the floor cut's unguarded list, and it is the second such drift found on main today (swift-crane-281 repaired two others in #9127).

Test plan

  • gunbc compile --source-root dag --source-root src/v2 --entry dag/gunbc/design_document.dag → 0 blocking, 181 advisory. Run again after the second commit: same result.
  • Heal actuator gunbc run --entry dag/tools/generated_artifact_gate.dag --function main_wet → exit 0, touching only DESIGN.md and the authority.
  • No Rust tests changed.

🤖 Generated with Claude Code

…with no required phase that fails

The compile-clean witness family is inert -- five NO-ROUTE, three declined,
and the single passer checks a policy row while invoking no compile. Even at
full strength its coverage was one module (dag/std/logic.dag), so it was never
going to catch the class. DESIGN.md already declared the missing compile
CAPABILITY on 2026-08-20; what is new is that the family which appears to
compensate for it does not.

Declares previous rung (mechanically preventable, until the 2026-08-15 floor
cut), temporary rung (outside the ladder -- an operation with no route has
nothing to mitigate), population (UNCOUNTED AND UNBOUNDED, an explicit
non-instance of 4b(3)), and a restoration trigger that is the compile re-add
rather than the gcp repair.

DESIGN.md is regenerated through the modeled actuator, which also picks up
three changes authored by another lane that were never regenerated into the
artifact -- main's DESIGN.md was stale against its own authority.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot marked this pull request as ready for review August 25, 2026 00:16
Corrects two things in the row. The second compile was a different ENTRY, not
a failed reproduction: systemctl_show_read's closure reaches the call site and
reaches emit; credentials.dag as its own entry stops at typecheck. Nothing is
contradicted, and the pair proves something better -- an emit-stage diagnostic
is a property of a CLOSURE, not of a file, so a per-file check would not have
caught it either.

And the four typecheck errors are a distinct escape mode rather than an
incidental specimen: gunbc.auth.credentials has zero import edges, so no
closure reaches it and nothing typechecks it. It is cited all the same --
tailscale_acl_phase2_credential carries two DeclarationRef rows naming it as
the credential authority -- and the cited-symbol census stopped being required
two days ago, so nothing checks that either.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot gunbai-bot Bot changed the title compute fabric design Declare the rung: a blocking emit-stage diagnostic can stand on main with no required phase that fails Aug 25, 2026
@gunbai-bot

gunbai-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Thanks — title fixed. It was compute fabric design (the session name) because the dashboard auto-opened this PR before my gh pr create ran, so the create silently no-opped and both the title and body stood as defaults for a while. Same root cause as the placeholder body you'd have seen if you reviewed early.

One correction to the review's description, offered because the direction is load-bearing rather than to dispute the verdict: dag/gunbc/design_document.dag is not a parallel authority mirroring DESIGN.md — it is the sole authority, and DESIGN.md is generated from it (expected_design_md → serialize_markdown_source; README.md and CLAUDE.md are symlinks to the generated file). The diff runs authority → artifact, not artifact → mirror. That matters here because a reviewer who reads it the other way would accept a hand-edit of DESIGN.md as the normal way to change the document, which is precisely the manual-application-committed-as-source failure §6 names; the only sanctioned route is regenerating through dag/tools/generated_artifact_gate.dag main_wet, which is what this PR did.

Two things in the diff are worth flagging to any later reader, both already in the body:

  1. Three of the changes are not my content. Main's DESIGN.md was stale against its own authority — a 2026-08-24 measurement-bankruptcy row and two edited paragraphs were in design_document.dag and had never been regenerated into the artifact. The heal picks them up, and regeneration is not partitionable, so they ride in by ruling rather than oversight.
  2. The "stale positional link dropped" is part of that same inherited regeneration, not an edit I authored.

— sent from silent-bear-842

Brian Searls and others added 2 commits August 25, 2026 00:30
…ops compose

The orphan is not unreferenced. tailscale_acl_phase2_credential names
gunbc.auth.credentials as its credential authority through two DeclarationRef
rows, so the module is claimed as an authority by a carrier that depends on it
being correct, while no import edge reaches it and nothing typechecks it. An
unreferenced orphan misleads nobody; a cited one asserts a fact has a home and
the home does not compile.

Those citations were authored into the window the 2026-08-23 cited-symbol drop
opened. That row stopped asking whether a citation resolves; this row declares
that nothing emits over the closure a citation names. Neither predicts a
citation to a module that typechecks nowhere -- it is invisible to both.

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

Adding Modes 2 and 3 falsified the sentence "Exactly one specimen is named
below" in the one paragraph whose job is denominator honesty. Corrected to two
specimens escaping by three modes.

And a second review has now summarised this row's unbounded population as an
operator-approved exception to 4b(3). It is not -- that is the cited-symbol
row. This row claims no approval and never did. A reading the text permits
twice is a defect in the text, so the row now refuses it: a waived clause and
an unmet one are different, and reading the second as the first manufactures
an approval nobody gave.

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

gunbai-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Thanks — the review surfaced one genuine defect of mine, which is now fixed, and one attribution I've corrected in the row itself rather than only here.

The defect (mine). The population paragraph still read "Exactly one specimen is named below." That was true when written and became false when I added Modes 2 and 3 — so the row contradicted itself in the one paragraph whose entire job is denominator honesty. Corrected to two specimens escaping by three distinct modes.

The attribution. This review describes the unbounded population as "declared as an operator-approved exception rather than laundered as a bound." The second half is right; the first is not. This row claims no operator approval and never did — that is the cited-symbol row above it, whose drop was an operator directive. Mine is an unmet §4b(3) requirement, declared as unmet. A waived clause and an unmet one are different, and reading the second as the first manufactures an approval nobody gave. Two review summaries have now made that collapse, so I've taken it as a defect in my text rather than in the reader: the row now states the distinction explicitly.

One recurring description I'll flag again without asking for a re-review. dag/gunbc/design_document.dag is not a "mirror" of DESIGN.md, and this is not "both authorities updated." It is the sole authority; DESIGN.md is generated from it (expected_design_md → serialize_markdown_source), and README.md/CLAUDE.md are symlinks to the generated file. The direction matters: read as a mirror, a hand-edit of DESIGN.md looks like a legitimate way to change the document, and that is the manual-application-committed-as-source failure. The only sanctioned route is regeneration through dag/tools/generated_artifact_gate.dag main_wet, which is what every commit here did.

Verification after this change: authority compiles 0 blocking, 181 advisory; heal actuator exit 0, touching only DESIGN.md and the authority. Head 961671b51, confirmed by read-back.

— sent from silent-bear-842

@briansrls
briansrls merged commit 9668ffc into main Aug 25, 2026
1 check passed
@briansrls
briansrls deleted the design/emit-stage-diagnostic-rung-drop branch August 25, 2026 01:49
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
…ves only in the authority

Same procedure as the previous merge: the driver refused DESIGN.md, the
authority merged cleanly, and the artifact is regenerated by main_wet to a
verified fixed point rather than hand-merged.

The predicted silent deletion has now happened on main. #9085 corrected
"three phases" to "four phases" in DESIGN.md alone, never in its generator.
#9153 regenerated the artifact from that generator, and main's DESIGN.md
consequently says "three phases" again -- the correction survived twelve
hours and was undone by the next author who regenerated, with nothing
reporting it.

This branch hoisted that correction into dag/gunbc/design_document.dag in
the previous merge, so it survives regeneration here and lands with the
fact where a regeneration cannot drop it. The claim is measured, not
inherited: CI prints `required-ci: phases_run=4`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant