Repository navigation
spark d0 front door: supply the failed-connect reading instead of assuming a SIGTERM vacated the port - #12632
Merged
Merged
Conversation
…ent SIGTERM The kill fixture returned right after os.kill, so the vacated-port claim read a listener that could still answer (srv4-15, merge-group run 36575660396, WetTerminalVerdictNotExpected). The fixture now waits (bounded) for the pid to be gone and the port to refuse a connect, exiting nonzero otherwise, so d0fd_vacated_port yields no port instead of an assumed one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… by construction for the one procfs read Replaces the observing kill fixture (previous commit) per the manager's SUPPLY ruling: the real curl-7 route already executes, keyed to its own subject, in the 127.0.0.2 claim, which now also asserts observe_front_door reads FrontDoorNoStatus there. The vacated-port claim becomes a supplied reading of front_door_as_incumbent; the fence/suspend transaction claim takes a supplied IncumbentDidNotAnswer. The procfs no-listener read keeps its real execution over a port closed in-process (close() is synchronous), not one a SIGTERM was sent to. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Red:
test.claim.spark.pair_serving_d0_front_door_real_execution.a_vacated_port_reads_as_no_response_by_real_executionfailed withWetTerminalVerdictNotExpected(expected passed, observed failed) on srv4-15, in merge-group run 36575660396 for #12420. It dequeues unrelated PRs whose floor lands on that runner.Chain (DESIGN §6b).
d0fd_vacated_portstarted a forked listener, sent it SIGTERM, and returned the port as soon asos.killreturned. Signal delivery is asynchronous, so the premise "this port is vacant" was assumed, never observed. The earliest unjustified boundary is that fixture, not the harness classification orfront_door_as_incumbent. Two claims consumed the premise: the vacated-port claim anda_failed_connect_fences_…_by_real_execution. A third consumed it in the procfs tail ofa_listener_behind_a_failed_connect_…. The failed-run log carries only the verdict, so the race is the one premise that was never observed, not a proven cause.Repair: SUPPLY, following #12478 and #12614 (DESIGN §3, a witness discriminates at one interface).
a_vacated_port_reads_as_no_response_by_real_executionis replaced bya_front_door_with_no_status_reads_as_an_incumbent_that_did_not_answer. It suppliesFrontDoorNoStatustofront_door_as_incumbentunder a quiet head and under an unread head. It is pure, so its rows leavefloor_route_gapandlocal_repo_wet_terminal.a_failed_connect_fences_under_an_active_head_unit_and_suspends_only_under_a_quiet_one_by_real_executionnow takes a suppliedIncumbentDidNotAnswer. Its subject is the transaction's fence/suspend decision and the real log; both still execute for real.a_listener_behind_a_failed_connect_is_read_on_the_host_and_fences_by_real_executionalready asserted curl 7 at 127.0.0.2:P. It now also asserts thatobserve_front_doorreadsFrontDoorNoStatusthere. That makes it the inhabitance claim for the supplied reading.close()s the socket in its own process before printing the port. A close is synchronous; a signal is not.Evidence (local
claim_batch):--wet: all four affected claims PASS.a_failed_connect_fences…a_listener_behind_a_failed_connect…an_error_status_is_an_answer…Dir, as they are rostered to.FrontDoorNoStatus → IncumbentRouteUnreadinpair_serving_d0front_door_as_incumbent, and the supplied claim went FAIL. The mutation was reverted.The superseded first commit, a fixture that observed vacancy after SIGTERM, is replaced by the supplying repair, per the manager's ruling.
🤖 Generated with Claude Code