diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9be2932c11..a8dd6f9ec0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -58,11 +58,16 @@ jobs: command: pnpm run check:ci:lint gate_concurrency: '1' eslint_cache: '1' - - lane: coverage-spine + - lane: coverage-core command: pnpm run check:ci:coverage gate_concurrency: '1' coverage_max_workers: '4' - coverage_shard: spine + coverage_shard: core + - lane: coverage-models + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: models - lane: coverage-sdk command: pnpm run check:ci:coverage gate_concurrency: '1' @@ -78,16 +83,36 @@ jobs: gate_concurrency: '1' coverage_max_workers: '4' coverage_shard: execution - - lane: coverage-orchestration + - lane: coverage-workflow command: pnpm run check:ci:coverage gate_concurrency: '1' coverage_max_workers: '4' - coverage_shard: orchestration - - lane: coverage-infrastructure + coverage_shard: workflow + - lane: coverage-workflow-worker command: pnpm run check:ci:coverage gate_concurrency: '1' coverage_max_workers: '4' - coverage_shard: infrastructure + coverage_shard: workflow-worker + - lane: coverage-delegation + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: delegation + - lane: coverage-repository + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: repository + - lane: coverage-scripts + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: scripts + - lane: coverage-integrations + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: integrations - lane: coverage-session-state command: pnpm run check:ci:coverage gate_concurrency: '1' @@ -98,6 +123,11 @@ jobs: gate_concurrency: '1' coverage_max_workers: '4' coverage_shard: hooks-claude + - lane: coverage-hook-protocol + command: pnpm run check:ci:coverage + gate_concurrency: '1' + coverage_max_workers: '4' + coverage_shard: hook-protocol - lane: coverage-hooks-codex command: pnpm run check:ci:coverage gate_concurrency: '1' diff --git a/scripts/coverage-shards.ts b/scripts/coverage-shards.ts index 18c360401c..5ac8f999f3 100644 --- a/scripts/coverage-shards.ts +++ b/scripts/coverage-shards.ts @@ -13,10 +13,11 @@ export interface CoverageShard { /** Exhaustive, non-overlapping ownership of workspace packages in coverage CI. */ export const coverageShards = [ { - name: 'spine', - packageRoots: ['core', 'llm', 'compact', 'context'], + name: 'core', + packageRoots: ['core', 'context'], extraTestRoots: ['packages/examples/cli-demo/tests'], }, + { name: 'models', packageRoots: ['llm', 'compact'] }, { name: 'sdk', packageRoots: ['sdk'] }, { name: 'interfaces', @@ -24,17 +25,34 @@ export const coverageShards = [ extraTestRoots: ['examples'], }, { name: 'execution', packageRoots: ['fs', 'bash', 'sandbox', 'code-runtime'] }, - { name: 'orchestration', packageRoots: ['workflow', 'subagent', 'tasks'] }, { - name: 'infrastructure', - packageRoots: ['cordis', 'support', 'lsp', 'mcp'], + name: 'workflow', + packageRoots: ['workflow/workflow', 'workflow/tool-workflow', 'workflow/tool-ralph'], + }, + { name: 'workflow-worker', packageRoots: ['workflow/workflow-workerthread'] }, + { name: 'delegation', packageRoots: ['subagent', 'tasks'] }, + { + name: 'repository', + packageRoots: [ + 'cordis', + 'support/acp-snapshot', + 'support/agent-loop-testkit', + 'support/llm-replay', + 'support/loader-smoke', + ], + }, + { + name: 'scripts', + packageRoots: ['support/invariants'], extraTestRoots: ['scripts'], }, + { name: 'integrations', packageRoots: ['lsp', 'mcp'] }, { name: 'session-state', packageRoots: ['session-persistence', 'session-query'], }, - { name: 'hooks-claude', packageRoots: ['hooks/hook-protocol', 'hooks/hooks-claude'] }, + { name: 'hook-protocol', packageRoots: ['hooks/hook-protocol'] }, + { name: 'hooks-claude', packageRoots: ['hooks/hooks-claude'] }, { name: 'hooks-codex', packageRoots: ['hooks/hooks-codex'] }, { name: 'capabilities', diff --git a/scripts/verify-built-package-invariants.mjs b/scripts/verify-built-package-invariants.mjs index 2d5a496354..9c672e05f0 100644 --- a/scripts/verify-built-package-invariants.mjs +++ b/scripts/verify-built-package-invariants.mjs @@ -42,8 +42,8 @@ for (const manifestPath of manifests) { // Keep the staged view below its owning package so Node reaches the real // pnpm dependency links. Junctioning node_modules elsewhere breaks pnpm's - // relative workspace links on Windows. Copy only the statically required - // runtime entry so a companion that imports an undeclared chunk fails here. + // relative workspace links on Windows. Copy the manifest-declared lib view + // so a companion that imports an undeclared runtime chunk fails here. const stagedPackageDir = mkdtempSync(resolve(packageDir, '.dsh-built-invariant-')) try { copyFileSync(resolve(packageDir, 'package.json'), resolve(stagedPackageDir, 'package.json'))