Repository navigation
pm-dispatch(runbook): the desktop-launched cloud os-dev path as a fifth cloud lesson — pointer base branch, inherited tier, relay, post-PR pushes that fire no CI, hand-back, visibility - #27308
Conversation
…th cloud lesson — pointer base branch, inherited tier, relay, post-PR pushes that fire no CI, hand-back and visibility The 云卡 section gains 五、桌面 start_session (target: cloud): six measured differences from the API path, each with its re-check where one exists. Paid line-for-line inside the section by merging restatements (the lane-first title rule shown by its own form, the turn-end ban stated twice, the poke stall stated twice, the account-scoped not-found reading over three lines). execution-duties' cloud rows gain one pointer carrying the archive duty for desktop-launched sessions, paid by merging the closure / fixed-overhead rows. Both files stay at their ceilings (245, 188). Claude-Session: https://claude.ai/code/session_017xRBcUi2qhP1eKRbZJ1Ze1 Co-authored-by: Claude <noreply@anthropic.com>
…sktop-cloud-lesson
|
domain:skills#1 · sunhaolin · session_017xRBcUi2qhP1eKRbZJ1Ze1 Contract reviewServed-tier: ① Derived judgmentsDiff read against merge base 65b4920 (main a0aa8a1 touched neither file): +18/−18, 245/188 lines kept.
② Semver levelNone: ③ Boundary flags
④ Design judgmentScenario: a seat reading 五 pushes the pointer first (①), knows the tier inherits (②), passes no Implemented-by: VERDICT: FAIL Seat note: review run by an isolated at-tier reviewer agent, adopted by the seat ( |
…oints at, not where to push 「推…到 `origin/main`」 read as a push destination; 「(= `origin/main`)」 states the pointer's target. Same width (120 bytes), paid in place. Claude-Session: https://claude.ai/code/session_017xRBcUi2qhP1eKRbZJ1Ze1 Co-authored-by: Claude <noreply@anthropic.com>
|
domain:skills#1 · sunhaolin · session_017xRBcUi2qhP1eKRbZJ1Ze1 Contract reviewServed-tier: ① Derived judgmentsDelta since 6474334819: ② Semver levelUnchanged from 6474334819: ③ Boundary flags
④ Design judgmentScenario and lesson ③ vs the script headers: unchanged from 6474334819. L123 now names what the pointer branch points at rather than a push destination; the three-start-failure remedy reads one way only. Self-contained: no issue numbers in the changed line. Implemented-by: VERDICT: PASS Seat note: delta review by the same isolated at-tier reviewer agent as 6474334819, adopted by the seat ( |
|
domain:skills#1 · sunhaolin · session_017xRBcUi2qhP1eKRbZJ1Ze1 维护者速读(席位终稿,钉 head
|
Fixes #27214
Clause-②: no
Metadata-protocol: none
维护者速读
start_session(target: cloud)」六条实测差异(基底指针分支、模型继承发起席位、中继自选、席位看不见会话、PR 后推送不触发 CI、交回只经 GitHub);执行职责云卡行加一条指针,并写明桌面起的云会话归档落维护者。.claude/skills/pm-dispatch/references/dispatch-runbook.mdL122–L127(新增五课六行)与 L110–L121(付账压缩的旧四课);references/execution-duties.mdL146、L148。pnpm check:pm-skill-ratchet—— 两文件各印245 lines (ceiling 245; headroom 0)与188 lines (ceiling 188; headroom 0);sed -n 122,127p .claude/skills/pm-dispatch/references/dispatch-runbook.md看到 ①–⑥。What changes
Two protocol files, every edit inside the claimed surface (the cloud-lesson section of
dispatch-runbook.md, themode:cloudrows ofexecution-duties.md〈派发〉). Neither file gains or loses a line; every prose line is at most 120 bytes; no re-wrap is used as currency: each freed line comes from merging two rules that restated each other, never from re-flowing the same text. Basefa5e7825, head375a0618. Bytes are UTF-8 without the newline.In the quotes below the angle-bracket placeholders of the source lines are spelled LANE / NUM / PHRASE / N, because the body sanitizer eats bracket-shaped fragments; the file keeps its original spelling.
dispatch-runbook.md— the section heading becomes 「云卡(mode:cloud)五课」; 18 content lines before, 18 aftercreate_sessionwithsource_urlcan push. Dropped words only: 拉起的, 勘察, 出生即持…授权 → 可推送.outcome_branch(claim branch), explicitmodel,titlein the form⚡ LANE #NUM PHRASE, ⛔ not named os-dev. 「以车道名开头」 is what the form itself shows (LANE leads), so it is a restatement. 「trigger 流不可指模型」 moves to L124 ②, where it merges with the desktop half of the same fact.open_questions, product behaviour / contract → fork; unattached sister repos unreachable, the PM files the cross-repo follow-up. 「⛔ 不为提问或中报结束回合」 is the negative restatement of L112's two-endpoint rule (a question or mid-report is neither endpoint), so it is the line's payment.get_sessionreads state, IDLE with nothing pushed = stalled. 「停摆待 poke」 restated L114's stall.origin/mainfirst, ⛔ never commit to it; re-checkget_session→branchandls-remote --heads. ②model/effortcannot be set (as on the trigger flow); the session inherits the launching seat's tier, so the claim says so or the seat launches from a session already on the card's tier. ③ the relay picksdispatchfrom the container session id, ⛔ no--session. ④ the seat'slist_sessionslists local sessions only and does not see it. ⑤ pushes by the Claude GitHub App after the PR exists fire no workflow (re-check: the check-suites of that push): open the PR after the last push, or plan a user-token re-push. ⑥ it receives no poke and cannot message the seat; the PR and the report comment are the only hand-back; a REWORK runs as a local os-dev on the same branch under the same claim.execution-duties.md— 188 lines before and afterstart_sessionfollows lesson 五 of the runbook's cloud section; the seat cannot see its session, so its archive falls to the maintainer. Placed right after 「归档义务只落在云卡」, which it qualifies.Tests
No package is touched (
.claude/**only): no build closure, no package test or typecheck, no changeset (skip-changesetdeclared atpr_create), no ablation (protocol text, not tested behaviour). The gates are the test; see Verification. The only build run was@objectstack/formula+@objectstack/lint, the declared prerequisite ofcheck:doc-formula-expressions.Acceptance notes
execution-duties.mdL148, beside the archive duty it qualifies.get_session→branch,git ls-remote --heads origin BRANCH, the check-suites of a post-PR push); all three are on ① and ⑤. ② ③ ④ ⑥ carry none because the card names none, and the desktop seat cannot read a cloud session's state (④).fa5e7825when this branch was cut, so there was nothing to reconcile;origin/mainwas merged again at65b49208before opening (neither file changed there).scripts/pm/with-fleet.shandscripts/pm/fleet-write/dispatch.mjs; the lesson line states only what the seat must not pass.Verification
Derived gates on head 375a061 — 17 derived, 17 run, every exit 0; reconciliation by --ran
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(change set from the merge base, 2 paths, +18 / -18), each run with its exit code captured before any pipe:--ran:Run reconciliation — 17 derived, 17 run, 0 NOT-MEASURED, 0 UNRUN.·✓ dispatch-gates --ran: 17 derived famil(ies) accounted for — 17 run, 0 NOT-MEASURED (a DERIVED zero — all 17 recorded an exit code and none of them is 3).On the pre-merge head
593fa8ecthe same 17 were run first;check:doc-formula-expressionsexited 3 (PREREQUISITE NOT MET:@objectstack/formulaand@objectstack/lintnot built — nothing measured), and after the build it exited 0.Ratchet readings for the two files
A line over 120 bytes would have printed a red length verdict; none did.
Generated by Claude Code