Skip to content

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

Open

Description

@objectstack-fleet

Filing gate: ③ a maintainer-directed task. After the seat's assessment of the skills lane in this session (eight optimization items), the maintainer answered, verbatim: 「创建卡片,暂时不派发。」 — this card is the program anchor for the long-horizon items of that assessment (rule-text diet, guard-script split, the dist-dependent NOT MEASURED pattern, a section-level body patch door, template files for seat writes). ⛔ Not a single-point card: each work item below becomes its own card when work starts, one per fire; ⛔ not a claim, ⛔ not a dispatch. Filed by domain:skills seat 2 (seat post #19287, session_0181E4ZeZmWyknawnauxD2CE).
Reader: triage first-touch → domain:skills (tracking if triage reads it as a program anchor); when the hold lifts, the skills seat files the first child and dispatches it.
Dedupe: REST listings, closed included (labels=tooling since 2026-09-07: 417; every issue updated since 2026-10-01: 625; domain:skills since 2026-09-23: 109; union 1,030) grepped for ratchet|platform-readings|rule text|text diet|split.*(dispatch-gates|half-states) → 18 hits; the precedent is #13597 (closed: PM corpus audit, maintainer-directed — classify every instruction line keep / duplicate / demote / delete, then rewrite and re-lock); body.*(section|patch)|issue_patch.*body → 4, prior art #20571 (closed: a 41 KB issue_patch body came back with two U+FFFD replacements); template → 0. #21719 (closed) covered the verify-lock hold of check:pm-dispatch-gates.

Maintainer hold at filing, verbatim: 「创建卡片,暂时不派发。」 — filed, not dispatched; the skills seat takes none of the cards filed under this instruction until the hold lifts.
Restart-when: the maintainer or the director seat comments on this card lifting the dispatch hold

What is measured (the checkout at origin/main 93125aee, the board over the two weeks before this filing)

surface reading
Skill text 3,020 lines: SKILL.md 319 (ceiling 342), .claude/agents/os-dev.md 402, 25 reference files 2,299; platform-readings.md alone 469 lines; 13 references carry CEILINGS 0 (no ceiling)
Churn 58 commits touching the skill, the agent file or scripts/pm in two weeks (16 fix, 21 docs); execution-duties.md 14, SKILL.md 13, landing-operations.md 9
Guard scripts 36 files, 126,032 lines; check-half-states.mjs 34,938 + dispatch-gates.mjs 29,870 = 51% of the total; 27 check:pm-* package scripts; 35 of 36 scripts carry --self-test
Self-test cost pnpm check:pm-dispatch-gates battery 842.7 s and 1,023.8 s in the two dev reports of this shift (1,976 cases), under the shared verify lock
Dev gate runs dispatch-gates --commands derived 82 and 44 commands for two small PRs; 5 and 4 of them NOT MEASURED every time for want of dist/ in a fresh worktree (check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content, check:doc-formula-expressions), each report re-stating the same narrowing prose
Seat writes about 15 GitHub writes by this seat in one shift, 5 refused by the tools (bare stamp ×2, a future stamp, a 258-byte title, an --ack-through miss) plus one claim corrupted by shell expansion of backticks and fixed by comment_edit; a body re-fetched with gh api --jq .body carries one extra trailing newline that a whole-body issue_patch then stores

Work items (each a future single-point card; none is claimed here)

  • W1 — platform-readings diet. Every reading in platform-readings.md that a tool now enforces (relative ids, AND-label listing, stamp contract, title cap, footer behaviour …) is deleted from the text; the rule becomes "tool first, text second": a new reading lands as a tool behaviour or a self-test row, and the text keeps only what no tool can hold. Pin: the file shrinks and check-skill-line-ratchet gets a ceiling for it.
  • W2 — ceilings for the 13 ceiling-0 references. A maintainer ruling sets a number per file (the ratchet header says raising a ceiling needs a ruling quoted in the PR; setting one from 0 is the same act). Decision point, folded into the first child's PR body.
  • W3 — dispatch-gates.mjs unfreeze-and-split plan. The file is frozen under ruling 208; the split (gate roster as data, one small engine, tiered self-test fast/slow) needs the maintainer to lift the freeze for exactly that refactor. Decision point.
  • W4 — check-half-states.mjs split. Same shape as W3 without the freeze: data tables out of the engine, self-test tiers, the lock hold measured before and after (finding(pm): pnpm check:pm-dispatch-gates holds the shared verify lock about 20 minutes per run, so sibling devs' locked scanner runs queue out at 540 s — the lock's own holder-side starvation warning fired on every run this shift #21719's measurement reused).
  • W5 — the dist-dependent NOT MEASURED family. Either a pre-built dist/ the dev worktree can reuse (a cache keyed on the workspace lockfile) or a declared family in dispatch-gates --ran so a fresh worktree reports "DERIVED, dist-dependent, CI measures" in one line instead of five paragraphs. Pin: a dev report's --ran reconciliation names the family and no prose.
  • W6 — a section-level body patch door. issue_patch (or a small body-section.mjs) replaces one ## heading section of an issue or PR body, refuses when the heading is absent or ambiguous, strips exactly the trailing newline --jq adds, and reads back the whole body. Prior art finding(fleet-write): an issue_patch body of about 41 KB comes back with two multi-byte characters replaced by U+FFFD, about 16 KB apart, identically on a re-send — and dispatch.mjs reports success without comparing the read-back #20571 (U+FFFD on a long body) is the second pin.
  • W7 — template files for seat writes. The claim comment, the seat post body and the contract-review record become template files plus a fill script; post-stamped --dry-run runs as the lint before every write. Pin: a claim never passes through a shell variable again (the backtick expansion of this shift).

Done when (for the program)

  • Every W above has its own card filed and dispatched, or a one-line maintainer ruling drops it (recorded here).
  • Re-measured after the children land: skill text lines, scripts/pm lines, the dispatch-gates battery seconds, and refusals per 15 seat writes — against the table above.
  • ⛔ No new gate; ⛔ no change to what any gate judges (W3/W4 are refactors with byte-identical verdicts, pinned by their self-tests); ⛔ no weakening of the stamp contract (W7 removes the hand-typing, not the refusal).

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 7, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage grade under the maintainer's dispatch hold (「创建卡片,暂时不派发。」, quoted in the body): domain:skills · priority:p3 · tracking added. pm:on-hold stays, and so does the body's Restart-when: line (the maintainer or the director lifts the hold).

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-07T06:01Z. ⛔ Not a claim, ⛔ not a dispatch.

    • tracking: this is a program anchor. Each of W1–W7 becomes its own card when work starts, and the anchor itself never enters pm:queue.
    • Why p3: these are long-horizon cost items. No gate judges wrongly while they wait, and the card itself says ⛔ no change to any verdict.
    • Dedupe: the open board has no other card on these items (MCP search_issues, objectstack, over dispatch-gates NOT MEASURED, the section body patch, the guard-script split and the platform-readings diet). Every hit is closed, apart from this card.
    • For the restart:
      • W2 and W3 are decisions (ceilings from 0 for 13 files; lifting ruling 208's freeze for the dispatch-gates.mjs split). Each is filed as its own needs-user-decision card for the director, ⛔ not folded into a child's PR body.
      • Each child is a tooling card. When it enters pm:queue, its first line carries Unblocks: #N or names the surface it guards.
  2. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Maintainer ruling recorded — the 2026-10-07 dispatch hold on this program anchor is lifted. Provenance, three items: the maintainer (os-elon-musk); verbatim 「skills 车道所有卡都可以派发」 (read 2026-10-09T09:10Z), after 「你可以派发」 (read 2026-10-09T00:11Z); said in this seat's session chat (session_01JmWtcHfGbC4ncw4GFKWuRA). They answer the Restart-when: line of this card. Skills seat 1 (seat post #7623), 2026-10-09T09:30Z.

    State: pm:on-hold removed in this act; the anchor itself never enters pm:queue (the triage grade 6032010144). What follows, in the order the grade asked: W1 (the platform-readings diet) is filed as the first tooling child with its guarded surface on its first line and dispatched in the lane's next round; W2 (ceilings for the ceiling-0 references) and W3 (the dispatch-gates.mjs unfreeze-and-split under ruling 208 R6, which also carries #22167's remainder) are each filed as a needs-user-decision card before any code is written; W4–W7 follow as tooling children, one per fire. Nothing is claimed here.

  3. objectstack-fleet commented on Oct 9, 2026

    @objectstack-fleet
    ContributorAuthor

    Program progress after the hold lift — skills seat 1, session_01JmWtcHfGbC4ncw4GFKWuRA, 2026-10-09T09:38Z

    Checklist: W1 → #22452 (queued) · W2 → done (measured) · W3 → #22453 (decision box) · W4 · W5 · W6 · W7 (not yet filed).

  4. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    W1 landed — PR #22684 merged as 80b2da2d50; three readings carried for the next diet

    Skills seat 1 · session_01RdnZdPZH9ByduzPRWuH9tN · 2026-10-10T14:16Z · card #22452 (ACCEPT 6098117705, contract review 6098113640).

    • W1 is done: platform-readings.md 469 → 460 lines, nine readings deleted whole, each pinned to a named scripts/pm tool and self-test case (the table is in the PR body); the rule 「工具先行、文本其次」 stated once; the CEILINGS row 460. Measured against the W1 text: the readings it expected to find in the file (relative ids, the stamp contract, the title cap, the ONE-OF guard, the four-step label write, the no-run UNCONFIRMED rule, the H rows) are not stated there at 243dd3c62, so the diet is nine lines, not a section rewrite — the W1 row's wording over-estimated the file.
    • Carried, not filed (no card; this anchor is the carrier):
      1. scripts/pm/post-stamped.mjs header cites platform-readings.md :410 / :411 as the issue-footer fact cells; those readings sat at L414/L415 before W1 and sit at L406/L407 after — stale line pointers in a tool header's prose; no reader acts on them.
      2. platform-readings.md L429 prescribes git fetch --shallow-since= after a shallow check-governed-merges refusal, while the tool prints fetch --unshallow and git-history.mjs records that --shallow-since can shorten history — a prose-vs-tool drift the next diet deletes or corrects.
      3. Ratchet trap: the file's CROSS_FILE_MOVES entry carries 144 lines of ordinary ruled raises above its was of 314, so any ceiling of 457 or lower reds crossFileMoveVerdict as an over-claim until a ruledRaises record is retired (measured with the exported function: 460 and 458 green, 457 and 440 red). A deeper diet's file surface must include that entry, not only the CEILINGS row.
    • Program state: W1 done · W2 measured done · W3 landed 6a3f82ef · W4–W7 unfiled.

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions