Skip to content

docs(pm-dispatch): the director seat takes no patrol routine in any form - #26661

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-a5f4fi
Oct 27, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-a5f4fi

Conversation

@objectstack-fleet

@objectstack-fleet objectstack-fleet Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread
Fixes #26609

Clause-②: no
Metadata-protocol: none

The director seat takes no patrol routine in any form, the project-seat form included: no patrol routine, no inbox-scan routine, no daily-digest routine. It wakes on the maintainer's summon and on the PR subscriptions it holds; the daily digest and the inbox scan stay duties run within a summon. Lane seats' hourly patrol and the triage seat's hourly round are untouched. Maintainer ruling (director seat's project thread, 2026-10-27T10:12Z): 「总监不需要巡查 routine,立卡更新 skills」.

维护者速读

  • 改了什么:pm-dispatch 技能四个文件五行各同行改写,写明总监席不建任何巡查、收件箱扫描或每日摘要 routine,只靠你的召唤与它持有的 PR 订阅唤醒。
  • 为什么改:你 10-27 裁定「总监不需要巡查 routine」,而旧文本仍让总监席首次坐席自建每日摘要与每小时收件箱扫描,并可与分诊共用一条 routine。
  • 风险与回滚:只动四行协议文本,无代码、无发布面;回滚即 revert 本 PR。
  • 先看:references/project-forms.md 31–32 行(规则主体),SKILL.md 71 行,references/lanes/director.md 23 行。
  • 两分钟验证:git grep -n "总监席加每日摘要\|两者可共用一个 routine\|小时轮可与收件箱扫描" .claude/ 应无输出;pnpm check:pm-skill-ratchet 绿。
  • 需要你做的:无;Tier S(.claude/**)draft,等 skills 席位的契约复核记录 PASS 后由席位落地。

What changes

Five same-line edits in four files under .claude/skills/pm-dispatch/. No file gains or loses a line (all four sit at line-ceiling headroom 0 in check-skill-line-ratchet), and every edited line stays under that gate's 120-byte line budget.

file:line before after
SKILL.md:71 project-seat wake = PR subscriptions + one self-built patrol routine per project, hourly by default same with (总监席除外); the 默认每小时 clause moved out to pay for the 17 added bytes (the original line was exactly 120 B). The hourly default survives at project-forms.md:31 and seat-post-protocol.md:66.
references/project-forms.md:31–32 first seating builds the routine; the director adds a daily digest and an hourly inbox scan; director and triage in one project may share one routine first seating builds the routine, triage adds its hourly bare-card round, the director builds none; the director wakes only on the maintainer's summon and its PR subscriptions, digest and inbox scan run within a summon; pointer to lanes/director.md.
references/lanes/director.md:16 the absent-maintainer line (「未回字 = 不在 = 停」) ended with 「例外 = ../project-forms.md 例行」 the exception is dropped (second commit, at the seat's call): with project-forms granting the director no routine it named an empty set, and the card's rule is no routine in any form.
references/lanes/director.md:23 triage defaults to the director's project; the hourly round may share the inbox scan the seat is summon-only in every form with no routine of any kind; the triage pointer stays.
references/seat-post-protocol.md:66 project-seat patrol defaults to hourly; the protocol never copies the current value, the seat post is the current state adds (总监席无巡查); the trailing 座位贴即现状 folds into the same line's 协议 ⛔ 不复制当前值 (its home stays in every lane file's line 3, 「现值状态恒在座位贴」).

Two trims beyond the card's literal "add on the same line" were forced by the 120-byte budget: a line over it reds the gate, and wrapping would add a line into zero headroom. Each trimmed clause has a surviving home, named above.

Not touched: references/seat-lifecycle.md:69 still routes project-seat health indicators into the director seat's daily digest, which remains a duty run within a summon, so it stays true.

Tests

No test edits and no code; the gates below are the verification.

Acceptance notes

  • git grep -n "总监席加每日摘要\|两者可共用一个 routine\|小时轮可与收件箱扫描" .claude/ prints nothing (exit 1).
  • Line counts unchanged: SKILL.md 319, project-forms.md 54, director.md 88, seat-post-protocol.md 91.
  • Edited line widths: 118 B, 112 B and 118 B, 82 B and 113 B, 119 B.
  • No changeset: the diff is .claude/** only and publishes nothing (skip-changeset declared on the create).

Verification (heads df62731 and 25cc350)

  • pnpm check:pm-skill-ratchet: exit 0 (self-test and gate). pnpm check:pm-skill-id-lint: exit 0, 104 files clean.
  • node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 20 commands at df62731; all 20 were run with their exit codes recorded, and --ran reconciled: 20 derived families accounted for, 20 run, 0 NOT-MEASURED, 0 UNRUN (every exit code 0).
  • At 25cc350 (the director.md:16 commit, one line in a file already in the set): pnpm check:pm-skill-ratchet, pnpm check:pm-skill-id-lint and pnpm check:pm-governed-prose exit 0, and dispatch-gates --commands derives the same 20 commands as at df62731.
  • check:doc-formula-expressions needed @objectstack/formula and @objectstack/lint built first (exit 3, prerequisite); rerun after the build: exit 0.

Generated by Claude Code

The director seat is summon-only in every form, the project-seat form
included: no patrol routine, no inbox-scan routine, no daily-digest
routine. It wakes on the maintainer's summon and on the PR subscriptions
it holds; the daily digest and inbox scan stay duties run within a
summon. Lane seats' hourly patrol and the triage seat's hourly round are
untouched.

Four same-line edits, no new lines (every file sits at ceiling headroom 0,
and each line stays under the 120-byte budget):

- SKILL.md: the project-seat wake line carries the exception; its
  "默认每小时" clause moves out to pay for it (surviving homes:
  project-forms.md and seat-post-protocol.md both state the hourly default).
- references/project-forms.md: the director no longer builds a routine and
  no longer shares one with triage; the two lines now say it builds none,
  how it wakes, and point at lanes/director.md.
- references/lanes/director.md: the shared-hourly-round clause is gone; the
  line states the summon-only rule and keeps the triage pointer.
- references/seat-post-protocol.md: the hourly patrol default now says the
  director seat has none; "座位贴即现状" folds into the same line's
  "协议 ⛔ 不复制当前值" (its home stays in every lane file's header line).

Claude-Session: https://claude.ai/code/session_01ADHkmReVogkwua4SJWZkFW
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 27, 2026
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Oct 27, 2026
…ine exception

With project-forms granting the director seat no routine, the line's
「例外 = ../project-forms.md 例行」 pointed at an empty set; the seat asked
for it to go in the same PR. Same line, no new line.

Claude-Session: https://claude.ai/code/session_01ADHkmReVogkwua4SJWZkFW
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 25cc35082eae4a790c40d29c3c116c8a57edfa57
Local-runs: none
Scope: .claude/skills/pm-dispatch/SKILL.md, .claude/skills/pm-dispatch/references/lanes/director.md, .claude/skills/pm-dispatch/references/project-forms.md, .claude/skills/pm-dispatch/references/seat-post-protocol.md + scripts/pm/check-skill-line-ratchet.mjs, .claude/skills/pm-dispatch/references/seat-lifecycle.md, .claude/skills/pm-dispatch/references/dispatch-runbook.md

Director seat (summon #52, ledger objectstack#12708), summoned by the domain:skills#1 seat. This PR implements card #26609, which this seat filed from the maintainer's word 「总监不需要巡查 routine,立卡更新 skills」 (2026-10-27T10:12Z); the review is of the diff against that rule, read-only at the head above: the diff, the card, the dev report (6441307561), the head tree (fetched, read with git show / git grep), the cited files on origin/main, the head's check runs. dispatch-gates --tier: .claude/skills/pm-dispatch/SKILL.md clause ① ⇒ the rules face, CONTRACT_REVIEW_TIER; served at CONTRACT_REVIEW_TIER. The seat records; it does not approve, ready, queue or merge.

① Derived judgments

  • The rule is encoded as the card states it. Card: the director seat is summon-only in every form, the project-seat form included — no patrol, inbox-scan or daily-digest routine; wakes on the maintainer's summon and its PR subscriptions; digest and inbox scan are duties run within a summon; lane seats' hourly patrol and triage's hourly round untouched. Head text: project-forms.md:31 「…分诊席加每小时裸卡轮;总监席不建」, :32 「总监席只被维护者召唤与 PR 订阅唤醒;摘要与收件箱扫描在召唤内做;见 lanes/director.md」, director.md:23 「本席任何形态都纯召唤制,⛔ 无任何 routine;分诊席默认同项目召唤…」, SKILL.md:71 「…巡查 routine(总监席除外)」, seat-post-protocol.md:66 「项目席巡查默认每小时(总监席无巡查)…」. Each of the card's five edits is present; lane and triage routines keep their words.
  • Nothing left on the head still hands the director a schedule. git grep for the three retired phrases and the director.md:16 例外 clause over .claude/ on the head tree: no hit. Every remaining 「总监席」 line that mentions 摘要/巡查 names a duty or a destination (dispatch-runbook.md:39–46, seat-lifecycle.md:37, :69, seat-post-protocol.md:28, triage-duties.md:5), none a trigger — consistent with the card's "duties run within a summon".
  • director.md:16 trim (second commit) is right. 「例外 = ../project-forms.md 例行」 pointed at the routine project-forms used to grant the director; after :31–32 it named an empty set, and the card's rule is "no routine in any form". Dropping it makes the file say one thing. The dev raised it as an open question (A keep / B drop); the lane seat chose B and the diff carries it — within the card's rule, not beyond it.
  • Line budget held, pay-downs have surviving homes. Head line counts equal main (319 / 54 / 88 / 91 — all four at ceiling headroom 0 in check-skill-line-ratchet.mjs); edited lines measure 118 / 112 / 118 / 82 / 113 / 119 bytes against the 120-byte line cap. SKILL.md:71 lost 「,默认每小时」 — the hourly default still stands at project-forms.md:31 and seat-post-protocol.md:66; seat-post-protocol.md:66 lost 「,座位贴即现状」 — kept by the same line's 「协议 ⛔ 不复制当前值」 and by 「现值状态恒在座位贴」 in all eight lanes/*.md line 3. No rule was deleted to make room.
  • Premise unchanged: director.md:7 「直连 ⛔ 无 Routine/cron」 was already summon-only; the PR extends that to the project form, which is what the maintainer ruled.

② Semver level

.claude/** publishes nothing; skip-changeset; Clause-②: no, Metadata-protocol: none in the body. No level owed. Correct.

③ Boundary flags

  • Governed path (.claude/**, Tier S): no approval yet; the PR is draft and waits for a GOVERNED_APPROVERS review. This seat's account is not one of them; the record is not an approval.
  • Check runs on 25cc3508 at this record: 15 success (incl. Governed Surface Queue Guard, Lint · repo & tooling gates — home of check:pm-skill-ratchet and check:pm-skill-id-lint — Lint · PM dispatch-gates, Lint · scoped · tooling self-tests, the PR-body guards, Test Core), 18 expected skips, 6 still in_progress (Lint · CI, release & engine gates, Lint · docs & code guards, Type Check ×4). Nothing red; a red among the pending re-opens this record.
  • Dev deviations read: the two budget trims (judged above); no reviewer requested through MCP (correct under the seat order); commit made before pnpm install so no local hook ran — the head's CI is the measurement, and it is the one this record reads.
  • Reviewer and card author are the same seat (this one filed pm-dispatch: the director seat takes no patrol routine in any form — project-forms.md:31–32, SKILL.md:71 and director.md:23 still give a project-run director an hourly routine #26609 on the maintainer's word). The review is of the implementation against the card's rule, which is the maintainer's; named so the record is read with that in view.

④ Design judgment

  • project-forms.md:31–32 (the rule's home): the two lines now split cleanly into "who builds what" and "how the director wakes", with the pointer to lanes/director.md where the seat's duties live. Holds against the scenario the card names — a new coordinator seating a director in a project reads these two lines and builds nothing.
  • director.md:23 and :16: the charter says summon-only once, in the form clause, and no longer carries an exception that resolves to nothing. SKILL.md:71 and seat-post-protocol.md:66: the project-seat defaults keep their wording for lane seats with a four-character carve-out each, which is the least text that makes the general line true. Holds.

Implemented-by: claude/project-thread-a5f4fi
Reviewed-by: session_01ADHkmQr732toX135tyo5zs

VERDICT: PASS


Generated by Claude Code

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

维护者速读

  • 改了什么:pm-dispatch 技能里五行同行改写,写明总监席在任何形态下都只靠召唤与 PR 订阅唤醒,不建任何巡查、收件箱扫描或日报 routine;车道席的每小时巡查和分诊席的每小时 Routine 不变。
  • 为什么改:你在总监席线程说「总监不需要巡查 routine,立卡更新 skills」;旧文本把项目席的每小时巡查也套到了总监席,导致总监席自建了一个巡查任务(已删)。
  • 风险与回滚:只改 .claude/** 规则文本,行数不变,不碰代码与发布包;回滚 = revert 本 PR。
  • 先看:references/project-forms.md 第 31–32 行与 references/lanes/director.md 第 16、23 行。
  • 两分钟验证:在 .claude/ 里搜「总监席加每日摘要」「两者可共用一个 routine」「小时轮可与收件箱扫描」,应零命中。
  • 需要你做的:批准本 PR(GOVERNED_APPROVERS),席位随后落地。

席位意见:ACCEPT(待批)。

席位核对

ACCEPT · domain:skills#1 · session_01ADHkmSrRBdu9MdC6fc33Uu · head 25cc3508 · 2026-10-27T12:07Z

  1. 形态 — Tier S, .claude/** only: SKILL.md:71, references/project-forms.md:31–32, references/lanes/director.md:16, :23, references/seat-post-protocol.md:66; every edit on its own line, line counts unchanged (319/54/88/91), each line ≤ 120 B.
  2. 前提实测 — seat read the diff against the card's rule; the two shortened lines keep a surviving home for what they dropped (hourly default: project-forms.md:31, seat-post-protocol.md:66; 「现值状态恒在座位贴」: each lanes/*.md line 3).
  3. 门禁 check-runs — dev ran the 20 derived families on df627315, ratchet / id-lint / governed-prose again on 25cc3508, all exit 0; CI on the head is read again before landing.
  4. 接受的偏差 — director.md:16's routine exception removed in this PR (seat's call: it pointed at a routine that no longer exists).
  5. 范围外去向 — none. Skills-docs: none. Contract review at CONTRACT_REVIEW_TIER: PASS, record 6441471264 on this head.
  6. 落地条款 — governed (.claude/**): stays draft until a GOVERNED_APPROVERS approval; then the seat readies, arms and the queue lands it.

Generated by Claude Code

@os-zhuang
os-zhuang marked this pull request as ready for review October 27, 2026 12:18
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 27, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Landing · domain:skills#1 · 2026-10-27T12:39Z — os-zhuang (GOVERNED_APPROVERS) APPROVED head 25cc3508; CI on that head 24 success / 18 skipped / 0 failing; the seat armed auto-merge (record 6441495187, contract review 6441471264).

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/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants