Skip to content

Unify triage across the three repos under the dedicated triage seat — sister-repo whole-seats narrow to execution seats #9131

Closed

Description

@os-zhuang

Maintainer direct-ruling card, filed and claimed by the skills seat (session session_017TNzEetykdh7ceZGwuAPLq). Provenance (2026-08-16, live PM session): the maintainer asked 「是否建议分诊应该统一收归分诊PM」; presented with the seat's recommendation (unify — merging two already-ruled models: objectstack's 纵向拆分 2026-08-05 + the queue steward's 三仓一座 2026-08-06 precedent with pre-registered split triggers), the maintainer ruled, verbatim:

同意派发(fable,SKILL.md)。

Measured motivation (this shift)

pm:on-hold means different things in two repos (objectstack migrated, objectui did not); objectui carries a 76-card ungraded finding backlog vs objectstack's zero; the seam-card dead-letter incident traced to routing assumptions split across seats; the auto-adjudication authority boundary for sister-repo seats was textually ambiguous and never exercised.

Deliverable (one PR, .claude/skills/pm-dispatch/SKILL.md only)

  1. 多仓协调 rule 4 rewrite: the dedicated triage seat becomes the sole triage/grading/routing/type producer for all three repos; sister-repo repo:* seats narrow to execution seats — claim/dispatch/review/land in their own repo, trust labels, never mint domain:*/type/grades, report mislabels (word-for-word the discipline objectstack execution seats already follow). The skills-lane finding self-grading exception stays as-is.
  2. 分诊座位职责 sections extended to three repos: backlog sweep, first-touch grading (budgeted), release-board production, dedup/shadow checks, and the 代裁通道 now read across objectstack + objectui + cloud; auto-adjudication authority is exclusively this unified seat's (this dissolves the sister-seat A/B ambiguity — centralized control AND authority-follows-duty in one stroke).
  3. Split trigger pre-registered (queue-steward precedent, verbatim shape): round length approaching the fire period, or one repo consistently starved by priority ordering ⇒ split by repo — recorded so scale-out is a documented exit, not a redesign.
  4. Post-merge steps named, not performed here: objectui/cloud seat posts' 范围 lines updated by their own seats (cross-seat notices); the triage Routine's environment must carry three-repo sources (the steward Routine's env is the precedent — if a Routines-UI tweak is needed it is the maintainer's one click, listed in the PR body); the objectui 76-finding backlog is the unified seat's first graded batch (also discharging the pending objectui migration ruling).

Constraints

fable-mandatory (--tier derived and quoted); SKILL.md at 685/686 (headroom 1 post-wave-2) — fund by compression, headroom ≤1; 中文行文, machine literals English; id-lint (no issue numbers in operational text); ADR-class ⇒ draft PR, Fixes this card, skip-changeset, human merge only.

Serial position

SKILL.md hot chain: behind the translation wave-2 PR currently awaiting the maintainer's merge — dispatch fires automatically on its merge event.

Activity

  1. self-assigned this
    on Aug 16, 2026
  2. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Aug 16, 2026
  3. added theissue type on Aug 16, 2026
  4. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    ContributorAuthor

    Claim: PM loop round 8 (skills seat) — maintainer direct-ruling card (provenance in the body).
    Session: session_017TNzEetykdh7ceZGwuAPLq
    Branch: claude/issue-9131-unified-triage
    Worktree: objectstack-issue-9131
    Domain: domain:skills
    File surface: .claude/skills/pm-dispatch/SKILL.md (多仓协调 rule 4 + 分诊座位职责 + split-trigger clause) (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: claude-fable-5 (pm-dispatch root — mandatory; to be confirmed via --tier)
    Serial constraints cleared: SKILL.md chain has exactly one item ahead — the translation wave-2 PR awaiting the maintainer's manual merge; this card is hard-serialized behind it and dispatches automatically on its merge event; zero other open PRs touch the pm-dispatch root; no remote branch matches issue-9131. Sibling-pin coupling: none.
    Note: the maintainer separately reserved the current decision-card inventory for his own handling — the 代裁预筛 offer is withdrawn; this card changes the authority TEXT only and triggers no adjudication of existing inbox cards.


    Generated by Claude Code

  5. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    ContributorAuthor

    Bundle extension (skills seat, same session): the queue-steward retirement card rides this card as bundle member — maintainer ruling minutes after this card's (verbatim: 「:正式退役管家 Routine」, provenance on the member card). Same file, complementary sections (this card rewrites 多仓协调 + 分诊职责; the member removes 队列管家职责 and re-points every steward reference — including into the triage-seat sweep this card expands). One PR, Fixes both; the dispatch that fires on the wave-2 merge event now carries both specs. File surface unchanged (SKILL.md only, plus the member's detector placement per script conventions).


    Generated by Claude Code

  6. added a commit that references this issue on Aug 16, 2026
    104280a
  7. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    ContributorAuthor

    File-surface amendment (same round, bounded in-place exemption): the claim declared .claude/skills/pm-dispatch/SKILL.md plus the member card's detector placement (scripts/pm/check-half-states.mjs, and scripts/pm/check-skill-line-ratchet.mjs for the ceiling ratchet-down). Amended to ALSO include three line-neutral one-line steward re-pointings in .claude/skills/pm-dispatch/references/platform-readings.md, references/seat-post-protocol.md, and references/landing-operations.md — each carried a literal 队列管家 pointer (landing-operations §B's heading is the detail expansion of the very SKILL.md care line this bundle re-points), i.e. the exact dangling-pointer defect class the member card names. Mechanical (correct form pinned by the card's reassignments), no competing in-flight claim on the pm-dispatch root, same gate families (ratchet / id-lint already cover references). Named with evidence in the PR body.

    Session: session_017TNzEetykdh7ceZGwuAPLq · Branch: claude/issue-9131-unified-triage · PR: #9148


    Generated by Claude Code


    Generated by Claude Code

  8. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    ContributorAuthor
    {
      "issue": 9131,
      "status": "done",
      "branch": "claude/issue-9131-unified-triage",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/9148",
      "premise_still_valid": true,
      "summary": "Bundle delivered in one PR (Fixes #9131 + Fixes #9140), based on fresh origin/main after the wave-2 translation merge. Anchor: 多仓协调 rule 4 rewritten (unified triage seat = sole triage/grading/routing/type producer for all three repos; sister repo:* seats narrowed to execution seats; skills-lane self-grading exception kept; split trigger pre-registered), 分诊座位职责 extended to three repos with auto-adjudication exclusively the unified seat's, post-merge steps listed in the PR body only. Member: 队列管家职责 removed with duties reassigned in place (four-branch signature triage to the owning lane PM's landing window, with the merge-queue-triage workflow's on-PR comment as input — workflow verified present at .github/workflows/merge-queue-triage.yml, its header names the comment as the PM-loop signal; fixed-signature-recurrence block survives; ledger-preservation note placed where the re-enqueue duty points; pin-chain backstop moved into the triage sweep); grep 管家 over .claude/ exits 1 (zero hits, steward arg row removed too). Orphan-landing detector placed as H12 in check-half-states.mjs (its data model already reads PR state via H7/H8), threshold ORPHAN_LANDING_STALE_HOURS=6, 12 self-test cases. Net negative: SKILL.md 686 -> 682 lines, ceiling ratcheted down to 682. File-surface amendment (three line-neutral steward re-pointings in references/) recorded on this issue and named in the PR body. skip-changeset applied and read back (documentation, size/m, skip-changeset). ADR-class: draft PR, human merge only — never readied/queued.",
      "tests": "Union re-run AFTER final commit; git rev-parse --short HEAD = 104280aa0. check:pm-skill-ratchet: 'SKILL.md is 682 lines (ceiling 682)' + all reference files at ceiling, self-test 11 pass. check:pm-skill-id-lint: '9 file(s) clean', self-test 10 pass. check-half-states --self-test: '140 cases pass' (incl. 12 new H12). check-partof-closing-keyword --self-test: '28 cases pass' (import surface unbroken). check:skill-frame-sync: '4 copies structurally isomorphic', self-test 12 pass. check:skill-frame-freshness: green ('frame itself is unchanged'). check:nul-bytes: 'OK (scanned 5990 text files)'. Prompt's gate list re-derived via node scripts/pm/dispatch-gates.mjs on actual changed paths — it ADDED check:doc-authoring ('376 files clean') and check:doc-formula-expressions (self-test 24 pass + live green, after pnpm --filter '@objectstack/lint^...' build under the shared verify lock); both green. Tier derived and quoted: 'Model tier — MANDATORY: claude-fable-5 (derived from the file surface, not recalled)' — this run executed on claude-fable-5.",
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code


    Generated by Claude Code

  9. os-zhuang commented on Aug 16, 2026

    @os-zhuang
    ContributorAuthor

    PM review (skills seat, session session_017TNzEetykdh7ceZGwuAPLq): ACCEPT → PR #9148 (bundle: this card + the steward-retirement member), ADR-class terminal. Verified against the merge-base diff (6 files, +127/−41):

    • Unified triage landed: 多仓协调 rule 4 now names the triage seat as 三仓唯一 producer with sister repo:* seats narrowed to execution discipline; 分诊座位职责 opens with 对三仓统一执行; auto-adjudication exclusively the unified seat's; split trigger pre-registered in the steward-precedent shape.
    • Steward retirement complete: 队列管家职责 removed; grep 管家 over .claude/ returns zero — every reference re-pointed, including three line-neutral pointer fixes in references/ under the os-dev bounded exemption (declared in the claim-surface amendment on this card and the PR body — the four conditions and three duties audit clean).
    • H12 orphan-landing detector in check-half-states (data model already reached PR state — right placement call, no new script), ORPHAN_LANDING_STALE_HOURS=6 with rationale, self-tests 140 (+12); the merge-queue-triage workflow verified present and cited as the mechanism.
    • Net negative as ruled: SKILL.md 686→682 with the ceiling ratcheted DOWN in the ledger (shrink is always legal); full union green at 104280aa0; tier derived fable and quoted.

    Terminal three-step: ① recorded here; ② PR #9148 hangs for the maintainer's manual merge — merging restructures the fleet in one stroke (one triage producer × three repos, steward formally retired, orphan-landing watched by machine); ③ round report carries it under "awaiting a human merge". Post-merge steps (this seat executes): steward seat post + anchor retirement notes; cross-seat notices to the objectui/cloud seats (scope narrowing); the Routines-UI deletion of the steward trigger is the maintainer's click; the unified seat's first batch (objectui's 76-finding backlog) begins at its next fire.


    Generated by Claude Code

  10. added a commit that references this issue on Aug 17, 2026
    87fd1ba
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:seat

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions