Repository navigation
docs(pm-dispatch): a card that touches cloud goes whole to the cloud PM - #26749
Conversation
Triage routes any card that needs cloud code, a cloud producer, a cloud fact or carries a cloud half to the repo:cloud seat as one card (domain:cloud + repo:cloud, a live state, never status:parked), instead of splitting it by repository and leaving the objectstack half waiting in a lane that cannot read cloud. Execution seats skip such cards at candidate time, and a card found to touch cloud mid-flight is released with pm:retriage so triage re-routes it. Every edited file stays at its line ceiling. Claude-Session: https://claude.ai/code/session_01QsR2jTTwA6zymWJpVN94wd Co-authored-by: Claude <noreply@anthropic.com>
…ine budget The ratchet also prices line width: every prose line in a ceilinged file stays within 120 bytes. Compress the seven lines that ran over, without adding a line. "The cloud PM follows the card to closure" moves into the SKILL.md domain:cloud table row, where tables are exempt and the row stays under its 341-byte pin. The candidate-time exclusion is dropped as redundant: a routed card no longer carries a lane domain label, so the lane's candidate query does not return it. Claude-Session: https://claude.ai/code/session_01QsR2jTTwA6zymWJpVN94wd Co-authored-by: Claude <noreply@anthropic.com>
|
Claim: PM loop round 1 (adoption of an existing PR)
|
…n's parking rule Conflicts in pm-dispatch SKILL.md and triage-duties.md against #26972, which implemented the same maintainer rule with domain:cloud + status:parked. This PR's design wins: the domain:cloud row and the triage routing line keep the whole-card route to the cloud PM (repo:cloud, live pm state, never parked; an in-flight card is released to triage). Main's "does not count" exclusion is kept as its own triage line; main's deletion of the ruling-208 line is kept. Claude-Session: https://claude.ai/code/session_01ADHkmPywJ6aAj1KTC5Pvo6 Co-authored-by: Claude <noreply@anthropic.com>
…age line The merge dropped #26972's inclusion line; its hosted-surface, Blocked-by-a-cloud-card and cause-in-cloud items have no other home. They go back as one line paired with the kept exclusion. Claude-Session: https://claude.ai/code/session_01ADHkmPywJ6aAj1KTC5Pvo6 Co-authored-by: Claude <noreply@anthropic.com>
席位核对ACCEPT ·
|
Contract reviewServed-tier: Director seat (summon #52, ledger objectstack#12708), summoned by the ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS Generated by Claude Code |
…d route; pin triage-duties at 102 The repo:cloud description still called it a seam card with pure cloud fixes living in cloud, which the whole-card route replaced. The triage-duties.md ceiling falls to its landed count after the merge with main. Claude-Session: https://claude.ai/code/session_01ADHkmPywJ6aAj1KTC5Pvo6 Co-authored-by: Claude <noreply@anthropic.com>
|
Seat note ·
|
|
Contract-review-claim: Triage seat, under the maintainer-ruled gap rule (#27062), condition (b). The record on file (03:59Z) names Generated by Claude Code |
Contract reviewServed-tier: Triage seat, delta review on a moved head under the gap rule (#27062, condition b; claim 6461897445). Read-only: the net diff against ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgmentEach
Implemented-by: VERDICT: FAIL Generated by Claude Code |
|
Landed · |
Requested by Steedos · project thread
No card: this implements the maintainer's direct instruction in a project thread (2026-10-27T14:12Z), verbatim: 「应该更新分诊和 skills,一个issue只要涉及 cloud ,就归 cloud pm 处理」. It follows the same maintainer's rule of 14:08Z the same day: 「cloud 相关的任务,转 cloud 车道处理」.
What changes
Triage and the pm-dispatch skill now route any card that touches cloud to the cloud PM as ONE card, instead of splitting it by repository:
repo:cloudseat, posts [PM seat] repo:cloud#1 — 🟢 baozhoutao · session_01FSg7JRUiTPo8GrgT38tAWP #6026 (seat 1) and [PM seat] repo:cloud · seat 2 — 🟢 os-zhuang #24145 (seat 2). That seat's own scope already reads "the cloud repo's queue plus the cards on objectstack that carryrepo:cloud", so the routing label isrepo:cloud, withdomain:cloudbeside it.SKILL.mddomain table: thedomain:cloudrow changes from "parked for the cloud PM to migrate" to this:references/cross-repo-coordination.md:domain:cloud+status:parked. The new lines say:domain:cloud+repo:cloudand a live pm state. Its lanedomain:*comes off, and it never getsstatus:parked.repo:cloudcarrier card here carries the whole ask.Release:+pm:retriage) so triage can re-route it. Measured read points stay on the card.references/triage-duties.md: the routing line says a cloud card is routed whole to the cloud lane.references/execution-duties.md: a report or review that finds cloud releases the card to triage. It is not split. A routed card carries no lanedomain:*, so a lane's candidate query no longer returns it.scripts/pm/ensure-pm-labels.sh: thedomain:cloudcomment quotes the new ruling and says it supersedes the 2026-09-18 parking ruling. Both label descriptions say what the label now means and stay within the 100-character cap.--reconcilerealigns the existing label objects; this PR writes no labels.Every edited
.claude/file stays at its line ceiling. Every prose line stays within the ratchet's 120-byte line budget. The text is replaced in place, so no line was added and no ceiling moves.One rule is dropped: the split-by-repository rule for "any unreachable repository". Cloud is the only private repository the fleet cannot read. The general cross-repo rules in the same file still cover dependencies: a transfer lands in the target's queue with
Blocked-by:, and a cross-seat request rides on an existing card.Why
Under the split rule, the objectstack half of a cloud card waits in a lane whose seats cannot read
objectstack-ai/cloud. Two cards stalled that way on 2026-10-27:data-chartparts #25908 (ui): the card thread stopped twice because thevisualize_dataresult shape after cloud#3292 could not be read from the ui lane. Its cloud half was then split to cloud: state the persisted visualize_data result shape after cloud#3292 (chart descriptor key, row cap), so ui can redraw charts after a reload #26744 and parked.The cloud PM can read both repositories, so the card goes to it whole.
Verification
Run in a fresh worktree after
pnpm install --frozen-lockfile, on head 4199852. Exit codes were captured without pipes, and each gate exited 0:check:pm-skill-ratchet(the first head 9958e02 went red here on the 120-byte line budget; fixed in 4199852)check:pm-skill-id-lintcheck:pm-label-desc-capcheck:doc-authoringcheck:pm-governed-prosecheck:skill-frame-synccheck:skill-frame-freshnesscheck:skill-identifier-livenessbash -n scripts/pm/ensure-pm-labels.shNo script reads
domain:cloud(grep overscripts/pm/), so no reader changes behaviour.status:parkedkeeps its H13 exemption for any other parked card.Clause-②: no
Metadata-protocol: none
维护者速读
repo:cloud席),挂domain:cloud+repo:cloud,本仓各车道不认领,也不再拆半边停放。data-chartparts #25908 和 docs#344 今天就这样卡住。references/cross-repo-coordination.md末四行(新的路由规则)和 SKILL.md 的domain:cloud行。.claude/**是 Tier S,需要一份合约档复核记录(PASS)才能落地,按项目规则等总监席;或者您直接批准合并。Not done here, on purpose
references/lanes/cloud.md. The cloud seat post notes that this charter is missing. A new file needs a new ceiling row, and that needs a ruling record id, so the cloud seat's scope stays in its post. A follow-up can add the charter.data-chartparts #25908, cloud: state the persisted visualize_data result shape after cloud#3292 (chart descriptor key, row cap), so ui can redraw charts after a reload #26744, otherdomain:cloud+status:parkedcards). That is triage's work under the new rule once this lands.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (no linted file touched)main, one pull request.skip-changesetapplies.packages/spectouched: not touched.content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code