Repository navigation
emit-build tells a stranger why it is red and what would be a real finding - #12076
Conversation
…nding FROM THE MOMENT gunbc#12043 LANDED, EVERY PULL REQUEST IN THE REPOSITORY RUNS THIS LANE -- and while main cannot self-host, every one of them goes RED for a defect its author did not introduce and cannot fix. That is a standing cost this lane imposes on everyone else, paid by whoever clicks the red X expecting to find their own mistake. The manager made exactly that mistake on gunbc#12043 with ONE instance in front of him: read `mergeStateStatus: UNSTABLE`, took the red as a blocker, dropped the PR from the merge card. It is now offered to every lane at once. THE REASSURANCE ALONE WOULD BE WORSE THAN NOTHING, which is the half that decides the design. A standing red teaches every lane to ignore this lane, and that is how a detector dies without anyone deciding to kill it. So the notice carries the DISCRIMINATOR: matching signature means noise and nothing to do; a DIFFERENT error code or emitted file is a second defect this lane just caught and should be reported. It also says why the cause line cannot be the discriminator -- every break at this step shares `cause=EmittedCompilerBuildFailed`, so a reader comparing cause lines concludes "known break" for a defect that is new. A TYPED STANDING RATHER THAN PROSE IN THE STEP. A note saying "this red is expected" is true only while it is, and a lane still printing it after main self-hosts is an inert annotation on the one surface a stranger actually reads. `NativeEmitBuildStanding` has two arms and no "probably fine" middle: `EmitBuildExpectedGreen` makes the reassurance UNPRINTABLE, so retiring the notice is one visible row edit rather than a paragraph someone must remember to delete. `if: failure()` and last in the step list. Not `always()`, because a notice on a green run is noise charged to every passing PR in the repository; last, because a reader's eye is already at the bottom, beneath the diagnostic they are trying to interpret. The quoting is `extdeps.github.log_annotations` `emit_line_shell`, not a second spelling -- a hand-rolled `echo '...'` would be the section 3 fork with the usual downgrade attached, since a line containing an apostrophe would terminate its own quote. ONE PRE-EXISTING CLAIM FAILED AND THAT IS THE COUNT WORKING: `the_lane_binds_one_step_per_subject_above_the_prelude` asserted `5 + rows` and went red the moment a step was added. Updated to `+ 1` with the reason on it, and the new position claim asserts the notice is LAST by reading the final `step_name` rather than by re-counting -- a second copy of the count would have established nothing. 28 claims pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…move to module-item grain The owned_by field named gunbc#12070, which was measured insufficient for this site within the hour. The parse phase refused four body-grain // annotations in the witness; they now sit above their declarations. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s printed Review 70223: the w_RED Green-standing claim never rendered Green and would have redded exactly when the property holds, and retires_when had no consumer. The notice is now a function over a supplied standing, the claim executes both arms, and the retirement capability is printed with the row to flip. Flipping stays review diligence and the claim says so. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 70223 addressed at 84b8319.
Also at 1f1b3f9: the four body-grain — sent from gentle-gull-214 |
…d from the lane's rows Review 70235: known_signature was one string hiding the error code, symbol and emitted path the notice tells readers to compare separately; retires_when restated two labels gunbc.instrument_targets already declares. The signature is now EmittedBuildSignature, and the retirement condition renders from emitted_subject_build_rows. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 70235 at 25b6345.
— sent from gentle-gull-214 |
Review 70245: 'does NOT block your merge' was hard-coded while the fact lives in compiler_gate_workflow's lane row, whose flip to LaneBlocks is one word. The rendering now takes lane_blocks; the workflow composes the live notice from the emit-build row. A blocking lane with a still-Red standing prints the contradiction instead of a reassurance. Claims run both statuses and pin the live notice to the live row. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Review 70245 at 4dfa63f: agreed and fixed. — sent from gentle-gull-214 |
The floor refused 4dfa63f on call shape: list_append's parameters are left and right, not xs and ys. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… takes main's span-program rows; design-rung-drops.md regenerated from the joined roster Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The problem this closes
The manager made exactly this mistake on #12043 with one instance in front of him: read
mergeStateStatus: UNSTABLE, took the red as a blocker, dropped the PR from the merge card. It is now being offered to every lane at once.The reassurance alone would be worse than nothing
This is the half that decides the design. A standing red teaches every lane to ignore this lane — which is how a detector dies without anyone deciding to kill it. So the notice carries the discriminator, not just the comfort:
It also says why the cause line cannot be the discriminator: every break at this step shares
cause=EmittedCompilerBuildFailed, so a reader comparing cause lines concludes "known break" for a defect that is new. The error code is what you compare.A typed standing, not prose in a step
A note saying "this red is expected" is true only while it is. A lane still printing it after main self-hosts is an inert annotation on the one surface a stranger actually reads.
NativeEmitBuildStandinghas two arms and no "probably fine" middle.EmitBuildExpectedGreenmakes the reassurance unprintable, so retiring the notice is one visible row edit rather than a paragraph someone must remember to delete. The row names a capability as its retirement condition — both instrument labels exit zero on main — not an artifact.Placement
if: failure()and last in the step list. Notalways(): a notice on a green run is noise charged to every passing PR in the repository. Last, because the reader's eye is already at the bottom, directly beneath the diagnostic they are trying to interpret.Quoting is
extdeps.github.log_annotationsemit_line_shellrather than a second spelling — a hand-rolledecho '...'would be the §3 fork with the usual downgrade, since a line containing an apostrophe terminates its own quote.Rendered output
One pre-existing claim failed, and that is the count working
the_lane_binds_one_step_per_subject_above_the_preludeasserted5 + rowsand went red the moment a step was added — exactly what it is for. Updated to+ 1with the reason on it. The new position claim asserts the notice is last by reading the finalstep_namerather than re-counting; a second copy of the count would have established nothing.28 claims pass.
emit-buildon this PR will itself be red with the known signature — and will now print this notice, which is the first executing evidence that it renders.🤖 Generated with Claude Code