You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A per-workspace validate script in each TS server, running format:check → lint → build → test for that package only.
A root npm run validate that aggregates them (npm run validate --workspaces), plus any root-only guards.
Adapt verify:format-coverage and verify:typecheck-coverage from the Inspector, using workspace globs. Port scripts/lib/tsc-program.mjs (+ tests), which verify-typecheck-coverage imports. Both guards also import Part 3's lib/npm-scripts.mjs.
typescript.yml keeps its per-package matrix, and each leg runs only its own package'svalidate, not the whole monorepo.
Remove Part 3's temporary verify:format-coverage wiring allowance.
Extend the root-guards CI job (created by Part 3, Agentic software factory Part 3: Skills infrastructure: .claude/skills/, verify:skills, skills:eval #4863) with what no package leg covers: root format/lint of root files, verify:format-coverage, verify:typecheck-coverage, test:scripts (the guard scripts' own unit tests, added by Part 3), and a shared-devDependency guard. That guard, adapted from the Inspector's verify:dep-lockstep, checks that every shared TS devDependency (typescript, vitest, @vitest/coverage-v8, prettier, @types/node) is declared with one range across workspaces, or hoisted to the root. Today typescript alone has three ranges.
Part of the agentic software factory tracker #4858, Wave 2. Proposed as S3 in
docs/agent-guidance-inception.md(PR #4861) §9, from #4859.Depends on
After Part 3 (#4863), whose root-guards CI job this extends and whose
verify:format-coveragewiring allowance this removes. Supersedes #197.Scope
This is the design decided in #4473.
formatandformat:check.everything's per-package Prettier setup folds into it.--max-warnings 0@typescript-eslint/no-floating-promisesat errordist/,coverage/) ignoredtestcurrently runsvitest run --coverage. Maketestthe fast run, and move the instrumented run to a separatecoveragescript, which 2026-07-28 Spec Refactor Part 1: TypeScript servers: extensive unit tests + per-file 90% coverage gate #4854 then gives its per-file thresholds.validatescript in each TS server, runningformat:check→lint→build→testfor that package only.npm run validatethat aggregates them (npm run validate --workspaces), plus any root-only guards.verify:format-coverageandverify:typecheck-coveragefrom the Inspector, using workspace globs. Portscripts/lib/tsc-program.mjs(+ tests), whichverify-typecheck-coverageimports. Both guards also import Part 3'slib/npm-scripts.mjs.typescript.ymlkeeps its per-package matrix, and each leg runs only its own package'svalidate, not the whole monorepo.verify:format-coveragewiring allowance.format/lintof root files,verify:format-coverage,verify:typecheck-coverage,test:scripts(the guard scripts' own unit tests, added by Part 3), and a shared-devDependency guard. That guard, adapted from the Inspector'sverify:dep-lockstep, checks that every shared TS devDependency (typescript,vitest,@vitest/coverage-v8,prettier,@types/node) is declared with one range across workspaces, or hoisted to the root. Todaytypescriptalone has three ranges.AGENTS.md. If Part 2 (AGENTS.md, Agentic software factory Part 2: AGENTS.md: the absolute rules; delete CLAUDE.md #4862) hasn't merged yet, hand them to it instead:npm run formatbefore committingvalidateis the inner loopAcceptance criteria
npm run validatepasses on a clean checkout, and so doesnpm run validate -w <package>for each server.Branch
Targets
v2/main.Closes #Nwon't auto-close an issue on a non-default branch, so close this one by hand on merge and move the card to Done.