Repository navigation
File the class #12020 repaired: a termination contract met by a trimming transport - #12024
Merged
Merged
Conversation
…rimmed pipe (the reader moved under it, not the world) test.claim.mtcollins1_census_image_local_wet.the_rendered_program_runs_and_its_output_parses_by_real_execution is RED on main and is what the merge queue refuses on for #11829. Re-derived the slice (DESIGN 6b) from the producer forward; the rendering did not move and the world did not move -- the READER moved, and this claim is the only consumer feeding it a medium whose contract deletes the byte the reader's contract reads. THE CHAIN. host_capture_program emits its envelope END marker terminated with a newline (unchanged). extdeps.shell.exec Exec.RunArgv is realized by retained_utf8_lossy_trimmed, i.e. trim_end (unchanged, and correct for its own consumers). host_capture_bind gained host_capture_terminated_lines in #11987 -- only newline-terminated lines are evidence -- for a grounded reason: the capture is bound while the host is still writing it over serial, and boot 23 had a half-written workload-write-rc= fragment. The trim removes the newline the program really wrote, the binder correctly declines to read an unterminated final line, and a program that finished binds HostCaptureOpen. Both contracts sound, composing to a false reading. WHY EXACTLY ONE OF SEVEN. Production (gunbc.machine_intake_mtcollins1_boot_run mtcollins1_boot_await_capture_terminal) and the six sibling claims all hand the binder Filesystem.Read bytes, which keep the newline. This claim passed console_device: "/dev/stdout" and bound obs.stdout. THE REPAIR is neither an expectation flip nor a 4b(3) rung drop. host_capture_program already takes console_device to name that medium, so the claim renders to a real file, runs the program, and reads the capture back with Filesystem.Read -- the production route exactly, and the route the claim's own annotation says it asserts: render -> run -> parse, same medium at each link as the census. EVIDENCE, claim_batch --wet, all seven identities of the module, in-session against e62f8a2 (= origin/main at the time): - CONTROL, main's claim file: 7 scheduled / 7 terminals, 6 PASS and FAIL the_rendered_program_runs_and_its_output_parses_by_real_execution -- the exact identity the floor names, and all seven are declared ExpectedToHold in v2.workflow.local_repo_wet_terminal. The floor's refusal reproduces locally; it is not a CI-environment artifact. - HEAD: 7 scheduled / 7 terminals, 7 PASS. Schedule and terminals agree. - MUTATION CONTROL, so the repair is a wall and not a transcript: delete the END-marker echo from host_capture_program (one line) and the repaired claim goes FAIL. The arm the trim was falsely tripping is the same arm a genuinely truncated capture must trip, so it had to be shown unblunted. Also files the class it is an instance of, per DESIGN 4b: gunbc.recurring_failure_mode.a_termination_contract_is_met_by_a_trimming_transport -- a reader whose contract is line termination fed through a transport whose contract is trimming. Rung found at silent wrongness at the composition, ceiling structurally impossible, trigger at capability grain: a captured-text carrier that declares what its transport normalized, sufficient for a termination-contracted reader to refuse a normalized capture at the type boundary. Membership is the directory, so no roster edit and no projection regen. Row resolves with 0 blocking errors. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
# Conflicts: # dag/test/claim/machine_intake/mtcollins1_census_image_local_wet_test.dag
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 22, 2026
…d the END marker; the claim binds the console device now), so the schedule withdrawal and its rung drop are retracted Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Sep 22, 2026
…2027's std_measure mirror)
This was referenced Sep 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope changed after #12020 landed. This PR is now one ledger row and no behaviour change.
I was dispatched to repair
test.claim.mtcollins1_census_image_local_wet.the_rendered_program_runs_and_its_output_parses_by_real_execution, red on main and refusing the merge queue for #11829. While I was verifying, #12020 landed the same diagnosis and a better repair. The blocker is fixed on main; nothing here fixes it. My claim-side repair is dropped — this branch now differs frommainby a single new file.What both sessions found
Neither the world nor the rendering moved — the reader did.
#11987gavehost_capture_bindthe rule "only newline-terminated lines are evidence", grounded: the capture is bound while the host is still writing it over serial, and boot 23 had a half-writtenworkload-write-rc=fragment. Independently,extdeps.shell.execExec.RunArgvcaptures throughretained_utf8_lossy_trimmed()→.trim_end(), correct for its own consumers. The trim deletes the newline the program really wrote after its envelope END marker; the binder correctly declines to read an unterminated final line; a program that finished writing bindsHostCaptureOpen. Exactly one of the module's seven identities refused because production and the six siblings all feed the binderFilesystem.Readbytes, which keep the newline.I confirmed this in-session before #12020 appeared: control on main's tree, 7 scheduled / 7 terminals, 6 PASS and FAIL on exactly the identity the floor names.
Why my repair is dropped
I had the claim render to a real file via
console_deviceand read it back withFilesystem.Read— the production medium. That works and keeps every red, and it is the worse repair: it leaveshost_capture_bindstill inferring a fact about the writer from the bytes. #12020 declares it instead —HostCaptureText = HostCaptureLiveStream | HostCaptureCompletedTranscripton the binder's input, one scan,host_capture_bindunchanged for existing consumers. That is the earliest boundary that could not be justified (DESIGN §6b), and a live stream cut mid-line is byte-indistinguishable from a trimmed transcript, so the reader was never entitled to guess. Two structures answering one question is the §3 fork; theirs is landed and correct, so mine goes.What this PR keeps
#12020 filed no
recurring_failure_moderow, and DESIGN §4b makes that an obligation for every newly discovered error class. This addsgunbc.recurring_failure_mode.a_termination_contract_is_met_by_a_trimming_transport, written around the repair that actually landed:Stringso mislabelling still has a constructorMembership is the directory, so no roster edit and no projection regen. Row resolves with 0 blocking errors.
Two receipts worth keeping: the class was caught only because one claim over the route happened to be a wall, in a lane that was itself fail-open at the time — and two sessions reached the same chain independently, so the cost was in noticing it existed, not in explaining it.
🤖 Generated with Claude Code