Skip to content

Commit ade8d89

Browse files
committed
ci: keep the shard log inside matrix-rows so the rows stay where the verdict looks
Two upload paths make upload-artifact re-root the artifact at their common ancestor, so adding vitest-shard.log alongside matrix-rows/ moved every row one directory deeper than the verdict job downloads to. All four shards passed and the verdict then reported an empty population (run 31829344129, exit 2, 'no matrix rows'). The log rides inside matrix-rows/ as _vitest-shard.log instead. The leading underscore and the .log extension keep it out of both consumers' globs.
1 parent 471bc99 commit ade8d89

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

.github/workflows/ci-ecosystem-matrix.yaml

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
# put it at 6.0GB, which evicted itself mid-run (run 31753242605: three of
1010
# four shards found no corpus at all).
1111
#
12-
# Corpus freshness is a push-to-main concern, not a PR concern. main
13-
# revalidates every pack by ETag and saves the cache; a PR restores that
14-
# corpus and uses it as-is. Both sides of the comparison then measure the
15-
# same packs, so a red delta is attributable to the diff rather than to a
16-
# pack that moved overnight.
12+
# Every pack is fetched at the commit named in corpus.pins.json, which is
13+
# checked in and bumped by hand. Both sides of a comparison therefore measure
14+
# the same packs, so a red delta is attributable to the diff rather than to a
15+
# pack that moved overnight - and no pack author can red an unrelated PR. The
16+
# pin-status job below leads every run with how old that snapshot is.
1717
#
1818
# The upstream static idiom scan (L1) is deliberately absent: its
1919
# false-positive/negative rate was judged too high to act on. Packs are
@@ -285,9 +285,9 @@ jobs:
285285
exit 1
286286
fi
287287
MATRIX_OUT="$PWD/matrix-rows" pnpm exec vitest run \
288-
--config vitest.matrix.config.mts > vitest-shard.log 2>&1 \
288+
--config vitest.matrix.config.mts > matrix-rows/_vitest-shard.log 2>&1 \
289289
|| echo "vitest exited nonzero - tolerated, pack code may leak unhandled errors"
290-
tail -25 vitest-shard.log
290+
tail -25 matrix-rows/_vitest-shard.log
291291
cp src/__ecs_matrix__/manifest.json "matrix-rows/_manifest-shard-${{ matrix.shard }}.json"
292292
293293
# nullglob makes an empty match an empty array rather than the
@@ -312,17 +312,18 @@ jobs:
312312
exit 1
313313
fi
314314
315-
# The shard log is the only record of WHY a shard died. Without it a
316-
# 06:30 failure leaves the last 25 lines of a truncated tail and nothing
317-
# to go back to.
315+
# The shard log is the only record of WHY a shard died, so it rides
316+
# inside matrix-rows/ rather than as a second upload path: two paths
317+
# make upload-artifact re-root the artifact at their common ancestor,
318+
# which put every row one directory deeper than the verdict job looks
319+
# and emptied the population (run 31829344129, 'no matrix rows'). The
320+
# leading underscore and .log keep it out of both consumers' globs.
318321
- name: Upload rows
319322
if: always()
320323
uses: actions/upload-artifact@v6
321324
with:
322325
name: ecosystem-matrix-shard-${{ matrix.shard }}
323-
path: |
324-
matrix-rows/
325-
vitest-shard.log
326+
path: matrix-rows/
326327
retention-days: 30
327328
if-no-files-found: warn
328329

0 commit comments

Comments
 (0)