This post is the single authoritative registration of the skills lane's SECOND seat (domain:skills#2). Four-section template; the job description is versioned at .claude/skills/pm-dispatch/references/lanes/skills.md — ⛔ not copied here. Seat 1's post is #7623 (os-tesla); this seat does not touch seat 1's cards or ledgers. Body r3d , written 2026-10-06T21:20Z by session_0181E4ZeZmWyknawnauxD2CE (os-steve) after PR #22002 's base sync and successor review. r3a–r3c and the r2 series are in the edit history, ⛔ not restated.
Current PM
🟢 os-steve — session_0181E4ZeZmWyknawnauxD2CE, seated 2026-10-06T13:59Z on the maintainer's /pm-dispatch skills in this session; round-open marker 6017926700. Default wake-up: patrol Routine trig_01AGpv4wMw88KexCH41wPrGH (hourly at :57, self-bound). Batch 3; mode:subagent for S/M. Served tier = CONTRACT_REVIEW_TIER (get_session last_served_model, re-read before each ## Contract review; read again at 2026-10-06T21:15Z). Rate-limit status: seven_day / allowed_warning. Posture: standby — the queue holds one held card; one PR waits on a human APPROVED with its checks re-running on a fresh head.
Inherited + running ledger
Queue (pm:queue ∩ domain:skills): 1 — fleet-write: issue_create and issue_patch carry no issue type, so the triage seat cannot set Bug/Feature/Task through the only write path it may use #21915 (p3, HELD serial behind seat 1's in-flight finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892 ; hold note 6018132699). objectui: 0. In flight (devs): 0.
Landed this shift (closed out): PR docs(pm-skill): judge responsibility before dispatch, breaker on reopening security review #21999 (skills(pm-dispatch): judge responsibility before dispatch, and stop a PR whose security review keeps reopening #21929 , Tier S) squash 1bc6ca1d MERGED 2026-10-06T15:42Z — review PASS 6018896616, ACCEPT 6018905057. PR docs(pm-dispatch, os-dev): a user-visible UX defect is class (a) — filed like a functional one when it reproduces on a public surface with a named fix site #22000 (skills(pm-dispatch / os-dev): user-visible UX defects are class (a) — a reproducible, fix-site-named UX defect is filed like a functional one; pure taste and redesign are not #21992 , Tier S) squash 803764a3 MERGED 2026-10-06T15:58Z — review PASS 6019141693, ACCEPT 6019149176. Both cards closed by Fixes, pm:dispatched stripped; both landed through the queue after the two enqueue pre-checks.
Landing window: 1 — PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 (pm tooling: delete scripts/pm/check-widening-tells.mjs (report-only, judges no PR; ruling 208's only in-flight work is deletion — ruled by the maintainer) #21959 ), Tier H by size (6580 changed lines) on a Tier S path: ACCEPT 6019427107, needs-user-decision on the PR, 速读 6019466267, review requested from os-zhuang and hotlong — awaiting a human APPROVED (0 reviews at this writing). Its predecessor landed: PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 (the OSV fix for [finding] main's lockfile matches two new OSV advisories (sharp 0.35.4 GHSA-wq5f-xc86-pv6w high, fixed in 0.35.5; shell-quote 1.10.0 GHSA-pqg4-j6r4-53mv critical, fixed in 1.11.0): Validate Package Dependencies goes red on every PR touching a package.json #22013 ) MERGED as 289ff6d4 2026-10-06T21:13Z, so the parked section in the PR body (landing-operations §C, written 2026-10-06T20:38Z) released and this seat ran the one sanctioned update-branch (REST 202, expected_head_sha = the full 95c510eb…): new head fab444b4 = merge of main 289ff6d4 into 95c510eb, diff content byte-identical to the reviewed one (6580 +/− lines, equal hash). Successor review record PASS 6025638745 on fab444b4 (prior record 6019414425 on 95c510eb). Checks on the new head were 18 completed / 16 in progress / 0 failures at 2026-10-06T21:18Z; Validate Package Dependencies is now running against the fixed lockfile. Next: when every check is green, the body's parked section becomes a "synced" note; after an authorized APPROVED the seat clears the PR label and lands it (pr_ready + automerge_enable via relay). ⛔ No ready flip before the APPROVED.
Decision box: 0. pm:blocked · pm:on-hold · pm:awaiting-maintainer · pm:retriage · bare finding in the lane: 0.
Cross-lane cards this seat filed, both closed by devx: [finding] main's lockfile matches two new OSV advisories (sharp 0.35.4 GHSA-wq5f-xc86-pv6w high, fixed in 0.35.5; shell-quote 1.10.0 GHSA-pqg4-j6r4-53mv critical, fixed in 1.11.0): Validate Package Dependencies goes red on every PR touching a package.json #22013 (OSV red on main) → PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 merged; [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020 (full-history checkout vs job wall) → PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 merged as 099a94da (checkout step budget 20 min; walls 30/55/35/45 on the type-check lanes, 30 on the Governed Surface Queue Guard). The devx dev's carried note: the lint job keeps the same fetch under its 55-minute wall, not exposed in the measured window; its carrier is the next editor of that job after PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 — ⛔ not folded into chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 (a deletion PR under ruling 208, no widening).
Seat 1 (⛔ not this seat's): finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892 in flight (os-tesla; branch at 4c5f2c15fc, last push 2026-10-05T16:45Z, no PR). Triage's owned-24h re-check 6020741621 (2026-10-06T16:28Z) asked the holder for one line (PR coming, or release to pm:queue with the branch named); no answer at this writing. fleet-write: issue_create and issue_patch carry no issue type, so the triage seat cannot set Bug/Feature/Task through the only write path it may use #21915 stays held behind it; if finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892 is released, it is a p1 card in this lane's queue and is taken first, from 4c5f2c15fc.
Harness: CURRENT at 289ff6d4 = origin/main (shared checkout fast-forwarded after each landing; none of today's four landings since 803764a3 touched .claude/**, scripts/pm/** or AGENTS.md).
Hot-file serial queue
Notes
Job description: references/lanes/skills.md. Write paths (verified this shift): scripts/pm/post-stamped.mjs (--repo=owner/name; --ack-through=ID for body refreshes), scripts/pm/label-write.mjs (labels on PRs too, by PR number), scripts/pm/issue-create.mjs (--title-file / --body-file / --label), scripts/pm/fleet-write/dispatch.mjs --actions-file (issue_patch, comment_edit, pr_ready + automerge_enable, pr_request_reviewers); route dispatch; ⛔ no MCP write. Bare REST, per rest-channel.md: PUT .../pulls/{n}/update-branch (used once this shift: 202 Updating pull request branch., head moved within seconds, merge commit committed by GitHub). CI re-runs: MCP actions_run_trigger rerun_failed_jobs answers 201 for the seat (REST 403).
Landing: Tier S = at-tier ## Contract review PASS in seat, then check-expected-skips --pr N exit 0 + check-governed-merges --pr N exit 3 reading Tier S, then the relay flip; check-governed-merges also reads the 5000-line human-merge threshold. The ready flip re-triggers the label-sensitive Governed Surface Queue Guard, so a PR with auto-merge armed enqueues only after that re-run completes (observed 9 minutes on PR docs(pm-dispatch, os-dev): a user-visible UX defect is class (a) — filed like a functional one when it reproduces on a public surface with a named fix site #22000 ) — expected, not a failed arm.
Predecessor-dependent PR (landing-operations §C), as practised on chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 : the body carries the expected-red list (check name, run, error signature) and the release condition; after the predecessor merges, one update-branch, then a successor ## Contract review naming the new head (the diff compared +/− line by line against the reviewed one; index blob ids may move when main edited the same files elsewhere), then the Tier terminal continues. mergeable_state reads unstable while a non-required check is red and blocked on a draft with checks pending.
Liveness baseline measured this shift (mode:subagent, S/M governed-text cards): dispatch → draft PR 32 / 35 / 49 minutes; the 45-minute probe threshold held without a probe. Queue latency observed: enqueue → MERGED 27 and 24 minutes with 2–3 entries ahead; after PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 the merge-group checkouts no longer hit a wall (PRs fix(lint,objectql)!: the object save door gives the build's formula verdict, and a formula fault is logged once per object and field #22031 , docs(cloud-connection): controlPlaneUrl's docblock says '' keeps requests on this origin, not that this runtime is the cloud #22035 , fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 landed in sequence).
Platform readings this shift: (1) a relay issue_patch carrying body on a PR number stores the bytes identical — no footer appended; (2) Validate Package Dependencies is path-filtered — a PR that only removes a package.json scripts line triggers it and inherited main's OSV red ([finding] main's lockfile matches two new OSV advisories (sharp 0.35.4 GHSA-wq5f-xc86-pv6w high, fixed in 0.35.5; shell-quote 1.10.0 GHSA-pqg4-j6r4-53mv critical, fixed in 1.11.0): Validate Package Dependencies goes red on every PR touching a package.json #22013 , now fixed); (3) a type-check lane could be cancelled at Checkout repository by a ten-minute wall with no test body run — the one re-run case, root-caused as the all-refs full-history fetch ([finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020 , fixed by ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 ); (4) pm:seat list_issues with body in fields overflows the tool result, and MCP multi-label list_issues is a union — REST labels=a,b for AND; (5) a shell variable holding backticked text expands them when double-quoted — claim text goes through files, never variables.
Timers: Routine trig_01AGpv4wMw88KexCH41wPrGH; one accelerator live, trig_015kXjuAo7R4qgc6gDLha2U8 (armed at 2026-10-06T21:18Z with a 50-minute delay, to read the new head's checks); the earlier accelerators of this shift are spent or deleted. Standby relies on the Routine, the accelerator and the PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 subscription (PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 's subscription ended with its merge).
This post is the single authoritative registration of the skills lane's SECOND seat (
domain:skills#2). Four-section template; the job description is versioned at.claude/skills/pm-dispatch/references/lanes/skills.md— ⛔ not copied here. Seat 1's post is #7623 (os-tesla); this seat does not touch seat 1's cards or ledgers. Body r3d, written 2026-10-06T21:20Z bysession_0181E4ZeZmWyknawnauxD2CE(os-steve) after PR #22002's base sync and successor review. r3a–r3c and the r2 series are in the edit history, ⛔ not restated.Current PM
🟢 os-steve —
session_0181E4ZeZmWyknawnauxD2CE, seated 2026-10-06T13:59Z on the maintainer's/pm-dispatch skillsin this session; round-open marker 6017926700. Default wake-up: patrol Routinetrig_01AGpv4wMw88KexCH41wPrGH(hourly at :57, self-bound). Batch 3;mode:subagentfor S/M. Served tier =CONTRACT_REVIEW_TIER(get_sessionlast_served_model, re-read before each## Contract review; read again at 2026-10-06T21:15Z). Rate-limit status:seven_day/allowed_warning. Posture: standby — the queue holds one held card; one PR waits on a human APPROVED with its checks re-running on a fresh head.Inherited + running ledger
pm:queue∩domain:skills): 1 — fleet-write:issue_createandissue_patchcarry no issuetype, so the triage seat cannot set Bug/Feature/Task through the only write path it may use #21915 (p3, HELD serial behind seat 1's in-flight finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892; hold note 6018132699). objectui: 0. In flight (devs): 0.1bc6ca1dMERGED 2026-10-06T15:42Z — review PASS 6018896616, ACCEPT 6018905057. PR docs(pm-dispatch, os-dev): a user-visible UX defect is class (a) — filed like a functional one when it reproduces on a public surface with a named fix site #22000 (skills(pm-dispatch / os-dev): user-visible UX defects are class (a) — a reproducible, fix-site-named UX defect is filed like a functional one; pure taste and redesign are not #21992, Tier S) squash803764a3MERGED 2026-10-06T15:58Z — review PASS 6019141693, ACCEPT 6019149176. Both cards closed byFixes,pm:dispatchedstripped; both landed through the queue after the two enqueue pre-checks.scripts/pm/check-widening-tells.mjs(report-only, judges no PR; ruling 208's only in-flight work is deletion — ruled by the maintainer) #21959), Tier H by size (6580 changed lines) on a Tier S path: ACCEPT 6019427107,needs-user-decisionon the PR, 速读 6019466267, review requested fromos-zhuangandhotlong— awaiting a human APPROVED (0 reviews at this writing). Its predecessor landed: PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 (the OSV fix for [finding] main's lockfile matches two new OSV advisories (sharp 0.35.4 GHSA-wq5f-xc86-pv6w high, fixed in 0.35.5; shell-quote 1.10.0 GHSA-pqg4-j6r4-53mv critical, fixed in 1.11.0): Validate Package Dependencies goes red on every PR touching a package.json #22013) MERGED as289ff6d42026-10-06T21:13Z, so the parked section in the PR body (landing-operations §C, written 2026-10-06T20:38Z) released and this seat ran the one sanctionedupdate-branch(REST 202,expected_head_sha= the full95c510eb…): new headfab444b4= merge ofmain289ff6d4into95c510eb, diff content byte-identical to the reviewed one (6580 +/− lines, equal hash). Successor review record PASS 6025638745 onfab444b4(prior record 6019414425 on95c510eb). Checks on the new head were 18 completed / 16 in progress / 0 failures at 2026-10-06T21:18Z;Validate Package Dependenciesis now running against the fixed lockfile. Next: when every check is green, the body's parked section becomes a "synced" note; after an authorized APPROVED the seat clears the PR label and lands it (pr_ready+automerge_enablevia relay). ⛔ No ready flip before the APPROVED.pm:blocked·pm:on-hold·pm:awaiting-maintainer·pm:retriage· barefindingin the lane: 0.main) → PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 merged; [finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020 (full-history checkout vs job wall) → PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 merged as099a94da(checkout step budget 20 min; walls 30/55/35/45 on the type-check lanes, 30 on the Governed Surface Queue Guard). The devx dev's carried note: thelintjob keeps the same fetch under its 55-minute wall, not exposed in the measured window; its carrier is the next editor of that job after PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 — ⛔ not folded into chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 (a deletion PR under ruling 208, no widening).4c5f2c15fc, last push 2026-10-05T16:45Z, no PR). Triage's owned-24h re-check 6020741621 (2026-10-06T16:28Z) asked the holder for one line (PR coming, or release topm:queuewith the branch named); no answer at this writing. fleet-write:issue_createandissue_patchcarry no issuetype, so the triage seat cannot set Bug/Feature/Task through the only write path it may use #21915 stays held behind it; if finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892 is released, it is a p1 card in this lane's queue and is taken first, from4c5f2c15fc.289ff6d4=origin/main(shared checkout fast-forwarded after each landing; none of today's four landings since803764a3touched.claude/**,scripts/pm/**orAGENTS.md).Hot-file serial queue
.claude/skills/pm-dispatch/SKILL.md·references/*.md·.claude/agents/os-dev.md: FREE (PRs docs(pm-skill): judge responsibility before dispatch, breaker on reopening security review #21999 and docs(pm-dispatch, os-dev): a user-visible UX defect is class (a) — filed like a functional one when it reproduces on a public surface with a named fix site #22000 landed).scripts/pm/check-widening-tells.mjs(deleted by PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002) ·.github/workflows/lint.ymllintjob region (one step removed) ·references/instrument-discipline.mdlines 6–7: PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 (Tier H wait).scripts/pm/dispatch-gates.mjs: FROZEN (ruling 208 R6), untouched. Thelint.ymltype-check jobs were re-walled by PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 (landed, disjoint regions).scripts/pm/label-write.mjs·scripts/pm/issue-create.mjs·scripts/pm/fleet-write/*: seat 1's finding(pm tooling): label-write falls back to a direct write under the seat's personal login when an accepted relay dispatch shows no run within 90 s — the identity exchange #19774 forbade, on a second branch #21892 → this seat's fleet-write:issue_createandissue_patchcarry no issuetype, so the triage seat cannot set Bug/Feature/Task through the only write path it may use #21915 (held; serial).Notes
references/lanes/skills.md. Write paths (verified this shift):scripts/pm/post-stamped.mjs(--repo=owner/name;--ack-through=IDfor body refreshes),scripts/pm/label-write.mjs(labels on PRs too, by PR number),scripts/pm/issue-create.mjs(--title-file/--body-file/--label),scripts/pm/fleet-write/dispatch.mjs --actions-file(issue_patch,comment_edit,pr_ready+automerge_enable,pr_request_reviewers); routedispatch; ⛔ no MCP write. Bare REST, perrest-channel.md:PUT .../pulls/{n}/update-branch(used once this shift: 202Updating pull request branch., head moved within seconds, merge commit committed by GitHub). CI re-runs: MCPactions_run_trigger rerun_failed_jobsanswers 201 for the seat (REST 403).## Contract reviewPASS in seat, thencheck-expected-skips --pr Nexit 0 +check-governed-merges --pr Nexit 3 reading Tier S, then the relay flip;check-governed-mergesalso reads the 5000-line human-merge threshold. The ready flip re-triggers the label-sensitiveGoverned Surface Queue Guard, so a PR with auto-merge armed enqueues only after that re-run completes (observed 9 minutes on PR docs(pm-dispatch, os-dev): a user-visible UX defect is class (a) — filed like a functional one when it reproduces on a public surface with a named fix site #22000) — expected, not a failed arm.update-branch, then a successor## Contract reviewnaming the new head (the diff compared +/− line by line against the reviewed one;indexblob ids may move whenmainedited the same files elsewhere), then the Tier terminal continues.mergeable_statereadsunstablewhile a non-required check is red andblockedon a draft with checks pending.mode:subagent, S/M governed-text cards): dispatch → draft PR 32 / 35 / 49 minutes; the 45-minute probe threshold held without a probe. Queue latency observed: enqueue → MERGED 27 and 24 minutes with 2–3 entries ahead; after PR ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033 the merge-group checkouts no longer hit a wall (PRs fix(lint,objectql)!: the object save door gives the build's formula verdict, and a formula fault is logged once per object and field #22031, docs(cloud-connection): controlPlaneUrl's docblock says '' keeps requests on this origin, not that this runtime is the cloud #22035, fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016 landed in sequence).issue_patchcarryingbodyon a PR number stores the bytes identical — no footer appended; (2)Validate Package Dependenciesis path-filtered — a PR that only removes apackage.jsonscriptsline triggers it and inheritedmain's OSV red ([finding] main's lockfile matches two new OSV advisories (sharp 0.35.4 GHSA-wq5f-xc86-pv6w high, fixed in 0.35.5; shell-quote 1.10.0 GHSA-pqg4-j6r4-53mv critical, fixed in 1.11.0): Validate Package Dependencies goes red on every PR touching a package.json #22013, now fixed); (3) a type-check lane could be cancelled atCheckout repositoryby a ten-minute wall with no test body run — the one re-run case, root-caused as the all-refs full-history fetch ([finding] the Type Check · source gates lane is cancelled by its 10-minute wall when the full-history checkout takes 3–10 minutes (6 of 16 runs today over 3 min, two PRs cancelled): the required TypeScript Type Check goes red on PRs at random #22020, fixed by ci(lint, governed-surface-guard): split each full-history job wall into a checkout budget plus a body budget #22033); (4)pm:seatlist_issueswithbodyinfieldsoverflows the tool result, and MCP multi-labellist_issuesis a union — RESTlabels=a,bfor AND; (5) a shell variable holding backticked text expands them when double-quoted — claim text goes through files, never variables.trig_01AGpv4wMw88KexCH41wPrGH; one accelerator live,trig_015kXjuAo7R4qgc6gDLha2U8(armed at 2026-10-06T21:18Z with a 50-minute delay, to read the new head's checks); the earlier accelerators of this shift are spent or deleted. Standby relies on the Routine, the accelerator and the PR chore(pm): delete report-only check-widening-tells.mjs and its wiring (ruling 208) #22002 subscription (PR fix(deps): take the fixes for sharp and shell-quote that turn main's OSV scan red #22016's subscription ended with its merge).