Commit f01adfa
* fix(pm): key a package-local gate invocation to its real path (#15342)
`check-self-test-wired` anchored `INVOCATION_RE` on the bare literal
`scripts/`, so lint.yml's `node packages/lint/scripts/check-reference-
carrier-shape.mjs --self-test` matched as a SUBSTRING and was filed under
`scripts/check-reference-carrier-shape.mjs` — a key with no file behind it.
Both directions were silent: the real file sits outside the root walk, so it
was in no population and never audited, and the phantom key could never be
reconciled against a carrier either.
Two anchors move, and only these:
- `INVOCATION_RE` consumes the directory prefix into the key and gains a
left boundary, so a path is keyed WHOLE. A leading `./` is stripped
(cut-rc.yml and release.yml import from `"./scripts/…"`, and keying those
elsewhere would drop two live invocations); `..` is not a prefix segment,
because a path this ROOT cannot resolve is how the phantom was minted.
- the population gains a second source: a script CI NAMES that lives outside
the root walk, admitted on the root walk's own terms (must exist, must
carry the literal in code). Not a second walk — see the comment in main().
Measured on the live corpus: 186 named paths, 0 without a file on disk
(before: exactly 1). Carriers 182 -> 183, members 168 -> 169, wired 164 -> 165.
Self-test grows two batteries — `left boundary` (6) and `live corpus` (3);
50 cases -> 59, floor 7 -> 9. No existing case is weakened.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
* fix(pm): discover a package-local gate invocation and key it to its real path (#15342)
`lint.yml` runs one gate by a package-local path — `node packages/lint/
scripts/check-reference-carrier-shape.mjs --self-test`, plus the bare
production invocation on the next line. Both tools that read that corpus
anchored on the literal `scripts/`, and failed in opposite ways.
`dispatch-gates` required `node ` to be followed IMMEDIATELY by `scripts/`,
so neither `DIRECT_CHECK_INVOCATION` nor `SELF_TEST_INVOCATION` matched the
step at all: the gate was in NO family, and `--residue` could not report it
either — it is absent from the universe the matched / silent / undetermined
buckets partition. Measured on `65846bc46` for a card editing that gate's own
file: `--commands` named it zero times, all 27 `--residue` mentions were the
dev's own changed path echoed back, and the step surfaced only in the
always-runs STEP tail, as one of the 33 CI steps the derivation names no
family for.
Both patterns gain the same directory prefix, spelled identically. A segment
must start with an alphanumeric or `_`, so `..` is refused — a path this ROOT
cannot resolve is how a phantom identity key gets minted. A `scripts/` segment
is still required, so no new species is admitted (`node packages/cli/bin/
run.js` stays out). Over 7472 tracked files:
check families discovered 252 -> 254 (+2, ZERO lost)
gate files 201 -> 202 (+1, ZERO lost)
watch-hint (gate, file) pairs 240947 -> 254181 (+13234, ZERO lost)
existing families re-attributed 0 — every pre-existing family's pair
count is byte-identical before and after
always-runs steps naming NO family 33 -> 32
The gate declares four subtree hints, so it lands in the derivation for cards
touching `packages/**`, `examples/**`, `scripts/**` and `apps/**`, and by
identity for a card editing its own file — not in the residue.
Two existing tail cases pinned the defect as a property. Neither is weakened:
each is inverted and gains a positive control, so the step's absence from the
tail cannot go green through a tail that stopped walking.
check-self-test-wired keyed the same path by SUBSTRING, filing it under
`scripts/check-reference-carrier-shape.mjs` — a key with no file behind it,
audited by nobody. `INVOCATION_RE` consumes the prefix and gains a left
boundary; the population gains a second source, admitted on the root walk's
own terms. Its two new skip predicates are membership in the walk's OWN
OUTPUT rather than `startsWith('scripts/')`: that re-spelling reaches the
dispatch derivation as the bare literal `scripts` and joined the shrink-only
escapable-literal species FRESH on both of this gate's families.
Self-tests grow four batteries: `left boundary` (6) and `live corpus` (3) in
check-self-test-wired (50 -> 59 cases, floor 7 -> 9), and eight fixture cases
plus two live pins in dispatch-gates.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 6ca9f93 commit f01adfa
2 files changed
Lines changed: 347 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | | - | |
| 155 | + | |
| 156 | + | |
156 | 157 | | |
157 | 158 | | |
158 | 159 | | |
159 | 160 | | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
160 | 196 | | |
161 | 197 | | |
162 | | - | |
| 198 | + | |
163 | 199 | | |
164 | 200 | | |
165 | 201 | | |
| |||
424 | 460 | | |
425 | 461 | | |
426 | 462 | | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
427 | 505 | | |
428 | 506 | | |
429 | 507 | | |
430 | 508 | | |
431 | 509 | | |
432 | 510 | | |
433 | 511 | | |
| 512 | + | |
434 | 513 | | |
435 | 514 | | |
436 | | - | |
| 515 | + | |
| 516 | + | |
437 | 517 | | |
438 | 518 | | |
439 | 519 | | |
| |||
496 | 576 | | |
497 | 577 | | |
498 | 578 | | |
| 579 | + | |
499 | 580 | | |
500 | 581 | | |
501 | 582 | | |
| 583 | + | |
502 | 584 | | |
503 | 585 | | |
504 | 586 | | |
505 | 587 | | |
506 | 588 | | |
507 | 589 | | |
508 | 590 | | |
509 | | - | |
| 591 | + | |
510 | 592 | | |
511 | 593 | | |
512 | 594 | | |
| |||
588 | 670 | | |
589 | 671 | | |
590 | 672 | | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
| 691 | + | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
| 702 | + | |
| 703 | + | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
| 717 | + | |
| 718 | + | |
| 719 | + | |
| 720 | + | |
| 721 | + | |
| 722 | + | |
| 723 | + | |
| 724 | + | |
| 725 | + | |
| 726 | + | |
591 | 727 | | |
592 | 728 | | |
593 | 729 | | |
| |||
702 | 838 | | |
703 | 839 | | |
704 | 840 | | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
| 855 | + | |
| 856 | + | |
| 857 | + | |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
| 862 | + | |
| 863 | + | |
| 864 | + | |
| 865 | + | |
| 866 | + | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
| 872 | + | |
| 873 | + | |
| 874 | + | |
| 875 | + | |
705 | 876 | | |
706 | 877 | | |
707 | 878 | | |
| |||
0 commit comments