docs(agents): show the targeted-vitest spelling and refuse the bare separator - #11425
Draft
os-steve wants to merge 1 commit into
Draft
docs(agents): show the targeted-vitest spelling and refuse the bare separator#11425os-steve wants to merge 1 commit into
os-steve wants to merge 1 commit into
Conversation
…eparator
`os-dev.md` rule 3 named `pnpm --filter <pkg>`, `--maxWorkers=2` and
`--concurrency=2` without ever showing how they join, so every reader had to
invent the join and npm semantics supplied `--`. Measured: the separator makes
vitest discard the file pattern AND `--maxWorkers`, the whole package suite
runs, and it exits 0 — a false green that reads as the narrow run that was
asked for.
Rule 3 now carries the literal working command and refuses the separator.
`AGENTS.md`'s dev-server parenthetical ("flags after `--` are forwarded") is
re-scoped, since what pnpm forwards is the separator itself.
Both files sit at zero-headroom line ratchets, so this is a net-zero rewrite:
the measurements stay on the card, per the ratchet's own rule that stories live
on cards and not in operational text.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015ahemw8RcTgqtxrj15PEZx
This was referenced Aug 23, 2026
This was referenced Aug 23, 2026
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.
Part of #10166 — this lands triage's parts (1) and (2). It deliberately does not land the PreToolUse hook (A) or the
os-verify-lock.shrefusal line (B) that the 2026-08-21 PM ruling adopted; triage's 2026-08-22 re-scope excluded tooling from this card, so those remain unimplemented and the card stays open for them.Both files are governed (
.claude/**,AGENTS.md). This PR stays draft and waits for a human merge: no ready flip, no auto-merge, no merge queue.The defect
os-dev.mdrule 3 namedpnpm --filter <pkg>, vitest--maxWorkers=2and turbo--concurrency=2without ever showing how they join. A gap that forces an invention is worse than a wrong statement, because every reader invents the same wrong thing — and npm semantics supply--.Measured, on
@objectstack/types(13 test files,testscript is exactlyvitest run)pnpm --filter <pkg> test -- --maxWorkers=2 src/keyset-walk.test.tsvitest run -- --maxWorkers=2 …· 13 files / 362 tests · exit 0pnpm --filter <pkg> test --maxWorkers=2 src/keyset-walk.test.tspnpm --filter <pkg> exec vitest run --maxWorkers=2 src/keyset-walk.test.tspnpm exec vitest run src/keyset-walk.test.tsfrom the package cwdpnpm exec vitest run -- src/keyset-walk.test.ts(stray--, no package script)The last row matters: the
execroute our own docs recommend is swallowed identically. Nothing about avoiding the package script protects you — the separator does.The card's unverified half:
--maxWorkers=2was swallowed tooProbed against the exact parser (vitest 4.1.10 → cac 7.0.0, resolved from vitest's own tree; the earlier note on the card said 6.7.14):
Both directions confirmed in vitest itself: an unknown flag before the separator throws
CACError: Unknown option `--thisFlagDoesNotExist`(exit 1); the same flag after it exits 0 with no error, and a--filesOnlysitting after it is ignored as well (362 test lines listed instead of a file list).⇒ Every run that used the
--spelling had no worker cap. The concurrency discipline was inert in the same breath as the file filter.Net-zero, because both homes are at zero-headroom ratchets
check:pm-skill-ratchetsets each ceiling at the landed line count:os-dev.md405/405,AGENTS.md961/961. Raising a ceiling requires a maintainer ruling quoted in the PR, and this PR has none — so the fix is a rewrite, not an addition (os-dev.mdstays at exactly 405,AGENTS.mdat 961). That also follows the ratchet header's own instruction: "provenance is one line, stories live on cards, not in operational text." The measurements above therefore live here and on the card, not in the agent definition.A first draft added a full
Toolchain trapsentry with the mechanism (+13 lines) and was rejected by the ratchet. The landed rule carries the spelling and the refusal; the mechanism stays on the card.Why this spelling and not the one triage named
Triage named
pnpm exec vitest run <file>"from the right cwd". Verified — it works (row 5). The rule documentspnpm --filter <pkg> exec vitest run --maxWorkers=2 <file>instead, because it is the strict superset: it needs nocd, and agent bash calls in this container reset cwd between invocations, so a cwd-dependent spelling would reintroduce exactly the form-scoping defect this card is about. Both were measured; the more robust one is documented.Scope
--workspace-concurrencyplacement rule unscoped, but pnpm 10 rejects the flag oninstall— two devs burned a cycle on it in one round #11419 (the unscoped--workspace-concurrencyplacement rule) is not addressed here and remains open — it is its own unassigned card. I did trip over it first-hand while setting up:pnpm install --workspace-concurrency=2 --filter …→ERROR Unknown option: 'workspace-concurrency'. One more datapoint for that card, fixed in neither file here.skip-changeset).Gates
All 12 families derived by
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack(no path arguments) green at685883f. Repo-widepnpm lintis CI's: both changed files reportisPathIgnored: truefrom eslint's own flat config (2 files submitted, 0 linted, 0 rule results), so no untouched file's verdict can move.Generated by Claude Code
Generated by Claude Code