Repository navigation
Conversation
The required CI check compared the number of files the fast unit run collected with FAST_TEST_FILES, a number every pull request that added, moved or deleted a test in a listed directory had to edit. Parallel pull requests collided on that one line by construction. The check now computes what the count stood for, and names the file: - every entry in vitest.fast.config.js must match a file the run collected (the #377 failure mode: an entry left behind by a move); - a test the run collects that this change renames or moves (git's rename detection over HEAD^..HEAD) must still be collected where it lands (a move out of a listed directory). The checkout fetches two commits so that HEAD^ exists: on a pull request it is the base branch under GitHub's merge commit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrJ4j5ztkHoJ9z9dkLMCv
❌ Deploy Preview for rise-v2-symbolic-experience failed.
|
#377's own rename in reverse (src/components/Home.test.js to src/components/Portal.test.js), and a correct move out of a listed directory (src/core/decision/variance.test.js to src/core/variance.test.js, its import fixed). Neither file is collected where it lands, so CI must fail at the fast-test check and name both. The next commit reverts this. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrJ4j5ztkHoJ9z9dkLMCv
CI run 41239062776 failed at the fast-test check on the merge commit of e5770f3, after the fast run collected 167 files and all passed: vitest.fast.config.js lists src/components/Home.test.js, which matches no file the fast run collected. src/components/Home.test.js moved to src/components/Portal.test.js, which the fast run does not collect. src/core/decision/variance.test.js moved to src/core/variance.test.js, which the fast run does not collect. This reverts commit e5770f3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHrJ4j5ztkHoJ9z9dkLMCv
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
vitest.fast.config.jsheldexport const FAST_TEST_FILES = 169;, and the requiredCIcheck failed whenever the fast run collected a different number of files. So every pull request that added, moved or deleted a test in a listed directory had to change that one line, and parallel pull requests conflicted on it by construction. #548 created the file on 2026-10-08 and 44 commits have changed it since, and the open #762 and #763 both change the line (to 170 and to 174), so whichever merges second conflicts with the first.The count stood for one fact: what the fast run collected before this change. Git holds that fact, so the check now computes it and names the file instead of comparing a number:
FAST_TESTSmatches a file the run collected. This is the [HIGH PRIORITY · Fable] RISE architecture redesign: three constraints, five layers, five rooms #377 failure mode: [HIGH PRIORITY · Fable] RISE architecture redesign: three constraints, five layers, five rooms #377 renamed or moved three listed files, their filters matched nothing, and Vitest ran without them until Run the three unit tests that #377 moved #421 noticed.git diff --find-renames HEAD^ HEADlists the moves. On a pull requestHEADis GitHub's merge commit andHEAD^is the base branch. This catches a test moved out of a listed directory (src/core/decision/**,src/live/adapters/**and the rest), which no list entry can see.The
CIjob's checkout now fetches two commits (fetch-depth: 2) so thatHEAD^exists. Nothing else in the job depends on the depth: the recitation hydrate fetches its own ref, and the diagram and the arena readHEAD,git statusandgit ls-files.AGENTS.md,docs/RELEASING.mdand the config's header said the count existed. They now say what CI checks. 4 files, +27 −13. (The second and third commits are a demonstration and its revert; see Verification.)Shapes considered and not taken
*.test.jsunder the listed directories was collected. For the nine glob directories, Vitest already guarantees this, so the check would add nothing. For the 15 directories of the 87 explicitly listed files, it is false today: 343 tests outside the fast run sit directly in them (438 anywhere under them), 149 of them insrc/core.Failure modes
Each row is one pull request's worth of change on top of this branch. Both checks read the same Vitest report.
main's count checksrc/core/decision/)src/components/Home.test.js→Portal.test.jsvitest.fast.config.js lists src/components/Home.test.js, which matches no file the fast run collected.andsrc/components/Home.test.js moved to src/components/Portal.test.js, which the fast run does not collect.src/components/read/Chamber.jev-look.test.js→src/components/src/core/decision/variance.test.js→src/core/src/core/decision/variance.test.js moved to src/core/variance.test.js, which the fast run does not collect.src/live/adapters/mock.test.js→mock.spec.jssrc/live/hosts/→src/live/hosting/¹src/live/hosts/**/*.test.jsand each of its four filessrc/visuals/attractor.test.jsworker/count-typo.test.js; onmain, with the count raised to 170)src/core/kev-client.test.js→src/core/decision/src/core/kev-client.test.jssrc/core/figures/brands.test.jssrc/live/host/→src/live/hosts/¹ The scenario did not fix the code that imports from
src/live/hosts/(the Worker'smcp-server.mjs, the Changes pipeline and the Live host), so 20 of the 165 collected files also failed. A real rename fixes those imports; the check's verdict does not depend on them.Still caught, and now each failure names the file: a listed test renamed or moved (the #377 mode), a test moved out of a listed directory, a rename out of a glob's pattern, a listed directory renamed or emptied, a listed test deleted, and an entry that names no file.
Newly caught: a listed test moved into a listed directory leaves a stale entry. The count could not see it, because the number did not change.
No longer caught:
vitest.fast.config.jsis the whole change, and it is in the diff.--find-renamesdefaults to 50% similarity), or when a very large diff exceeds git's rename limit. It reads as a deletion plus a new file outside the fast set. The first check still catches it for a listed file; for a file under a listed directory, nothing does.mainat once. Only the last commit's moves are compared. Pull requests are compared on GitHub's merge commit, which covers the whole pull request.Verification
In this PR's CI (the required
CIcheck):4016eb9, the change: passed in 7m04s. The log shows the checkout fetching--depth=2,HEAD is now at e1a1eea Merge 4016eb9… into 19aabc7…, andTest Files 169 passed (169).e5770f3, the demonstration ([HIGH PRIORITY · Fable] RISE architecture redesign: three constraints, five layers, five rooms #377's rename in reverse, plus a correct move out ofsrc/core/decision/with its import fixed): failed at the fast-test check, afterTest Files 167 passed (167). The check printed:2e76701reverts it, back to the same tree as4016eb9: passed in 6m27s, browser gate included. A squash merge leaves only the change.GitHub's merge commit for this PR (
e1a1eea) has19aabc7(main) as its first parent and4016eb9as its second, soHEAD^..HEADthere is exactly this PR's diff.Locally (Node 22.23.4, Vitest 4.1.12), the table above. Each row:
4016eb9, makes the change and commits it;ci.ymlruns it (npx vitest run --config vitest.fast.config.js --reporter=default --reporter=json …);ci.yml, withHEAD^as the base;main's count check, frommain'sci.yml, on the same report.The check takes about half a second. Also clean:
node scripts/ci-hygiene.mjs,npm run roadmap:check,npm run docs:diagram(no diagram change), the wiki build (which also passed here asBuild and publish), andsrc/core/security-policy.test.js, which readsci.yml. The YAML parses and the step passesbash -n. shellcheck is not installed in this environment.The open pull requests that change the count
#762 and #763 change the line this deletes. Once this merges, each will conflict there once. The fix is to drop the line and keep their new entries, which need nothing else.
Not done
docs/product/tasks/. This is a CI-only change with no tracked task. Say if you want one in the foundation lane.Class: auto
Agent-platform: claude
Gates-affected: none
🤖 Generated with Claude Code
https://claude.ai/code/session_01VHrJ4j5ztkHoJ9z9dkLMCv