Repository navigation
[finding] Cloud dev sessions get auto-subscribed to their own PR with a drive-to-green posture that contradicts os-dev L2 (report-at-draft; PM owns CI convergence) #7512
Description
Activity
Triage:
needs-user-decision+domain:devx.- Why decision-box, not
finding: this is not a dormant observation — the instruction conflict fires on every cloud-dispatched card (theafterDeletefires inside a rollback-able transaction, so a rolled-back cascade leaves a hook that fired for a row that still exists #7477 dev already had to derive a resolution mid-task), and the body deliberately declines to pre-rule between shapes (a)/(b)/(c), each redrawing the L2 "who owns a red gate" ownership line. That is a process-contract ruling only the maintainer can make; once ruled, the execution card (os-dev.md / dispatch-brief edit) queues. - Landing anchor (read):
origin/main@1530870— the L2 clause the platform posture contradicts is live at.claude/agents/os-dev.md:237("you report at draft-PR time; the PM…") and:343/:373. Any accepted fix lands in.claude/protocol files ⇒domain:devx. - Dedup: [skill] pm-dispatch: 5 lessons from the domain:metadata seat's first term (8 cards MERGED / 0 rework / 4 dev-side falsifications) #6644 (L2 ruling, closed), [finding] os-dev agents idle-poll CI after their work is finished, burning the session limit and holding a seat's water level behind a task that is functionally done #7156/[batch] PM-skill optimization: maintainer-accepted 9-point plan, consolidated with #5925 item 7 + #6644 L2 + #7055 + #7156 #7341 (idle-poll family, closed) are the cited ancestry, not duplicates; no open card covers the platform-subscription conflict.
target:v17: no — internal dispatch protocol.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- Why decision-box, not
Maintainer ruling recorded 2026-08-11 (PM session, executing the maintainer's direct instruction in chat — verbatim: 「接受你的全部建议,请更新 issue 的状态和标签」, accepting the four-lens decision-inbox review in full).
Ruling: option (a). Add an explicit clause to
.claude/agents/os-dev.md(and the dispatch-brief template where it repeats) ranking the dispatch contract — report-at-draft, honest gate status, ⛔ no idle-polling CI, PM owns CI convergence / ready-flip / landing — above platform-injected PR-subscription postures for dispatched dev sessions. The platform text is outside the repo's control; the only side we can pin is ours, and the status quo the #7477 dev had to derive becomes textual.State:
needs-user-decision→pm:queue(domain:devxseat; protocol-file card,model: claude-fable-5per the tiering ruling).
Generated by Claude Code
huangyiirene commented
on Aug 11, 2026 CollaboratorMore actionsTransferred to the skills seat (#7623): label
domain:devx→domain:skills. Executed on the maintainer's direct chat instruction to the devx seat, 2026-08-11, verbatim: 「所有现有 skills 相关卡片转到 新的项目经理」.⚠️ Borderline call, recorded rather than hidden: the contradiction is with dispatch-protocol doctrine (os-dev L2), but the fix could land in.claude/agents/os-dev.mdor platform subscription config — neither inside the skills roots. Routed to skills because the doctrine half is the substance; if the skills PM's read at work time is that the fix face is entirely outside the skills roots, bounce it back through triage rather than stretching the seat's scope.
Generated by Claude Code
- added a commit that references this issue
on Aug 17, 2026
Observation-class finding, filed by the
domain:engine-corePM seat (sessionsession_01MhAQCKYvakd4fx78uZXUB2) from a dev's stop-and-flag during #7477. Unassigned, deliberately not queued — triage grades it. PM-skill/protocol cards mandateclaude-fable-5per the model-tiering ruling.What was observed
When the #7477 dev session (
session_018vok76Sp1NgLNbWHYSoLtj, cloud card) created draft PR #7502, the platform auto-subscribed that session to its own PR and injected instructions carrying a drive-to-green posture — stay resident, react to CI events, do not end a CI-failure wake without a push or a blocker reply, arm hourly self check-ins until MERGED.That posture directly contradicts the protocol the dev was dispatched under:
.claude/agents/os-dev.mdand the dispatch brief): report at draft-PR time, record gate status honestly (in_progressincluded), ⛔ do not idle-poll CI — the PM owns CI convergence, the ready-flip and landing.The dev resolved it correctly (followed L2, delivered the report, flagged the conflict in
open_questionsinstead of silently picking a side) — this card exists so the conflict gets ruled once instead of being re-litigated inside every future cloud dispatch.Why it matters
Non-goals / boundaries
Refs
afterDeletefires inside a rollback-able transaction, so a rolled-back cascade leaves a hook that fired for a row that still exists #7477 / PR docs(spec,objectql): declare that after* hooks fire inside the unit of work (#7477) #7502 — the observation site (dev reportopen_questions[2], 2026-08-11 04:01Z).Filed unassigned — recording the finding, not claiming it.