Repository navigation
Commit 01fd980
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9D3HAzRn9UnnjnvWeBJbjUjJ)_
Fixes #25108
Clause-②: no
Metadata-protocol: none
## What
`scripts/ci/spec-shape-retirements.json`: all five entries in
`retirements` are deleted, leaving `"retirements": []`. `$comment` is
byte-identical, and no other key exists.
- Why: the registry's own `$comment` says each entry is "deleted when
that card closes". All five downstream cards are closed `completed`.
- Why it matters: a stale entry still matches. While one stays, a new
break in the same objectui file with the same code and message reads
`known` instead of red.
- The entries removed name objectstack PRs #23836, #23846, #24442,
#24970 and #24778.
One file, +1 / −82. No gate script, workflow or package change. Nothing
publishes, so there is no changeset (`skip-changeset`). Precedent:
#23822.
## Measurements (against `origin/main` at `fc7b53ffbf`)
- **Downstream cards** (read through the REST API before the edit):
| entry (objectstack PR) | downstream card | state | closed |
|:--|:--|:--|:--|
| #23836 | objectstack-ai/objectui#12654 | closed `completed` |
2026-10-16T15:04Z |
| #23846 | objectstack-ai/objectui#12711 | closed `completed` |
2026-10-16T17:06Z |
| #24442 | objectstack-ai/objectui#13022 | closed `completed` |
2026-10-19T13:05Z |
| #24970 | objectstack-ai/objectui#13308 | closed `completed` |
2026-10-21T10:21Z |
| #24778 | objectstack-ai/objectui#13309 | closed `completed` |
2026-10-21T10:09Z |
- **`parseRegistry` accepts an empty array:**
`scripts/ci/spec-shape-gate.mjs:857`. The shape check at `:865` refuses
only a non-object, or a `retirements` that is not an array
(`!Array.isArray(doc.retirements)`). Per-entry rules run inside
`doc.retirements.forEach`, so zero entries raise zero problems. The
self-test pins this case (`:1470`, "an empty registry loads as zero
retirements").
- **The edited file, loaded by the real reader:** `parseRegistry(<the
edited file>)` returns `retirements.length === 0` and does not throw.
- **Self-test:** `node scripts/ci/spec-shape-gate.mjs --self-test` gives
`60/60 passed across 7 batteries`, both before and after the edit.
- **Other readers of the file:** only `scripts/ci/spec-shape-gate.mjs`
and `.github/workflows/spec-shape-gate.yml`. The workflow's `paths:`
filter (`:116`) names this file, so this PR runs its own `Spec Shape
Gate`.
## Gates
Derived by `node scripts/pm/dispatch-gates.mjs --commands --repo
objectstack-ai/objectstack` at `fc7b53ffbf`, with the one changed path.
Exit codes were captured before any pipe and reconciled with `--ran`:
"22 derived, 22 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero — all 22
recorded an exit code and none of them is 3)".
| Command | Exit |
|---|---|
| `node scripts/check-ci-filter-parity.mjs` | 0 |
| `node scripts/check-closing-keyword-parity.mjs` | 0 |
| `node scripts/check-closing-keyword-parity.mjs --self-test` | 0 |
| `node scripts/check-comment-mask-corpus.mjs` | 0 |
| `node scripts/check-position-name-fold-loaders.mjs` | 0 |
| `node scripts/check-position-name-fold-loaders.mjs --self-test` | 0 |
| `node scripts/check-scripts-symbol-anchors.mjs` | 0 |
| `node scripts/check-scripts-symbol-anchors.mjs --self-test` | 0 |
| `pnpm check:agent-test-spelling` | 0 |
| `pnpm check:bash32-floor` | 0 |
| `pnpm check:cli-command-ids` | 0 |
| `pnpm check:cross-package-test-inputs` | 0 |
| `pnpm check:driver-memory-census` | 0 |
| `pnpm check:entry-guard` | 0 |
| `pnpm check:gitlink-declared` | 0 |
| `pnpm check:nul-bytes` | 0 |
| `pnpm check:parse-guard` | 0 |
| `pnpm check:pnpm-filter-targets` | 0 |
| `pnpm check:pnpm-flag-spellings` | 0 |
| `pnpm check:refd-timer-probe` | 0 |
| `pnpm check:spec-shape-gate` | 0 |
| `pnpm check:watch-hint-literal` | 0 |
The first sweep ran in a checkout with no `node_modules`. Six commands
exited 3 (`PREREQUISITE NOT MET`): `check-ci-filter-parity`, both
`check-closing-keyword-parity` commands, `check-comment-mask-corpus`,
`check:cli-command-ids` and `check:driver-memory-census`. After `pnpm
install --frozen-lockfile` (exit 0, no tracked file changed), all 22
were re-run. The table shows that second sweep.
CI runs the rest of the families on this PR.
## Acceptance notes
- Done when (from the card): this PR's own path-filtered `Spec Shape
Gate` run concludes `success` with no "matched nothing" list. That run
is CI's to report. It cannot be measured locally.
- Not touched: the gate script's header and grammar. Unlike #23822, no
comment in `spec-shape-gate.mjs` or `spec-shape-gate.yml` names any of
the five entries, so the change is the JSON file alone.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01LKHDniRQSWjRJyDtacwpEd
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 97be89b commit 01fd980
1 file changed
Lines changed: 1 addition & 82 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 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 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
| 3 | + | |
85 | 4 | | |
0 commit comments