Repository navigation
Commit 1ce6ad4
docs(pm): eleven platform readings into the fact table — 23 rows, 3 in-place corrections, ceiling 425 to 448 (#17746)
Fixes #17680
Fixes #17239
Fixes #17563
Fixes #17677
Fixes #17710
Fixes #17754
One folded family plus one review-round rider, one file. Twenty-four new
rows and four in-place
corrections in
`.claude/skills/pm-dispatch/references/platform-readings.md`, plus the
one
`CEILINGS` entry the standing one-file exception prescribes. Nothing
else moves — not
`rest-channel.md`, not SKILL.md, not `check-clause2-carriers.mjs`, not
`check-half-states.mjs`.
## Dedupe counts (the standing exception's own condition)
**Candidates 33 / landed 26 readings / already present 7 (no edit) /
refused 0.**
Landed 26 readings = 24 new lines + 4 in-place corrections. Two readings
needed two lines each
under the 120-byte per-line cap, which is why 26 readings are 28
line-level changes.
| card | candidate | dedupe verdict |
|:--|:--|:--|
| 17680 | PR-body `Check Changeset` gate reads the clause-2 declaration
tolerantly | landed, 1 new row |
| 17680 | claim-comment limb's axis is line-initial PLACEMENT | landed,
2 new rows (tolerance · breakers + the import authority) |
| 17680 | the claim marker's own spelling, absent from the table |
landed, 2 new rows (spelling · the invisibility it causes) |
| 17239 | `PATCH /pulls` appends a bare footer, +58 B, keeping the sent
one | already present |
| 17239 | a footerless body on that same cell stores exactly one |
landed, 1 new row |
| 17239 | `POST /pulls` create leg, +90 B when the tail is not the block
| already present, in a stronger form (both directions, both channels) |
| 17239 | comment `PATCH` and issue-body `PATCH` carry a full block
through | already present (comment); issue half corrected in place below
|
| 17563 | every REST write through the egress proxy needs `Content-Type:
application/json` | landed, 1 new row |
| 17563 | the tell: the refusal's `documentation_url` is Claude Code's,
not GitHub's | landed, 1 new row |
| 17677 | MCP `issue_write` UPDATE eats a trailing rule+footer block and
reports success | landed, 1 new row |
| 17677 | bare REST `PATCH /issues` recognition is BLOCK-shaped |
landed, 1 in-place correction |
| 17677 | a bare footer with no rule line is not a footer, so a block is
appended (two) | landed, 1 new row |
| 17677 | the two unmeasured cells named as unmeasured | landed, 1 new
row |
| 17710 A1 | `needs:contract-review` is a merge gate in its own right |
landed, 1 new row |
| 17710 A2 | the two `mergeable_state` sequences across a ready flip |
landed, 1 new row |
| 17710 A3 | the echoed `merge_method` is inert | already present |
| 17710 A4 | a `failure` superseded by a later failure with a different
diagnosis | landed, 1 new row |
| 17710 A5 | an exit code is a field literal; the reading is the printed
verdict line | landed, 1 new row |
| 17710 A5 | the measured instance inside `check-governed-merges` |
landed, 1 new row |
| 17710 A6 | `check-half-states.mjs` does full-repo I/O even for
`--help` | landed, 1 new row |
| 17710 A6 | `nohup` inside a backgrounded tool call reports a false
exit 0 | landed, 1 new row |
| 17710 A7 | an unquoted heredoc delimiter expands every backtick in the
body | landed, 1 new row |
| 17710 A7 | a piped command's exit code is the pipe's last stage |
landed, 1 new row |
| 17710 A8 | exactly one footer, idempotent on its own form, a different
spelling yields more | already present (the three-block reading covers
the different-spelling half) |
| 17710 A8 | comment creation appends +58 B | already present |
| 17710 A9 | queue progress is read from the `event=merge_group` runs; a
quiet tip lags | already present |
| 17710 A9 | the queue branch name embeds the SPECULATIVE base | landed,
1 new row |
| 17710 A9 | the removal and the merge event arrive in no fixed order |
landed, 1 in-place correction |
| 17710 c2 | HTML entities do not decode inside an inline code span |
landed, 1 in-place correction |
| 17710 c2 | a bracketed placeholder inside a code span survives |
landed, 1 new row |
| 17710 c6 | the wake relay escapes its own rendering; judge the stored
body from a GET | landed, 1 new row |
| 17754 | `labels` and `type` in ONE bare-REST issue `PATCH` answers 500
and writes nothing; the same two fields as two writes both answer 200 |
landed, 1 new row (rider, admitted in this PR's own review) |
| review | a draft PR's `mergeable_state` is not the literal `draft` |
landed, 1 in-place correction (reviewer-authorised) |
The four in-place corrections, each because a new cell contradicts the
row rather than
extending it: the success-sequence row that keyed on the removal event
being followed by the
merge event within about a second; the issue-body `PATCH` row whose
"always exactly one" is
true of a full block and of no footer but false for a bare footer with
no rule line; the
write-entities prescription, true of body prose and false inside an
inline code span; and the
row asserting a draft PR always answers `draft` for `mergeable_state`,
which seven draft PRs
across two repos falsify — they answer `clean`, `blocked` or `unknown`
like any other PR.
## Line budget
| quantity | before | after |
|:--|--:|--:|
| `platform-readings.md` lines | 425 | 449 |
| `CEILINGS` entry for that file | 425 | 449 |
| net | | +24 |
Every new or changed line measures at or under the 120-byte per-line cap
(measured with `awk`
over the file: zero lines exceed 120 bytes). The raise is recorded as
ONE `ruledRaises` record
on the cross-file-move declaration, quoting the standing one-file
exception verbatim, dated
2026-09-12, delta 24 — the rider raised that record's delta rather than
adding a second, since
this is one increment. The declaration's ordinary-ruled-raise total
moves 100 to 124 while its
own `was` stays at 314. No other ceiling moves; no re-wrap was used as
payment.
## Gates
39 commands derived on the final diff with `node
scripts/pm/dispatch-gates.mjs --commands
--repo objectstack-ai/objectstack` (the derivation's own stderr names
the repo and the commit,
and derives the change set three-dot from the merge base). Every one
captured its exit code
before any pipe. All green, and the reconciliation confirms it:
- `dispatch-gates --ran` — **39 derived, 39 run, 0 NOT-MEASURED, 0
UNRUN**, and the zero is a
DERIVED one: all 39 recorded an exit code and none of them is 3.
- `pnpm --filter @objectstack/lint run check:doc-formula-expressions`
first exited **3 —
PREREQUISITE NOT MET** (two workspace packages unbuilt). That is NOT a
finding and not a
measurement; after `turbo run build --filter=@objectstack/formula
--filter=@objectstack/lint`
under the shared verify lock it exits **0**. It is also a live instance
of the A5 reading
this PR lands.
- `pnpm check:pm-dispatch-gates` exceeds the container's 600 s
foreground cap and was run
detached with a recorded PID, waited on in the foreground; verdict
`dispatch-gates
self-test: 1678 cases pass`, exit 0.
- `pnpm check:pm-skill-ratchet` — `platform-readings.md is 449 lines
(ceiling 449; headroom 0)`.
Path face: `node scripts/pm/check-governed-merges.mjs --pr 17746` prints
`GOVERNED — a human
merge is the review record for this PR` and exits **3** — the expected
verdict, and itself the
measured instance behind one of the landed rows.
## 维护者速读(草稿)
**改了什么。** 只动两个文件。`platform-readings.md` 加 24 行读数、就地更正 4 行;棘轮脚本里
只改这一个文件的 `CEILINGS` 数(425 → 449)并按脚本头部规定的形状补一条 `ruledRaises` 记录。
没有别的天花板移动,没有别的 skills 文件被碰。
**为什么改。** 六张卡都是同一类:平台行为被实测到了,而事实表里没有、或写得比代码窄。
写得比代码窄比缺席更险 —— 上一轮就有席位据一条过窄的规则去修一个本来没坏的东西。
其中三条跨席位后果最重:认领标记的拼写决定后继席位能不能看见本车道已被占;
REST 写侧少一个 header 就整个静默不写;标签与类型挤进同一次写会 500 且零落库。
**风险与代价(含回滚)。** 只是参考事实表,没有运行时代码、没有发布物,故挂 `skip-changeset`。
风险面是「写进去的读数是不是真的」,这由每行自带的实测标注与本 PR 的去重表承担。
回滚成本一个 revert:天花板与表的行数是同一笔提交里的一对,revert 后仍自洽。
**席位意见。** (待席位定稿)
**你要做的。** 这是治理面(`.claude/**`),⛔ 没有任何 agent 席位可以合它。
请人工确认后手合;若不同意某一行的措辞,指出行号即可,不必整体退回。
Authored in Claude Code session `session_01MCLBsUgfykL74aU716rzVK` —
durable attribution kept
in prose here, because this body is re-sent footerless on purpose (see
the landed row on that
cell) and the block below is the platform's own.
---
_Generated by [Claude Code](https://claude.ai/code)_
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 7baf04a commit 1ce6ad4
2 files changed
Lines changed: 126 additions & 5 deletions
File tree
- .claude/skills/pm-dispatch/references
- scripts/pm
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
| 16 | + | |
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
26 | 28 | | |
27 | 29 | | |
28 | 30 | | |
| |||
70 | 72 | | |
71 | 73 | | |
72 | 74 | | |
| 75 | + | |
73 | 76 | | |
74 | 77 | | |
75 | 78 | | |
| |||
114 | 117 | | |
115 | 118 | | |
116 | 119 | | |
| 120 | + | |
| 121 | + | |
117 | 122 | | |
118 | 123 | | |
119 | 124 | | |
| |||
276 | 281 | | |
277 | 282 | | |
278 | 283 | | |
| 284 | + | |
279 | 285 | | |
280 | 286 | | |
281 | 287 | | |
| |||
297 | 303 | | |
298 | 304 | | |
299 | 305 | | |
| 306 | + | |
300 | 307 | | |
301 | 308 | | |
302 | 309 | | |
303 | 310 | | |
304 | | - | |
| 311 | + | |
| 312 | + | |
305 | 313 | | |
306 | 314 | | |
307 | 315 | | |
| |||
321 | 329 | | |
322 | 330 | | |
323 | 331 | | |
| 332 | + | |
324 | 333 | | |
325 | 334 | | |
326 | 335 | | |
| |||
334 | 343 | | |
335 | 344 | | |
336 | 345 | | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
337 | 351 | | |
338 | 352 | | |
339 | 353 | | |
| |||
368 | 382 | | |
369 | 383 | | |
370 | 384 | | |
| 385 | + | |
| 386 | + | |
371 | 387 | | |
372 | 388 | | |
373 | 389 | | |
374 | 390 | | |
375 | 391 | | |
| 392 | + | |
376 | 393 | | |
377 | | - | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
378 | 398 | | |
| 399 | + | |
| 400 | + | |
379 | 401 | | |
380 | 402 | | |
381 | 403 | | |
| |||
387 | 409 | | |
388 | 410 | | |
389 | 411 | | |
| 412 | + | |
| 413 | + | |
390 | 414 | | |
391 | 415 | | |
392 | 416 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
766 | 766 | | |
767 | 767 | | |
768 | 768 | | |
769 | | - | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
| 777 | + | |
| 778 | + | |
| 779 | + | |
| 780 | + | |
| 781 | + | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
| 790 | + | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
| 846 | + | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
770 | 850 | | |
771 | 851 | | |
772 | 852 | | |
| |||
1353 | 1433 | | |
1354 | 1434 | | |
1355 | 1435 | | |
| 1436 | + | |
| 1437 | + | |
| 1438 | + | |
| 1439 | + | |
| 1440 | + | |
| 1441 | + | |
| 1442 | + | |
| 1443 | + | |
| 1444 | + | |
| 1445 | + | |
| 1446 | + | |
| 1447 | + | |
| 1448 | + | |
| 1449 | + | |
| 1450 | + | |
| 1451 | + | |
| 1452 | + | |
1356 | 1453 | | |
1357 | 1454 | | |
1358 | 1455 | | |
| |||
0 commit comments