Skip to content

chore(test): start the subprocess-stub kill-criterion experiment (#1823) - #2007

Merged
thymikee merged 2 commits into
mainfrom
claude/sweet-bell-v45gso
Aug 24, 2026
Merged

chore(test): start the subprocess-stub kill-criterion experiment (#1823)#2007
thymikee merged 2 commits into
mainfrom
claude/sweet-bell-v45gso

Conversation

@thymikee

Copy link
Copy Markdown
Member

Summary

#1823 is the live tracker for the subprocess-stub Vitest project and states its own kill criterion: "if the three members run un-serialized in the default pool for 20 consecutive CI runs with no timeout-shaped failure, delete the project." Nobody had started that experiment yet — the project still existed with all its serialization machinery. This PR runs exactly the steps the issue describes: drops SUBPROCESS_STUB_TESTS from unit-core's exclude and deletes the subprocess-stub project block, so its members run in the default forks pool.

Membership note: the issue's table lists 3 members, but scripts/fuzz/corpus-replay.test.ts already left for its own fuzz-worker project in #1994 (merged earlier today, for an unrelated coverage-lane worker-death bug — see #1824). So only 2 files are actually un-serialized by this change:

fuzz-worker (holding corpus-replay.test.ts) is untouched — its serialization is for a different, already-decided reason.

What's the same, what changed

  • Mutation lane: SUBPROCESS_STUB_TESTS still feeds SERIALIZED_TESTS, so both files stay excluded from the Stryker mutation scope regardless of this experiment's outcome — thousands of mutant reruns times a real per-case spawn is timeout noise independent of whether Vitest itself serializes the file.
  • Coverage lane: unaffected — test:coverage:ci already only skips fuzz-worker, not subprocess-stub.
  • package.json / docs/agents/*.md / assorted comments: updated the handful of places that named the subprocess-stub project directly, so nothing left in the repo asserts a project that no longer exists. scripts/gate/check.ts needed no change — it derives vitestProjects from vitest.config.ts by regex, so the gate manifest picked up the deletion automatically (verified below).

Revert plan

If a timeout-shaped failure shows up in either file before 20 consecutive CI runs pass clean, restore the subprocess-stub project block and put SUBPROCESS_STUB_TESTS back in unit-core's exclude — that's the entirety of the revert, symmetric with this diff.

Validation

  • pnpm exec vitest run --project unit-core src/__tests__/client-metro.test.ts scripts/fuzz/harness.test.ts — both files pass running alongside the rest of unit-core (previously they only ran alone in subprocess-stub).
  • pnpm exec vitest run --project unit-core --project fuzz-worker — full suite: 1035 files, 2 pre-existing failures unrelated to this change (app-log-session-resource.test.ts, durable-capture-resource-adoption.test.ts) reproduced identically against origin/main before this diff — not introduced here.
  • pnpm check:gate-manifest48 checks wired across 28 lanes (down from the prior run's subprocess-stub-inclusive count), confirming the manifest re-derives cleanly with no manual sync needed.
  • pnpm check:gate-manifest:test, pnpm check:agent-guidance, pnpm check:layering, pnpm typecheck, pnpm lint, pnpm format:check — all green.
  • docs/agents/testing.md stays at 9,587 of its 10,000-byte gate ceiling (agent-guidance-contract.test.ts).

Refs #1823.


Generated by Claude Code

claude added 2 commits August 24, 2026 17:19
Deletes the serialized `subprocess-stub` Vitest project and drops
SUBPROCESS_STUB_TESTS from unit-core's exclude, so its two real
spawners (client-metro.test.ts, harness.test.ts — corpus-replay.test.ts
already left for fuzz-worker in #1994) run un-serialized in the default
forks pool per #1823's own kill criterion. Revert if a timeout-shaped
failure shows up before 20 consecutive CI runs pass clean.

The files stay excluded from the mutation lane (SERIALIZED_TESTS):
that exclusion is about mutant-rerun cost, independent of Vitest
project structure. Updated the comments/docs/scripts that described
the old project by name so none of them assert a project that no
longer exists.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015YPgKE1xmjdqh7T1q987DA
@github-actions

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 2.41 MB 2.41 MB 0 B
JS gzip 805.6 kB 805.6 kB 0 B
npm tarball 930.5 kB 930.5 kB -17 B
npm unpacked 3.23 MB 3.23 MB -26 B

npm unpacked components

Component Base Current Diff
JS / dist source 2.56 MB 2.56 MB 0 B
Apple runner source/project 570.6 kB 570.6 kB 0 B
macOS helper source 54.5 kB 54.5 kB 0 B
Android helper artifacts 0 B 0 B 0 B
Other package files 44.7 kB 44.7 kB -26 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 27.4 ms 29.1 ms +1.7 ms
CLI --help 81.4 ms 80.0 ms -1.4 ms

Top changed chunks: no changes in the largest emitted chunks.

Top changed packed files

Packed file Base Current Diff
package.json 18.5 kB 18.4 kB -26 B

@github-actions

github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-24 18:08 UTC

@thymikee

Copy link
Copy Markdown
Member Author

Clean at ca14f2ad: this implements #1823’s prescribed experiment exactly. The two remaining real-subprocess tests now run in unit-core, corpus-replay correctly remains in the separately justified fuzz-worker project, and mutation exclusion remains independent. Code is ready for human review; the remaining iOS check is still running.

@thymikee thymikee added the ready-for-human Valid work that needs human implementation, judgment, or maintainer merge label Aug 24, 2026
@thymikee
thymikee merged commit dbc4f2f into main Aug 24, 2026
25 of 26 checks passed
@thymikee
thymikee deleted the claude/sweet-bell-v45gso branch August 24, 2026 18:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-for-human Valid work that needs human implementation, judgment, or maintainer merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants