Commit 5150053
Gate the entry-nameability invariant across every public spec entry (#12418)
Generalize the root-entry declaration-emit probe into a per-entry `check:`
gate: for each of the 17 module entries in `packages/spec`'s `exports` map,
compile a one-file consumer program that CALLS every callable export and
assert the declaration emitter reports nothing it cannot name.
Entries are deliberately never batched into one program — a program file
importing a subpath entry makes that entry's names nameable program-wide, so
a batched run reports zero leaks at full cost. The `--self-test` measures
that in both directions alongside a positive control, the repaired-fixture
negative control, and the declaration-emit canary.
Measured: 7 pre-existing leaks of the same class across 4 entries, recorded
in a hand-ratcheted, shrink-only ledger that is closed to new rows.
Claude-Session: https://claude.ai/code/session_01E5LFCYBJ3q2s6yW6oMLxwy
Co-authored-by: Claude <noreply@anthropic.com>1 parent bc56e18 commit 5150053
5 files changed
Lines changed: 859 additions & 0 deletions
File tree
- .github/workflows
- packages/spec
- scripts
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4258 | 4258 | | |
4259 | 4259 | | |
4260 | 4260 | | |
| 4261 | + | |
| 4262 | + | |
| 4263 | + | |
| 4264 | + | |
| 4265 | + | |
| 4266 | + | |
| 4267 | + | |
| 4268 | + | |
| 4269 | + | |
| 4270 | + | |
| 4271 | + | |
| 4272 | + | |
| 4273 | + | |
| 4274 | + | |
| 4275 | + | |
| 4276 | + | |
| 4277 | + | |
| 4278 | + | |
| 4279 | + | |
| 4280 | + | |
| 4281 | + | |
| 4282 | + | |
4261 | 4283 | | |
4262 | 4284 | | |
4263 | 4285 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
| 269 | + | |
269 | 270 | | |
270 | 271 | | |
271 | 272 | | |
| |||
0 commit comments