Skip to content

Rehome the three g1-cited-symbol discriminating controls out of the bankrupted doc carrier, then delete the orphan binds atomically - #9183

Closed
briansrls wants to merge 9 commits into
mainfrom
session/clever-bear-323-probe-binds
Closed

briansrls wants to merge 9 commits into
mainfrom
session/clever-bear-323-probe-binds

Conversation

@briansrls

@briansrls briansrls commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

⚠ MERGE ORDER: #9181 MUST MERGE BEFORE #9183.

Both PRs target main, so GitHub shows no dependency between them — but #9181's head is an ancestor of #9183's head, verified with git merge-base --is-ancestor, so #9183 already contains everything #9181 does.

That second order is not bookkeeping. It is the exact failure this lane exists to repair: #9044 squashed to an empty commit because its code had already landed via #9025, its document was silently dropped, and the dangling citation that produced is what #9177 is fixing today. An empty-commit squash is silent by construction and nothing in the tooling enforces the order.

Follows #9181, which moved the three cited-symbol controls out of this carrier. This one takes the rest of the population.

The population, by identity

Not a count — the list, each with the path it names, every one checked against the tree. 19 home: ProbeDoc binds existed on main; #9181 deleted three; these are the remaining 16, and all 16 name a file that does not exist:

slug (→ docs/probes/<slug>.md) disposition
curated_cargo_frontier_probe_report delete
namespace_census_2026-07-31 delete
emitter_residual_site_map_2026-07-21 delete
gate1_repr_mismatch_e0308_diagnosis_2026-07-23 delete
gate1_repr_mismatch_e0308_diagnosis_2026-07-24 delete
e0599_diagnosis_2026-07-26 delete
root_d_generic_arity_2026-08-16 delete
e0599_phase_a_body_evidence_2026-07-28 delete
e0599_phase_b0_emitter_decision_2026-07-29 delete
rc-scalar-wrap-fresh-build-correction-2026-07-25 delete
root_b_primitive_repr_fork_2026-08-16 delete
e0277_trait_bound_census_2026-07-26 delete
e0369_census_2026-07-26 delete
root4_measure_missing_generics_closure_2026-07-26 delete
srv2-05-native-agreement-divergence-diagnosis delete
claude_paired_entitlement_probe/README delete

The disposition is uniform because the population turned out to be uniform, not because a uniform answer was easier. The test applied per row was: is this a transcription pointer into a bankrupted document, or does it carry something a live consumer depends on? Every one of the sixteen is a measurement transcription — probe reports, diagnosis write-ups, E0xxx censuses — and every dissolution condition already ends in some form of "then this bind deletes with the md". The terminal event happened on 2026-08-24; only the deletion was missing. The one row that looked like it might carry a live obligation, claude_paired_entitlement_probe/README, names a dissolution trigger whose own subjects are gone: run-paired-probe.mjs does not exist and neither does gunbc.claude_agent_sdk_press.

No cited .dag work is deleted. Every module the sixteen rows pointed at still exists and still compiles; the works were checked module by module, and most have live importers (v1.compiler.coercion 6, v1.compiler.infer 5, v1.compiler.emit_rust 4, …).

The live red this closes, measured in both directions

doc_graph_registered_plan_roots_all_admitted was RED on main and invisible, because doc_reachability_witness_test declares ReadsLiveTree and the floor declines it before the fold. build_doc_graph_report admits an extra root only when it is present in the doc universe and counts what it admitted; the witness pins admitted == passed, so sixteen roots naming deleted files made it fail.

  • BEFORE (PR-1 head, 16 orphan binds present): FAIL doc_graph_registered_plan_roots_all_admitted
  • AFTER (this branch): see the verification block below.

The home axis was drafted for deletion and deliberately kept

An earlier revision of this branch deleted the DocHome coproduct along with the sixteen rows, arguing that a variant nothing can inhabit is dead scaffolding. That was reverted (c4a253b0f6), because the population is not closed the way an empty variant suggests.

The bankruptcy principle is not "everything under docs/probes disappears". It is unconsumed transcription disappears; consumed evidence stays attached to its consumer — and the directory a file sits in is not the authority on which of the two it is. The exact consumer relation is. At least one probe document is consumed evidence and is being re-bound by this lane's next PR, so deleting the axis here and restoring it one change later would be work authored to be thrown away, and would have put a permanence claim in the carrier note that was false before the week ended.

The axis was never load-bearing for what this PR claims: doc_graph_registered_plan_roots_all_admitted goes red→green from the sixteen bind deletions, not from the axis. The diff is now one file — sixteen binds, two orphaned exemptions, and the notes that record both.

What this does NOT fix, and who owns it

doc_graph_has_no_orphan_docs is red before this change and red after it, for a cause this PR does not touch: two docs/probes/*.md files are bound by nothing. Both are named here so nobody re-derives them, and neither one's disposition is "delete":

Both post-date the bankruptcy, so they are another lane's documents; binding them would re-create the probe home this PR deletes. Not widened into this PR, and stated here rather than left for a reader to discover, because an unstated known-remaining red turns a correct PR into an overclaim.

Three modules lose their last naming reference (they already had zero import edges; the bind was the only thing in the corpus that named them): tools.self_host_curated_probe_cargo, gunbc.namespace_census_receipt, v2.test.manual.e0599_phase_a_body_evidence_probe. I did not delete them, and one of them should not be deleted: DESIGN's restoration trigger for the measurement bankruptcy asks for exactly "a .dag entry point that emits, assembles and compiles one entry", and tools.self_host_curated_probe_cargo is the modeled counterpart of the deleted curated_cargo_probe_one.sh. Their disposition is a separate ruling.

No document is restored.

Verified

Both arms run directly — a single-entry claim_batch against dag/test/claim/doc_reachability_witness_test.dag, which reaches the witness regardless of its ReadsLiveTree decline. That is deliberate: this witness has been declined for so long that nobody has watched it fail, and a green from an instrument never seen red on this subject proves nothing.

witness main c271b75829 this branch c4a253b0f6
doc_graph_registered_plan_roots_all_admitted FAIL PASS
cited_symbol_production_population_loses_nothing PASS PASS
hand_authored_doc_binds_all_carry_a_retirement PASS PASS
doc_graph_works_refs_carry_symbols PASS PASS
doc_graph_bind_identities_unique PASS PASS
doc_graph_duplicate_bind_key_red_control PASS PASS
doc_graph_slug_wall_reds_on_registered_slug PASS PASS
doc_graph_bind_two_branch_union_overlap_refuses_red_control PASS PASS
doc_graph_has_no_orphan_docs FAIL FAIL (not this PR's cause — see below)
doc_graph_has_no_dangling_links FAIL FAIL (pre-existing — see below)

Every row above was re-measured on c4a253b0f6 after the axis revert. The earlier green was taken on the superseded tree and is not carried forward — a green from a tree that no longer exists is the same defect as a stale citation, one layer in.

Compile, measured on the chained head 80ee2728c7 — 0 blocking on every carrier this lane touches:

entry blocking advisory
dag/gunbc/witness_deferral_freeze.dag 0 22
dag/gunbc/ci_layer_roots.dag 0 120
dag/gunbc/doc_graph_roots.dag 0 133
src/v2/lens/cited_symbol_resolution.dag 0 172
dag/test/claim/doc_reachability_witness_test.dag 0 133

An earlier revision of this body reported 0 blocking for doc_graph_roots without having measured it. That invocation passed --output-dir /tmp/o, which failed with failed to create output dir: Not a directory (os error 20), so the compile never ran and my grep for a blocking line matched nothing — and I read the silence as a clean result. An absent measurement and a clean measurement rendered identically, which is the execution-provenance failure this repository has a name for. The tell was available and I missed it: an entry that emits 172 advisory lines emitted nothing at all. The table above is the re-measurement, and the variation is the evidence: five entries, five advisory counts (22, 120, 133, 172, 133). A column of identical zeros would be the same non-result in a different costume. If you re-run this, check that the advisory numbers differ before you read the blocking column — the recognition rule needs no knowledge of the failure mode, only the observation that different closures produced byte-identical output. The witness results were never affected — those are explicit PASS/FAIL lines from claim_batch, not inferences from silence.

The red→green pair is the point. doc_graph_registered_plan_roots_all_admitted fails on unmodified main and passes here, so this is an existing failure being closed rather than a green asserted over an instrument that never discriminated. And the population it covers is closed: of 172 hand-authored binds on main, 19 name a file that does not exist and all 19 are ProbeDoc — zero of the 153 PlanDoc binds are broken. #9181 removed three; this removes the other sixteen. That is the whole bind-side population, not the visible part of it.

One consequence was found by execution, not by reading. Deleting the claude_paired_entitlement_probe/README bind orphaned two of the four OutsideIndexWork exemption rows — both named that probe's witnesses and that bind was their only carrier — and cited_symbol_production_population_loses_nothing went red by exactly two. The outside-index roster is a literal list beside the bind population rather than a projection of it, so the two can drift; the partition identity is what refuses to let them drift silently. Repaired in 7d6affff40 by deleting the exemptions along with the population they exempted, and the carrier note records that it was four until today and why it is two.

A third pre-existing red, named but not fixed: doc_graph_has_no_dangling_links fails on main and on this branch — 18 dangling .md links, of which ~14 point into docs/probes/ files the bankruptcy deleted (self-host-cargo-refusal-root-partition.md alone carries 8). That is the prose half of the same residue, which DESIGN's floor-cut paragraph already anticipates as "prose notes across ~20 modules citing them". It is a separate repair in other lanes' documents and is not widened into this PR.

A note on this PR's two approvals

There are two, and only the second covers this diff — joined by sha rather than by trusting the approval count:

  • review 55725 @ 7d6affff40 — approves a superseded head, and its text explicitly praises dropping the now-single-variant DocHome axis. That deletion was reverted in c4a253b0f6, so this approval describes a diff that no longer exists.
  • review 55726 @ c4a253b0f6 — approves the current head, after the revert.

Recorded because an approval is normally read as coverage of the current diff, and the first one is not. The dashboard's approval_count is not head-joined, so the join was done by hand against reviews[].sha.

Brian Searls and others added 3 commits August 25, 2026 07:12
…arrier

The three g1-cited-symbol discriminating controls were modelled as DOCUMENTS.
They lived in gunbc.doc_graph_roots as HandAuthoredDocBind rows homed at
docs/probes/g1-cited-symbol-control-*.md with PlanHasNoRetirement, and document
production carried a slug-matched predicate to subtract them again. The
2026-08-24 measurement bankruptcy (d3bebd0) deleted docs/probes wholesale,
so from that day three rows declared a home that does not exist, kept alive by
the exemption written to work around them.

They are machine discriminators for v2.lens.cited_symbol_resolution, so that is
where they now live, as a typed control carrier with one variant per refusal arm
(operator ruling 2026-08-25). The new carrier lands before the old rows leave,
in one change: no dual-authority interval, and the evidence executes through the
new home before the old one disappears.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… the only inhabitant of

Every remaining `home: ProbeDoc` bind in gunbc.doc_graph_roots named a file
under docs/probes that the 2026-08-24 measurement bankruptcy (d3bebd0)
deleted. Not most of them -- all sixteen, with no survivor.

A bind whose document does not exist is not a root. build_doc_graph_report
admits an extra root only if it is present in the doc universe and counts what
it admitted; doc_graph_registered_plan_roots_all_admitted pins admitted ==
passed. So these rows made that witness RED, and it was invisible only because
doc_reachability_witness_test declares ReadsLiveTree and the floor declines it
before the fold -- a live red held out of view by the decline mechanism.

The rows are deleted, and the DocHome axis is deleted with them: with ProbeDoc
uninhabitable, the variant is dead scaffolding that would let the next author
bind a document into a bankrupted directory. Keeping it as the sole surviving
variant was not the alternative, since a single-variant coproduct is a type
alias whose variant name is never exported.

No document is restored. No cited .dag work is deleted.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…leted probe bind

The outside-index roster is a literal list beside the bind population rather
than a projection of it, so deleting the claude paired-entitlement probe bind
left two exemption rows naming references no bind carries -- and the partition
identity that proves no authored work falls out of every bucket went red by
exactly two. The red is the mechanism working; the repair is to delete the
exemptions with the population they exempted.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…nsumed evidence

The earlier commits on this branch deleted the DocHome coproduct along with the
sixteen orphan ProbeDoc binds, on the argument that a variant nothing can
inhabit is dead scaffolding. That argument was sound about the population as it
stood and wrong about the population as it is: the bankruptcy principle is that
UNCONSUMED TRANSCRIPTION disappears while CONSUMED EVIDENCE stays attached to
its consumer, and the directory a document sits in is not the authority on which
of the two it is -- the exact consumer relation is.

docs/probes/leading_minus_continuation_silently_truncates_2026-08-23.md is cited
by extdeps.cpu_attachment.lotes_azifa072 as its parser-defect receipt (measured:
exactly one consumer, tree-wide). It is being re-bound in a follow-up. Deleting
the axis here and restoring it one change later is work authored to be thrown
away, and it would have put a permanence claim in the carrier note that was
false before the week ended.

The sixteen bind deletions and the two orphaned exemptions are unchanged; the
red this PR closes is closed by those, not by the axis.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Brian Searls and others added 2 commits August 25, 2026 09:58
…grows by

review 55729 caught the half of the rename that stops at the file boundary: the
FrozenPathDeferral roster for the long cited-symbol witness file still named
cited_symbol_planted_doc_graph_controls_all_refuse and
cited_symbol_enrolled_population_refusal_proves_gate_not_vacuous, neither of
which exists after this PR -- a StaleFrozenPathDeferral, which is the DESIGN
section 3 stale-citation class living inside the very roster whose identity join
exists to catch it. The prose in ci_layer_roots naming the old function in its
--functions CSV is fixed with it.

DECLARED RATHER THAN SLIPPED IN: this grows the frozen roster from 16 rows to 18.
The module's own note says the population is frozen as-is and that a new witness
under an offline home should not be authored there at all. These two are not new
coverage arriving in the long lane -- they are the identity join and the arm
agreement that together replace the discriminating power of the row being
renamed, in the file that already owns it. Splitting them across homes would put
the cheap structural half behind the lens's whole decl_facts import closure. If
the operator would rather see the identity join in the fast lane, it moves
without touching the arm check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
Brian Searls and others added 3 commits August 25, 2026 10:12
review 55732: the WitnessExclusionRow reason in gunbc.ci_layer_roots prints a
claim_batch recipe whose --functions CSV still named both renamed witnesses, so
an operator copy-pasting it hit unknown-function refusals on two rows. The
freeze roster was updated in lockstep and this recipe was not -- one carrier of
the same fact repaired, another left stale, which is the DESIGN section 3 class
this PR is otherwise about.

The recipe now lists all eighteen enrolled witnesses, matching the freeze roster
exactly, and the prose count moves from sixteen to eighteen with it. My earlier
commit touched only the timing parenthetical in this same string and missed the
CSV a few hundred characters later in the same line -- a reminder that a long
single-line prose row hides its own contents from the person editing it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
review 55731: this PR takes the outside-index roster from four rows to two, and
three sentences in gunbc.doc_graph_roots plus one in the lens still asserted
four -- the lens whose subject is stale citations landing with a stale numeric
citation in its own prose.

The doc_graph_roots sentences are corrected to two. The lens note is reworded to
name the ROSTER as the authority on the count rather than transcribing a number
at all, because the number is exactly the thing that just rotted. The one
surviving 'four' is the deliberate historical clause recording what the
population was until today.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Closing: CONSOLIDATED INTO #9186 at operator request, not abandoned. Every change in this PR is in #9186 — its branch already contained this one's commits, and current main is now merged into it, so #9186 is MERGEABLE and carries the whole remaining chain as a single PR.

What moved across, so nothing is lost by closing this:

  • the sixteen orphan ProbeDoc bind deletions and the two OutsideIndexWork exemptions that fell out with them
  • the red->green pair on doc_graph_registered_plan_roots_all_admitted, re-taken on current main (f84c91b) and identical to the original arm
  • the outside-index prose reconciliation (four -> two, and the lens note reworded to name the roster as the authority rather than transcribe a count)

The conflict notice on this branch is the squash-rewrite mechanics I flagged before #9181 landed: #9181 squash-merged under a new sha, so this branch's copy of its commits reads as divergent. It is resolved in #9186 by merging main and resolving hunk-by-hunk — deliberately not checkout --ours, which would have discarded main's other edits to the same two files.

The merge-order hazard is also gone with the consolidation: one PR remains, so there is no order to get wrong.

— sent from clever-bear-323

@gunbai-bot gunbai-bot Bot closed this Aug 25, 2026
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