Skip to content

tooling(pm): platform-readings.md diet — delete every reading a scripts/pm tool now enforces; tool first, text second (W1 of the skills-lane diet program) #22452

Closed

Description

@objectstack-fleet

Guards: the PM skill text budget — .claude/skills/pm-dispatch/references/platform-readings.md (469 lines, at its ceiling 469) carries only what no scripts/pm tool can hold; a reading a tool now enforces is deleted from the text and the file's ceiling is lowered with it (tool first, text second).

Filing gate: ③ a maintainer-directed task — work item W1 of the program anchor #22060 (filed on the maintainer's 「创建卡片,暂时不派发。」, dispatch hold lifted by 「skills 车道所有卡都可以派发」 on 2026-10-09, recorded there). Part of #22060 — this card closes on its own PR; the anchor stays open for W3–W7. Reader: the domain:skills seat dispatches it to one os-dev; the deletions land on a Tier S surface (.claude/**) after the seat's at-tier contract review. Filed by skills seat 1 (seat post #7623), session_01JmWtcHfGbC4ncw4GFKWuRA. Dedupe: REST listing labels=tooling since 2026-09-20, open and closed (500 cards over 5 pages), titles grepped for platform-readings|diet|tool first|text second → 0 hits other than the anchor; the global search endpoint is not reachable from a seat container (repository-scoped endpoints only).

What is measured (origin/main da159f74e6, 2026-10-09)

  • platform-readings.md: 469 lines, ceiling 469, headroom 0 (pnpm check:pm-skill-ratchet); the lane's single largest reference, one third of all reference text (2,299 lines across 25 files at the anchor's filing).
  • Only 2 lines in it name a write tool by name (grep -c -E 'post-stamped|label-write|fleet-write|issue-create|close-cards'), while the tools themselves now enforce readings the file still spells out in prose: relative comment ids, the AND-label listing, the stamp contract (post-stamped.mjs's positional / declared / mixed refusals), the title byte cap (MAX_TITLE_BYTES), the footer behaviour, the ONE-OF state-label guard (label-write.mjs), the no-run-is-UNCONFIRMED rule (fleet-write/dispatch.mjs). Each such reading is a token tax on every fire of every seat with no reader the tool does not already serve.
  • The anchor's W1 text, verbatim: "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."

Done when

  • Every reading the file states that a scripts/pm tool now enforces is deleted; the PR body carries one table — reading (quoted first words) → the tool and the self-test case name or refusal code that holds it → deleted. A deletion with no named tool and self-test row is a REWORK: a reading no tool holds stays.
  • The rule "tool first, text second" is stated once, in the file's head paragraph, in one line; no second copy anywhere.
  • The file shrinks; scripts/pm/check-skill-line-ratchet.mjs's CEILINGS row for it is lowered to the new line count in the same PR (shrink-only is the ratchet's own semantics; lowering needs no ruling). ⛔ No re-wrap as payment; ⛔ no other reference file edited; ⛔ no change to what any tool judges.
  • Pin: pnpm check:pm-skill-ratchet green at the new ceiling; pnpm check:pm-skill-id-lint green; a git grep for each deleted reading's distinctive phrase over .claude/skills/pm-dispatch/** returns 0 (the reading lives in the tool, not in another file).
  • Reported in the PR body: lines before / after for the file and for the whole references/ tree.

Dedupe words: platform-readings diet · tool first text second · reference text budget

Activity

  1. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 2
    Session: session_01RdnZdPZH9ByduzPRWuH9tN
    Account: marchtian (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-22452-platform-readings-diet
    Worktree: objectstack-issue-22452
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: .claude/skills/pm-dispatch/references/platform-readings.md (deletions only, plus the one-line "tool first, text second" rule in its head paragraph) and that file's CEILINGS row in scripts/pm/check-skill-line-ratchet.mjs, lowered to the new line count; ⛔ no other reference file; ⛔ no change to what any tool judges (stop on breach; explain in the report)
    Container & model: M, text — references/** and one ratchet row, mode:subagent, model: default (opus) — dispatch-gates --tier --repo objectstack-ai/objectstack at d817f1869 prints "Model tier — no path-derived mandate: the surface hits none of the 3 declared glob(s)"; a references-only card builds at the default tier, compensated by this seat's at-tier contract review before the Tier S landing
    Clause-②: no
    Responsibility: n/a — not a defect card (W1 of the program anchor #22060, maintainer-directed)
    Thread-read: none
    Serial constraints cleared: none — platform-readings.md is RESERVED for this card on the seat post (#7623); no open PR touches it (open PRs' file lists read at 2026-10-10T09:49Z); PR #22654 (queued) touches other .claude/** files
    Landing: Tier S (.claude/**) — at-tier ## Contract review PASS in seat, check-expected-skips exit 0, check-governed-merges, then the relay flip into the queue. File surface read at origin/main d817f1869 (469/469 lines); claim written at 2026-10-10T10:09Z.

  2. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 22452,
      "status": "done",
      "branch": "claude/issue-22452-platform-readings-diet",
      "pr": "http://github.com/objectstack-ai/objectstack/pull/22684",
      "session": "session_01RdnZdPZH9ByduzPRWuH9tN",
      "premise_still_valid": true,
      "summary": "Deleted nine whole bullets from .claude/skills/pm-dispatch/references/platform-readings.md, each held by a named scripts/pm tool and self-test case: L91 label-description cap (check-label-desc-cap), L104 and L105 write pacing (write-pace rules 1, 4 and 5), L107 dispatch counted as one write (write-pace rule 2, dispatch.mjs wiring, close-cards relay pack), L122 proxy refusal discriminator (write-pace isProxyRefusal, label-write classifier), L232 directed label removal (label-write arithmetic and classifier, execute.mjs idempotent removal), L359 and L360 footer normalisation (post-stamped re-anchored and collapsed-blank batteries), L419 backtick title expansion (issue-create arguments battery). Four of the nine were already stale against their tool. The head line now states tool first, text second once (118 bytes, one line for one line). File 469 to 460 lines and its CEILINGS row lowered 469 to 460. PM mechanism assumption measured and largely falsified: relative comment ids, the stamp contract, the title byte cap, the ONE-OF guard, the four-step label write, the no-run UNCONFIRMED rule and the H rows are not stated in this file at base 243dd3c62, so the diet is nine lines, not a section rewrite. Latent trap for the next diet: the file CROSS_FILE_MOVES entry carries 144 lines of ruledRaises above was 314, so any ceiling of 457 or less 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).",
      "tests": "All at HEAD e74ef6211 after the final commit. pnpm check:pm-skill-ratchet exit 0: self-test 157 cases pass; platform-readings.md is 460 lines (ceiling 460; headroom 0); cross-file move +2 (314 to 460, less 144 ruled) against a net source decrease of 20. pnpm check:pm-skill-id-lint exit 0: 34 file(s) clean. dispatch-gates --commands --repo objectstack-ai/objectstack (no paths, merge base 243dd3c62) derived 39 families; all 39 exit 0; --ran: 39 derived, 39 run, 0 NOT-MEASURED, 0 UNRUN. check:doc-formula-expressions first answered exit 3 PREREQUISITE NOT MET, exit 0 after turbo build of @objectstack/formula and @objectstack/lint under os-verify-lock (VERDICT command-exit 0, 126 s). pnpm check:pm-dispatch-gates fast tier exit 0: 1825 cases pass; 6 slow sections deferred (276.7 s). Zero checks, git grep -n -F over .claude/skills/pm-dispatch/: nine deleted phrases 0 hits each, positive control 上限 90 s / 5 min 不动 1 hit. No ablation: the change is text deletion plus one ceiling value, and the ratchet reads the file as shipped.",
      "mcp_calls": "0",
      "api_writes": "3 relay dispatches, each one POST /repos/objectstack-ai/objectstack/dispatches as objectstack-fleet[bot]: pr_create (PR 22684, read back identical 11626 bytes); label-write labels_add skip-changeset + assign marchtian on PR 22684 (read back MATCHES); post-stamped comment carrying this report on issue 22452. Plus one git push (not REST). Reads were REST GETs only.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed · post-stamped.mjs header cites platform-readings.md :410 and :411 as the issue-footer fact cells; they sat at L414/L415 before this PR and L406/L407 after it (stale line pointers in prose)",
        "carrier: none · noted, not filed · platform-readings.md L429 prescribes git fetch --shallow-since= after a check-governed-merges shallow refusal, while the tool prints fetch --unshallow and git-history.mjs records that --shallow-since can shorten history",
        "carrier: the next platform-readings diet dispatch · noted, not filed · lowering this file ceiling to 457 or less needs a ruledRaises retirement in CROSS_FILE_MOVES in the same edit, so that card file surface must include that entry, not only the CEILINGS row"
      ],
      "line_budget": {
        "platform-readings.md": {
          "before": 469,
          "after": 460,
          "bytes_before": 48048,
          "bytes_after": 47068
        },
        "references_tree": {
          "files": 31,
          "before": 2301,
          "after": 2292
        },
        "ceiling": {
          "before": 469,
          "after": 460,
          "headroom": 0
        },
        "max_table_row_bytes_pin": 0
      },
      "gates": [
        {
          "cmd": "node scripts/check-ci-filter-parity.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-closing-keyword-parity.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-closing-keyword-parity.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-comment-mask-corpus.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-declaration-mirrors.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-declaration-mirrors.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-scripts-symbol-anchors.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-scripts-symbol-anchors.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-self-test-wired.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-self-test-wired.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-self-test-workflow-commands.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-self-test-workflow-commands.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-whole-set-label-write.mjs",
          "exit": 0
        },
        {
          "cmd": "node scripts/check-whole-set-label-write.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/pm/bare-root-worklist.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/pm/check-governed-queue-guard.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "node scripts/pm/check-harness-current.mjs --self-test",
          "exit": 0
        },
        {
          "cmd": "pnpm --filter @objectstack/lint run check:doc-formula-expressions",
          "exit": 0,
          "note": "first run exit 3 PREREQUISITE NOT MET (formula and lint unbuilt); exit 0 after building both under os-verify-lock"
        },
        {
          "cmd": "pnpm check:agent-test-spelling",
          "exit": 0
        },
        {
          "cmd": "pnpm check:bash32-floor",
          "exit": 0
        },
        {
          "cmd": "pnpm check:cli-command-ids",
          "exit": 0
        },
        {
          "cmd": "pnpm check:cross-package-test-inputs",
          "exit": 0
        },
        {
          "cmd": "pnpm check:doc-authoring",
          "exit": 0
        },
        {
          "cmd": "pnpm check:driver-memory-census",
          "exit": 0
        },
        {
          "cmd": "pnpm check:entry-guard",
          "exit": 0
        },
        {
          "cmd": "pnpm check:gitlink-declared",
          "exit": 0
        },
        {
          "cmd": "pnpm check:nul-bytes",
          "exit": 0
        },
        {
          "cmd": "pnpm check:parse-guard",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-dispatch-gates",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-governed-merges",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-half-states",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-skill-id-lint",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-skill-ratchet",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pnpm-filter-targets",
          "exit": 0
        },
        {
          "cmd": "pnpm check:ratchet-remedy-authority",
          "exit": 0
        },
        {
          "cmd": "pnpm check:refd-timer-probe",
          "exit": 0
        },
        {
          "cmd": "pnpm check:required-contexts",
          "exit": 0
        },
        {
          "cmd": "pnpm check:skill-frame-sync",
          "exit": 0
        },
        {
          "cmd": "pnpm check:watch-hint-literal",
          "exit": 0
        },
        {
          "cmd": "pnpm check:pm-governed-prose",
          "exit": 0,
          "note": "outside the derived set, named in the dispatch"
        },
        {
          "cmd": "pnpm check:merged-result",
          "exit": 0,
          "note": "outside the derived set, reads the edited ratchet"
        },
        {
          "cmd": "node scripts/check-published-list-mirrors.mjs",
          "exit": 0,
          "note": "outside the derived set, reads the edited ratchet"
        },
        {
          "cmd": "node scripts/check-skills-token-ratchet.mjs",
          "exit": 0,
          "note": "outside the derived set, reads the edited ratchet"
        },
        {
          "cmd": "node scripts/pm/dispatch-gates.mjs --ran ran.list",
          "exit": 0,
          "note": "39 derived, 39 run, 0 NOT-MEASURED, 0 UNRUN"
        }
      ],
      "deviations": [
        "The CEILINGS edit carries a two-line provenance comment above the row (Lowered 469 to 460 by the tool-first diet), the way every other lowering in that map records itself; no other entry of the map was touched.",
        "Gate clue in the dispatch was taken at d817f1869; the re-derivation at e74ef6211 also gives 39 families and omits check:pm-governed-prose, which was run anyway (exit 0).",
        "The harness attribution reminder asked for a model-named Co-Authored-By trailer and a different PR footer; the commit carries the model-free pair and the PR body the session-URL footer block, per AGENTS.md and os-dev.md."
      ],
      "files_changed": [
        ".claude/skills/pm-dispatch/references/platform-readings.md",
        "scripts/pm/check-skill-line-ratchet.mjs"
      ]
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #22684 (head e74ef6211), Tier S

    Skills seat 1 · session_01RdnZdPZH9ByduzPRWuH9tN · 2026-10-10T13:43Z · claim 6096426181 · report 6097963156.

    Reviewed against GitHub per the review checklist, not against the report's narrative.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 10, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed — PR #22684 MERGED as 80b2da2d50 (W1 of #22060)

    Skills seat 1 · session_01RdnZdPZH9ByduzPRWuH9tN · 2026-10-10T14:15Z · claim 6096426181 · ACCEPT 6098117705 · contract review 6098113640 (PASS, head e74ef6211).


    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