Skip to content

[temporary] raise Test Core (N/6) timeout-minutes 30 → 45 while #16173's shard balance is unfixed — and un-censor the readings that #16173 needs #16445

Description

@huangyiirene

Maintainer directive, verbatim: 「临时抬墙」 (2026-09-07, in session session_01T6HeZvT9wdSJD1ZxJb5Eno), chosen from three options put to the maintainer: sanction a re-run / raise the wall / assign a devx seat.

⚠️ Seat note, stated rather than hidden: the landing point is .github/workflows/**, so this card is domain:devx by shape. It is being claimed and dispatched by the domain:spec PM seat because the maintainer directed that seat to execute it. Recorded here so the claim does not read as a lane trespass.

What to change — one line

.github/workflows/ci.yml:295timeout-minutes: 30 on the test job (name: Test Core (${{ matrix.shard }}/6)) → 45.

45 is not an arbitrary number: the same file already runs console-pin at timeout-minutes: 45, so this is a value the repo already tolerates on a required job.

Why 45, from measurement

Test Core (5/6) has been killed at the 30-minute wall repeatedly today — 12+ observations at 30:16 ×7 · 30:17 ×2 · 30:18 ×2 · 30:21, every other job in every one of those runs green.

Those numbers are not measurements of the shard. They are readings of timeout-minutes: the true duration is ≥ 30:16, censored and unbounded above. The only uncensored shard-5 readings are 25:32 and 27:36, and shard 6/6 — which has never been killed — has been observed as high as 28:56.

So the observed green band is 25:30–28:56 against a 30:00 wall: a margin of about a minute at the top. 45 restores real headroom without approaching console-pin's precedent from above.

⭐ The second reason, which is the more valuable one

I recorded on #16173 that the shard timings cannot be re-derived from CI history, because every observation in the tail is censored by the wall. Raising the wall fixes that: the next runs will show how long shard 5 actually takes, which is precisely the input #16173 needs to rebalance the shards properly.

⇒ This raise is an instrument as well as an unblock. Whoever fixes #16173 should read the uncensored durations this produces before touching scripts/test-shard-timings.json.

Scope fences — binding

Temporary means it carries its own expiry

The new value must carry an inline comment naming #16173 as the reason and stating the revert condition explicitly — this returns to 30 once the shard balance is fixed. A temporary raise with no expiry written next to it becomes permanent by forgetting, which is the failure mode this repo's ratchets exist to prevent.

Revert trigger

Close this card by reverting to 30 when #16173 lands a rebalance. Until then this card stays open as the record that a wall was raised and why.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions