Skip to content

pm-dispatch step 8: triage-seat four-lens auto-adjudication of high-confidence decision cards — human floor for feature-add / ADR / protocol-change (maintainer-directed) #7899

Closed

Description

@os-zhuang

Filed by the skills seat (session session_012Gg6rMAti8ZaueWb6BRsDn) on the maintainer's rulings, skills-seat PM session chat, 2026-08-12. Direct routing under the 2026-08-10 standing authorization.

Provenance (maintainer, verbatim, untranslated)

每次待我决裁的时候,我都是模型切换到 fable5 ,让他 帮我从实际业务需求出发,从平台长远合理性出发,从避免ai写代码犯错的角度出发,从创业阶段不扩散需求的角度出发综合分析,给我建议。很多时候ai会有明确的建议,大部分建议我都会接受,这个是不是可以让分诊就处理掉。他没把握的才找我

我同意你的意见,并补充功能新增类的,adr类别的,协议变化类别的,还是需要人工决裁,如果是代码整理或者bug修改,具体的代码细节其实ai看的比我清楚,让我判断我也判断不了。除了以上,你觉得还有哪些要补充

The four lenses named in the first quote are the four-lens block already mandatory on every needs-user-decision card (#7498): ① platform long-term coherence ② measured business pull ③ AI-agent error-resistance ④ startup scope discipline. This card changes who consumes the analysis for high-confidence cases: the triage seat decides and executes with a veto window; only low-confidence or floor-protected cases reach the maintainer.

RULED (execute as written — not re-litigable)

Human floor — always the maintainer, regardless of lens unanimity:

  • 功能新增类 (new-capability additions)
  • ADR 类 (ADR-class changes)
  • 协议变化类 (protocol / public-contract changes)
  • (existing escalation-bar floor, restated): destructive or hard-to-reverse actions — stored-data migration shape, deleting a shipped capability, force operations

Auto-adjudication lane — triage seat decides:

  • 代码整理 (code cleanup / refactoring with unchanged behavior)
  • bug 修复 (bug fixes) — per the ruling, the maintainer cannot judge code-level detail better than the AI can

Confidence gates (approved design, from the same chat): a card is auto-adjudicable only when ALL hold:

  1. 四棱同向 — all four lenses point to the same option; any split ⇒ escalate;
  2. not on the human floor above;
  3. the decision does not narrow or overturn any existing maintainer ruling;
  4. execution is veto-window, not permission-gate: decide → swap needs-user-decision for the working state in one label write → post the four-lens block + conclusion + an auto-adjudicated marker on the card → list every auto-adjudicated card in a dedicated round-report section (the aggregate drift brake);
  5. the adjudication pass runs at claude-fable-5 (same tier as the maintainer's own manual workflow).

Seat-proposed additions (answering 「还有哪些要补充」 — to confirm in the design round; each one narrows the auto lane, never widens it)

  1. Security / permission-boundary changes → human, even when shaped as a bug fix: anything relaxing access control, auth flows, RLS/sharing semantics, or audit trails. A "fix" that widens access is a product decision in disguise.
  2. Gate-weakening → human: lowering a gate threshold, removing a required check, raising a ratchet ceiling, skipping/quarantining tests. AI agents have a structural incentive to make CI green; weakening the farm must stay a human act.
  3. Spend / quota / fleet-shape / default model-tier changes → human: these move the maintainer's budget, not a technical judgment.
  4. New runtime third-party dependency → human (supply chain, license, maintenance obligations).
  5. Unified mechanical boundary test for the feature-vs-bug line, reusing the spec/spec-surface criterion: does the change grow the accepted input set or the public surface? Grows ⇒ 功能新增/协议变化 ⇒ human. Unchanged accept-set pulled back toward the declared contract (declared = enforced restored) ⇒ bug/cleanup ⇒ auto lane.
  6. Flip-back clause: if implementation of an auto-adjudicated card discovers the contract must move after all, the dev stops and the card returns to needs-user-decision — the existing third-tier premise discipline (report the fork; ⛔ never silently re-decide), reused verbatim.

Guardrail carve-out

Step 8's 「Never answer a product/architecture question on the maintainer's behalf」 gains a bounded exception exactly coextensive with the auto lane above — no wider. The SKILL text change edits step 8, the triage-seat duties, and that guardrail line together.

Effect timing

Constraints

Activity

  1. added
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Aug 12, 2026
  2. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Ruling recorded — all six seat-proposed additions confirmed; design round merged with #7885's.


    Generated by Claude Code

  3. os-zhuang commented on Aug 12, 2026

    @os-zhuang
    ContributorAuthor

    Batch membership: absorbed into the #7885 consolidated dispatch (PR₁ carries Fixes #7899; the fully-ruled adjudication protocol — human floor incl. the six ruled additions, gates, veto-window execution, flip-back clause — lands in the triage duty section of the rewritten text). The interim binding remains the cross-seat notice on #6015 until the PR lands. Composition recorded on #7885.


    Generated by Claude Code

  4. removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:skillsDomain lane — seat card indexed by label:pm:seat

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions