Seen twice on 2026-09-09 in CI on the same commit (96b71ef, merge of #157, which touched only apps/web):
- push run:
tests/slug-redirect.test.ts > never intercepts /api/* paths
- pull_request run:
tests/avatar-upload.test.ts > 404s for a missing person and > rejects unsupported MIME types with 422
All with the same error from apps/api/tests/helpers/seed-fixtures.ts cloning the bare fixture repo created by tests/helpers/test-full-repo.ts:
Error: Command failed: git clone /tmp/cfp-full-data-XXXX/data.git /tmp/cfp-seed-wt-YYYY
fatal: failed to copy file to '/tmp/cfp-seed-wt-YYYY/.git/objects/71/fdd3...': No such file or directory
Different test files, different temp dirs, same shape: a local git clone (hardlink/copy of loose objects) races with something mutating the source repo's object store while it runs. Suspects: another worker's transaction on the same shared fixture repo (gitsheets 2.x Rust core landed on develop via #151 and may repack/prune loose objects), or a cleanup rm in a sibling file's afterEach. Locally the suite passes with --maxWorkers=2; CI uses the default worker count.
Options: give each test file its own fixture repo (no shared source), clone with --no-hardlinks/file:// (forces a pack transfer instead of per-object copies), or serialize the clone behind a lock. Re-running the job passes, so this is a flake, not a regression, but it will keep failing release CI at random.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RdRwHvDupRLV8GuJpYKzEr
Seen twice on 2026-09-09 in CI on the same commit (
96b71ef, merge of #157, which touched onlyapps/web):tests/slug-redirect.test.ts > never intercepts /api/* pathstests/avatar-upload.test.ts > 404s for a missing personand> rejects unsupported MIME types with 422All with the same error from
apps/api/tests/helpers/seed-fixtures.tscloning the bare fixture repo created bytests/helpers/test-full-repo.ts:Different test files, different temp dirs, same shape: a local
git clone(hardlink/copy of loose objects) races with something mutating the source repo's object store while it runs. Suspects: another worker's transaction on the same shared fixture repo (gitsheets 2.x Rust core landed ondevelopvia #151 and may repack/prune loose objects), or a cleanuprmin a sibling file'safterEach. Locally the suite passes with--maxWorkers=2; CI uses the default worker count.Options: give each test file its own fixture repo (no shared source), clone with
--no-hardlinks/file://(forces a pack transfer instead of per-object copies), or serialize the clone behind a lock. Re-running the job passes, so this is a flake, not a regression, but it will keep failing release CI at random.🤖 Generated with Claude Code
https://claude.ai/code/session_01RdRwHvDupRLV8GuJpYKzEr