Impact
mailman duplicate-search runs at run time. Nothing runs again at push time.
A submission that sits staged for a day can be overtaken upstream, and the
harness gives no signal. The operator finds out by hand or not at all.
The window is not theoretical. It is exactly as long as the gap between a run
finishing and a human deciding to push, which for this project has been a day
or more on every run so far.
Evidence
Run 20260903T052426Z-ad8196 against encode/starlette
#3497 finished
2026-09-03T05:24Z with "ready": true and a clean duplicate search. It was
staged and not pushed.
Checked by hand on 2026-09-04, two duplicates existed:
- #3498 by
vyrnsynx, opened 2026-09-03T06:58Z
- #3500 by
kishansaaai, opened 2026-09-03T17:33Z
Both change starlette/testclient.py to the same post-image as this run:
git diff against both PRs' blobs gives index 449fc5f..ffc613a on all three,
so the three patches are byte-identical in the source file. Both duplicates
also add a tests/test_testclient.py case, which this run deliberately omitted.
The first arrived 94 minutes after the run finished. No re-check would have
caught it at run time; only a check at push time would.
Environment
Local Windows workspace, Mailman at be78ce9. Upstream encode/starlette
main still at 39fd0ff, so the base did not move. Only the pull request list
did.
Next action
Add a push-time gate that re-runs the duplicate search and the claims check
against the staged submission's target, and refuses when either has changed
since the run. It should read submission.json for the target and the run
timestamp, and report the age of the evidence it is superseding.
Impact
mailman duplicate-searchruns at run time. Nothing runs again at push time.A submission that sits staged for a day can be overtaken upstream, and the
harness gives no signal. The operator finds out by hand or not at all.
The window is not theoretical. It is exactly as long as the gap between a run
finishing and a human deciding to push, which for this project has been a day
or more on every run so far.
Evidence
Run
20260903T052426Z-ad8196againstencode/starlette#3497 finished
2026-09-03T05:24Z with
"ready": trueand a clean duplicate search. It wasstaged and not pushed.
Checked by hand on 2026-09-04, two duplicates existed:
vyrnsynx, opened 2026-09-03T06:58Zkishansaaai, opened 2026-09-03T17:33ZBoth change
starlette/testclient.pyto the same post-image as this run:git diffagainst both PRs' blobs gives index449fc5f..ffc613aon all three,so the three patches are byte-identical in the source file. Both duplicates
also add a
tests/test_testclient.pycase, which this run deliberately omitted.The first arrived 94 minutes after the run finished. No re-check would have
caught it at run time; only a check at push time would.
Environment
Local Windows workspace, Mailman at
be78ce9. Upstreamencode/starlettemainstill at39fd0ff, so the base did not move. Only the pull request listdid.
Next action
Add a push-time gate that re-runs the duplicate search and the claims check
against the staged submission's target, and refuses when either has changed
since the run. It should read
submission.jsonfor the target and the runtimestamp, and report the age of the evidence it is superseding.