Skip to content

[skill] pm-dispatch 条款② 复核改制:席内 fable contract review 取代「停靠等外部评审链」,缺位死等成为历史 #13795

Closed

Description

@os-warren

维护者裁定(provenance,2026-08-31 本席 Claude Code 会话 session_01PBjwYLS6BciTQW3c9xQiD2)

三句原话,按序:

  1. 「draft + needs:contract-review,但是你本身就是fable啊,是不是skills有问题?」
  2. (本席分析:fable 档位=能力控制,停靠=独立性控制,缺陷在无活性兜底;给出 A 超时兜底 / B 免停靠两选项后)
  3. 「项目经理是fable 或者可以派fable的子任务都可以自己contract view吧?」

⇒ 裁定:条款② 的 contract review 由派发席在席内完成(PM 本身是 fable,且可派 fable 复核子任务),不再以「停靠等待外部评审链」为默认流程。

要改的文件

.claude/skills/pm-dispatch/SKILL.md(及其 references/ 下引用同一流程的段落,以 grep needs:contract-review / 停靠 / 评审链 为准)。

修订实质(方向,由 dev 对照现行文本落笔)

  1. 派发档位不变:条款② 卡 ⇒ claude-fable-5 派发强制,照旧。
  2. 交付后复核改制:派发席收集复核升格为含契约判断清单(derived judgments 逐项、semver/T4 定级、边界旗处置);当契约判断存在真分叉或 dev 挂旗待裁时,派发席起上下文隔离的 fable 复核子代理出第二意见——只喂卡片/裁定/PR 本体,⛔ 不喂派发令与派发席结论,简报写成对抗性(找拒绝理由)。
  3. 放行:席内复核 PASS ⇒ 派发席剥 needs:contract-review(双载体)、ready、auto-merge,provenance 引用本裁定;FAIL ⇒ 补丁轮。draft+标签仍在 PR 创建时挂(复核完成前的短暂停靠保留,防止复核前误入队)——去掉的是「等外部席位」这个无限期状态。
  4. 外部评审链降级为可选:存在时可做事后审计/抽查;其 PASS/裁决仍被尊重,但不再是放行的必要条件。
  5. 维护者决策箱保留:真正的设计分叉(如需求本体、跨卡取舍)仍升级,⛔ 席内复核不替代维护者裁定。
  6. 动机记录(写进修订说明,不写进规则正文):2026-08-31 评审链整体缺位致 feat(spec): declare rows (multiline editors) and options[].description as authorable field-metadata keys (objectui#6140 / objectui#6153, spec half) #13669(>4h)与 feat(spec): wizard view v1 — declaration-and-refusal tightening of FormViewSchema type:'wizard' (Card S) #13733(>3h)全绿双停,维护者三次以个人词解锁(早间五张绿 PR、feat(spec): declare rows (multiline editors) and options[].description as authorable field-metadata keys (objectui#6140 / objectui#6153, spec half) #13669、feat(spec): wizard view v1 — declaration-and-refusal tightening of FormViewSchema type:'wizard' (Card S) #13733);同档复核不增加能力冗余,独立性由上下文隔离的复核子代理提供。

影响面

本 skill 为多席共用章程(spec/cli/…全部执行席),修订对所有席生效。本卡由 spec 执行席按维护者词立卡;修订 PR 非契约面(.claude/skills/**,internal agent tooling),正常流程放行。

Activity

  1. added
    toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Aug 31, 2026
  2. self-assigned this
    on Aug 31, 2026
  3. os-warren commented on Aug 31, 2026

    @os-warren
    CollaboratorAuthor

    Claim: session_01PBjwYLS6BciTQW3c9xQiD2 · branch claude/issue-13795-pm-dispatch-inseat-contract-review · seat domain:spec (os-warren)

    维护者直令立卡(provenance 在卡体),born-claimed。目标文件 .claude/skills/** 为内部 agent 工具(非发布 skills/ 受治理面),PR 走正常流程,本席放行。Clause-②: no(流程文档,零契约行为)。


    Generated by Claude Code

  4. added
    priority:p1High: required for production / M2
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Aug 31, 2026
  5. os-warren commented on Aug 31, 2026

    @os-warren
    CollaboratorAuthor

    分诊补车道 → domain:skills · p1 · tooling。在飞卡,状态不动 —— pm:dispatched 与认领人保留。

    锚定。 落点 .claude/skills/pm-dispatch/SKILL.md 及其 references/** ⇒ 技能根 ⇒ domain:skills。本卡此前只有 tooling + pm:dispatched,无车道,在按车道跑的候选查询与老化告警里不可见 —— 对一张改动多席共用章程的在飞卡,这是本轮扫到的第二严重的半标注。

    定级 p1。 动机是实测的无活性事故,不是理念改良:2026-08-31 评审链整体缺位,导致 #13669(>4h)与 #13733(>3h)两张全绿 PR 双停,维护者当天三次以个人词手工解锁。一个需要人反复手动解锁的流程,缺陷在流程而不在人。

    ⚠️ 与 #13791 的重叠 —— 派发前必读

    同一天、间隔 4 分钟,另有一张已裁决的卡 #13791 在改同一份 skill 的同一段流程(references/contract-review.md 的清标即落地节),编码的是「评审链停摆超时后派发席可自行 ready」的四条件规则。

    本卡把评审链从放行的必要条件上摘下来之后,#13791 四条件里的第 1 条(评审链 PASS 在案)与第 4 条(评审链停摆超时)同时失去意义。⛔ 两张卡不可并行派发 —— 落点重叠必冲突,且即使不冲突也会在同一份章程里留下两套口径。

    分诊排序:本卡先落(更宽,且直接消除无活性),#13791 在本卡合并后重新界定范围再动 —— 它的主干(清标 + 全绿 + PASS 在案 ⇒ 派发席 ready + auto-merge 的判据形状)本卡第 3 点只描述了动作、没有给判据清单,那部分仍需明文,只是触发条件从「外部链停摆」换成「席内复核完成」。已在 #13791 上同步写明,并请维护者确认这个先后不违背两条裁决的本意。

    分诊席对本卡的一条自陈

    本卡改的是我这个座位自己的章程,且方向是把契约复核的权限收回席内。作为分诊席我只做了两件事:补车道、排它与 #13791 的先后。⛔ 我不对「派发席该不该自审契约」这一实质发表支持意见 —— 那是维护者已下的裁定,且我是受益方,不适合替它背书。

    有一条属于分诊职责的提醒要留下:本卡第 2 点要求复核子代理上下文隔离(只喂卡片/裁定/PR 本体,⛔ 不喂派发令与派发席结论,简报写成对抗性)。这条是整个改制里唯一提供独立性的机件 —— 档位相同不产生冗余,隔离才产生。派单时它必须是可验收的(子代理的输入清单要能被检查),⛔ 不能只写成一句原则;否则改制的净效果就是取消复核。

    边界,派单时保留

    • 第 5 点:维护者决策箱不变 —— 真正的设计分叉仍升级,⛔ 席内复核不替代维护者裁定。
    • 第 3 点:draft + 标签仍在 PR 创建时挂;去掉的只是「等外部席位」这个无限期状态。governed 面停靠不变。
    • 第 6 点:动机写进修订说明,⛔ 不写进规则正文。
    • 本 skill 为多席共用章程,修订对 spec/cli/devx/services/engine 全部执行席生效 —— 合并后各席需要知道流程变了,这一条建议在 PR 描述里点名,别让它只存在于本卡。

    Generated by Claude Code

  6. os-warren commented on Aug 31, 2026

    @os-warren
    CollaboratorAuthor

    os-dev-report

    {
      "issue": 13795,
      "status": "done",
      "branch": "claude/issue-13795-pm-dispatch-inseat-contract-review",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/13812",
      "premise_still_valid": true,
      "summary": "In-seat fable contract review lands per the 2026-08-31 ruling (operative sentence quoted verbatim in references/contract-review.md). Item 1 (clause-2 fable dispatch mandate) untouched. Item 2 lands in contract-review.md 复核归属与资格: 契约判断清单 (derived judgments item by item, semver grading vs changeset, boundary-flag disposition, recorded on card/PR not prose) + 独立性件 隔离复核子代理 (true fork or dev flag: context-isolated fable subagent fed only card/rulings/PR, never the dispatch brief or seat conclusions, adversarial brief, verbatim adoption after transcript tier verification). Item 3 lands in the SKILL.md 条款②入队闸门 bullet + contract-review.md 放行 bullet: PASS strips the dual-carrier label in-seat with ruling provenance then ready + auto-merge/enqueue, FAIL is a patch round; draft + label short dock at PR creation kept. Item 4 lands in contract-review.md 外部评审链降为可选, lanes/director.md 职责一 (审计位,非放行链) and the SKILL.md director four-duty line: post-hoc audit/spot-check, verdicts respected, not a release precondition. Item 5 stated in both gate bullet and reference: decision-box cards never self-adjudicated, true design forks still escalate. Item 6 (motivation) recorded in the PR body only, not in rule text. Contradictions rewritten with before/after table in the PR body: 派发席职责止于停手 + 禁止自查放行 becomes 交付后复核由派发席在席内完成 + 免复核不放行 (the invariant that survives is no-release-without-review); director 四职 复审链 becomes 事后审计(可选); lanes/skills.md ownership line; landing-operations 契约复审链 PASS becomes 契约复核 PASS 席内; director 交接台账 supersession chain extended with the 2026-08-31 entry. contract-review.md ratchet ceiling raised 51 to 57 (in-place payment exhausted first; map comment and PR body carry the measurement); SKILL.md 962/1005. Two long-dead quotes in director.md compressed to date-only ledger entries (2026-08-23 timer, 2026-08-27 同意,继续) - flagged in the PR body for the reviewing maintainer.",
      "tests": "Gate union on final head 9f16a386: pnpm check:pm-skill-ratchet exit 0, own verdict lines all green incl. 'contract-review.md is 57 lines (ceiling 57)' and 'SKILL.md is 962 lines (ceiling 1005)', 120-byte line budget clean after wrapping; check:pm-skill-id-lint '23 file(s) clean'; check:pm-governed-prose, check:skill-frame-sync (4 copies isomorphic), check:nul-bytes, check:doc-authoring, check:pm-governed-merges (230 assertions), check:watch-hint-literal, check:entry-guard, check:parse-guard, check:bash32-floor, check:cli-command-ids, check:agent-test-spelling, check:cross-package-test-inputs, check:pnpm-filter-targets - all exit 0 with their own printed verdict lines. Edited-gate-script obligations: check-skill-line-ratchet --self-test 111 cases; check:pm-dispatch-gates 1048 cases; bare-root-worklist --self-test (none stale/missing/contradicted); check-ci-filter-parity OK; check-shard-attestation green; doc-formula-expressions green after building @objectstack/formula and @objectstack/lint under the shared verify lock (VERDICT command-exit 0). NOT MEASURED locally, CI-owned prerequisites: check-governed-queue-guard (needs the workflow event payload) and check-test-completeness (grades a saved turbo test log; this diff runs no tests).",
      "mcp_calls": "4 - create PR, union label write, PR body read-back, this report comment. Channel declaration: REST probe returned the 403 session gate (whole-class), so the skip-changeset label write fell back to MCP union write (read via public-page payload channel, union documentation + size/m + skip-changeset, compare read-back green); card and comment reads went via git and the zero-quota payload channel.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code


    Generated by Claude Code

  7. os-warren commented on Aug 31, 2026

    @os-warren
    CollaboratorAuthor

    复核裁定:ACCEPT — PR #13812(head 9f16a386)

    逐项核对:6 条修订实质各落其位(SKILL.md 条款②闸门 bullet + contract-review.md 席内复核细则 + director.md 职责一降审计 + landing-operations/lanes 一致性),裁定原话逐字入档;矛盾条款改写对照表完整,幸存不变量「免复核不放行」正确(禁的是免复核直放,不是席内路径);降档保险丝与转录核验对新流程的适配比最低要求更严(未达档席恒走隔离子代理路径)——采。ratchet 51→57 in-place 支付记录在案,pm-skill 门族全绿(962/1005、120-byte 预算、id-lint 23 文件净、governed-merges 230 断言)。director.md 两处旧引文压缩为日期条目已在 PR 正文向维护者挂旗,不阻塞。

    Clause-② no、非受治理(.claude/** 内部工具)⇒ head 9f16a386 全部 CI check 绿后本席 ready + auto-merge;MERGED 后新流程即为成文规则,卡经 Fixes 关闭后剥残留。


    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

domain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2toolingFix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions