Repository navigation
Commit f9a72c2
committed
fix(scripts): route every entry guard through one symlink-correct predicate
The `invokedDirectly` guard was hand-typed in ELEVEN distinct spellings
across 33 files in `scripts/` (the card estimated ~8), and nine of them
were wrong in the same invisible direction: node resolves symlinks for
the module graph but leaves `process.argv[1]` as the caller typed it, so
a script reached through a symlink compared two different paths, answered
false, and did nothing -- exit 0, no output.
Measured on origin/main, 31 of 33 went inert through a symlink. The one
that matters most is the governed-surface register:
scripts/pm/check-governed-merges.mjs --test AGENTS.md
direct : exit=3, "GOVERNED -- no seat arms auto-merge"
symlink : exit=0, no output
and EXIT_TEST_NOT_GOVERNED is 0, so through a symlink the register's
"this PR is GOVERNED" answer and its "NOT governed, ordinary queue
landing applies" clearance are the same exit code.
- adds `scripts/invoked-as.mjs` -- one predicate, pinned by a self-test
that drives a real probe through a real symlink, a differently-named
symlink, a percent-encoding path, `node <dir>`, and both import
directions. Aligned leg-for-leg with the sibling predicate in
`packages/cli/src/utils/invocation.ts`.
- rewrites all 33 sites to `isEntrypoint(import.meta.url)`.
- adds `check:entry-guard`, the class-closing gate: only `invoked-as.mjs`
may read `process.argv[1]`, so a twelfth spelling cannot be typed.
Three self-tests copy their own source into a synthetic checkout and
spawn it there; they now carry the sibling module too.
Part of #10086
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdCnBGcHeufjrq7drTD3wt1 parent 923c424 commit f9a72c2
37 files changed
Lines changed: 654 additions & 81 deletions
File tree
- .github/workflows
- scripts
- pm
- qa
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
155 | 175 | | |
156 | 176 | | |
157 | 177 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
305 | 305 | | |
306 | 306 | | |
307 | 307 | | |
| 308 | + | |
308 | 309 | | |
309 | 310 | | |
310 | 311 | | |
| |||
3640 | 3641 | | |
3641 | 3642 | | |
3642 | 3643 | | |
| 3644 | + | |
| 3645 | + | |
| 3646 | + | |
3643 | 3647 | | |
3644 | 3648 | | |
3645 | 3649 | | |
| |||
3710 | 3714 | | |
3711 | 3715 | | |
3712 | 3716 | | |
3713 | | - | |
| 3717 | + | |
3714 | 3718 | | |
3715 | 3719 | | |
3716 | 3720 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
| 112 | + | |
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
460 | | - | |
| 460 | + | |
461 | 461 | | |
462 | 462 | | |
463 | 463 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
86 | 87 | | |
87 | 88 | | |
88 | 89 | | |
| |||
562 | 563 | | |
563 | 564 | | |
564 | 565 | | |
565 | | - | |
| 566 | + | |
566 | 567 | | |
567 | 568 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
| 80 | + | |
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
| |||
474 | 475 | | |
475 | 476 | | |
476 | 477 | | |
477 | | - | |
| 478 | + | |
478 | 479 | | |
479 | 480 | | |
480 | 481 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | | - | |
113 | 112 | | |
| 113 | + | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| |||
1146 | 1146 | | |
1147 | 1147 | | |
1148 | 1148 | | |
1149 | | - | |
| 1149 | + | |
1150 | 1150 | | |
1151 | 1151 | | |
1152 | 1152 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
122 | | - | |
123 | 122 | | |
124 | 123 | | |
125 | 124 | | |
| 125 | + | |
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| |||
604 | 604 | | |
605 | 605 | | |
606 | 606 | | |
607 | | - | |
| 607 | + | |
608 | 608 | | |
609 | 609 | | |
610 | 610 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
| 120 | + | |
120 | 121 | | |
121 | 122 | | |
122 | 123 | | |
| |||
736 | 737 | | |
737 | 738 | | |
738 | 739 | | |
739 | | - | |
| 740 | + | |
740 | 741 | | |
741 | 742 | | |
742 | 743 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
| 107 | + | |
107 | 108 | | |
108 | 109 | | |
109 | 110 | | |
| |||
689 | 690 | | |
690 | 691 | | |
691 | 692 | | |
692 | | - | |
| 693 | + | |
693 | 694 | | |
694 | 695 | | |
695 | 696 | | |
| |||
0 commit comments