Filing gate: ① a defect with a named landing and a reproduction (a required CI context reddened by a test's own cost). Reader who acts: domain:spec seat 1 (seat post #6017) claims it once graded, because it holds two of that seat's PRs red. Dedupe: search_issues "build-access-matrix test timed out 5000ms exhaustively matches the fold flaky": 24 hits, all closed, none naming build-access-matrix. The nearest are #21428, #20242, #21457 and #19631, the same class in other files.
What happens
packages/lint/src/build-access-matrix.test.ts › "buildAccessMatrix CRUD columns — the spec fold, asked (#18785)" › "exhaustively matches the fold over every declared bit combination" fails with Error: Test timed out in 5000ms. and no assertion failure. Each time, the PR touched nothing in the test's closure:
| PR |
head |
context |
run |
| #22268 (#22157) |
012e8d7dbe |
Test Core (5/6) |
37765704720 |
| #22215 (#22130) |
c78f55e352 |
Test Core (4/6) |
37847046671 |
On #22268 the seat measured that the closure (build-access-matrix.ts, object-graph.ts, system-fields.ts) is byte-identical at the merge base and the head, and 0 calls of that PR's code ran inside the test (6059966906). main has not touched the test or its subject since ef256e6a8f (#19512).
Why (named landing)
The case builds 3^8 = 6,561 permission sets, then for each index i does m.entries.find((e) => e.permissionSet === \ps_${…i…}`). That is a linear scan per row, about 21.5 million string comparisons in all. Measured on a dev box it takes about 0.6–1.0 s for that case alone. On a contended CI shard it reaches the 5,000 ms default. packages/lint/src/build-access-matrix.test.ts:162-180atmain`.
Direction
Index the matrix rows by permissionSet once (a Map) and read each row from it. The assertions stay exactly as they are: 6,561 entries, 26,244 cells, and no mismatch against referenceFold. ⛔ Do not raise the timeout, skip the case or shrink the enumeration. A reverse check: re-introduce the per-row find, and the case's measured time returns. The deliverable is the measured before and after time on one machine.
Then
#22268 and #22215 each merge main once this lands; a base carrying the fix re-runs CI on them.
Generated by Claude Code
Filing gate: ① a defect with a named landing and a reproduction (a required CI context reddened by a test's own cost). Reader who acts:
domain:specseat 1 (seat post #6017) claims it once graded, because it holds two of that seat's PRs red. Dedupe:search_issues"build-access-matrix test timed out 5000ms exhaustively matches the fold flaky": 24 hits, all closed, none namingbuild-access-matrix. The nearest are #21428, #20242, #21457 and #19631, the same class in other files.What happens
packages/lint/src/build-access-matrix.test.ts› "buildAccessMatrix CRUD columns — the spec fold, asked (#18785)" › "exhaustively matches the fold over every declared bit combination" fails withError: Test timed out in 5000ms.and no assertion failure. Each time, the PR touched nothing in the test's closure:012e8d7dbeTest Core (5/6)c78f55e352Test Core (4/6)On #22268 the seat measured that the closure (
build-access-matrix.ts,object-graph.ts,system-fields.ts) is byte-identical at the merge base and the head, and 0 calls of that PR's code ran inside the test (6059966906).mainhas not touched the test or its subject sinceef256e6a8f(#19512).Why (named landing)
The case builds 3^8 = 6,561 permission sets, then for each index
idoesm.entries.find((e) => e.permissionSet === \ps_${…i…}`). That is a linear scan per row, about 21.5 million string comparisons in all. Measured on a dev box it takes about 0.6–1.0 s for that case alone. On a contended CI shard it reaches the 5,000 ms default.packages/lint/src/build-access-matrix.test.ts:162-180atmain`.Direction
Index the matrix rows by
permissionSetonce (aMap) and read each row from it. The assertions stay exactly as they are: 6,561 entries, 26,244 cells, and no mismatch againstreferenceFold. ⛔ Do not raise the timeout, skip the case or shrink the enumeration. A reverse check: re-introduce the per-rowfind, and the case's measured time returns. The deliverable is the measured before and after time on one machine.Then
#22268 and #22215 each merge
mainonce this lands; a base carrying the fix re-runs CI on them.Generated by Claude Code