Skip to content

docs(pm-skill): platform-readings diet — delete the readings a scripts/pm tool now holds (tool first, text second) - #22684

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-22452-platform-readings-diet
Oct 10, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-22452-platform-readings-diet

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #22452
Clause-②: no

W1 of the skills-lane diet program; the program anchor #22060 remains open for its later work items. Tool first, text second: every reading in .claude/skills/pm-dispatch/references/platform-readings.md that a scripts/pm tool now holds is deleted whole, each one named below with the tool and the self-test case that pins it. Nothing else in the file moves, no other reference file is edited, and no tool's judgement changes. The file's CEILINGS row in scripts/pm/check-skill-line-ratchet.mjs is lowered to the landed count.

The table: reading, the tool that holds it, action

Line numbers are the file at origin/main 243dd3c62.

reading (first words, base line) held by: tool, self-test battery and case action
L91 「落地相邻的写侧一则:GitHub 标签描述上限 100 字符…」 scripts/pm/check-label-desc-cap.mjs (pnpm check:pm-label-desc-cap, required in lint.yml): battery check-label-desc-cap self-test, cases exactly 100 characters passes and 101 characters fails deleted
L104 「官方指引:变更类请求间停 ~1 秒,mutation 按 5 倍计…」 scripts/pm/write-pace.mjs rule ① (DEFAULT_MIN_GAP_MS 3 s, above the ~1 s the text prescribed) and rule ⑤: batteries rule ①: the remainder is slept, and the pause is said out loud and rule ⑤: batch mode — the gap rises for an announced batch, and the estimate is printed deleted
L105 「批量重分诊这类把写挤在同一秒的扫动…」 scripts/pm/write-pace.mjs rules ① and ④: batteries rule ①: the remainder is slept, and the pause is said out loud and rule ④: the lease — one write in flight, fleet-wide, measured on real processes deleted
L107 「write-pace 把一次 dispatch 记作那一笔写(40/时不变)…」 scripts/pm/write-pace.mjs battery rule ②: the 41st is REFUSED, with a prescription; scripts/pm/fleet-write/dispatch.mjs battery the wiring: the POST is paced and on the roster, the reads are not, the token never reaches the log; scripts/pm/close-cards.mjs battery the relay pack: ONE card, ONE dispatch — comment → labels_remove → issue_patch — ONE write on the throttle (the text's 「每步一次 dispatch」 was already stale against it) deleted
L122 「判别式:该 415 的 documentation_url 指 Claude Code 不指 GitHub…」 scripts/pm/write-pace.mjs isProxyRefusal: battery rule ③: what writes a stop marker, how long it lasts, what it refuses, case ⭐ the egress PROXY's 403 is recognised by its body (measured shape): the message naming the proxy, or a documentation_url that is not GitHub's; scripts/pm/label-write.mjs battery the classifier: a 404 that is success, and a 403 that must not fall back, case ⭐ a 403 whose body is the egress PROXY's (measured shape) is the ROUTE — prerequisite — ⛔ never a rate limit, whatever the header says deleted
L232 「摘标签也没有加法端点:finding 定级这类只能整组写…」 scripts/pm/label-write.mjs removes by directed DELETE /issues/{n}/labels/{name}: battery the arithmetic: union, difference, and the two idempotent no-ops, case …one directed DELETE per removal actually present; battery the classifier: a 404 that is success, and a 403 that must not fall back, case a 404 on a DIRECTED DELETE is the label already being gone; relay scripts/pm/fleet-write/execute.mjs battery the idempotent removal: a 404 on a directed label DELETE is success (the text's claim was stale against both) deleted
L359 「平台在尾部 --- 前后正反两向归一空行:比对正文只按首个差异偏移…」 scripts/pm/post-stamped.mjs exact-bytes classifier: battery the re-anchored footer: a newline the platform MOVED is not a byte lost, case ⛔ …so "equal length" is NOT the test and never became one; battery the collapsed blank: the footer block's own separator is not a content byte; every relay body op is read back through that classifier (scripts/pm/fleet-write/dispatch.mjs battery the verdict: post-stamped's own classifier, imported — …) deleted
L360 「送全块即触发该归一 ⇒ post-stamped 的 body 档把这点空白判 mutated…」 scripts/pm/post-stamped.mjs battery the collapsed blank: the footer block's own separator is not a content byte, cases …and it LANDED: exit 0, ⛔ not the 4 this exact shape answered on every one of them and …named by its OWN word, ⛔ never the re-anchor's, which says nothing was lost (the tool no longer judges this mutated; the text was stale) deleted
L419 「内联双引号 JSON 建卡:标题反引号标识符被 shell 以 root 展开…」 scripts/pm/issue-create.mjs battery the arguments: files not argv for prose, exactly one title source, a repo shape, case ⛔ a --title carrying a backtick or a dollar sign is refused — the shell already had its turn deleted

Nine bullets, each deleted whole; no fragment of a bullet was cut and nothing was re-wrapped.

The rule, stated once

Head line 3 is replaced in place (one line for one line, 118 bytes, under the ratchet's 120-byte line rule): 「见 reading-discipline.md;工具先行、文本其次:读数先落工具或自测行,工具守不住的才留本表。」 git grep -n '工具先行' over .claude/, AGENTS.md and CLAUDE.md answers 1 hit, this line; tool first and text second answer 0.

Line budget

surface before (243dd3c62) after (e74ef6211)
platform-readings.md 469 lines, 48,048 bytes 460 lines, 47,068 bytes
whole references/ tree (31 files, lanes/ included) 2,301 lines 2,292 lines
its CEILINGS row 469 460 (headroom 0)

The file's MAX_TABLE_ROW_BYTES pin stays 0 (it carries no table row).

Zero checks

git grep -n -F PHRASE -- .claude/skills/pm-dispatch/ at e74ef6211, one distinctive phrase per deleted reading:

phrase hits
「标签描述上限 100 字符」 0
「mutation 按 5 倍计」 0
「批量重分诊这类把写挤在同一秒」 0
「把一次 dispatch 记作那一笔写」 0
「指 Claude Code 不指 GitHub」 0
「摘标签也没有加法端点」 0
「前后正反两向归一空行」 0
「净零字节良性告警」 0
「标题反引号标识符被 shell 以 root 展开」 0
positive control, a kept reading: 「上限 90 s / 5 min 不动」 1

Gates, all run at e74ef6211 after the final commit

  • pnpm check:pm-skill-ratchet exit 0: ✓ check-skill-line-ratchet self-test: 157 cases pass., … platform-readings.md is 460 lines (ceiling 460; headroom 0)., cross-file move into … platform-readings.md: +2 (314→460, less 144 lines of ordinary ruled raise) against a net source decrease of 20.
  • pnpm check:pm-skill-id-lint exit 0: ✓ check-skill-id-lint: 34 file(s) clean.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths, change set from the merge base) derived 39 families; all 39 ran with exit 0, and --ran answers 39 derived, 39 run, 0 NOT-MEASURED, 0 UNRUN. check:doc-formula-expressions first answered PREREQUISITE NOT MET (exit 3, @objectstack/formula and @objectstack/lint unbuilt), then exit 0 after building those two. pnpm check:pm-dispatch-gates (fast tier) exit 0: 1825 cases pass; 6 slow section(s) deferred.
  • Outside the derived set, run because they read the edited ratchet or were named in the dispatch: pnpm check:pm-governed-prose, pnpm check:merged-result, node scripts/check-published-list-mirrors.mjs, node scripts/check-skills-token-ratchet.mjs, all exit 0.

Acceptance notes

  • The dispatch expected the stamp contract, relative comment ids, the AND-label listing, the title byte cap, the ONE-OF guard, the four-step label write, the no-run UNCONFIRMED rule and the H rows in this file. Measured at 243dd3c62, none of them is stated here, except the MCP list-union reading (L269 to L275), which is an MCP channel measurement and stays. So the diet is nine lines, not a section rewrite.
  • Kept on purpose, with the reason each stays (doubt keeps a reading):
    • L106, the relay timings: the fleet-write/dispatch.mjs header says neither ceiling is a measured start latency yet, so this file holds the only record of the probe.
    • L228 to L230, the MCP issue_write whole-set hazards: the label-write.mjs header cites them as its measured basis.
    • L231, the 403-session additive reading: label-write.mjs sends a proxy-shaped 403 to PREREQUISITE with no fallback, so it does not hold the reading as written.
    • L340 to L358, the PR-body footer cells: AGENTS.md points here, and PR_CREATE_FOOTER_TAIL in fleet-write/dispatch.mjs cites the fourth shape.
    • L361, the report parse rule: H52 parses the balanced object, which is not the last-right-brace rule the text states.
    • L363 to L367, the clause-② and Claim: marker readings: no self-test pins the tolerated prefixes, and post-stamped.mjs passes a bolded claim line unjudged.
    • L412 to L418, the issue footer and PATCH cells: the post-stamped.mjs header cites them as the governed fact table.
    • L420, the heredoc expansion: the hazard happens while writing the file, before any tool reads it.
    • L429 and L430, the shallow check-governed-merges refusal: the tool holds the refusal, but L430 is an instruction no tool holds.
  • Latent ratchet trap for the next diet: the CROSS_FILE_MOVES entry for this file records 144 lines of ordinary ruled raises above its was of 314. Any ceiling of 457 or less reds crossFileMoveVerdict as an over-claim until a ruledRaises record is retired. Measured with the exported function on the live map: 460 and 458 green, 457 and 440 red. This PR lowers by 9 and stays clear. A deeper diet must retire records in the same edit, and that is a change to CROSS_FILE_MOVES, not to a CEILINGS row.
  • Drift noticed, not filed (prose only, no reader acts on it): the post-stamped.mjs header cites this file as :410 and :411, but those readings sat at L414 and L415 before this PR and sit at L406 and L407 after it. L429 prescribes git fetch --shallow-since=, while check-governed-merges prints fetch --unshallow and git-history.mjs records that --shallow-since can shorten history. rest-channel.md keeps its own request-body prescription (never inline double-quoted strings), which is related to the deleted L419 but is not the same reading. Carrier: none.

维护者速读(草稿)

  • 改了什么:PM 技能的平台读数表删掉 9 条已由 scripts/pm 工具自动把关的条目(写入节流、中继计数、代理拒绝判别、按名摘标签、页脚回读、标签描述长度、标题反引号),并在表头写明「工具先行、文本其次」;该文件行数上限 469 → 460。
  • 为什么改:这张表每个席位每次运行都要整读;工具已经拦住的事再写一遍只是重复花阅读成本,且其中 4 条已与工具实际行为不符,留着反而误导。
  • 风险与代价(含回滚):只删文字、不改任何工具判定;每条删除都对应一个具名自测用例。回滚 = 还原本 PR 这一个提交(两文件)。
  • 席位意见:
  • 你要做的:扫一眼上方「The table」的 9 行,对哪条删除有异议就在本 PR 评论点名行号;无异议则不必动手,本 PR 属 Tier S,由技能席位达档复核后经队列落地。

Generated by Claude Code

… tool now holds

Tool first, text second: nine readings that a scripts/pm tool now enforces
(write-pace pacing and budget, the relay dispatch count, the proxy refusal
discriminator, directed label removal, the footer read-back classes, the
label-description cap, the argv title refusal) are deleted whole; the rule is
stated once in the head line. The file shrinks 469 -> 460 and its CEILINGS row
is lowered to match.

Claude-Session: https://claude.ai/code/session_01RdnZdPZH9ByduzPRWuH9tN
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Oct 10, 2026
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 10, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: e74ef6211acd2fbbf48a5d34e0554b114440370d
Local-runs: none

Skills seat 1 (seat post #7623), session_01RdnZdPZH9ByduzPRWuH9tN, read at 2026-10-10T13:42Z; Tier S (.claude/**), the at-tier record this seat owes before the relay flip. Inputs: git diff 243dd3c62 e74ef6211 (two files, +4/−11), the PR body, the card #22452 (claim 6096426181, report 6097963156), the anchor #22060's W1 text, and this head's check-runs (Lint & Repo Gates success, Type Check · workspace success, 19 success · 11 skipped (every skip in the expected-skips roster, exit 0) · 0 failed on e74ef6211; mergeable_state clean). The served model was re-read from get_session before this write and equals the constant's value.

① Derived judgments

  1. Scope is the card's, exactly. Nine bullets deleted whole (base lines 91, 104, 105, 107, 122, 232, 359, 360, 419); the head line 3 replaced in place, one line for one line; the file's CEILINGS row 469 → 460 with a two-line provenance comment in the map's own convention (five earlier lowerings carry the same shape). No section heading removed; no other reference file touched; no fragment of a bullet cut; nothing re-wrapped. Right.
  2. Every deletion is held by a named tool and case, verified at the head with git grep -F: exactly 100 characters passes (check-label-desc-cap), the 41st is REFUSED and isProxyRefusal (write-pace), one directed DELETE per removal (label-write), the idempotent removal: a 404 (fleet-write/execute), the relay pack: ONE card, ONE dispatch (close-cards), the re-anchored footer and the collapsed blank (post-stamped), carrying a backtick or a dollar sign (issue-create). Four of the nine were already stale against their tool; deleting a stale reading is the diet's purpose. Right.
  3. The rule stated once. 「工具先行、文本其次」 lives in the head paragraph only (1 hit over .claude/, AGENTS.md, CLAUDE.md). Right.
  4. What stays, stays for a reason. The kept list in the body's Acceptance notes (L106 relay timings, L228–231 MCP whole-set hazards, L340–358 PR-body footer cells, L361 report parse rule, L363–367 claim markers, L412–418 issue footer and PATCH cells, L420 heredoc, L429–430 shallow refusal) names, per line, the tool that does not hold it; the card's one-directional REWORK rule is respected. Right.
  5. The pointers survive. Every pointer into this file by section name (SKILL.md:150; landing-operations.md:66; rest-channel.md:3, 59, 63, 67, 75; lanes/cli.md:17; lanes/director.md:18; reading-discipline.md:6; triage-duties.md:99; AGENTS.md:286, 444) lands on a section that still exists, since no heading moved. Right.
  6. No tool's judgement changes. The only scripts/pm edit is one ceiling value and its comment; shrink-only is the ratchet's own semantics. The ratchet, the id-lint and the 39 derived gate families are pinned to this head by the dev's report and re-read on CI's Lint & Repo Gates. Right.
  7. Closing keyword and card. The body's only keyword is Fixes #22452 on line 1; the anchor program(pm): rule-text diet and guard-script split for the skills lane — 3,020 lines of skill text, 126k lines of pm scripts (two files 65k), 58 commits in two weeks; plus a body section-patch door and template files for seat writes #22060 is named with no verb ("remains open"). The card closes on merge, the anchor does not. Right.

② Semver level

None owed: .claude/** and scripts/pm/** publish nothing, no accept set or public surface moves, Clause-②: no. skip-changeset is right, and the seat confirms it as its own docs-only verdict.

③ Boundary flags

Implemented-by: claude/issue-22452-platform-readings-diet
Reviewed-by: session_01RdnZdPZH9ByduzPRWuH9tN

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 10, 2026 13:44
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 10, 2026 13:44
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 10, 2026
Merged via the queue into main with commit 80b2da2 Oct 10, 2026
37 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/issue-22452-platform-readings-diet branch October 10, 2026 14:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants