Uh oh!
There was an error while loading. Please reload this page.
feat(pm-dispatch): four 2026-08-13 scheduling rulings — pm:blocking cache, computed pull order, urgent fable triage, simple cross-lane takeover - #8469
Merged
Conversation
…ache, total pull order, urgent fable triage, simple cross-lane takeover (#8433) Item 1: pm:blocking stored label as a sweep-maintained cache of the Blocked-by: reverse index; supersedes the 2026-08-11 derived-only ruling, reconciled in the same file (both copies of the old sentence rewritten). Item 2: lane pull order written down as a computed total order (p0 > pm:blocking > target board > Bug > age), reconciled with the P1-P5 hand-maintained-gradation rejection. Item 3: urgent cards get an immediate claude-fable-5 triage subagent, triage-only authority, same format and force as Routine triage. Item 4: a simple (mechanical, clear-spec, S-class) cross-lane blocker may be taken over directly by the blocked seat with full claim discipline; lane-claim exception phrases reconciled (Guardrails, cross-seat transfer, cross-domain exception path). SKILL.md 686 -> 685 under the shrink-only ratchet; every added line funded by an equal removal, accounted in the PR body. Seed + consumer note for pm:blocking in scripts/pm/ensure-pm-labels.sh; details with verbatim ruling quotes in references/dispatch-runbook.md. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018WuTtyckQa1VcXwgd52JpN
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
This was referenced Aug 13, 2026
hotlong
marked this pull request as ready for review
August 13, 2026 15:33
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes#8433
Implements the maintainer's four 2026-08-13 scheduling-policy opinions (quoted verbatim, untranslated, in
references/dispatch-runbook.md; date-tagged skeleton lines in SKILL.md). ADR-class merge path: this stays a draft for the maintainer's hand-merge — no auto-merge, no queue, no ready-flip by any AI seat.What each item became
pm:blockingstored label (State model row + 标签纪律 bullet + seed inscripts/pm/ensure-pm-labels.sh): a sweep-maintained cache of theBlocked-by:reverse index — written/removed only by the triage sweep, off when every dependent closes, never hand-set. The 2026-08-11 sentence 「被依赖」是随上游关单衰变的推导属性…⛔ 不落存储标签 is superseded and was reconciled in both places it lived (标签纪律 bullet, line ~96; the old ordering sentence, line ~340): the text now records the 2026-08-11 → 2026-08-13 supersession with dates, and keeps the invariant a label exists iff it has a named reader (readers: the pull order, list-page scans). The seed follows the script's convention: a comment naming the consumers + a description under GitHub's 100-char limit.priority:p0insert-ahead, thenpm:blocking(within-tier by unlock fanout, still computed live — the fanout count stays label-free), thentarget:board items, then typeBug, then the rest; card age breaks ties at every tier. Reconciled with the recorded P1–P5 rejection: what was rejected is hand-maintained gradation values; every tier here reads an existing signal (label, native type field, created_at) with zero per-card maintenance.claude-fable-5triage subagent instead of waiting for the triage Routine's shift cadence; authority surface is triage only (no code, no claim, no dispatch); output lands on the card, same format and force as Routine triage.Interpretation points flagged for review (veto per item as ruled on the card)
pm:blockingahead of typeBugis the PM's reading, not the maintainer's words — the single ordering choice most likely to be flipped at review.target:board items kept as a tier (betweenpm:blockingandBug): the card's four-tier order did not name the release board; silently deleting its queue effect had no ruling behind it, so it was retained. Flip or drop at review if the four-tier order was meant to be exhaustive.packages/specremains the spec seat's regardless, and the takeover is dependency-shaped, not a return of 借调 (load-shaped secondment stays deleted).Region note
Declared surface was SKILL.md queue/triage/dispatch + 标签纪律 sections, the runbook, and
ensure-pm-labels.sh. Item 4 falsifies three standing "only/never" phrases outside those sections; leaving them would ship a self-contradicting skill, so three surgical, same-line-count reconciliations were made and are called out here rather than done silently: 跨座位转移 (多仓协调) gains the takeover as its named sole exemption; 跨域例外路径 (Domain lanes) heading now names two boundary channels; Guardrails' lane-claim clause now reads 例外两条. None of the reserved regions (Model tiering, 发现分诊轮, 落卡/升级流程,references/seat-post-protocol.md,platform-readings.md,review-checklist.md) was touched.SKILL.md line accounting (686/686 shrink-only ratchet → now 685, ceiling untouched)
Additions (+6):
pm:blockingBlocked-by:bullet (4→5) — supersession record + cache semanticsRemovals (−7), each deferring detail to where it already lives verbatim:
Constant-line rewrites: 选择优先级 7→7, 跨座位转移 3→3, 跨域例外路径 4→4, Guardrails bullet 5→5. Net −1; the 1-line headroom is left for the serialized cards behind this one (the fable-exemption card must add Model-tiering text).
Verification
Gate list re-derived from the actual changed paths with
node scripts/pm/dispatch-gates.mjs— it returned exactly the six families named in the dispatch, no additions. All six pass locally (true exit codes captured):check:doc-authoring✓ (376 files clean)@objectstack/lint check:doc-formula-expressions✓ (after building the lint package's dependency closure — first run was the known fresh-worktree false red on missing formuladist/)check:nul-bytes✓ (7630 files, no raw control bytes)check:pm-skill-id-lint✓ (9 files clean — no issue-ID citations added to skill text)check:pm-skill-ratchet✓ (685 lines, ceiling 686, headroom 1)check:skill-frame-sync✓ (4 decision-frame copies isomorphic; none of my edits touch its anchors)No changeset: nothing published releases from
.claude/**orscripts/pm/**—skip-changesetapplies.Generated by Claude Code