Repository navigation
CI: admit a killed author's unsent poll in the corrected clock contract - #763
Conversation
python-clock-genuine-one declares cancel_unsent_original_polls, but only the corrected-marker contract implemented it. The clock contract required every cancelled poll to have reached upstream, so a SIGKILLed original author whose activity poll ended before the proxy forwarded it failed the published PHP clock record (Server #754: runs 40151134683 and 40206210357, request 34 of the latter). Move the corrected-marker contract's unsent-poll branch, unchanged, into killed-author-poll.mjs and call it from both contracts. An unsent poll is admitted only for a declaring fixture, a SIGKILLed Python author, a declared no-result poll route, no bytes and no response, between the original's real registration and durable admission and its explicit retirement. The clock reader controls gain the corrected-marker reader's unsent-cancellation counterexamples, and a unit test covers the shared check and each refusal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ock-unsent-poll The path filter and the comparator node test list keep both sides' new tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
…dec-one-job The comparator node test list keeps main's killed-author poll test and this branch's codec deadline cell test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Cloud bounded wrapper review of exact The unsent branch requires the declared Python/SIGKILL case, author exit -9, a declared no-result poll, no received request/response bytes or forwarding, preceding original-worker registration and recorded durable admission, and subsequent explicit retirement. It returns no request authority. The clock caller retains transport checks; forwarded polls keep their existing path. Independent verification: both helper unit tests passed, including all 19 refusal cases, in an isolated Node 22.23.4 container. The clock-reader source was reviewed but was not executed against records. This review covers the outer wrapper and fake controls only; it makes no new runtime, payload, or publication claim. |



Fixes the corrected-cohort
python-clock-genuine-oneflake (false !== trueafter the published PHP portable record passes). It has occurred twice: run 40151134683, and run 40206210357 on #762. It's classified on #754 (comment 6399755214).Cause
tests/Fixtures/ServerParityProfiles/corrected-markers/python-clock-genuine-one.jsondeclares"cancel_unsent_original_polls": true: the SIGKILLed original Python author may have polls in flight that end before the observing proxy forwards them. Onlycorrected-marker-contract.mjsimplemented that.corrected-clock-contract.mjsstill required every client-cancelled poll to showrequest_body_complete=trueandupstream_request_started=true.In run 40206210357 the published PHP clock record's
requests[34] POST /api/worker/activity-tasks/poll 0 client_cancelled=truehad neither flag set. It sat between the original's registration ([15]), its durable admission ([29]) and its explicit retirement ([35] DELETE …workflow:original). The PHP server never received that request.Change
scripts/conformance/server-parity/killed-author-poll.mjs(new): the corrected-marker contract's unsent-poll branch, moved unchanged intocheckUnsentKilledAuthorPoll. An unsent poll is admitted only when all of these hold:cancel_unsent_original_polls;SIGKILL, with exit code -9;corrected-marker-contract.mjscalls it in place of the inline branch; its other checks are unchanged.corrected-clock-contract.mjscalls it for a cancelled poll that was never forwarded, and keeps its existing checks for every forwarded one.corrected-markers/check-clock-readers.mjsgains the corrected-marker reader's unsent-cancellation counterexamples, plus one more ("after original retirement"). They run on any actual clock record that contains such a poll.tests/Unit/ServerParityKilledAuthorPollTest.mjs(new; in the path filter and the comparator list): the failing record's shape passes for each poll route. Each of 19 counterexamples is refused, including a received body, invented bytes, forwarding or response, a missing or foreign registration, a missing or unrecorded admission, a missing or earlier retirement, an undeclared fixture, a graceful shutdown, another producer, a living author and an undeclared poll kind.Qualification
node --check. Docker workflow isolation policy passes.🤖 Generated with Claude Code