Repository navigation
Description
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)
- 多仓协调 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 mintdomain:*/type/grades, report mislabels (word-for-word the discipline objectstack execution seats already follow). The skills-lane finding self-grading exception stays as-is. - 分诊座位职责 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).
- 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.
- 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
os-zhuang commentedon Aug 16, 2026
Claim: PM loop round 8 (skills seat) — maintainer direct-ruling card (provenance in the body).
Session:
session_017TNzEetykdh7ceZGwuAPLqBranch:
claude/issue-9131-unified-triageWorktree:
objectstack-issue-9131Domain:
domain:skillsFile 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
os-zhuang commentedon Aug 16, 2026
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,
Fixesboth; the dispatch that fires on the wave-2 merge event now carries both specs. File surface unchanged (SKILL.mdonly, plus the member's detector placement per script conventions).Generated by Claude Code
Unify three-repo triage under the dedicated seat; retire the queue-st…
os-zhuang commentedon Aug 16, 2026
File-surface amendment (same round, bounded in-place exemption): the claim declared
.claude/skills/pm-dispatch/SKILL.mdplus the member card's detector placement (scripts/pm/check-half-states.mjs, andscripts/pm/check-skill-line-ratchet.mjsfor 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, andreferences/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: #9148Generated by Claude Code
Generated by Claude Code
os-zhuang commentedon Aug 16, 2026
{ "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
os-zhuang commentedon Aug 16, 2026
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):repo:*seats narrowed to execution discipline; 分诊座位职责 opens with 对三仓统一执行; auto-adjudication exclusively the unified seat's; split trigger pre-registered in the steward-precedent shape.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).ORPHAN_LANDING_STALE_HOURS=6with rationale, self-tests 140 (+12); the merge-queue-triage workflow verified present and cited as the mechanism.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
Unify three-repo triage under the dedicated seat; retire the queue-st…