Skip to content

test: pin #240 fail-fast timing with real encode/httpx rows - #257

Merged
Gagaismo merged 1 commit into
mainfrom
Gagaismo/orca-stack-256
Oct 17, 2026
Merged

Gagaismo merged 1 commit into
mainfrom
Gagaismo/orca-stack-256

Conversation

@Gagaismo

Copy link
Copy Markdown
Owner

Summary

#240's assumption holds on real GitHub data: in a default fail-fast matrix, every sibling GitHub cancelled has a completedAt later than the failing job's startedAt. Two tests now pin those real rows, so vigilar and rebote keep reporting the failure. No source change.

Source (read-only gh pr view https://github.com/encode/httpx/pull/3796 --json statusCheckRollup): PR encode/httpx#3796, run 37009481166 (workflow Test Suite, matrix with no fail-fast key, so GitHub's default true, checked on the run's head 7aee79f4).

name conclusion startedAt completedAt
Python 3.12 FAILURE 2026-10-02T12:53:52Z 2026-10-02T12:54:34Z
Python 3.11 CANCELLED 2026-10-02T12:53:52Z 2026-10-02T12:54:36Z
Python 3.13 CANCELLED 2026-10-02T12:53:54Z 2026-10-02T12:54:56Z
Python 3.10 CANCELLED 2026-10-02T12:54:17Z 2026-10-02T12:55:11Z

Earliest cancelled completedAt (12:54:36) is later than the failure's startedAt (12:53:52): the failure is classified as real. The same shape showed in the jobs of three more httpx runs read with gh run view <id> -R encode/httpx --json jobs (35071320524, 22379030162, 22365498386): in each, the earliest cancelled job completed after the failing job started. They are context only; the fixture uses PR #3796.

Evidencia

Rule, legacy RED item, or touched public entry Test (exact name) Result
1. Real data Not a test: PR, run id and the four rows above, read with gh pr view 3796 -R encode/httpx --json statusCheckRollup Recorded above
2. Fixture test (vigilar) test/vigilar.test.mjs › Issue 256 Rule 2: real fail-fast rows emit ci-roja with the failing row ✔ Issue 256 Rule 2: real fail-fast rows emit ci-roja with the failing row
2. Fixture test (rebote) test/despacho.test.mjs › Issue 256 Rule 2: rebote bounces real fail-fast rows as a failed check instead of asking for gh run rerun ✔ Issue 256 Rule 2: rebote bounces real fail-fast rows as a failed check instead of asking for gh run rerun
2. Tests catch a regression Same two tests with #240's filter in src/checks.mjs reverted to [] (local mutant, not committed) Both ✖; restored file, both ✔
3. If the assumption fails Not applicable: the real rows satisfy #240's rule, so src/checks.mjs is unchanged —
4. #218 rows unchanged Issue 240 Rule 2: red row started after first cancellation completed is not reported and emits ci-cancelada and Issue 240 PRESERVE: reboteCommand retains rerun refusal when cancellation has no real failure (run 38843085964, 02:58:16 / 02:59:09) Both ✔
5. Existing tests unchanged All #225 and #240 tests in both files, untouched npm run verify: ℹ tests 703, ℹ pass 703, ℹ fail 0; mods suites 0 fail

Touched public entries: none touched (tests only).

Merge Danger

Two-way door. Tests only; blast radius is the test suite.

Desvíos del ticket

ninguno

Implementador: claude
Closes #256

🤖 Generated with Claude Code

Fixture from encode/httpx#3796 (run 37009481166):
the failing matrix row started before every cancelled sibling completed, so
vigilar emits ci-roja and rebote bounces it instead of asking for a rerun.

Refs #256

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Gagaismo
Gagaismo merged commit 6a217c3 into main Oct 17, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Verify #240's fail-fast timing assumption on a real public PR and pin it with a fixture

1 participant