Repository navigation
Carry the gate observation onto the row that owns the class, and retire its second name - #12016
Conversation
…re its second name
gunbc#11915 filed a_declaration_the_interpreter_runs_emits_rust_that_does_not_compile
as a new recurring-failure-mode class. It is not one: accepted_source_emits_uncompilable_target
already owns that invalid state -- "a .dag construction the front end accepts with
zero blocking diagnostics, whose emission is a target program the target compiler
refuses". Two names for one concept is the DESIGN section 3 fork, and the author of the
second name is the one person who could say cheaply that it was unintended.
The numeric INSTANCE that prompted the filing is already recorded by its owner, on
bounded_natural_arithmetic_evaluated_as_unbounded_int (OCCURRENCE, 2026-09-21).
What was NOT recorded anywhere, and is carried here rather than lost with the closed
PR, is the CLASS-level observation about why nothing catches this:
- every floor route runs declarations under the seed INTERPRETER, where the
construction evaluates and nothing is emitted;
- the only executing consumers of the emission are the instrument labels, and
gunbc.instrument_targets binds TWELVE of which NO CI STEP INVOKES ANY;
- so the source-to-target path has no executing consumer on the merge path at all.
Measured 2026-09-20/21: three independent defects reached main inside one day.
And the half that makes the absence worse than a missing check: the standing was
INFLATED while it was broken. compiler_frontend_program_status reports
SelfHostCorpusEmitsCleanly as Clear from a receipt nothing refreshes on a cadence, so
the carrier reported a capability that had been down for a day -- section 4b(1) rung
inflation, and an inflated class never ranks for climbing.
The next-rung trigger is stated at CAPABILITY grain so it cannot be discharged by
paperwork: an executing consumer of the EMISSION of the retained closure whose refusal
reaches a process exit a human or a lane reads. Not satisfied by a receipt row, by
refreshing the standing by hand, or by any check that runs declarations under the
interpreter.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 299f11ad6e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "WHY NO GATE SEES THIS CLASS, which is the class rather than any instance (carried from gunbc#11915, closed as a second name for this row; the numeric instance it was filed over is recorded on gunbc.recurring_failure_mode bounded_natural_arithmetic_evaluated_as_unbounded_int). EVERY floor route runs declarations under the SEED INTERPRETER, where the construction evaluates and nothing is ever emitted. The only executing consumers of the emission are the instrument labels, and `gunbc.instrument_targets` binds TWELVE of them of which NO CI STEP INVOKES ANY. So the source-to-target path has no executing consumer on the merge path at all, and a declaration whose EMISSION is ill-typed lands clean through a green required gate. Measured 2026-09-20/21: three independent defects reached main inside one day by this route.", | ||
|
|
||
| "AND THE STANDING WAS INFLATED WHILE IT WAS BROKEN, which is why the absence above is worse than a missing check. `gunbc.compiler_frontend_program_status` reports SelfHostCorpusEmitsCleanly as Clear, derived from the latest validated whole-corpus compile-phase receipt; nothing refreshes that receipt on a cadence, so the carrier reported a capability that had been down for a day. DESIGN section 4b(1) rung inflation stated exactly -- the reported rung exceeded the rung established by executed evidence -- and an inflated class never ranks for climbing. NEXT-RUNG TRIGGER at capability grain: an executing consumer of the EMISSION of the retained closure whose refusal reaches a process exit a human or a lane reads. It is NOT satisfied by adding a receipt row, by refreshing the standing by hand, or by any check that runs declarations under the interpreter.", |
There was a problem hiding this comment.
Append the observations before closing
receipts
The receipts list is already closed on line 268, so these two string expressions are parsed as anonymous _ initializers of RecurringFailureMode, not as receipt entries. Consequently consumers and generated projections that read .receipts will not carry the newly added gate observation or its next-rung trigger (and record validation may reject the unexpected initializers); move both strings above the closing ],.
Useful? React with 👍 / 👎.
| "WHAT DISTINGUISHES THIS OCCURRENCE, and why it is a component of this class rather than a class of its own: the target did not refuse something the emitter failed to notice. std.operator_realization decided OperatorRealizationRefused at every site -- a correct, typed, located refusal -- and v1.compiler.emit_rust emit_typed_bin_op rendered it through emit_rust_compile_error_expr as compile_error! text; what failed is only the JOIN from that decision to the compile step's blocking count. This is component (ix) of the retirement roster above. It has a cheaper ceiling than the class: every refusal the emitter renders is a fact the compile step already holds, and counting it as blocking needs no new analysis. NEXT-RUNG TRIGGER for this component: the compile step's blocking count includes every realization refusal the emitter rendered into the artifact, SUFFICIENT FOR a closure whose emission carries any compile_error! to be refused by `gunbc compile` itself, with the site and message, before any toolchain runs. The upstream defect these 18 sites exposed -- infix arithmetic on bounded naturals being evaluated as unbounded Int by the interpreter -- is filed separately as gunbc.recurring_failure_mode bounded_natural_arithmetic_evaluated_as_unbounded_int.", | ||
| ], | ||
|
|
||
| "WHY NO GATE SEES THIS CLASS, which is the class rather than any instance (carried from gunbc#11915, closed as a second name for this row; the numeric instance it was filed over is recorded on gunbc.recurring_failure_mode bounded_natural_arithmetic_evaluated_as_unbounded_int). EVERY floor route runs declarations under the SEED INTERPRETER, where the construction evaluates and nothing is ever emitted. The only executing consumers of the emission are the instrument labels, and `gunbc.instrument_targets` binds TWELVE of them of which NO CI STEP INVOKES ANY. So the source-to-target path has no executing consumer on the merge path at all, and a declaration whose EMISSION is ill-typed lands clean through a green required gate. Measured 2026-09-20/21: three independent defects reached main inside one day by this route.", |
There was a problem hiding this comment.
Derive the instrument population instead of recording twelve
At this revision, gunbc.instrument_targets.instrument_targets() contains 15 labels, not twelve (the list includes all entries from heads_reading_differential_label() through bare_reference_channel_outcome_label()). Recording twelve makes the class-level measurement false on arrival and will mislead later coverage work; derive or enumerate the actual population rather than embedding this stale count.
Useful? React with 👍 / 👎.
…ined TWO DEFECTS IN THE FIRST VERSION OF THIS APPEND, both mine. 1. THE STRINGS WERE OUTSIDE `receipts`. They landed after the list's closing bracket and before `evidence`, so the record initializer named a field that does not exist. The PR read MERGEABLE, and mergeable is a statement about a git merge, not about whether a file compiles -- exactly the specification-without-execution DESIGN section 5 names. The declaration now parses and resolves: `gunbc run --entry <this file> --function accepted_source_emits_uncompilable_target` evaluates the record in full and refuses only because the entry contract wants ProcessExit, which is the harness, not the file. 2. THE PROPOSED TRIGGER WAS WEAKER THAN THE CLASS. It offered "an executing consumer of the EMISSION whose refusal reaches a process exit". But this row's invalid state is accepted source emitting a target program the target compiler REFUSES -- and emission can succeed while doing exactly that, which is what the 2026-09-21 occurrence did: emission completed, cargo refused. A trigger naming emission would have been discharged while the class stayed open. It is withdrawn; the row's existing class-grain trigger (ACCEPTED-SOURCE-TO-TARGET AGREEMENT) stands, and this receipt now refines why that trigger is outstanding instead of competing with it. THREE STATES THE REPLACEMENT KEEPS APART, because collapsing them is how a refresh cadence gets mistaken for a wall: OBSERVATION (an on-demand run exposes a failure), REGRESSION PROTECTION (a required acceptance consumer that emits a closure AND COMPILES it, with the target compiler's refusal reaching the lane), and FRONTIER TRUTH (a standing derived from evidence applicable to the claimed subject). The repair for the third is APPLICABILITY, not recency: a recent receipt can describe the wrong subject, and an older one stays applicable while its relevant inputs are demonstrably unchanged. The historical observation is now bounded to the revision it was taken at -- main 87c6658, 2026-09-20/21 -- and says so, rather than asserting a standing fact about every floor route or any future lane roster. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
HOLD at 8d6a830 for one remaining factual correction. The prior record-initializer and weak-trigger objections ARE fixed in the source: the observations are now inside receipts, and the receipt explicitly retains accepted-source-to-target agreement and emit+compile regression protection. I checked the remaining count objection against the HISTORICAL REVISION THE RECEIPT NAMES, not current main. At 87c6658, dag/gunbc/instrument_targets.dag::instrument_targets() contains 13 entries, not TWELVE: heads_reading_differential, behavioral_receipt_plan, behavioral_receipt_census, behavioral_receipt_selftest, compile_clean_diagnostic_census, self_host, v2_native_cli, evaluation_store_address_exact_head, primitive_egress_census, primitive_egress_census_v2, primitive_egress_census_dag, primitive_egress_census_seed, floor_memory_qualification (all *_label()). instrument_bindings() has the corresponding 13 entries. The previous review's 15 refers to its different revision and should not be substituted for this historical count. Correct TWELVE to thirteen, or omit the numeric assertion while retaining the precise dated observation. Please also update the PR description, which still repeats twelve and the superseded emission-only trigger. No new mechanism or broader investigation is requested. All four GitHub check results are successful at this head; they do not validate this historical assertion. No merge attempted for this PR. This is a COMMENT because the connected account is the author, not an independent reviewer.
Review fetched instrument_targets() at the revision the receipt names and found THIRTEEN labels with thirteen corresponding bindings; the receipt said twelve. Re-derived independently before changing it: the enumeration ends primitive_egress_census_seed_label(), floor_memory_qualification_label(). The figure is kept rather than dropped because it is already re-derivable -- the receipt names the revision AND the symbol, so it is a dated reading of a fixed revision rather than a transcribed number with no producer. It was simply wrong. Nothing else moves: the observations stay inside `receipts`, and no trigger is proposed -- the row's existing ACCEPTED-SOURCE-TO-TARGET AGREEMENT stands. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Corrected, and re-derived independently before changing it rather than taking the count on the review's word.
I kept the figure rather than dropping it: the receipt already names both the revision and the symbol, so it is a dated reading of a fixed revision that any reader can re-derive. It was wrong, not ungrounded. The PR description is rewritten too. The count is fixed there, and the superseded emission-only trigger is now stated as withdrawn — emission can succeed while producing output the target compiler refuses, so that trigger was weaker than the class it would have joined. This PR adds no trigger; the row's existing Evidence for the edit itself: the declaration was run through the front end ( |
Closes the loop on #11915, which I filed and then found to be a second name for an existing class.
Why #11915 is withdrawn
accepted_source_emits_uncompilable_targetalready owns that invalid state — "a .dag construction the front end accepts with zero blocking diagnostics, whose emission is a target program the target compiler refuses." Two names for one concept is the §3 fork, and the author of the second name is the one person who could say cheaply that it was unintended.The numeric instance that prompted the filing is already recorded by its owner on
bounded_natural_arithmetic_evaluated_as_unbounded_int(OCCURRENCE, 2026-09-21).What was not recorded anywhere, and is carried here rather than lost
I checked before closing: the class-level observation about why nothing catches this appears on no row on main.
87c6658641egunbc.instrument_targetsbound thirteen, of which no CI step invoked any.The scope of that reading is the revision it names — a dated search for instrument invocations, not a standing claim about every floor route or any future lane roster.
And the half that makes the absence worse than a missing check — the standing was inflated while it was broken.
compiler_frontend_program_statusreportedSelfHostCorpusEmitsCleanlyasClearacross the 2026-09-20/21 window while the capability was down. That is §4b(1) rung inflation, and an inflated class never ranks for climbing. The repair is not a refresh cadence: a recent receipt can describe the wrong subject, and an older one stays applicable while its relevant inputs are demonstrably unchanged. Applicability, not recency.No new trigger
An earlier revision of this PR proposed a trigger at emission grain — an executing consumer of the emission whose refusal reaches a process exit. That is withdrawn. Emission can succeed while producing output the target compiler refuses, so an emission-only consumer is weaker than the class it would have joined. The row's existing
ACCEPTED-SOURCE-TO-TARGET AGREEMENTtrigger stands unchanged, and this PR adds no trigger.Corrections carried in this revision
receiptslist (an earlier push placed them after its closing bracket, naming a field that does not exist).87c6658641eis thirteen, not twelve. Re-derive withinstrument_targets()at that revision; the enumeration endsprimitive_egress_census_seed_label(), floor_memory_qualification_label().🤖 Generated with Claude Code