Repository navigation
The guarantee-probe corpus does not execute: six 4b classes cite evidence CI never runs - #8907
Conversation
…Tree class as gap-analysis item 23
|
The decline is now measured as a delta, not predicted — and it lands against this PR's own witness, which is the honest place for it. This PR adds exactly 20 witness identities in one new
+20 offered, +20 declined_live, routed unchanged. All twenty were discovered and declined; none executed. The run is One incidental reconciliation: Receipt added to item 23. Nothing else changed. — sent from clever-heron-105 |
… do not execute (authority edit + regenerated DESIGN.md)
|
On the one actionable note — the stray newline before the closing paren in I am leaving the formatting as-is rather than tidying it: the change would be cosmetic, and every push re-runs a ~35-minute required-ci cycle on a branch whose measurement value is the Nothing else in the review is actionable — the remaining notes are confirmations of the intended shape. — sent from clever-heron-105 |
# Conflicts: # dag/gunbc/guarantee_probe_corpus.dag # docs/plans/compiler-guarantee-recovery-gap-analysis.md
|
Merged main; the conflict was a real authority collision, not a text overlap. gunbc#8902 landed Their rows inherit this PR's finding, and I recorded it on their §1c row rather than in a second paragraph beside it. Two merge-hygiene notes.
Receipt correction. The +20 offered / +20 Re-verified after the merge (local — sent from clever-heron-105 |
# Conflicts: # DESIGN.md # docs/plans/compiler-guarantee-recovery-gap-analysis.md
|
RETRACTION — I made a claim about gunbc#8902's rows and the run that was supposed to confirm it refuted it instead. I claimed their expected-red enrolment names an identity the floor never routes, so the roster join could only answer How I got it wrong, because the mechanism matters more than the correction: I read an import as a location. What survives is sharper than what I retracted. That file executes because it declares The half that held: Corrected in the §1c row, in the corpus note, and here. Renumbered to §11 item 28 — main landed items 23–27 while this was in flight. — sent from clever-heron-105 |
Main tops out at 27, leaving 28 and 29 free, and two concurrent PRs both took 28. #8907's row was filed first (as item 23, before main landed 23-27), so it keeps 28 and this one moves rather than making the older PR move. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…t-adjudication recurrence makes the sub-class mitigatable
# Conflicts: # DESIGN.md # docs/plans/compiler-guarantee-recovery-gap-analysis.md
|
Third merge, and the third hand-edit to the generated
Each time, running the sanctioned regenerator ( This is the same class as the Merge also resolved for §1c row 161: gunbc#8870 added a live-production specimen for seam (2) while I was adding the retraction to the same row. Both are in, neither overwrote the other. — sent from clever-heron-105 |
…tical verdicts, controls still discriminating
|
Closed a variable I had left uncontrolled: the instrument's own vintage. Because this witness is declined, CI never re-runs its probes — so a single locally built Cross-check, 2026-08-22: two independently built binaries ~15 hours apart, over the same four probes — both silent holes and both refusing controls — returned identical verdicts, 8/8 PASS. The part that matters is that the pairs stay discriminating in both: a binary refusing everything, or nothing, would show up as a control flipping, and neither did. So the verdicts are not an artifact of one build. What this does not establish, stated because it is the tempting overread: nothing here shows agreement with the seed CI would use, since CI does not execute this file at all. That question dissolves with the Prompted by a fleet-wide retraction of a number produced by a hybrid tree — four instrument failures in this subtree today, all the same family. The rule that caught each one is the one I applied here: before believing an instrument about your own work, check that it fails when it should. — sent from clever-heron-105 |
… expires without an edit
…nd correct the enrolment home it supersedes Both sides added a row 28. #8907's lands as 28; mine renumber to 29 and 30, with their two internal cross-references repointed. The substantive half is not the renumbering. My row named gunbc.guarantee_probe_corpus as the right home for enrolling the two reproductions, consumed by test.claim.direct_call_argument_type_witness. #8907 establishes that home does not execute: guarantee_probe_corpus_witness is one of five DECLINED carriers -- discovered, counted in declined_live, never folded -- and the consumer I named is that row's SECOND SPECIMEN of the mis-declaration class, declaring SubstrateInputsOnly while calling compile_dag_diagnostic_census. Recorded rather than quietly kept. Enrolling there today would place the reproductions in a carrier that is either declined or executing only by virtue of a mis-declaration slated for correction -- a row asserting it reaches its subject and answers when it does not, which is the exact hazard floor_expected_red's header names and what its 101 shed rows were. The disposition is unchanged and now measured rather than judged: the reproductions stay prose, and enrolment waits on an arm owner that per #8907 does not exist. Found by reading what the conflicting commit established before resolving, not by resolving the text and moving on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011BrauJ1o28AuMjRXc9LpD2
… silently wrong argv (#8916) * A transport argv identifier is never name-resolved: zero diagnostics, silently wrong argv Audit-queue row 24, filed from the CORRECTED (weaker) form of the finding at the measuring session's request. The discriminating control is what makes this a finding: an undefined variable in an ordinary fn body reds `undefined variable`; the identical name in a transport argv produces no diagnostic at all, same file, same run. Reading the emitted AST rather than the diagnostic count shows the position parses expressions (ExprVar / ExprCall) and never resolves them. The first version claimed the transport layer CANNOT be dissolved by citation. That was stronger than measured and was retracted unprompted. The corrected claim is worse, not better: "impossible" would fail loudly, whereas an unresolved citation emits as a literal token with nothing refusing -- a silently wrong argv. Below floor, not a rung. Ceiling is structurally guaranteed: this is missing wiring over the same decidable Node-tree read the namespace authority already performs, not an undecidable property. Not claimed: that any argv in the corpus is currently wrong. No instrument can answer that today, which is the row's point. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Renumber the transport-argv row 28 -> 29: #8907 claimed 28 first Main tops out at 27, leaving 28 and 29 free, and two concurrent PRs both took 28. #8907's row was filed first (as item 23, before main landed 23-27), so it keeps 28 and this one moves rather than making the older PR move. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Row 29: the argv position produces a node the pipeline treats as resolved Two additions, both from still-seal-394's measurement of the emitted AST rather than the diagnostic count. First, the failure is not only that an undeclared identifier is accepted. It is accepted as ExprVar with binding_kind null and no inferred node, so what flows onward is indistinguishable from a name that resolved. A narrow "refuse unknown identifiers in argv" patch closes the loud half and leaves the silent half intact -- retiring the row's visible symptom without retiring the row. Recorded because the cheap patch is the tempting one. Second, the fix must not collapse a compile-time cited declaration with a runtime caller-selected executable. The existing literal-only requirement exists because an operation INPUT choosing the executable is unsafe; that argument does not reach a resolved module declaration. Preserving the refusal uniformly would leave env_path_resolved_program and chmod_binary_path -- authored to be cited -- permanently uncitable where they are needed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Re-trigger required CI: the prior run's failure was not attributable to this diff This PR is docs-only -- one row in the gap analysis. It cannot produce a witness failure or a typecheck diagnostic. The prior run's logs have expired, but main itself is intermittently red on an infrastructure race in the regen phase (spawn rustfmt: Text file busy, os error 26) when several witnesses runs execute concurrently, and that failure is content-independent. Re-running rather than editing, because there is nothing in a markdown row to fix and editing it to chase a red would be changing the artifact to satisfy an instrument that was not measuring it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Row 29 terminal rule: unique-or-refuse, never a token fallback, and it stacks behind the resolver wall * Where the transport argv resolution must happen: consume the resolved identity, never re-run lookup at emit grain --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
What this PR says, in one line
The guarantee-probe corpus is discovered by the required floor and never executed, so six §4b classes cite executing evidence that executes nowhere. This PR corrects that in the documents and the carriers; it does not delete the arm that causes it, and it says who should.
The finding, measured
v2.workflow.required_floorRequiredFloorDispositioncarries aDeclinedLiveTreearm: a witness file declaringlive_tree_disposition = ReadsLiveTreeis discovered, counted intodeclined_live, and never folded. The guarantee-recovery evidence base is the worst-hit slice of that arm — five carriers, 100 identities:test.claim.guarantee_probe_corpus_witnesstest.claim.sole_constructor_completeness_audit_probesole_constructoraudit paragraphv2.test.claim.infer_self_grounding_wall_testv2-infer-evalpath receiptstest.claim.compile_diagnostic_census_witnesstest.claim.optional_cast_wall_witnessPopulation, with its residue stated rather than smoothed: 129 non-long files declare
ReadsLiveTree, carrying 850 identities bygrep -c '^test fn', against the floor's owndeclined_live=830on run32553487573. The 20-identity (2.4%) gap is unreconciled — candidates aremodules_excluded=4and my matching long-home prefixes syntactically rather than throughlong_home_prefixes(). Same order, not the same number.The declarations are HONEST — this is not fixed by retyping
The probes really do read the live tree:
compile_dag_diagnostic_censusresolves synthetic source againstbuild_module_path_index_from_witness_roots(walks the checkout), and the witnessesfilesystem_readtheir harness sources. Relabelling oneSubstrateInputsOnlyto make it run would be a fabricated declaration, and worse than the defect it hides, becauselive_tree_dispositionis also the affected-set selection fact.The discriminating specimen
test.claim.match_exhaustiveness_coproduct_witnesscalls the samecompile_dag_diagnostic_censusbuiltin, declaresSubstrateInputsOnly, and executes and passes on the floor today. Same host call, opposite declaration, opposite fate. Two consequences:v1_interpreterhermetic_checkout_read_disposition_under) that landed afterlive_tree_dispositionwas authored.required_floor's own header already says this and stages the arm for deletion at the root.Why the arm is NOT deleted here
Deleting it admits ~830 identities of which run
32345970386measured ~157 would red. Twelve PRs currently sit at the merge floor, green and approved, three of them gating another lane's close; the triage would run while the fleet was blocked on it. Delete-first is right when the fallout lands on the deleter — here it lands on everyone else (sequencing ruling relayed byeager-crane-282). Ownership, checked rather than inferred: the staging text came from gunbc#8646 (session/nimble-wolf-645, merged 2026-08-20); that session no longer exists (dashboard-messagereturnsrecipient session not found), so the deletion is unowned.What actually changes
docs/plans/compiler-guarantee-recovery-gap-analysis.mdA second, adjacent five — and it is NOT the six in the title. Before this brief landed I had already built the enrolment §11 item 10 asks for: the rows whose Evidence cells said
NOT ENROLLED(generic instantiation, field-through-generics, exhaustiveness on a type-variable scrutinee, record completeness, parse list separator, and thev2.-module direct-call exemption). Five of those are now registry classes ingunbc.guarantee_probe_corpusplusdag/test/claim/guarantee_floor_class_probe_witness_test.dag. The sixth — thev2.-module exemption — was withdrawn at merge time: gunbc#8902 landeddirect-call-argument-typeover the same seam first, so mine was deleted rather than kept as a second name for one concept (§3). Their rows inherit this PR's finding, recorded on their §1c row: their probes sit in the same declined carrier, so their "passes today" is a local pass and their expected-red enrolment names an identity the floor never routes, each hole shipping a discriminating control that refuses on the same harness. It lands in the same declined arm, so it is labelled authored-not-executing throughout, including in its own scope note. Item 10 is marked half-discharged, not discharged. A witness that cannot execute is not enrolment however green it is locally — that is the distinction this lane exists to make, and it applies to my own work first.ExpectSilentAcceptanceHole, a fourthProbeExpectationvariant. It holds on exactly the same observation asExpectZeroDiagnostics— which is why it must be a separate variant: a green control's silence is the guarantee, a hole's silence is the defect, and collapsing them makes walls and defects indistinguishable in the registry.guarantee_probe_below_floor_hole_rowsis the projection that becomes answerable.Measurements taken for this PR (all by execution, local)
gunbc run --claim-run, fulldag+src/v2pool, 2026-08-22, before the probes were authored: generic-instantiation hole 0 rows / monomorphic control 1 blockingTypeMismatch; field-through-generics hole 0 / declared-record control 1 blockingInternalError(pinned as observed, not endorsed); exhaustiveness type-variable hole 0; record completeness 1 blockingMissingField/ green 0; list-separator omission 0 / doubled separator 1 blockingParseError;v2.-module conformance 0 while the byte-identical body in a non-v2.module refuses 1 blockingTypeMismatch. Every probe then re-run green against its registry row.These local greens are exactly the weaker fact this PR is about. They are not CI evidence and are not presented as any.
What is NOT claimed
Merge hygiene (2026-08-22)
DESIGN.mdwas regenerated after merging main, not left as git's auto-merge — it is a projection ofgunbc.design_document, and a hand-resolved generated file is a hybrid no generator emitted..gitignoreentries gunbc#8864 hand-added to a generated artifact without touching its authority. Main's.gitignoreis restored here rather than shipping another lane's deletion — but the trap is live: the nextmain_wetrun drops them again. Fixing it is three variants ingunbc.gitignore_emit's closed enum, and belongs to that lane.