Skip to content

pm-dispatch: drop the per-round tooling dispatch cap; keep the pm-rule filing gate and the two round-report readings (ruling A) - #26254

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-1r3slx
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-1r3slx

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #26122
Clause-②: no
Metadata-protocol: none

Maintainer Leehom's option on the decision card, as ruling record 6412560587 carries it, verbatim: 「A 删上限,留读数和立卡门」; consequence 「删掉一成上限;保留立卡门和轮次报告的两项读数,产品提交占比连续偏低时由席位报给你」. Triage audit 6416685670: scope exactly as ruled — delete the ≤10% cap, keep the pm-rule filing gate and the two round-report readings. Nothing else is changed here.

What changed (head 94fbb742)

  • .claude/skills/pm-dispatch/references/execution-duties.md 候选与批次: deleted the line 「tooling 卡至多占一轮派发的 10%,溢出留积压、⛔ 不入 pm:queue;⛔ 无门禁无脚本强制。」 — 188 → 187 lines; the CEILINGS row stays 188 (check-skill-line-ratchet.mjs only nudges at headroom over 120 lines and never requires lowering; headroom is now 1).
  • .claude/skills/pm-dispatch/SKILL.md tooling glossary row: the reader 「每轮派发 ≤10%」 is dropped and the row names 三具名读者 again (候选查询排除、首触即关、普查半态行) — the exact row text the cap PR replaced. 319 → 319 lines; the row shrinks 228 → 207 bytes; widest table row stays 341 (pin 341).
  • .claude/skills/pm-dispatch/references/seat-lifecycle.md 轮次报告与节奏: the product-commit-share reading did not yet carry the ruled consequence, so one line under it now reads 「产品提交占比连续多轮偏低 ⇒ 席位报维护者。」 (64 bytes). Paid in-file (ceiling 96, headroom 0): deleted the 开轮互斥 line that described what the session-start-fleet.sh hook prints at session start; the hook's own header is the authority on its output and the operative rule two lines above it (fetch, compute the SKILL.md touch sha, compare with the opening mark) is untouched. 96 → 96 lines.

Kept untouched, as ruled: references/filing-gate.md 「增改 pm 规则的卡只在维护者点名时立…」, and both round-report readings — the 48h follow-up-PR count and the product-commit share. (Measured: the cap PR #25795 landed exactly those two readings; there was never an in-flight tooling-share reading in seat-lifecycle.md, so the dispatch's naming of the first reading was off, the location was right.)

Grep for a third spelling of the cap over .claude/skills/** before and after (10%, 一成, ≤10, tooling + 上限): before, exactly the two lines above; after, zero. The one other hit, references/platform-readings.md 「并发 ≤100」, is a GraphQL rate-limit fact, not the cap, and is left alone. No issue number was spelled into skill text (check:pm-skill-id-lint green).

Line budget

file before after ceiling
references/execution-duties.md 188 187 188 (unchanged)
SKILL.md 319 319 319
references/seat-lifecycle.md 96 96 96

No re-wrap; every edited line is under 120 bytes; table rows only shrank.

Gates (local, on 94fbb742; exit codes captured before any pipe)

node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 20 families from the merge base; all 20 ran with exit 0 and --ran reconciles: 20 derived, 20 run, 0 NOT-MEASURED, 0 UNRUN. Among them: check:pm-skill-ratchet (self-test 164 cases; SKILL.md 319/319, widest row 341/341; seat-lifecycle.md 96/96; execution-duties.md 187/188), check:pm-skill-id-lint (104 files clean), check:skill-frame-sync (the one declared copy coherent, 4 axes), check:pm-governed-prose, check:pm-governed-merges self-test, check:pm-expected-skips, check:doc-authoring, check:nul-bytes. The lint-package gate check:doc-formula-expressions first refused with exit 3 (PREREQUISITE NOT MET: @objectstack/formula and @objectstack/lint unbuilt); after its prescribed build under the verify lock (VERDICT command-exit 0, 4 tasks, 1m59s) it ran green. The local-only family check:skill-frame-freshness also ran: current with origin/main. --ran noted the tree is 4 commits behind origin/main at reconciliation time; the range has no file under .claude/**, AGENTS.md, CLAUDE.md, skills/** or scripts/pm/**, so the derivation is unaffected and the queue's rebuild validates the merge.

Dogfood battery: n/a — no ! in the title and no (narrowing) arm. skip-changeset: .claude/** publishes nothing.

Acceptance notes (observations, not cards)

  • seat-lifecycle.md 座位贴协议 and triage-duties.md 在飞活性复查 both state the knock-then-reclaim rule; the first names the director seat as the releasing actor, the second sits under the triage seat's duties. A protocol observation only; untouched here.
  • seat-post-protocol.md says the protocol must not copy the patrol's current cadence value, while seat-lifecycle.md 断粮 section carries 「默认每小时」. Observation only; untouched.

维护者速读(草稿)

改了什么:删掉「tooling 卡至多占一轮派发 10%」这条上限 —— execution-duties.md 一行、SKILL.md 术语表 tooling 行的一个读者;立卡门与轮报两项读数原样保留;轮报读数下补一句「产品提交占比连续多轮偏低 ⇒ 席位报维护者」,以删掉一行钩子输出说明付账,文件行数不变。

为什么改:你在决策卡上选了 A「删上限,留读数和立卡门」。上限饿死了以工具为主的车道(28 张 open tooling 卡里 devx 21、skills 5),也压住了缺陷修复;它要保的「注意力留在产品」已由读数达成(48h 内约 143/159 的 main 提交触产品代码)。

风险与代价(含回滚):风险是 tooling 派发占比回升、挤占产品;兜底是轮报两项读数加「连续偏低报维护者」。回滚 = revert 本 PR 的一个 commit(三个文件、五行),不涉脚本、不涉门禁。

席位意见:

你要做的:无需动作。Tier S(.claude/**):席位做独立达档复核,PASS 后经队列落地。若日后想恢复上限,在卡上一句话即可,席位照裁决立卡。


Generated by Claude Code

…le filing gate and the two round-report readings stay (ruling A)

Maintainer ruling A on the decision card, ruling record 6412560587, verbatim:
「A 删上限,留读数和立卡门」 — 「删掉一成上限;保留立卡门和轮次报告的两项读数,
产品提交占比连续偏低时由席位报给你」.

- references/execution-duties.md: delete the 候选与批次 line that capped
  `tooling` cards at 10% of a dispatch round (188 → 187; ceiling 188 stays,
  the ratchet requires no lowering for headroom 1).
- SKILL.md: the `tooling` glossary row drops the reader 「每轮派发 ≤10%」 and
  names three readers again, in place (319 → 319; row shrinks 228 → 207 B).
- references/seat-lifecycle.md: the product-commit-share reading did not yet
  carry the ruled consequence, so one line under it now says the seat reports
  the maintainer when the share reads low for consecutive rounds; paid in-file
  by deleting the line that described what the session-start-fleet.sh hook
  prints (its own header is the authority; the 〈开轮互斥〉 rule stays) (96 → 96).

Kept untouched, as ruled: references/filing-gate.md (pm-rule cards only on the
maintainer's naming) and both round-report readings (the 48h follow-up-PR count
and the product-commit share).

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

Copy link
Copy Markdown
Contributor Author

Contract review

Reviewed at 2026-10-26T17:34Z

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 94fbb7429fd49f952158889416b7e7d1f3dcd3dc
Local-runs: none
Scope: .claude/skills/pm-dispatch/SKILL.md, .claude/skills/pm-dispatch/references/execution-duties.md, .claude/skills/pm-dispatch/references/seat-lifecycle.md + .claude/skills/pm-dispatch/references/filing-gate.md, .claude/hooks/session-start-fleet.sh, scripts/pm/check-skill-line-ratchet.mjs, .claude/skills/pm-dispatch/references/platform-readings.md

Reviewer: an independent contract-review subagent, an agent other than the drafter (the in-session os-dev subagent that produced the diff on claude/project-thread-1r3slx), whose verdict the owning seat session adopts. Adversarial brief: the inputs were the card, the ruling record, the cap commit, the PR object, file list and diff, the head's check-runs and the trees on origin/main and 94fbb742 — not the dispatch order and not the seat's own conclusions.

Inputs: card #26122 body and its three comments (triage first grade 6416685670, claim 6421919798, os-dev-report 6422696560); ruling record 6412560587 on #25768 (author objectstack-fleet[bot], the carrier of maintainer Leehom's option 「A 删上限,留读数和立卡门」 with its consequence 「删掉一成上限;保留立卡门和轮次报告的两项读数,产品提交占比连续偏低时由席位报给你」); the cap commit 5f5f0b42 on origin/main (stat and per-file hunks); PR #26254 object, file list (3 files, +2/−3) and net diff; the check-runs on 94fbb742, re-read five times until none was in progress; the cited files on origin/main at 1eebbc08 (fetched) and on the head by git show 94fbb742:PATH. Merge-base f2e70836, one commit on the head above it; the six commits on main since touch none of .claude/**, AGENTS.md, CLAUDE.md, skills/** or scripts/pm/** (measured with git diff --stat), so the origin/main readings below are what the queue will rebuild against. PR author user.login = objectstack-fleet[bot], relay-written; draft; labels documentation, size/xs, skip-changeset; mergeable: true.

① Derived judgments

Every rule the diff adds, removes or narrows, judged against the ruling verbatim, the triage scope (delete the ≤10% cap, keep the pm-rule filing gate and the two round-report readings, nothing else) and the skill's own regime.

(a) Exactly the cap, nothing else, nothing less — holds.

  • Removed, references/execution-duties.md line 9: 「tooling 卡至多占一轮派发的 10%,溢出留积压、⛔ 不入 pm:queue;⛔ 无门禁无脚本强制。」 — the D3 cap line 5f5f0b42 added, byte-identical to that commit's added line. Right: this is the rule the ruling retires. The neighbouring candidate rule 「⛔ 排除三门皆无的 tooling 卡」 (line 8) is untouched, as it must be — it is the 候选查询排除 reader, not the cap.
  • Narrowed, SKILL.md line 114 (the tooling glossary row): 四具名读者 with 「每轮派发 ≤10%」 → 三具名读者 = 候选查询排除、首触即关、普查半态行. Right: the row on the head is byte-equal to the row 5f5f0b42 replaced (compared against 5f5f0b42^), so the cap's second spelling is gone and nothing else in the row moved.
  • Third spelling: git grep -E '10%|一成|≤10|≤ 10' over .claude/skills on 94fbb742 hits only references/platform-readings.md:102 「GraphQL 端点 2,000 点/分、并发 ≤100」, a rate-limit fact, not the cap; tooling with 上限 / 至多 / 每轮派发 over .claude/**: zero hits. The cap is spelled nowhere in the skill tree.
  • Kept as ruled: references/filing-gate.md is byte-identical on origin/main and the head (67 lines; line 17 「增改 pm 规则的卡只在维护者点名时立(归 ③,正文引点名原话);⛔ 席位自提不立。」). The two 座位贴协议 lines 5f5f0b42 rewrote for the handover consequence (seat-lifecycle.md lines 45 and 47) are untouched. Both round-report readings: see (c).
  • The one deletion that is not the cap, references/seat-lifecycle.md line 21 「session-start-fleet.sh 钩子开会话即印 SKILL.md 触碰 sha 与车道席位贴行,供比对开轮标记。」, is judged (ii), a legitimate in-file payment under the ratchet — not (i), not (iii):
    • Not a content loss. The line describes what a SessionStart hook prints; it is not a rule and tells the seat nothing to do. The operative 开轮互斥 rule is intact and self-sufficient without it: line 17 names where the comparison value comes from (after a fetch, the latest touch sha of SKILL.md, the stage references and the lane charter through git-history.mjs touch, a proven reading), line 18 what to compare it with (the last opening mark) and what a difference triggers (re-read, then a new mark), line 7 where the opening mark lives (the seat post), lines 19–20 the harness-currency reading (check-harness-current.mjs). The hook's printout lands in the session context unprompted, and the hook's own header on origin/main ("What it prints", items 2–3) carries the description and points back at 〈开轮互斥〉 itself, so the cross-reference survives in the direction that matters. The deleted line was in fact the weaker of the two readings: the hook prints the touch on the shared checkout's HEAD (labelling a shallow-graft boundary), while line 17 reads it after a fetch through the proven tool. After the deletion the skill tree names the hook nowhere; its only other references are its self-test and .claude/settings.json, which wires it. AGENTS.md's principle applies: where a hook does something mechanically, the rule is stated once and the script's header is the authority on detail.
    • Not a scope breach. The sentence it pays for is the ruling's consequence (see (b)), which the ③ card orders added if not carried, 「paid in-file」; the ratchet holds the file at ceiling 96 with headroom 0 and no ruling orders a line delta, so a deletion is the only legal payment. Folding was impossible, re-measured on the head: the product-commit-share line is 118 bytes, the line above it 119, the line below 118, against the 120-byte cap; the sentence is 64 bytes. 5f5f0b42 did not add line 21 (its seat-lifecycle.md hunks are lines 42–49 and 68–75), so the deletion reverts nothing of the cap PR beyond the cap.

(b) The added sentence — faithful. seat-lifecycle.md line 72 「产品提交占比连续多轮偏低 ⇒ 席位报维护者。」 sits directly under the product-commit-share reading (line 71) in 〈轮次报告与节奏〉, in the file's condition ⇒ action form. Against the consequence 「产品提交占比连续偏低时由席位报给你」: same subject (the share), same condition (连续偏低), same actor (席位), same addressee (维护者 = 你). 「多轮」 adds no threshold: the reading is taken per round report (line 68), so 「连续」 can only mean consecutive rounds, and no count is introduced — the maintainer gave none, and a count would be a separate ruling. Not a duplicate: before the PR nothing in .claude/skills carried 偏低 or 报维护者 (grep); line 70's 升级项 is a generic slot without this trigger; SKILL.md lines 20 and 66 only define the round report as the maintainer's entry point. The channel is fixed by line 68, the chat round report.

(c) The two readings kept, byte-exact. From the diff of 5f5f0b42 the two round-report readings are (1) the 48h follow-up-PR count, appended to the 报告加 line 「…与已落 PR 48h 内开出的跟进 PR 数。」, and (2) the product-commit share 「与产品提交占比:已合提交不触 .claude/ AGENTS.md scripts/pm 门禁脚本 .github/workflows 者。」. Both are context lines of this PR's hunk (head lines 70 and 71, 119 and 118 bytes, unchanged from origin/main). No "in-flight tooling share" reading was ever landed: the only 占比 line 5f5f0b42 added to seat-lifecycle.md is (2), and the "in flight 12/55 tooling (22%)" figure lives in the ruling record's measured basis, not in the skill. The dev is right: the naming was off, the location right.

(d) Ratchet and bytes, measured on the head tree. SKILL.md 319 lines (ceiling 319); execution-duties.md 187 (ceiling 188, headroom 1); seat-lifecycle.md 96 (ceiling 96) — CEILINGS rows 319 / 188 / 96 on origin/main, the script byte-identical on the head. Widest SKILL.md table row 341 on both revisions (pin 341). The tooling row shrank 228 → 206 bytes, not 207 as the PR body, commit message and report say — a one-byte reporting slip, immaterial: table rows are length-exempt, the pin is unchanged and the row only shrank. No non-table line over 120 bytes in execution-duties.md or seat-lifecycle.md; the five over-120 lines in SKILL.md (311, 313, 314, 317, 318) are the pre-existing dispatch template, untouched and identical on origin/main. No re-wrap: every freed line is a deleted line, and the two added lines are 206 and 64 bytes. check-skill-line-ratchet.mjs's headroom rule, read in its header and its code: lowering is "always legitimate and encouraged", never required; the only lowering prompt is an informational nudge printed when headroom exceeds 120 lines. Leaving execution-duties.md at 187/188 is therefore no drift to file — the card says ⛔ do not lower unless the ratchet requires it, and the claim names two cards (#26121, #25765) waiting on exactly this freed line. Lint & Repo Gates, which carries check:pm-skill-ratchet, is green on the head.

(e) id-lint. The two added lines carry no issue number (# followed by three or more digits, and any run of five or more digits: none); check:pm-skill-id-lint rides in Lint & Repo Gates, green.

② Semver level

skip-changeset is on the PR and is right: the diff is .claude/** only, which publishes nothing from any released package. Body lines 2–3 Clause-②: no and Metadata-protocol: none are right — no published schema, no authorable key, no export moves. The body carries ## 维护者速读(草稿) with 改了什么 / 为什么改 / 风险与代价(含回滚) / 你要做的 filled and 席位意见 left empty, as the form requires.

③ Boundary flags

PR body acceptance notes and os-dev-report flags, each answered:

  • deviations[0] branch claude/project-thread-1r3slx, not claude/issue-26122-…: the claim 6421919798 names this branch as the dispatch's, the PR's Fixes #26122 ties it, and the checks The card this PR closes must claim this branch and No other open PR may claim the same issue are green. Accepted; Implemented-by: carries it.
  • deviations[1] base moved: merge-base f2e70836, six commits on main since, none touching the derivation or governed surfaces (measured above); mergeable: true; the queue rebuilds on current main. Accepted; nothing for this record.
  • deviations[2] check:doc-formula-expressions exit 3, then green after the prescribed build: a local-run note; the head's Lint & Repo Gates is the verdict. Accepted.
  • deviations[3] the commit carries the model-free trailer pair (Claude-Session: and Co-authored-by: Claude); no model identifier in the commit message, PR title or body (scanned). Accepted.
  • deviations[4] hypothesis 2 falsified by measurement: confirmed in (c); the action taken is the ruling's.
  • deviations[5] fold impossible, paid by line 21, ceiling 188 left in place: confirmed in (a) and (d).
  • open_questions: none.
  • out_of_scope_findings[0] and [1] (the knock-then-reclaim rule stated under two seats; 「默认每小时」 against seat-post-protocol.md's no-cadence-copy rule): "noted, not filed" is right as far as cards go — filing-gate.md 「⛔ 不是卡:…协议观察…它们进座位贴或收班简报」 and seat-lifecycle.md 「原则错/缺 → 只进简报,维护者点名才立卡」. The carrier the skill names is the owning seat's 收班简报 (or its seat post), not "none": the seat carries both observations there. Nothing changes on this PR; neither file is in its diff.
  • out_of_scope_findings[2] platform-readings.md:102 「并发 ≤100」: confirmed by my own grep as the sole remaining ≤10 hit and a GraphQL rate-limit fact; right to leave alone.
  • Author: user.login = objectstack-fleet[bot] from the PR object — relay-written, no off-relay login to name. needs:contract-review is not on the PR; nothing to remove.
  • Tier S landing: on this PASS the owning seat lands the PR through the queue (ready, then arm) with every check green; this record readies, arms and enqueues nothing.

Check-runs on 94fbb742, final read at 2026-10-26T17:29Z: 44 runs — 26 success, 18 skipped, 0 failure, 0 in progress (the first read at 2026-10-26T17:24Z had the three type-check lanes in progress and the aggregator not yet created; the last lane completed at 2026-10-26T17:28Z). The eight required contexts: Lint & Repo Gates success, TypeScript Type Check success, Test Core success, Governed Surface Queue Guard success; Build Core, Lint UI, Type Check UI and Build & E2E UI skipped by the paths filter (filter success), the standard outcome for a .claude/**-only diff. Also green: Lint · PM dispatch-gates, Lint · scoped · tooling self-tests, Check Changeset, Check PR Size, Part-of PR must not also close its card, both claim guards and the single-writer-path guard.

Implemented-by: claude/project-thread-1r3slx
Reviewed-by: session_01LqKsGyMNFwwnbF5FTAqyPn

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 — ACCEPT · domain:skills#2 · session_01LqKsGyMNFwwnbF5FTAqyPn · 2026-10-26T17:36Z

Seat review of record for #26122 on head 94fbb742, against GitHub, not the report's own account. Governed .claude/skills/pm-dispatch/** PR, Tier S: the record that unlocks landing is the independent ## Contract review at comment 6423017139 (Served-tier: CONTRACT_REVIEW_TIER, head 94fbb742, VERDICT: PASS, drafted by a reviewer other than the implementer — the in-session os-dev subagent). This seat adds the landing read, not a second contract read.

  1. Shape. Draft, base main, mergeable: true; body line 1 Fixes #26122, no closing keyword beside any other card number; Clause-②: no, Metadata-protocol: none; ## 维护者速读(草稿) present with 席位意见 empty. Files: SKILL.md (line 114, the tooling glossary row, rewritten in place), references/execution-duties.md (line 9 deleted), references/seat-lifecycle.md (line 21 deleted, one line added under the product-commit-share reading); +2/−3, all inside the claim's file surface; filing-gate.md byte-identical. check-governed-merges.mjs --pr 26254: GOVERNED, Tier S (.claude/** ×3, no Tier H path), 5 changed lines. Labels documentation, size/xs, skip-changeset — right, .claude/** publishes nothing.
  2. Record, measured. The reviewer compared both cap spellings against the cap commit 5f5f0b42 (the deleted line byte-identical to the one that commit added; the glossary row byte-equal to the row it replaced), grepped the head's skill tree for a third spelling (only the GraphQL 「并发 ≤100」 fact, not the cap), confirmed the filing gate and both round-report readings (48h follow-up-PR count, product-commit share) survive byte-exact, and judged the seat-lifecycle.md line-21 deletion a legitimate in-file payment: a hook-output description, not a rule, whose authority is the hook's own header, with the 开轮互斥 rule self-sufficient without it; folding was impossible (neighbouring lines 118–119 of 120 bytes). The added sentence 「产品提交占比连续多轮偏低 ⇒ 席位报维护者。」 carries the ruling's consequence with no threshold added. The seat re-read the diff itself and reads the same.
  3. Gates, pinned to head 94fbb742. 44 check-runs, 26 success and 18 skipped, none red or pending — among them Lint & Repo Gates (ratchet 319/187-of-188/96, id-lint), TypeScript Type Check, Test Core, Governed Surface Queue Guard, Lint · PM dispatch-gates, Lint · scoped · tooling self-tests, Check Changeset, Check PR Size, and all claim/close guards.
  4. 维护者速读. 这张 PR 按裁决记录的选项「A 删上限,留读数和立卡门」把 tooling 卡「每轮派发 ≤10%」的上限从技能里删掉(两处拼写都删),立卡门(pm 规则卡只在维护者点名时立)和轮次报告的两项读数(48h 跟进 PR 数、产品提交占比)原样保留,并按裁决后果补一句:产品提交占比连续多轮偏低时席位报维护者。为了在 seat-lifecycle.md 的行数天花板内放下这一句,删了一行只描述 session-start 钩子打印内容的说明(钩子头注本身就是权威)。无脚本、无门禁改动;回滚 = revert 一个提交。
  5. Accepted deviations. (a) Branch claude/project-thread-1r3slx (the measured platform exception), the claim names it and both claim guards are green. (b) Base moved to f2e70836 before the gate run and main advanced since; none of those commits touches a governed or derivation surface; the queue rebuilds on current main. (c) The row-width figure 207 in the PR body reads 206 on the head — a reporting slip, the row only shrank, pin unchanged. (d) execution-duties.md ceiling left at 188 with headroom 1: the ratchet never requires lowering, and two cards wait on exactly that line.
  6. Carrier, not filed. The two protocol observations in the os-dev-report (knock-then-reclaim rule stated under two seats; 「默认每小时」 against the no-cadence-copy rule) go to this seat's 收班简报, per filing-gate.md 协议观察 — no card.
  7. Landing. Tier S with a PASS record on the current head and every check green ⇒ the owning seat readies it and arms auto-merge through the relay (pr_ready, then automerge_enable), on the maintainer's standing word in the seat thread (2026-10-26: 「你按照 pm-dispatch 技能审核的pr都可以落地」), follows it to MERGED, and confirms on both the queue branch and origin/main. After this lands, pm-dispatch: cloud work found during development (dev open_questions, out-of-scope findings, seat findings) is filed as a cloud-lane card #26121 and pm-dispatch review: a PR touching published spec, skills or docs/adr/** owes an independent full review at CONTRACT_REVIEW_TIER before the seat's ACCEPT, not only the contract review #25765 are dispatched in parallel onto the freed line.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 17:37
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit e05e0de Oct 26, 2026
45 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-1r3slx branch October 26, 2026 18:21
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/xs skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pm-dispatch: drop the per-round tooling dispatch cap (≤10%); keep the pm-rule filing gate and the two round-report readings (ruling A)

2 participants