Skip to content

pm-dispatch / os-dev: the claim template and the dev definition carry only the Clause-②: line, so a dispatched PR never writes the Metadata-protocol: line ruling A (#25105) adds #25115

Closed

Description

@objectstack-fleet

Filing gate ③ (a maintainer-direct ruling's unlanded half). Carries the .claude/** half of #25105's item 1 ("Every PR and changeset states its metadata-protocol kind"); #25105 keeps items 1–5 on scripts/**, AGENTS.md and pr-automation.yml (PR #25114, Tier H, awaiting approval). Filed by domain:spec seat 1 (seat post #6017, session session_01VsqhiSrBjB1wJfRNcHPeXN) from the dev's out-of-scope finding on #25105 (report 6315700975). ⛔ Not a claim. Lane and grade are triage's; the parent is p1.

Blocked-by: #25105

Reader (who acts): the domain:skills seat, once triage routes it and #25105 lands (the spelling is final only when PR #25114 merges).

Why

PR #25114 adds a sibling declaration line beside Clause-②: in every PR body and changeset body: Metadata-protocol: added | narrowed | semantic | none. scripts/check-changeset-no-major.mjs then grades the changeset level on it, and an unread kind that decides the verdict is not-measured-material (red). The fleet's own dispatch path does not know the line:

  • .claude/skills/pm-dispatch/SKILL.md:314, the claim template: Clause-②: yes | no only.
  • .claude/agents/os-dev.md:280: "认领带 Clause-②: 行才照抄进正文行首 … 无则零写,⛔ 不自造" — so a dev copies only Clause-②: and is told not to invent a line.
  • .claude/skills/pm-dispatch/references/execution-duties.md:70: the claim's Clause-② spelling rule.

Read at origin/main 5050442bb9 by the filing seat (each line printed with git show origin/main:PATH | sed -n Np). The dev also names os-dev.md:277 (the dogfood trigger reads the (narrowing) arm), references/contract-review.md:8–19 and references/landing-operations.md:11 (review routing on Clause-②); whether those need the kind is the implementing dev's measurement, not this card's claim.

Consequence once PR #25114 lands, until this card lands: every dispatched PR that carries a changeset reads not-measured-material once and clears it by one PR-body line (no push), and its changeset carries no kind for the release-notes grouping or the ADR-0087 gate's narrowed signal.

Wanted

Dedupe

MCP search_issues, objectstack, open and closed: "Metadata-protocol claim template os-dev Clause-② line" → 3 hits (#24298, #23406, #21048, all closed, unrelated). Control query "changeset levels minor only when the metadata protocol changes" → #25105 first. New.

Dedupe words: Metadata-protocol claim template · os-dev Clause-② copy PR body · ruling A declaration line skills.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 21, 2026

    @objectstack-fleet
    ContributorAuthor

    Unlock and grade: pm:blocked → pm:queue · p1 · domain:skills · area:devpath · enhancement

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-21T13:54Z. ⛔ Not a claim.

  2. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (card thread) · 2026-10-22T14:11Z · p1, enhancement, domain:skills. The .claude/** half of ruling A (#25105): the claim template and the os-dev definition carry Metadata-protocol: added | narrowed | semantic | none beside Clause-②:, the seat declares it at claim, the dev copies it into the PR body and each changeset body. Serial behind #25185: its PR merged as 03de83bfe145eea8f495bcbc9886105715721b3f.
    Session: session_014c2nFpk7VDtwqxvaGaHPu3 (card thread of domain:skills seat 1, seat session session_0165fj9zYfUrt6ckcUgYBD5a)
    Account: os-bill (the seat's linked user; always the card's assignee)
    Branch: claude/project-thread-pzu36x (from origin/main after #25185's merge, no commits of its own yet)
    Worktree: the card thread's own checkout
    Domain: domain:skills
    Seat: domain:skills#1 (seat post #7623)
    File surface: .claude/skills/pm-dispatch/SKILL.md (the claim template block only), .claude/agents/os-dev.md (the claim-copy rule and, if measured necessary, the changeset-body rule), .claude/skills/pm-dispatch/references/execution-duties.md (the Clause-② spelling line's sibling); references/contract-review.md / landing-operations.md only if measurement shows the review routing must read the kind. skip-changeset or one changeset as the repo's rules say for .claude/**-only diffs (measure: check-empty-changeset / Check Changeset). (stop on breach; explain in the report)
    ⛔ Not in scope: scripts/**, AGENTS.md, pr-automation.yml (landed by PR #25114); the Metadata-protocol: reader scripts/pm/clause2-line.mjs; the level axis in check-changeset-no-major.mjs.
    Container & model: M, mode:thread (the maintainer's word: one project thread per M-or-larger / p1 card), model: CONTRACT_REVIEW_TIER (dispatch-gates.mjs --tier --repo objectstack-ai/objectstack at 03de83b: "MANDATORY: … .claude/skills/pm-dispatch/SKILL.md ⇢ clause ① of the model-tiering ruling (narrowed to protocol semantics, 2026-08-20)" and ".claude/agents/os-dev.md ⇢ clause ① (2026-08-20 narrowing): the dev-agent definition is protocol semantics"), effort: xhigh (p1). Governed surface .claude/** is Tier S: a CONTRACT_REVIEW_TIER PASS record on the PR's head plus all-green checks, then the seat lands it.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (the unlanded half of a maintainer ruling)
    Thread-read: 6317835688
    Serial constraints cleared: #25185 (claim 6335635315, branch claude/project-thread-4nzwyi) merged as 03de83bfe145eea8f495bcbc9886105715721b3f before this claim; #25191 (domain:skills, the objectui lane lines in references/cross-repo-coordination.md, lanes/*.md, ensure-pm-labels.sh) is disjoint by region, ordinary concurrency. Open-PR list re-checked before the first edit (GET /pulls?state=open, 11 open PRs, each one's /files read): none touches .claude/skills/pm-dispatch/** or .claude/agents/**.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 25115,
      "status": "done",
      "branch": "claude/project-thread-pzu36x",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/25240",
      "session": "session_014c2nFpk7VDtwqxvaGaHPu3",
      "premise_still_valid": true,
      "summary": "The claim template in .claude/skills/pm-dispatch/SKILL.md carries `Metadata-protocol: added | narrowed | semantic | none` directly under `Clause-②: yes | no`, annotated with the level table's home (AGENTS.md Post-Task Checklist step 3) and the two bodies the dev copies it into. .claude/agents/os-dev.md's claim-copy rule widens to the pair and names both carriers: PR body, and every changeset body, where `Check Changeset` reads it (a kind grades minor, none grades patch). references/execution-duties.md names the third line-initial key in claim step ② and adds the kind pointer beside the `Clause-②` spelling rule. contract-review.md and landing-operations.md are untouched by measurement: the review tier follows the face of the diff, the level follows the kind. Each ceilinged file paid its added line by deletion (SKILL.md 319→318, os-dev.md 404→404, execution-duties.md 188→187); no re-wrap.",
      "tests": "No package touched, no test suite owed. Pins: (1) `node scripts/pm/post-stamped.mjs --dry-run --comment=25115 --file=claim.md` on a claim written from the new template: exit 0, verdict stamped-by-this-act, no keyed-line refusal (the seat then posted that very text as claim 6342870822). (2) `scripts/pm/clause2-line.mjs` imported over a PR-body sample and a changeset-body sample carrying both lines: readClause2Line → declared no / declared yes (widening); readMetadataProtocolLine → declared none / declared added; the template placeholders read malformed, never none. (3) The stored body of PR 25240 read back byte-identical to the one sent (one footer, no appended second footer) and both readers read it: Clause-② declared no, Metadata-protocol declared none.",
      "gates": "Local subset on head 588f0599 (`dispatch-gates --commands` derived 22, all run, exit codes captured before any pipe, `--ran` reconciled 22/22, 0 NOT-MEASURED): check-closing-keyword-parity (+ self-test), check-comment-mask-corpus, check-governed-queue-guard self-test, check-harness-current self-test, lint check:doc-formula-expressions (after building formula+lint under the verify lock; a first run exited 3 prerequisite-not-met), check:agent-model-declared, check:agent-test-spelling, check:commit-card-trailers, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:pm-expected-skips, check:pm-governed-merges, check:pm-governed-prose, check:pm-skill-id-lint, check:pm-skill-ratchet, check:refd-timer-probe, check:skill-frame-sync, check:watch-hint-literal — all exit 0. Interim red, fixed before the final run: deleting os-dev.md's commit-trailer rule line as ratchet payment made check:commit-card-trailers --self-test red (that script pins the sentence verbatim); the line was restored and the footer-pointer line paid instead. CI on the PR head at report time: 27 check-runs, 3 success (Check Changeset, Lint · scoped · tooling self-tests, Lint · scoped · slot lookup & corpus), 3 skipped by design (Temporal Conformance, Dogfood Regression Gate shards, Console Pin Gate), the rest queued or in_progress — honest in_progress, the seat reads the converged set.",
      "line_budget": "SKILL.md 319/319 → 318/319 (+1 template line; −2: the template caption line and its blank; carried by execution-duties ② and AGENTS.md). os-dev.md 404/404 → 404/404 (+1: the copy rule is two lines; −1: the intra-file pointer to the footer block, whose annotation already says session-URL is the PR-body form). execution-duties.md 188/188 → 187/188 (+1 kind pointer; −2: the preamble line and its blank, carried by SKILL.md's 阶段细则索引 rows). New bullets 110/111/114/113 bytes, under the 120-byte cap. Frame md5 abff5f852c8fd09b79ec0623439aa4f0 unchanged.",
      "deviations": "(1) Claim ownership: the dispatch order asked this thread to post the Claim and write the assignee; the runbook that landed with #25214 (卡线程 mode:thread) and AGENTS.md give both to the seat, so the thread handed the seat a dry-run-clean claim text and started after the seat posted it (claim 6342870822, 14:11Z); edits were made locally before that but nothing was pushed until the claim stood. (2) PR body line 1 is the harness-prescribed HTML-comment attribution marker, against os-dev.md 干净收尾; known conflict, carried by the seat's #25214 OOS-2 card. (3) check:skill-frame-freshness (local-only family) not run: worktree is origin/main 03de83bfe plus this commit, frame untouched. (4) The relay pr_create run 39794393779 did not complete within the tool's 300 s window (exit 6); the PR, its assignee and its labels were read back from the target directly, not re-dispatched.",
      "files_changed": [".claude/skills/pm-dispatch/SKILL.md", ".claude/agents/os-dev.md", ".claude/skills/pm-dispatch/references/execution-duties.md"],
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0 GitHub MCP calls (no write tool, no read tool); 1 claude-code-remote subscribe_pr_activity on PR 25240 (a session subscription, not a GitHub write)",
      "api_writes": "1 — relay pr_create (POST /repos/objectstack-ai/objectstack/dispatches → fleet-write run 39794393779: POST /pulls draft, POST /issues/25240/assignees os-bill, POST /issues/25240/labels skip-changeset); plus git push of the branch (not REST) and this report comment via post-stamped. The claim and the two label writes on the card were the seat's.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: the skills seat at landing · noted, not filed — scripts/pm/check-skill-line-ratchet.mjs ceilings for SKILL.md (319→318) and execution-duties.md (188→187) can be lowered; scripts/** is outside this card's surface",
        "carrier: the seat's #25214 OOS-2 card · noted, not filed — harness HTML-comment attribution marker on PR body line 1 vs os-dev.md 干净收尾",
        "carrier: none · noted, not filed — scripts/check-commit-card-trailers.mjs pins one os-dev.md sentence verbatim and nothing indexes which rule lines are script-pinned; a ratchet payment learns it by running the gate. dedupe words: script-pinned rule sentence, ratchet payment, commit-card-trailers citation"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #25240 comment 6343395835 (## 席位核对, head 588f05993a49672c57f4f56ac2f65410b6ac9e76; contract review 6343268424 PASS at CONTRACT_REVIEW_TIER). Tier S: the seat lands it through the relay once every check-run is green, then follows it to MERGED.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 22, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #25240 MERGED · domain:skills seat 1 · session_0165fj9zYfUrt6ckcUgYBD5a · 2026-10-22T15:41Z

    reading value
    merge queue added_to_merge_queue 14:58:34Z, merged + removed_from_merge_queue 15:21:23Z (PR timeline); no gh-readonly-queue/main/pr-25240-* ref remains
    origin/main 345f0b154cbdbce771eb40d33f722cf4b48050d1 — "docs(pm-dispatch, os-dev): the claim template and the dev definition carry the Metadata-protocol: line beside Clause-②:", in main's first-parent history at this read (HEAD 80ec71d)

    Tier S landing on contract review 6343268424 (PASS) + ACCEPT 6343395835; the seat flipped it ready and armed auto-merge 14:43Z. Status: card closed by the merge; pm:dispatched removed in the same stroke. Follow-ups carried elsewhere: #25220 (os-dev.md exemption + the Check Changeset wording), the two ratchet ceilings (318 / 187) for the next tooling PR.


    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

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedomain:skillsenhancementNew feature or requestpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions