Repository navigation
docs(pm-skill): platform-readings diet — delete the readings a scripts/pm tool now holds (tool first, text second) - #22684
Conversation
… 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>
Contract reviewServed-tier: Skills seat 1 (seat post #7623), ① Derived judgments
② Semver levelNone owed: ③ Boundary flags
Implemented-by: VERDICT: PASS Generated by Claude Code |
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.mdthat ascripts/pmtool 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'sCEILINGSrow inscripts/pm/check-skill-line-ratchet.mjsis lowered to the landed count.The table: reading, the tool that holds it, action
Line numbers are the file at
origin/main243dd3c62.scripts/pm/check-label-desc-cap.mjs(pnpm check:pm-label-desc-cap, required inlint.yml): batterycheck-label-desc-cap self-test, casesexactly 100 characters passesand101 characters failsscripts/pm/write-pace.mjsrule ① (DEFAULT_MIN_GAP_MS3 s, above the ~1 s the text prescribed) and rule ⑤: batteriesrule ①: the remainder is slept, and the pause is said out loudandrule ⑤: batch mode — the gap rises for an announced batch, and the estimate is printedscripts/pm/write-pace.mjsrules ① and ④: batteriesrule ①: the remainder is slept, and the pause is said out loudandrule ④: the lease — one write in flight, fleet-wide, measured on real processeswrite-pace把一次 dispatch 记作那一笔写(40/时不变)…」scripts/pm/write-pace.mjsbatteryrule ②: the 41st is REFUSED, with a prescription;scripts/pm/fleet-write/dispatch.mjsbatterythe wiring: the POST is paced and on the roster, the reads are not, the token never reaches the log;scripts/pm/close-cards.mjsbatterythe 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)documentation_url指 Claude Code 不指 GitHub…」scripts/pm/write-pace.mjsisProxyRefusal: batteryrule ③: 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.mjsbatterythe 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 saysfinding定级这类只能整组写…」scripts/pm/label-write.mjsremoves by directedDELETE /issues/{n}/labels/{name}: batterythe arithmetic: union, difference, and the two idempotent no-ops, case…one directed DELETE per removal actually present; batterythe classifier: a 404 that is success, and a 403 that must not fall back, casea 404 on a DIRECTED DELETE is the label already being gone; relayscripts/pm/fleet-write/execute.mjsbatterythe idempotent removal: a 404 on a directed label DELETE is success(the text's claim was stale against both)---前后正反两向归一空行:比对正文只按首个差异偏移…」scripts/pm/post-stamped.mjsexact-bytes classifier: batterythe 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; batterythe 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.mjsbatterythe verdict: post-stamped's own classifier, imported — …)post-stamped的body档把这点空白判mutated…」scripts/pm/post-stamped.mjsbatterythe 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 themand…named by its OWN word, ⛔ never the re-anchor's, which says nothing was lost(the tool no longer judges thismutated; the text was stale)scripts/pm/issue-create.mjsbatterythe 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 turnNine 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.mdandCLAUDE.mdanswers 1 hit, this line;tool firstandtext secondanswer 0.Line budget
243dd3c62)e74ef6211)platform-readings.mdreferences/tree (31 files,lanes/included)CEILINGSrowThe file's
MAX_TABLE_ROW_BYTESpin stays 0 (it carries no table row).Zero checks
git grep -n -F PHRASE -- .claude/skills/pm-dispatch/ate74ef6211, one distinctive phrase per deleted reading:Gates, all run at
e74ef6211after the final commitpnpm check:pm-skill-ratchetexit 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-lintexit 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--rananswers39 derived, 39 run, 0 NOT-MEASURED, 0 UNRUN.check:doc-formula-expressionsfirst answered PREREQUISITE NOT MET (exit 3,@objectstack/formulaand@objectstack/lintunbuilt), then exit 0 after building those two.pnpm check:pm-dispatch-gates(fast tier) exit 0:1825 cases pass; 6 slow section(s) deferred.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
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.fleet-write/dispatch.mjsheader says neither ceiling is a measured start latency yet, so this file holds the only record of the probe.issue_writewhole-set hazards: thelabel-write.mjsheader cites them as its measured basis.label-write.mjssends a proxy-shaped 403 to PREREQUISITE with no fallback, so it does not hold the reading as written.AGENTS.mdpoints here, andPR_CREATE_FOOTER_TAILinfleet-write/dispatch.mjscites the fourth shape.Claim:marker readings: no self-test pins the tolerated prefixes, andpost-stamped.mjspasses a bolded claim line unjudged.post-stamped.mjsheader cites them as the governed fact table.check-governed-mergesrefusal: the tool holds the refusal, but L430 is an instruction no tool holds.CROSS_FILE_MOVESentry for this file records 144 lines of ordinary ruled raises above itswasof 314. Any ceiling of 457 or less redscrossFileMoveVerdictas an over-claim until aruledRaisesrecord 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 toCROSS_FILE_MOVES, not to aCEILINGSrow.post-stamped.mjsheader cites this file as:410and:411, but those readings sat at L414 and L415 before this PR and sit at L406 and L407 after it. L429 prescribesgit fetch --shallow-since=, whilecheck-governed-mergesprintsfetch --unshallowandgit-history.mjsrecords that--shallow-sincecan shorten history.rest-channel.mdkeeps 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.维护者速读(草稿)
scripts/pm工具自动把关的条目(写入节流、中继计数、代理拒绝判别、按名摘标签、页脚回读、标签描述长度、标题反引号),并在表头写明「工具先行、文本其次」;该文件行数上限 469 → 460。Generated by Claude Code