Files
msd-core/tests/test-timings.json
Tom Boucher f6257f3745 ci(#2952): shard the full test lane instead of widening its cap (#2960)
* ci(#2952): budget CI job timeouts by headroom over measured cost

`origin/next` was red. The only failing check was `Required tests`, and its
sole cause was `test (ubuntu-latest, 24)` reported `cancelled` — GitHub's
conclusion for a job that exceeds its `timeout-minutes`, not a button press.

That job's `ubuntu-latest / 24` entry is the only `scope: full` matrix entry:
it runs the whole unit suite under c8 coverage, then the scripts/ coverage
floor, integration, security, install and slow, serially on one runner. On
next@5a0a9f097 it ran 15m16s against `timeout-minutes: 15` and was axed 23s
into `npm run test:slow`. Projected to a completed slow step (27s on the last
green run) the lane costs ~15m20s.

Confirmed hypothesis: the budget, not the suite. The lane had been riding the
ceiling all day — 12m03s, 11m34s, 11m50s, 14m25s, 14m51s — and crossed on
three of the last four full-lane runs (d2d2f7c08, 07603df8f, 5a0a9f097). There
is no pathological test: the unit run is cost-first bin-packed into 12 chunks,
chunk 1 is gated by run-tests-harness.test.cjs at 169s (expensive by design —
it spawns real harness subprocesses, one of which exercises the per-chunk
timeout), and the remaining chunks are 32-94s. 769s is the honest cost of 689
files under c8. Re-running could not have helped; the work exceeded the budget.

Review of the first cut surfaced the same defect one runner away: `full test
(windows-latest, 22, shard 3/3)` reached 18m59s against its own 20-minute cap
on 05b170e44 (94%) and 18m14s on 81eeb8a53 (91%). That lane has already blown
its cap twice (#1051, #1212). Fixed here rather than deferred.

The first cut also asserted `test >= test-full`, which is unsound — those two
budgets are dominated by different platforms, so their ordering carries no
meaning. Replaced with the invariant that actually generalises: every lane is
held to a headroom FACTOR over its own measured cost. `test` 15 -> 25 (1.5x of
16m), `test-full` 20 -> 30 (1.5x of 19m), `test-inert` unchanged at 15.

tests/ci-test-job-timeout-budget.test.cjs locks that rule. No unit test can
prove a lane still FITS its budget — only a real run measures that — but a
budget can no longer be lowered back beneath what its lane is known to need,
and a lane that gets slower must be re-measured rather than excused.

Separately: the earlier `failure` at 05b170e44 was an unrelated, already-fixed
CONTEXT-INDEX.json drift (07603df8f re-synced it; lint-tests is green at HEAD).
07603df8f's own run hit this same timeout, which is why it never reported green.

Refs #869, #1051, #1212

* ci(#2952): shard the full test lane instead of widening its cap

The `scope: full` lane was the only unsharded lane in this file. It ran the
entire unit suite under c8 on one runner, grew past a 15-minute cap, and
reddened `next`. Raising the cap bought room; it did not change the shape, and
the same lane would have walked back into the ceiling. Shard it, the way #1212
answered this for the Windows lane.

Balance comes from measurement, not file counts. scripts/run-tests.cjs already
partitions by measured per-file duration using LPT (#2472); the table it reads
was 10 days stale — 638 of 695 files timed, 64 missing, including the whole
context-predicates group. Regenerated from a verified matrix run: 700 files, 0
missing. On that table the 685-file unit suite splits 19.37m / 19.37m / 19.37m
— 0.0% spread — and the split is a total, disjoint cover with 0 files dropped.
Completeness, disjointness, balance and determinism of the partition itself are
already pinned against selectShard in run-tests-harness.test.cjs, including a
fast-check property, so this change does not restate them.

Sharding a COVERAGE run is the part that needs care. A per-shard percentage is
meaningless — shard 2 never executes shard 1's files, so those read 0% — and
leaving the gate on the shards would have quietly measured a third of the tree.
Each shard now renders no report and only leaves raw V8 dumps; a new
`coverage-gate` job merges all three into one coverage/tmp and runs the gate
there. c8's default temp directory is where the download lands, so the ≥70%
lines / ≥60% branches gate and the ≥55% scripts floor run unmodified against
merged data.

Both surfaces call the same npm scripts rather than inlining c8 into YAML, so
the include/exclude globs and both thresholds stay defined once in package.json.
The workflow holding its own copy is the divergence this repo has a rule
against, and the new test cross-checks package.json so an inline reintroduction
fails rather than drifts.

tests/ci-full-lane-sharding.test.cjs covers the two ways this stays GREEN while
being wrong: an incomplete shard set (declare 1/3 and 2/3, never 3/3, and a
third of the suite silently stops running) and a coverage gate that stops being
required. required-tests now depends on coverage-gate and fails on it, while
still tolerating `skipped` so docs-only PRs are not blocked.

`timeout-minutes: 25` on the lane is deliberately left alone. The budget test
requires a real measurement before a lane's declared cost changes, and the
sharded cost is not measured until this PR's own CI run.

Refs #1212, #2472

* ci(#2952): tighten the sharded lane's budget to its measured cost

The sharding commit deliberately left `timeout-minutes: 25` alone, because
tests/ci-test-job-timeout-budget.test.cjs requires a real measurement before a
lane's declared cost changes and the sharded cost did not exist yet.

It exists now. Run 30677442953: shard 1/3 7m12s, 2/3 4m32s, 3/3 3m59s, and
coverage-gate 1m20s. Shard 1 is the long pole because the unsharded aux suites
ride along on it, which is deliberate — they total ~1m35s and sharding them
would cost more than it saves.

So the lane's budget is 15 against a slowest measured shard of 8 minutes
(~1.9x), and coverage-gate joins LANE_COSTS at 2 minutes. 15 is the same number
the lane blew before sharding; the work behind it is now a third the size.

Merged coverage was checked against the pre-shard single-runner baseline rather
than assumed from a green check: 94.36 stmts / 96.3 funcs / 94.36 lines
identical, branches 84.22 vs 84.21 — one branch across two different trees,
noise rather than a regression.

---------

Co-authored-by: sim <sim@local>
2026-07-31 22:16:26 -04:00

713 lines
30 KiB
JSON

{
"schema_version": 1,
"generated_by": "scripts/gen-test-timings.cjs",
"unit": "ms",
"sources": [
"test-events-linux-node22.jsonl",
"test-events-linux-node24.jsonl"
],
"file_count": 700,
"timings": {
"active-workstream-store.test.cjs": 42,
"active-workstream-store.unit.test.cjs": 277,
"adapter-declarative-equivalence.test.cjs": 29,
"adapter-imperative.test.cjs": 169,
"adr-15-progress-converge.test.cjs": 334,
"adr-218-release-version-validation.test.cjs": 88,
"adr-22-plan-drift-guard.test.cjs": 3331,
"adr-230-pr-target-policy.test.cjs": 153,
"adr-612-bracket-grammar.test.cjs": 249,
"adr-612-collision-characterization.test.cjs": 71,
"adr-index-gate.test.cjs": 5307,
"adr-parser.property.test.cjs": 1855,
"adr-parser.test.cjs": 62,
"adr-parser.unit.test.cjs": 452,
"adr857-contribution-merge.test.cjs": 119,
"adr857-core-without-capabilities.test.cjs": 5207,
"adr857-predicate-boundary.test.cjs": 85,
"affected-tests-lib.test.cjs": 105,
"agent-classification-parity.test.cjs": 89,
"agent-frontmatter.test.cjs": 945,
"agent-install-check.test.cjs": 101,
"agent-install-validation.test.cjs": 8799,
"agent-required-reading-consistency.test.cjs": 160,
"agent-size-budget.test.cjs": 163,
"agent-skills-awareness.test.cjs": 68,
"agent-skills-bootstrap.test.cjs": 244,
"agent-skills.test.cjs": 21368,
"ai-evals.test.cjs": 5307,
"allowlist-ratchet.test.cjs": 148,
"analyze-dependencies.test.cjs": 35,
"anti-pattern-enforcement.test.cjs": 66,
"antigravity-repo-grounding.test.cjs": 79,
"antigravity-reviewer.test.cjs": 58,
"antigravity-upgrades.test.cjs": 5412,
"api-coverage-gate-e2e.test.cjs": 5637,
"api-coverage.test.cjs": 877,
"artifacts.test.cjs": 267,
"ask-user-questions-fallback.test.cjs": 232,
"assumption-delta-checkpoint-e2e.test.cjs": 4596,
"assumption-delta.test.cjs": 1246,
"atomic-write-coverage.test.cjs": 43,
"audit-command-cutover.test.cjs": 5401,
"audit-fix-command.test.cjs": 150,
"augment-conversion.test.cjs": 85,
"augment-upgrades.test.cjs": 8688,
"autonomous-allowed-tools.test.cjs": 29,
"autonomous-converge.test.cjs": 416,
"autonomous-decomposition.test.cjs": 48,
"autonomous-interactive.test.cjs": 42,
"autonomous-to-flag.test.cjs": 49,
"autonomous-ui-steps.test.cjs": 114,
"backwards-compat-phase-id.test.cjs": 49,
"branch-no-track-guard.test.cjs": 102,
"broken-windows.test.cjs": 12686,
"bugs-1656-1657.test.cjs": 281,
"capability-cli.test.cjs": 43755,
"capability-command-dispatch.test.cjs": 218,
"capability-consent.test.cjs": 7222,
"capability-consumption.test.cjs": 393,
"capability-ledger.test.cjs": 1211,
"capability-lifecycle.test.cjs": 5491,
"capability-loader.test.cjs": 1208,
"capability-manifest-version.test.cjs": 435,
"capability-matrix-sync.test.cjs": 26,
"capability-precedence-parity.test.cjs": 118,
"capability-registry.test.cjs": 36285,
"capability-source.test.cjs": 1141,
"capability-state.test.cjs": 7930,
"capability-trust.test.cjs": 161,
"capability-writer.test.cjs": 2794,
"chain-flag-plan-phase.test.cjs": 58,
"changeset-cli.test.cjs": 5900,
"changeset-github-release-notes.test.cjs": 1201,
"changeset-lint.test.cjs": 1296,
"changeset-new.test.cjs": 261,
"changeset-parse.test.cjs": 178,
"changeset-render.test.cjs": 43,
"changeset-serialize.test.cjs": 44,
"check-env.test.cjs": 9683,
"check-gap-analysis-plan-post-e2e.test.cjs": 14843,
"check-glossary-refs.test.cjs": 1546,
"check-predicate.test.cjs": 204,
"check-tdd-review-checkpoint-e2e.test.cjs": 5991,
"check-ui-plan-gate.test.cjs": 401,
"check-ui-safety-gate.test.cjs": 1935,
"check-update-config-dir.test.cjs": 394,
"ci-rebase-check.test.cjs": 1634,
"ci-test-job-timeout-budget.test.cjs": 82,
"ci-test-scope.test.cjs": 44131,
"cjs-command-router-adapter.test.cjs": 6166,
"claude-imperative-reference.test.cjs": 149,
"claude-md-path.test.cjs": 4212,
"claude-md.test.cjs": 11827,
"claude-orchestration-command-router.test.cjs": 2863,
"claude-orchestration.test.cjs": 1618,
"claude-skills-migration.test.cjs": 126,
"cleanup-branch-pruning.test.cjs": 73,
"cli-exit.test.cjs": 1042,
"cline-beforetool-upgrade.test.cjs": 64,
"cline-dispatch-degradation.test.cjs": 69,
"cline-imperative-reference.test.cjs": 115,
"cline-install.test.cjs": 3360,
"cline-model-override-upgrade.test.cjs": 82,
"cline-support.test.cjs": 32,
"clock-seam.test.cjs": 9641,
"close-phase-todos-padded-resolves.test.cjs": 712,
"close-phase-todos-stage-deletion.test.cjs": 23,
"clusters.test.cjs": 68,
"code-review-agent-skills.test.cjs": 33,
"code-review-command.test.cjs": 570,
"code-review-flags.test.cjs": 106,
"code-review-pipeline-regression.test.cjs": 258,
"code-review-summary-parser.test.cjs": 138,
"code-review.test.cjs": 2592,
"codebuddy-install.test.cjs": 3870,
"codebuddy-upgrades.test.cjs": 2201,
"codex-config.test.cjs": 118852,
"codex-declarative-reference.test.cjs": 101,
"command-arg-projection.test.cjs": 67,
"command-contract.test.cjs": 866,
"command-routing-hub.test.cjs": 29374,
"commands.test.cjs": 80272,
"commit-docs-bypass.test.cjs": 2116,
"commit-files-deletion.test.cjs": 2759,
"commit-files-pathspec.test.cjs": 6175,
"concurrency-safety.test.cjs": 11518,
"config-field-docs.test.cjs": 1319,
"config-get-default.test.cjs": 16526,
"config-loader.test.cjs": 8375,
"config-schema.property.test.cjs": 6073,
"config.test.cjs": 128262,
"configuration-migrate-config.test.cjs": 2451,
"context-enrichment.test.cjs": 70,
"context-index-sync.test.cjs": 140,
"context-predicates-query.test.cjs": 14493,
"context-predicates.property.test.cjs": 419,
"context-predicates.test.cjs": 285,
"context-utilization.property.test.cjs": 187,
"context-utilization.test.cjs": 106,
"context7-plugin-grant-parity.test.cjs": 170,
"continuation-grammar-parity.test.cjs": 116,
"contributor-standards.test.cjs": 259,
"conventional-title.property.test.cjs": 282,
"conventional-title.test.cjs": 202,
"copilot-install.test.cjs": 50303,
"copilot-upgrades.test.cjs": 4932,
"core-utils.test.cjs": 521,
"coverage-metadata-parser.test.cjs": 10083,
"coverage-uat-routing.test.cjs": 2242,
"cross-ai-execution.test.cjs": 382,
"cursor-conversion.test.cjs": 59,
"cursor-dispatch-upgrade.test.cjs": 33,
"cursor-hook-bus-upgrade.test.cjs": 76,
"cursor-hooks.test.cjs": 408,
"cursor-imperative-reference.test.cjs": 80,
"cursor-reviewer.test.cjs": 117,
"debug-session-management.test.cjs": 94,
"debug-session-manager-commit.test.cjs": 1696,
"debugger-bug-taxonomy.test.cjs": 105,
"debugger-fix-acceptance.test.cjs": 71,
"debugger-prevention.test.cjs": 69,
"debugger-rca-branching.test.cjs": 59,
"debugger-repro-hardening.test.cjs": 56,
"debugger-sbfl.test.cjs": 176,
"debugger-semantic-recall.test.cjs": 66,
"decisions.test.cjs": 12151,
"declarative-reference-antigravity.test.cjs": 1490,
"declarative-reference-augment.test.cjs": 2001,
"declarative-reference-codebuddy.test.cjs": 1357,
"declarative-reference-copilot.test.cjs": 1644,
"declarative-reference-windsurf.test.cjs": 1663,
"declarative-reference-zcode.test.cjs": 1500,
"defaults-json-fallback.test.cjs": 161,
"derive-progress.property.test.cjs": 240,
"discord-release-summary.test.cjs": 75,
"discuss-all-flag.test.cjs": 70,
"discuss-checkpoint.test.cjs": 88,
"discuss-mode.test.cjs": 438,
"discuss-phase-power.test.cjs": 90,
"dispatcher.test.cjs": 14429,
"docs-parity-live-registry.test.cjs": 613,
"docs-update.test.cjs": 7300,
"drift-detection.test.cjs": 7147,
"edge-probe-docs-fixtures.test.cjs": 57,
"edge-probe-planner-contract.test.cjs": 28,
"edge-probe-spec-phase-contract.test.cjs": 48,
"edge-probe.test.cjs": 1274,
"edit-phase.test.cjs": 174,
"effort-surface-axis.test.cjs": 6187,
"effort-sync-installed-runtime.test.cjs": 1523,
"emitted-attribution.test.cjs": 174010,
"emitted-provenance.test.cjs": 32365,
"ensure-runtime-build.test.cjs": 6792,
"eslint-rules.test.cjs": 1622,
"estimate-calibrate.test.cjs": 10138,
"estimate-loop-convergence.test.cjs": 13467,
"eval.property.test.cjs": 232,
"eval.test.cjs": 82,
"event.test.cjs": 90,
"execute-mvp-tdd-gate.test.cjs": 1710,
"execute-phase-active-flags.test.cjs": 191,
"execute-phase-step-5-5-deviation-doc.test.cjs": 80,
"execute-phase-wave.test.cjs": 2068,
"execute-phase-worktree-artifacts.test.cjs": 141,
"execute-phase-worktree-guard.test.cjs": 3527,
"execute-wave-post-gate-pipeline-e2e.test.cjs": 8859,
"executor-mvp-tdd-section.test.cjs": 123,
"explore-command.test.cjs": 95,
"external-descriptor-confinement.test.cjs": 75,
"external-descriptor-loader-wiring.test.cjs": 214,
"external-job-waiting.test.cjs": 72,
"external-job.test.cjs": 157,
"extract-learnings.test.cjs": 122,
"extraction-discipline-consistency.test.cjs": 52,
"feat-2296-provider-escalation.test.cjs": 28336,
"federated-config-key-removal.test.cjs": 111,
"federated-config-loadconfig.test.cjs": 642,
"federated-config.test.cjs": 202,
"few-shot-calibration.test.cjs": 105,
"fix-1941-quick-worktree-stale-base.test.cjs": 61,
"fix-2068-resolve-execution-dynamic-routing.test.cjs": 5656,
"fix-2136-clock-local-today.test.cjs": 555,
"fix-2138-ship-note-lost-on-merge.test.cjs": 55,
"fix-2194-review-timeout-guidance.test.cjs": 39,
"fix-2196-debug-agent-handoff.test.cjs": 58,
"fix-2257-debug-nonterminal-resume.test.cjs": 46,
"fix-2284-hermes-agent-delegate-task-projection.test.cjs": 8516,
"fix-2285-claude-orchestration-wiring.test.cjs": 4018,
"fix-2287-deferred-items-reader.test.cjs": 3324,
"fix-2289-context-monitor-event-allowlist.test.cjs": 4290,
"fix-2297-resolve-model-ids-runtime-scoping.test.cjs": 195,
"fix-2337-add-todo-severity.test.cjs": 68,
"fix-2358-review-temp-path-scoping.test.cjs": 84,
"fix-2494-review-claude-gemini-empty-guard.test.cjs": 161,
"fix-2587-cursor-hook-workspace-roots.test.cjs": 3751,
"fix-2589-workflow-jq-dependency.test.cjs": 186,
"fix-2590-workflow-script-contract.test.cjs": 2504,
"fix-2598-opencode-background-dispatch.test.cjs": 40,
"fix-2603-kimi-code-host-matrix.test.cjs": 190,
"fix-2605-review-local-server-empty-guard.test.cjs": 100,
"fix-2608-commit-staging-failure.test.cjs": 7752,
"fix-2615-effortsurface-matrix-parity.test.cjs": 261,
"fix-2717-cursor-windsurf-codex-commonjs-marker.test.cjs": 9415,
"fix-2794-review-qwen-empty-guard.test.cjs": 81,
"fixture-builder.test.cjs": 342,
"forensics.test.cjs": 107,
"format-github-release-notes.test.cjs": 193,
"frontmatter-cli.test.cjs": 16119,
"frontmatter.property.test.cjs": 2602,
"frontmatter.test.cjs": 10076,
"frontmatter.unit.test.cjs": 543,
"gap-checker.property.test.cjs": 11380,
"gate-predicate-evaluator.test.cjs": 296,
"gates-taxonomy.test.cjs": 66,
"gemini-runtime-removed.test.cjs": 5349,
"gen-context-index.test.cjs": 4858,
"gen-registry.test.cjs": 2902,
"getdirname-registry-derivation.test.cjs": 38,
"git-base-branch.test.cjs": 7151,
"global-config-home-fragment.test.cjs": 91,
"golden-install-tree.test.cjs": 27233,
"golden-parity-single-source.test.cjs": 123,
"graphify-auto-update.slow.test.cjs": 40040,
"graphify-command-cutover.test.cjs": 12649,
"graphify-graph-path.test.cjs": 487,
"graphify-query.test.cjs": 1285,
"graphify-visualization.test.cjs": 4536,
"graphify.test.cjs": 986,
"gsd-check-update-worker-platform-gate.test.cjs": 1485,
"gsd-mcp-server-bin.test.cjs": 467,
"gsd-mcp-server.test.cjs": 1020,
"gsd-researcher-app-aware.test.cjs": 124,
"gsd-researcher-flow-diagram.test.cjs": 55,
"gsd-settings-advanced.test.cjs": 2870,
"gsd-statusline-git.property.test.cjs": 2359,
"gsd-statusline-state.property.test.cjs": 313,
"gsd-statusline.test.cjs": 7746,
"gsd-tools-path-refs.test.cjs": 261,
"gsd-workflow.structure.test.cjs": 191,
"gsd2-import.test.cjs": 5048,
"handshake-serialized.test.cjs": 259,
"hardcoded-paths.test.cjs": 501,
"health-validation.test.cjs": 16001,
"helpers-cleanup.test.cjs": 32,
"helpers-process-isolation.test.cjs": 44,
"hermes-dispatch-upgrade.test.cjs": 34,
"hermes-imperative-reference.test.cjs": 150,
"hermes-skills-migration.test.cjs": 132,
"hook-bus.test.cjs": 62,
"hook-validation.test.cjs": 128,
"hooks-opt-in.test.cjs": 8147,
"host-integration-descriptors.test.cjs": 410,
"host-integration-validator-parity.test.cjs": 107,
"host-integration.test.cjs": 11827,
"hub-logger-integration.test.cjs": 98,
"import-command.test.cjs": 189,
"ingest-docs.test.cjs": 3247,
"init-manager.test.cjs": 20228,
"init.test.cjs": 70651,
"injection-blocking-config.test.cjs": 1034,
"inline-plan-threshold.test.cjs": 1185,
"install-minimal-hooks.test.cjs": 145698,
"install-nested-layout.test.cjs": 3004,
"install-path-detection.test.cjs": 6137,
"install-regressions.test.cjs": 30663,
"install-runtime-artifacts.test.cjs": 32308,
"install-update-marker.test.cjs": 142,
"install-write-confinement.test.cjs": 4019,
"install.test.cjs": 112670,
"installer-migration-authoring.test.cjs": 119,
"installer-migration-install.integration.test.cjs": 59743,
"installer-migration-pi-extension-ext.test.cjs": 59,
"installer-migration-prune-stale-pristine.test.cjs": 92,
"installer-migration-rename-gsd-core.test.cjs": 141,
"installer-migration-report.test.cjs": 279,
"installer-migrations.test.cjs": 4771,
"intel-command-cutover.test.cjs": 6893,
"intel.test.cjs": 6937,
"inventory-headings-countfree.test.cjs": 37,
"inventory-manifest-sync.test.cjs": 76,
"io.test.cjs": 2030,
"ios-scaffold-safety.test.cjs": 73,
"issue-1575-agent-descriptor-parity.test.cjs": 3011,
"issue-1855-marketplace-manifest.test.cjs": 75,
"issue-2045-third-party-skills-surface.test.cjs": 2906,
"issue-2517-runtime-aware-profiles.test.cjs": 1842,
"issue-2639-codex-toml-neutralization.test.cjs": 42,
"issue-2695-codex-hook-set.test.cjs": 23677,
"issue-2701-nul-corrupted-validators.test.cjs": 4725,
"issue-2762-plan-reviews-chunked.test.cjs": 40,
"issue-2765-brace-expansion-lockfile.test.cjs": 2351,
"issue-2771-advisor-subagent-type.test.cjs": 21,
"issue-2772-discuss-phase-text-inconsistencies.test.cjs": 46,
"issue-2828-flat-roadmap-total-phases.test.cjs": 832,
"issue-2834-codex-install-model-ordering.test.cjs": 58,
"issue-429-comment-text-gate.test.cjs": 1560,
"issue-498-identity-drift-lint.test.cjs": 212,
"issue-498-package-identity.test.cjs": 118,
"issue-498-update-backup-runtime-dir.test.cjs": 31,
"issue-498-update-context.test.cjs": 589,
"issue-57-runtime-install-no-drift.test.cjs": 113,
"issue-607-cache-lineage.test.cjs": 55,
"issue-607-installer-dry-run.install.test.cjs": 821,
"issue-607-legacy-cleanup.test.cjs": 228,
"issue-69-surface-keeps-nested.test.cjs": 512,
"issue-766-plugin-manifest.test.cjs": 421,
"issue-787-cline-hooks-agents.test.cjs": 7701,
"issue-815-update-next-channel.test.cjs": 221,
"issue-844-manifest-version-sync.test.cjs": 306,
"issue-dedupe.test.cjs": 297,
"issue-version-gate.test.cjs": 220,
"kilo-imperative-reference.test.cjs": 69,
"kilo-upgrades.test.cjs": 12639,
"kimi-agent-converter.test.cjs": 7478,
"kimi-guard-normalization-parity.test.cjs": 62,
"kimi-guard-typed-payload-reads.test.cjs": 91,
"kimi-imperative-reference.test.cjs": 165,
"kimi-normalize-payload.property.test.cjs": 359,
"kimi-payload-field-shadowing.security.test.cjs": 1280,
"kimi-skill-converter.test.cjs": 63,
"kimi-tool-mapping.test.cjs": 33,
"kimi-upgrades.test.cjs": 7963,
"kimi-variant-disambiguation.test.cjs": 1745,
"learnings.test.cjs": 2333,
"lint-docs-required.test.cjs": 140,
"lint-legacy-dir-name.test.cjs": 1035,
"lint-pr-check-project-dir.test.cjs": 304,
"lint-regression-test-names.test.cjs": 1703,
"lint-resolution-provenance.test.cjs": 47,
"lint-skill-deps.test.cjs": 1875,
"lint-test-file-count.test.cjs": 1547,
"list-seeds.property.test.cjs": 195,
"list-seeds.test.cjs": 7535,
"locking-bugs-1909-1916-1925-1927.test.cjs": 3772,
"logger.test.cjs": 163,
"loop-hook-firing-spike.test.cjs": 41,
"loop-hooks-empty-points-e2e.test.cjs": 14192,
"loop-hooks-ship-pre-e2e.test.cjs": 3657,
"loop-hooks-verify-post-e2e.test.cjs": 7479,
"loop-host-contract.test.cjs": 362,
"loop-render-hooks.test.cjs": 8041,
"m8-writestatemd-scan-after-lock.test.cjs": 77,
"m9-statelock-write-error-orphan.test.cjs": 61,
"managed-hooks.test.cjs": 9104,
"markdown-sectionizer.test.cjs": 2218,
"markdown-table.test.cjs": 307,
"mcp-tool-inheritance.test.cjs": 374,
"mempalace-capture-headless-invocation.test.cjs": 181,
"methodology-artifact.test.cjs": 61,
"milestone-archive.test.cjs": 10365,
"milestone-helper.test.cjs": 86,
"milestone-prefixed-convention.test.cjs": 3461,
"milestone-summary.test.cjs": 1511,
"milestone.test.cjs": 32900,
"model-adapter.test.cjs": 62,
"model-alias-map.test.cjs": 50,
"model-catalog-runtime-defaults.test.cjs": 63,
"model-catalog-valid-tiers.test.cjs": 125,
"model-omit-when-inherit-guard.test.cjs": 6322,
"model-profiles.test.cjs": 2920,
"model-resolver.test.cjs": 37304,
"model-routing-spawn-threading.test.cjs": 360,
"multi-runtime-select.test.cjs": 168,
"mutation-matrix-ratchet.test.cjs": 407,
"mutation-matrix-stdin-eagain.test.cjs": 44,
"mutation-workflow-base-ref.test.cjs": 2979,
"mvp-phase-command.test.cjs": 65,
"mvp-phase-integration.test.cjs": 2771,
"mvp-phase-spidr.test.cjs": 64,
"new-milestone-clear-phases.test.cjs": 12089,
"new-project-mvp-prompt.test.cjs": 143,
"next-decimal-roadmap-scan.test.cjs": 4968,
"next-safety-gates.test.cjs": 60,
"next-up-clear-order.test.cjs": 133,
"no-bare-gsd-tools-command-position.test.cjs": 167,
"no-bare-npm-exec.rule.test.cjs": 229,
"no-crlf-fragile-split.rule.test.cjs": 436,
"no-dead-sdk-refs.test.cjs": 223,
"no-hardcoded-home-gsd-tools.test.cjs": 261,
"no-hardcoded-tmp.rule.test.cjs": 257,
"no-path-literal-in-assert.rule.test.cjs": 559,
"no-phantom-issue-refs.test.cjs": 1008,
"no-posix-mode-bit-assert.rule.test.cjs": 492,
"no-unguarded-nonportable-exec.rule.test.cjs": 638,
"non-claude-runtimes-registry-derivation.test.cjs": 34,
"normalize-path-in-content.rule.test.cjs": 1395,
"normalize-test-command.test.cjs": 170,
"npm-integrity-gate.test.cjs": 3769,
"onboard-command.test.cjs": 11426,
"opencode-command-dir-plural.test.cjs": 14426,
"opencode-imperative-reference.test.cjs": 78,
"opencode-permissions.test.cjs": 40,
"opencode-plugin-adapter.test.cjs": 3248,
"opencode-review-reconstruction.property.test.cjs": 314,
"orphan-worktree-detection.test.cjs": 1193,
"orphaned-hooks.test.cjs": 73,
"package-legitimacy-gate.test.cjs": 371,
"package-legitimacy.property.test.cjs": 179,
"package-legitimacy.test.cjs": 243,
"package-manifest.test.cjs": 137,
"package-name-single-source.test.cjs": 143,
"parallel-dependent-plans.test.cjs": 65,
"path-replacement.test.cjs": 499,
"pattern-mapper.test.cjs": 2907,
"pause-work-improvements.test.cjs": 299,
"perf-315-loadconfig-subrepo-scan.test.cjs": 65,
"perf-316-state-lock-buffer-alloc.test.cjs": 654,
"perf-317-context-monitor-fs.test.cjs": 6679,
"perf-407-planning-lock-buffer-alloc.test.cjs": 54,
"phase-command-router.test.cjs": 2634,
"phase-dependency-levels.test.cjs": 38,
"phase-estimation.test.cjs": 19034,
"phase-id-drift-guard.test.cjs": 589,
"phase-id.test.cjs": 1184,
"phase-lifecycle.test.cjs": 49,
"phase-locator.test.cjs": 410,
"phase.test.cjs": 158303,
"phase6-capability-docs.test.cjs": 70,
"phase6-capstone-conformance.test.cjs": 3974,
"phase6-planning-capabilities.test.cjs": 60,
"phase6-review-capabilities.test.cjs": 113,
"phases-command-router.test.cjs": 2148,
"pi-extension-reachability.test.cjs": 1709,
"pi-imperative-reference.test.cjs": 79,
"pi-upgrades.test.cjs": 322,
"pick-flag.test.cjs": 2970,
"plan-bounce.test.cjs": 1299,
"plan-phase-drift-guard.test.cjs": 688,
"plan-phase-mvp-flag.test.cjs": 991,
"plan-phase-ui-redirect.test.cjs": 201,
"plan-pre-hook-e2e.test.cjs": 7507,
"plan-review-convergence.test.cjs": 6033,
"planner-decomposition.test.cjs": 109,
"planner-estimate-emission.test.cjs": 88,
"planner-language-regression.test.cjs": 1153,
"planner-mvp-mode.test.cjs": 70,
"planning-workspace.test.cjs": 7034,
"platform-guard.unit.test.cjs": 462,
"playwright-ui-verify.test.cjs": 37,
"policy-138-nyquist-config-default.test.cjs": 59,
"policy-160-route0-resume.test.cjs": 249,
"policy-lint-shallow-checkout.test.cjs": 66,
"policy-release-no-npm-self-upgrade.test.cjs": 47,
"policy-shell-pinning.test.cjs": 781,
"portability-rule-disable-ban.test.cjs": 29608,
"portability-vocab-drift.test.cjs": 2089,
"post-planning-gaps-2493.test.cjs": 25540,
"pr-template-policy.test.cjs": 112,
"precommit-alias-drift-hook.test.cjs": 958,
"precondition-element.test.cjs": 1454,
"prepush-enterprise-email-hook.test.cjs": 535,
"probe-core.property.test.cjs": 391,
"probe-core.test.cjs": 218,
"product-name-purity.test.cjs": 51,
"profile-output.test.cjs": 8064,
"profile-pipeline.test.cjs": 5317,
"progress-forensic.test.cjs": 142,
"progress-mvp-display.test.cjs": 98,
"prohibition-enforcement.property.test.cjs": 160,
"prohibition-enforcement.test.cjs": 56619,
"prohibition-probe.docs-fixtures.test.cjs": 76,
"prohibition-probe.planner-contract.test.cjs": 79,
"prohibition-probe.schema.test.cjs": 179,
"prohibition-probe.spec-phase-contract.test.cjs": 128,
"prohibition-probe.validators.test.cjs": 67,
"prohibition-probe.verify-tier.test.cjs": 51,
"project-instruction-file-parity.test.cjs": 5695,
"project-root.test.cjs": 112,
"prompt-budget-cli.test.cjs": 3641,
"prompt-budget.property.test.cjs": 2106,
"prompt-budget.test.cjs": 103,
"prompt-budget.unit.test.cjs": 774,
"prompt-injection-scan.security.test.cjs": 1901,
"prompt-thinning.test.cjs": 193,
"prune-orphaned-worktrees.test.cjs": 1832,
"quick-branching.test.cjs": 1782,
"quick-commit-boundary.test.cjs": 110,
"quick-research.test.cjs": 4017,
"quick-session-management.test.cjs": 84,
"qwen-imperative-reference.test.cjs": 111,
"qwen-skills-migration.test.cjs": 244,
"qwen-upgrades.test.cjs": 5675,
"reachability-check.test.cjs": 88,
"read-guard.test.cjs": 6080,
"read-injection-scanner.property.test.cjs": 18583,
"read-injection-scanner.security.test.cjs": 6784,
"reapply-patches.test.cjs": 259,
"reapply-verify-hunks.test.cjs": 4674,
"redaction.test.cjs": 78,
"refactor-1390-t3-characterization.test.cjs": 290,
"registry-axes-parity.test.cjs": 154,
"registry-reviewer-parity.test.cjs": 85,
"registry-schema.test.cjs": 826,
"release-backmerge-invariants.test.cjs": 130,
"release-coverage-scope.test.cjs": 44,
"release-finalize-syncs-next-version.test.cjs": 31,
"release-tarball-smoke-bin-invocation.test.cjs": 57,
"release-tarball-smoke-workflow.test.cjs": 64,
"release-tarball-smoke.install.test.cjs": 156753,
"repo-invariants.test.cjs": 23695,
"repo-layout.test.cjs": 116,
"representative-corpus.test.cjs": 3967,
"require-fs-op-fallback.rule.test.cjs": 396,
"require-userprofile-with-home.rule.test.cjs": 397,
"research-agent-profiles.test.cjs": 188,
"research-cli.test.cjs": 10934,
"research-provider.property.test.cjs": 316,
"research-provider.test.cjs": 185,
"research-store.property.test.cjs": 299,
"research-store.test.cjs": 347,
"resolution.test.cjs": 218,
"resolve-dispatch-type.test.cjs": 92,
"reversibility-tagging.test.cjs": 3685,
"review-default-reviewers-config.test.cjs": 6287,
"review-default-reviewers-resolution.test.cjs": 53,
"review-default-reviewers-workflow.test.cjs": 222,
"review-lane-descriptor.test.cjs": 524,
"review-lane-invocation.test.cjs": 605,
"review-lane-runner.test.cjs": 326,
"review-model-config.test.cjs": 8789,
"review-reviewer-instances-config.test.cjs": 1689,
"review-reviewer-instances.test.cjs": 134,
"review-reviewer-selection.test.cjs": 85,
"reviewer-config-federation.test.cjs": 5448,
"reviewer-docs-parity.test.cjs": 12981,
"reviewer-lane-declarations.test.cjs": 145,
"reviewer-manifest-body.test.cjs": 1243,
"reviewer-trust-disclosure.test.cjs": 808,
"roadmap-command-router.test.cjs": 87,
"roadmap-mode-field.test.cjs": 2499,
"roadmap-parser.test.cjs": 30303,
"roadmap-phase-fallback.test.cjs": 3910,
"roadmap-upgrade.test.cjs": 536,
"roadmap.test.cjs": 51467,
"roadmapper-granularity.test.cjs": 6335,
"run-tests-harness.test.cjs": 194169,
"run-with-timeout.test.cjs": 18838,
"runtime-artifact-install-plan.test.cjs": 98,
"runtime-artifact-layout-descriptor-drive.test.cjs": 293,
"runtime-artifact-layout-install-profiles.test.cjs": 2619,
"runtime-artifact-layout-surface.test.cjs": 2347,
"runtime-artifact-layout.test.cjs": 6450,
"runtime-config-adapter-registry.test.cjs": 235,
"runtime-converters.test.cjs": 771,
"runtime-flags.test.cjs": 63,
"runtime-homes-descriptor-drive.test.cjs": 489,
"runtime-homes.property.test.cjs": 378,
"runtime-label-policy.test.cjs": 183,
"runtime-launcher-parity.test.cjs": 2615,
"runtime-name-policy.test.cjs": 149,
"scan-command.test.cjs": 63,
"schema-drift.test.cjs": 5026,
"sdk-removal-query-family-dispatch.test.cjs": 2727,
"sdk-smoke.test.cjs": 104,
"secret-scan-lint.security.test.cjs": 4384,
"secure-phase-single-writer.test.cjs": 49,
"secure-phase.test.cjs": 287,
"security-dead-exports.regression.test.cjs": 61,
"security-prompt-injection.security.test.cjs": 9278,
"security-scan.security.test.cjs": 11821,
"security.test.cjs": 1590,
"seed-scan-new-milestone.test.cjs": 72,
"semver-compare.test.cjs": 144,
"settings-integrations.test.cjs": 15868,
"settings-jsonc.test.cjs": 133,
"sh-hook-paths.test.cjs": 133,
"shell-command-projection-dispatch.test.cjs": 4647,
"shell-command-projection-path-sep.test.cjs": 193,
"skill-frontmatter-contract.test.cjs": 1149,
"skill-manifest.test.cjs": 4759,
"slash-command-namespace.test.cjs": 5158,
"slurm-adapter.test.cjs": 59,
"smart-entry.unit.test.cjs": 2494,
"spawn-liveness-banner.test.cjs": 174,
"spec-phase-probe-reachability.test.cjs": 210,
"spec-section.test.cjs": 620,
"stale-bake-guard.test.cjs": 462,
"state-acquirestatelock-non-eexist.test.cjs": 199,
"state-command-cutover.test.cjs": 1147,
"state-document.test.cjs": 454,
"state-io.test.cjs": 67,
"state-prune.test.cjs": 7892,
"state-rebuild-cli.test.cjs": 3037,
"state-rebuild.test.cjs": 134,
"state-transition.test.cjs": 352,
"state.test.cjs": 131709,
"stats-mvp-display.test.cjs": 754,
"subagent-timeout.test.cjs": 7278,
"surface-empty-manifest-agents.test.cjs": 184,
"surface-md-paths.regression.test.cjs": 55,
"sync-next-version.test.cjs": 91,
"table-schema-drift-lint.test.cjs": 231,
"tdd-mode.test.cjs": 10230,
"teams-status.test.cjs": 3130,
"temp-subdir.test.cjs": 94,
"template.test.cjs": 5352,
"test-failure-reasons.test.cjs": 337,
"test-gate-watch-mode.test.cjs": 136,
"thinking-model-guidance.test.cjs": 212,
"thinking-partner.test.cjs": 799,
"thread-session-management.test.cjs": 65,
"todos-done-rename-guard.test.cjs": 235,
"trace-correlation.test.cjs": 66,
"tracer-bullet.test.cjs": 3119,
"trae-imperative-reference.test.cjs": 79,
"trae-upgrades.test.cjs": 5069,
"transition-verification-gate.test.cjs": 47,
"tsconfig-noemit.test.cjs": 7241,
"uat-predicate.test.cjs": 498,
"uat.test.cjs": 16989,
"ui-checker-adversarial-stance.test.cjs": 29,
"ui-consideration-probe-docs-fixtures.test.cjs": 81,
"ui-consideration-probe.test.cjs": 321,
"ui-review-next-guidance.test.cjs": 72,
"ui-safety-gate.test.cjs": 106,
"ultraplan-phase.test.cjs": 437,
"untrusted-input-isolation.test.cjs": 183,
"unusable-input.test.cjs": 438,
"update-custom-backup.test.cjs": 27765,
"validate-context.test.cjs": 5228,
"validate-registry.test.cjs": 2174,
"verification-overrides.test.cjs": 141,
"verification-status.test.cjs": 3372,
"verifier-behavior-unverified.test.cjs": 93,
"verifier-deferred-items.test.cjs": 91,
"verifier-mvp-section.test.cjs": 49,
"verifier-spotcheck-test-discipline.test.cjs": 107,
"verify-health.test.cjs": 35460,
"verify-mvp-uat.test.cjs": 76,
"verify-npm-publish.test.cjs": 54,
"verify-test-quality.test.cjs": 133,
"verify-work-auto-transition.test.cjs": 108,
"verify.test.cjs": 38878,
"vscode-browser-no-node-api.test.cjs": 54,
"vscode-extension-reachability.test.cjs": 1841,
"vscode-ide-reference.test.cjs": 153,
"vscode-lm-tools.test.cjs": 1894,
"vscode-subagent-dispatch.test.cjs": 2095,
"windows-robustness.test.cjs": 501,
"windsurf-conversion.test.cjs": 170,
"windsurf-hooks-bridge.test.cjs": 6161,
"windsurf-install.test.cjs": 66,
"workflow-compat.test.cjs": 140,
"workflow-guard-registration.test.cjs": 410,
"workflow-guard.test.cjs": 2286,
"workflow-maintainer-skip.test.cjs": 109,
"workflow-shell-pinning.test.cjs": 48,
"workflow-size-budget.test.cjs": 321,
"workflow-size.test.cjs": 216,
"workflow-step-tag-balance.test.cjs": 143,
"workspace.test.cjs": 7781,
"workstream-inventory.test.cjs": 77,
"workstream-name-policy.test.cjs": 36,
"workstream.test.cjs": 41535,
"worktree-base-ref.test.cjs": 272,
"worktree-baseref-install.test.cjs": 10423,
"worktree-cleanup.test.cjs": 3393,
"worktree-safety.test.cjs": 18865,
"worktree.test.cjs": 1034,
"write-set.test.cjs": 201
}
}