Commit 4e3a496
Fixes #17959
Clause-②: no — comments, one self-test battery and its roster floor; the
reader and the accept set are byte-identical.
## Measured, not assumed
**One reader, two gates.** `readClause2Line` is exported here and
applied to the card's claim comment;
`scripts/check-changeset-no-major.mjs` imports the same function and
applies it to `github.event.pull_request.body` — that is the `Check
Changeset` step the ruling named. The fixed spelling is a POSITION rule:
the key opens its own line modulo decoration (spaces, one blockquote
mark, one list bullet, bold, backticks), the value token is first after
the colon and is exactly `yes` or `no`, and trailing prose after the
token is accepted by design. WHICH line is never consulted.
**It ran, and it fired.** Two `Check Changeset` runs on the same merged
head `b280ae29`:
- run `34684118255`, 2026-09-12T08:47:01Z — FAILURE, exit 1: "LEVEL
AXIS: NOT MEASURED", "declaration line: a near miss, not a declaration".
PR #17819 was OPENED with the key inside a backtick span the line then
talks on outside of — the #17098 QUOTED-AND-CONTINUED tell.
- run `34684357221`, 08:52:36Z (`edited`, same head) — SUCCESS: "LEVEL
AXIS: this PR declares clause-② `no`", quoting the bold-wrapped line 4.
So the card's question 2 answers PRESENT, bold admitted.
`check:pm-clause2-carriers` owed nothing: the `lint.yml` step runs
`--self-test` only, and the queue guard carries no clause-② leg.
**Outcome (a), and it needs no widening.** The bold form was already
admitted; the quoted-and-continued form was already refused. Widening
the spelling to clear that red would have refused the very form this
file's own remedy sentence prescribes. Declared and enforced agree, so
what lands is the PIN and the sentence that says so.
## What landed
- Docblock: POSITION means LINE-INITIAL, never TOP-OF-BODY, with the
#17819 evidence. No accept set, no exported symbol and no reader line is
touched.
- One self-test battery, 10 cases, holding both shapes of one sentence
from one measured PR; roster floor 20 to 21.
- `references/contract-review.md` unchanged: it states no spelling and
no placement convention, so there is no convention line to correct.
## Evidence
- self-test: 588 to 598 cases, exit 0 (`pnpm
check:pm-clause2-carriers`), before and after.
- ablation, from the committed state: the position walk truncated to the
top three lines, proved on disk by marker count and blob hash, restored
to the HEAD blob with `git diff HEAD` empty. Self-test exit 1, 9 of the
10 new cases red — the tenth is the deliberate single-line CONTROL —
plus 5 pre-existing cases that read the same rule.
- gates at head `7e185157`: `node scripts/pm/dispatch-gates.mjs
--commands --repo objectstack-ai/objectstack` derived 35 families; all
35 run in the foreground with exit codes captured before any pipe, all
0; `--ran` reconciles 35 derived / 35 run / 0 NOT-MEASURED (derived).
- `pnpm lint` over the whole repo (`eslint . --no-inline-config`): exit
0.
- the eight roster families whose roster sits under a path this diff is
in: six exit 0; `check:published-readme-exports` and `check:dts-closure`
exit 3 — PREREQUISITE NOT MET, no `dist/`. NOT MEASURED, not a red; both
judge built package type surfaces and this diff touches no package.
`skip-changeset`: `scripts/pm/**` publishes nothing — no published
package's `files[]` names `scripts`, and the root manifest is private.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01DAcomhvR9kKizeYgg89Vo8)_
---------
Co-authored-by: claude <noreply@anthropic.com>
1 parent 6a3bcd8 commit 4e3a496
1 file changed
Lines changed: 56 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
133 | 133 | | |
134 | 134 | | |
135 | 135 | | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
136 | 162 | | |
137 | 163 | | |
138 | 164 | | |
| |||
667 | 693 | | |
668 | 694 | | |
669 | 695 | | |
| 696 | + | |
670 | 697 | | |
671 | 698 | | |
672 | 699 | | |
673 | 700 | | |
674 | 701 | | |
675 | 702 | | |
676 | 703 | | |
677 | | - | |
678 | | - | |
679 | | - | |
| 704 | + | |
| 705 | + | |
| 706 | + | |
680 | 707 | | |
681 | 708 | | |
682 | 709 | | |
| |||
5089 | 5116 | | |
5090 | 5117 | | |
5091 | 5118 | | |
| 5119 | + | |
| 5120 | + | |
| 5121 | + | |
| 5122 | + | |
| 5123 | + | |
| 5124 | + | |
| 5125 | + | |
| 5126 | + | |
| 5127 | + | |
| 5128 | + | |
| 5129 | + | |
| 5130 | + | |
| 5131 | + | |
| 5132 | + | |
| 5133 | + | |
| 5134 | + | |
| 5135 | + | |
| 5136 | + | |
| 5137 | + | |
| 5138 | + | |
| 5139 | + | |
| 5140 | + | |
| 5141 | + | |
| 5142 | + | |
| 5143 | + | |
| 5144 | + | |
5092 | 5145 | | |
5093 | 5146 | | |
5094 | 5147 | | |
| |||
0 commit comments