fix(ci): prune six phantom paths from the shard-timing snapshot (phantom weight skews shard balance and watchdog budgets) (#3043)
Third of the seven `scripts/__tests__` failures I diagnosed on #3035. This one is the mirror image of the release-check manifest: there the assertion was stale; **here the assertion was right the whole time and the data rotted.** ## Six phantom paths The committed shard-timing snapshot weighted six test files that no longer exist. Every one traces to a deliberate deletion: | deleted in | files | |---|---| | #2461 — meta-task auto-archive removal | `meta-chain-auto-close`, `meta-archive-guard-composition`, `self-healing-meta-archive-guards` | | #2467 — workflow-owned lifecycle foundation | `workflow-parity` | | #2477 — dependency-blocked-todo removal | `dependency-blocked-todo-report`, `dependency-blocked-todo-reporter` | The features went; their durations stayed. ## Why this is more than a red test The shard planner distributes work **by these durations**. Phantom weight is handed to a shard that has no such file to run: that shard finishes early while its siblings carry the real load. The watchdog budget is derived from the same numbers — which is the shape behind Full Suite runs being SIGKILLed at budgets that looked like hangs and were actually undercounted. ## What I changed, and what I did not Data hygiene only: an entry is removed **if and only if its path does not exist**. No duration was edited, and `capturedAt` is untouched and still inside the staleness budget — so this is not a re-measurement smuggled in as a cleanup, and the freshness assertion keeps whatever teeth it had. I did **not** regenerate the snapshot. That needs a real full-suite measurement run, it would rewrite every number, and the drift here is six dead paths, not wrong timings. ## Positive control Adding a single phantom path back fails the guard (11 pass / 1 fail), naming the file. So it still catches the next deletion that forgets its timings — which, on this evidence, is the normal way this file rots. ## Verification `node --test scripts/__tests__/ci-test-shard-timings.test.mjs` **12 passed** · `pnpm test:gate` 161 + 13 + 487 + 71 · lint — green. Diff is 6 deleted lines. Remaining from the seven: the release-check manifest (measured on #3035 — 10 of 16 seams dead, needs sizing as a real unit), `verify-fast` and `engine-vitest-gate-policy` (list drift), `plugin-authoring-docs` (a TOC anchor for a heading containing `&`), `release-prompt-gate` (dry-run exit ordering).
This commit is contained in: