* 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 on05b170e44(94%) and 18m14s on81eeb8a53(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` at05b170e44was an unrelated, already-fixed CONTEXT-INDEX.json drift (07603df8fre-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>
713 lines
30 KiB
JSON
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
|
|
}
|
|
}
|