This post is the single authoritative registration of the skills seat. Four-section template; the job description is versioned at .claude/skills/pm-dispatch/references/lanes/skills.md — ⛔ not copied here.
Current PM
🟢 yinlianghui — session session_01HxLw5aKDPR5RJgyUR7Exkd, seated 2026-09-09T01:41Z on the maintainer's /pm-dispatch skills 强制接管 (forced takeover; the previous shift's 收班简报 5583658093 was on the thread as the release marker; round-open marker + takeover audit 5594493741), round 1. Seat tier: claude-fable-5-1 (get_session at 01:47Z) — in-seat contract-tier review is admissible. Maintainer instruction in the live chat at 02:0xZ, verbatim: 「并发加到5个,加快进度」 ⇒ batch 5 for this shift. The previous shift (hotlong, session_01P58euzUXCVJNwmhuPC9DXY, closed 2026-09-08T10:25Z) is archived in the body revision of 2026-09-08T10:23Z.
Round 1 — in flight 5 devs, mode:subagent (state at 02:58Z):
Accepted this round (all at the governed terminal, no approval yet at 02:58Z; four-piece placed on each PR):
A · skills(pm-dispatch): the queue-entry rule needs a third case — a non-required gate that is red BY DESIGN — and check-partof-closing-keyword must stop telling agents to force-push #16516 → PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (49e0fa05, 4 files +39/−4: the queue-entry third case + the two ceiling raises as ruled) — ACCEPT 5594930840 at 02:38Z. [Decision] A commit-trailer red is unclearable by any permitted act, and the gate's own repair requires a MANUAL merge the lane forbids — which rule yields? #16502 stays pm:blocked (this + setting D).
E · [finding] the retirement playbook's walk-radius mandate names <pkg>#test, but since #16466 the 6 split packages hash the radius on #test:repo — and the gate reds if it is on #test #16987 → PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 (c7178179, +4/−4) — ACCEPT 5594873394 at 02:30Z; CI fully green on the head at 02:42Z.
F · objectui#7493 → objectui PR spec: record:alert / record:quick_actions / record:history have no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (022ea6a, +3/−3) — ACCEPT 5595028993 at 02:50Z.
D · [finding] AGENTS.md's commit-trailer sentence is self-ambiguous: it prescribes the "model-free trailer pair" and in the same breath exempts "the harness-written Co-Authored-By trailer" — which carries a model name, so two seats read it two ways and objectui main now holds both shapes #16814 + [finding] Two rules collide on the dev report's acceptance-notes heading: the os-dev definition names ## 验收备注, AGENTS.md requires English for GitHub artifacts — devs are picking a side silently #16807 (fold) → PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (4d41829b, 5 files +13/−13: Reading A at three trailer sites, ## Acceptance notes at five sites, the partof gate's citation following) — ACCEPT 5595061136 at 02:56Z.
All five cards stay pm:dispatched with this seat as assignee until the merge; landing records then.
Done on arrival (01:47–02:10Z): #16182 landing record + assignee cleared (PR #16843 merged by os-zhuang, a814bdb8); #14343 closed completed (H19 row: blocker #14791 closed by PR #16777 e0af1a83); findings graded by the lane's self-triage — #16995 p2/Task, #16987 p2/Task, #16814 p2/Task, #16993 p3/Task, #16807 p3/Task, objectui#8403 p3/Task, objectui#8390 p3/Task, objectui#7493 p3/Bug — finding dropped on each; #17007 filed (half 2 of #16995 ). Previous shift's 留守 item 6 checked 02:05Z: no 原则缺 finding.
Inherited + running ledger
Decision box (this lane) : empty.
Awaiting a human merge : PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (skills(pm-dispatch): the queue-entry rule needs a third case — a non-required gate that is red BY DESIGN — and check-partof-closing-keyword must stop telling agents to force-push #16516 , A) · PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 ([finding] the retirement playbook's walk-radius mandate names <pkg>#test, but since #16466 the 6 split packages hash the radius on #test:repo — and the gate reds if it is on #test #16987 , E) · PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 ([finding] AGENTS.md's commit-trailer sentence is self-ambiguous: it prescribes the "model-free trailer pair" and in the same breath exempts "the harness-written Co-Authored-By trailer" — which carries a model name, so two seats read it two ways and objectui main now holds both shapes #16814 + [finding] Two rules collide on the dev report's acceptance-notes heading: the os-dev definition names ## 验收备注, AGENTS.md requires English for GitHub artifacts — devs are picking a side silently #16807 , D) · objectui PR spec: record:alert / record:quick_actions / record:history have no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (pm-dispatch SKILL: the file-at-destination ruling (#7165) puts target:v17 cards into cloud, which the 发版板 section says can never happen — a live v17 card was invisible to both prescribed queries for ~10h #7493 , F) — all this seat's; os-zhuang + hotlong requested on each; no approval yet. PR skills(pm-dispatch): clause-② cards build at the default tier and are gated by the contract review at CONTRACT_REVIEW_TIER (#16905) #16915 (skills(pm-dispatch): 强制条款② mandates CONTRACT_REVIEW_TIER for IMPLEMENTATION of clause-② cards — drop it to TIER_DEFAULT and let the existing contract review be the gate (maintainer-authorised trial already running) #16905 ) MERGED 92949593 at 02:17Z by os-zhuang (director-seat card, closed).
Awaiting-maintainer (off-GitHub action) : setting D (squash_merge_commit_message → PR_BODY) still NOT applied — the multi-commit squash db76982 (docs(spec): publish the solution-blueprint module header instead of its export list #16992 , read 01:45Z) carries the bulleted commit list; [Decision] A commit-trailer red is unclearable by any permitted act, and the gate's own repair requires a MANUAL merge the lane forbids — which rule yields? #16502 stays pm:blocked on it. Listed, not chased.
Queue (objectstack, pm:queue, this lane) at 02:58Z, selection order : pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding] needs:contract-review was pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 (p2, fold, serial behind B on check-half-states.mjs) · [finding] domain:cli's pm:queue reads as 8 dispatchable cards and is 1 — five of them need a RULING, and the vocabulary already has a state for that #16688 (p2, serial behind that) · dispatch-gates routes no packages/qa/dogfood/** change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 (p2 Bug, serial behind C on dispatch-gates.mjs) · [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 (p3, platform-readings eighth increment + its ratchet row — region-parallel with PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 's two rows, free) · [finding] on a .sh source the JS comment masker swallows real shell code — a /* inside a # comment opens a phantom block comment that runs to the next terminator #16744 (p3 Bug, serial behind dispatch-gates routes no packages/qa/dogfood/** change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 ) · [finding] The lane table's packages/lint split between domain:spec and domain:devx is stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993 (p3, SKILL.md lane table — region-parallel with G / PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 / PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 , free) · gate/AGENTS: the Documentation Guardrails table has no row for packages/*/CHANGELOG.md — a released, consumer-shipped, generated file that is neither .changeset/ input nor content/docs/releases/ #16849 (p3, AGENTS.md Guardrails row — region-parallel with PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 's lines 442–444, free) · pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 (p3, SKILL.md round-open line — serial behind [finding] The lane table's packages/lint split between domain:spec and domain:devx is stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993 ). objectui lane : pm:queue 1 — docs: layout-dsl.mdx Console Template authors tabs on a record:details component, a key ui/RecordDetailsProps does not declare #8403 (AGENTS.md, verification passage; region-parallel with I) — next slot; pm:dispatched 4 (pm-dispatch SKILL: the file-at-destination ruling (#7165) puts target:v17 cards into cloud, which the 发版板 section says can never happen — a live v17 card was invisible to both prescribed queries for ~10h #7493 at the terminal, fix(pm): derive check:i18n by owning-package walk in dispatch-gates #8363 H, feat(lint): ADR-0091 seed pair crosses the runtime publish gate (#8307) #8390 I); pm:blocked 2 (fix(objectql): key i18n bundles by (name, locale) so no member is overwritten (#7730) #7775 ; fix(spec): scope the modifyAllRecords bypass declaration to what sharing enforces (#6698) #6852 p1); pm:awaiting-maintainer 1 (fix(spec,rest): 三条路由不再应答各自 responseSchema 从未声明的形状 (#5882 #5950 #6442) #6596 ).
Holds with a fireable condition : [PM decision] skills lane batch 9 — platform-readings.md third increment: raise the ceiling by the measured +39 (358 → 397); and the MCP write-pool quota sentence collision #15275 · [finding] A contract-review PASS leaves ZERO trace on the PR itself — verdict on the card, label cleared, no review object — so a legitimate un-park is indistinguishable from an intruder from the PR side #13417 · [finding] MCP search_issues DID honour GitHub qualifiers (repo: is: label:) in two exact readings — the ledger's "qualifier form returns total_count 0" rule needs a second session before it stands or falls #16762 · [Decision] The shared GitHub identity's GraphQL quota is being burned to 2× — MCP writes go through GraphQL, so seats are silently write-blocked while reads keep working #11742 (unchanged). devx holds on radar: CI: the shard-timings file is stale for the CLI package — 672s predicted vs 28m46s measured against a 30-minute timeout, so Test Core shard 1/6 is one slow run from being killed on any PR touching the CLI #16173 · [finding] the generated shard-timings dataset has no scheduled refresh, and its documented refresh path is unreachable from an agent container #16222 · dispatch-gates: STAGE-THEN-RUN reaches a program by an edge neither follow traverses — check:objectui-changeset inherits nothing from scripts/bump-objectui.sh #14290 (Restart-touch: scripts/pm/dispatch-gates.mjs — named on C's claim as a report-only rider with [finding] dispatch-gates residue: after #12514 the extensionless-target reason is only reachable for a BARE hint, where it names the wrong cause — latent wrong-reason row, zero instances today #12797 / [finding] check-cross-package-test-inputs' docblock states the single-segment hint refusal without its one exception #12808 ).
Blocked : hotcrm has no half-state patrol anchor, so the pm:dispatched + assignee residue after a Fixes auto-close has now been repaired by hand seven rounds running #14881 (os-steve).
Anchor cards left to their owners : PM corpus audit (maintainer-directed): classify every instruction line — keep / duplicate / demote / delete — then rewrite and re-lock every ratchet #13597 (pm:dispatched, zhuangjianguo) · Published-skills factual sweep: verify every behavioral claim in skills/** against the implementation — program anchor #13658 (pm:epic) · Skills catalog optimization program (maintainer-directed): audit every skill on both roots, then optimize — program anchor #14292 (tracking).
Governed-merge audit (run 01:53Z, --since-ref objectstack=8ccf7a1dfde5 --since-ref objectui=a9bc029969df): objectstack 11 governed merges in window — PRs docs(agents): stacked PR series are not a supported working form #16743 , docs(skills): platform skill's Complete Working Example prints the scaffolder's TypeScript range #16763 , docs(pm-skill): the seventh readings increment — seven landed lines, one in-place correction, and a NON-reproduction #16764 , docs(agents): PR-body footer rule states channel/action dependence, not a form #16771 , docs(skills): name flow-filter-token-unknown for the flow-node filter position #16803 , docs(skills): recommend the per-agent install that lands the bundle once #16806 , feat(hooks): guard the shared process table — kill only a PID you recorded #16843 (the previous shift's, all under os-zhuang's approval), feat(spec, metadata-protocol): add a locale filter axis to seed datasets, composed with env #16592 , feat(spec)!: retire the ListView objectName / viewType react-tier aliases — data / type are the only spellings (#14791) #16777 , feat(spec)!: one node-id space — FlowSchema refuses a region node whose id is declared elsewhere in the flow (#16134) #16825 , docs(spec): publish the solution-blueprint module header instead of its export list #16992 ; objectui 1 (PR deleteManyData's row errors carry raw driver text in errors[].message — the data-batch producer #8136/#8333 never reached #8502 ). Since then: PR skills(pm-dispatch): clause-② cards build at the default tier and are gated by the contract review at CONTRACT_REVIEW_TIER (#16905) #16915 (governed, 92949593, merged_by os-zhuang 02:17Z). cloud / objectos / hotcrm UNAUDITED (no checkout; outside this session's repo scope) ⇒ sweep INCOMPLETE. Next round, exactly: --since-ref objectstack=8d4690b8f55d --since-ref objectui=a9bc029969df.
Change-report items (three classes only) : 平台事实 — list_issues labels array is OR not AND (01:41Z) — already [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 rider C; MCP create_pull_request appends the 90-byte footer block (flight E, n=2 on the MCP side) — already [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 rider A; REST POST without Content-Type: application/json answers 415 (02:31Z); dispatch-gates.mjs --commands adds pnpm check:required-contexts for any .claude/** diff (flight A); a shallow checkout's git log -1 -- PATH answers the boundary commit for any file older than it (objectui, 02:51Z). 可机械化 — B (Maintainer questions filed inside a dev report's open_questions array are invisible to every sweep — one sat 17 days, and it is not the only one #16662 row) in flight; the pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding] needs:contract-review was pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 rows queued. 原则错/缺 — pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 filed.
Hot-file serial queue
.claude/skills/pm-dispatch/SKILL.md (811/811 → 812 when PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 lands): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (A, lines 631–634) ∥ PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (D, lines 348 / 352 / 778) ∥ G (line 60, the batch row) — region-parallel → [finding] The lane table's packages/lint split between domain:spec and domain:devx is stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993 (lane table + anchoring rule, free) → pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 (round-open line). references/core-rules.md (150/150 → 151): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (+1).
scripts/pm/check-skill-line-ratchet.mjs: PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (two rows) ∥ [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 (the platform-readings row + its record) by region.
scripts/pm/check-half-states.mjs: B (Maintainer questions filed inside a dev report's open_questions array are invisible to every sweep — one sat 17 days, and it is not the only one #16662 , row H52) → pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding] needs:contract-review was pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 fold (H51 + carrier-without-increment) → [finding] domain:cli's pm:queue reads as 8 dispatchable cards and is 1 — five of them need a RULING, and the vocabulary already has a state for that #16688 .
scripts/pm/dispatch-gates.mjs: C ([finding] dispatch-gates' other two output lanes disclaim an incomplete OUTSIDE list too — --ran names three of five blocks, and --commands never discloses the WIDE population at all #16795 ) → dispatch-gates routes no packages/qa/dogfood/** change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 → [finding] on a .sh source the JS comment masker swallows real shell code — a /* inside a # comment opens a phantom block comment that runs to the next terminator #16744 .
AGENTS.md (1068/1068) + .claude/agents/os-dev.md (403/403) + references/dispatch-runbook.md: PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (D) at the terminal ∥ gate/AGENTS: the Documentation Guardrails table has no row for packages/*/CHANGELOG.md — a released, consumer-shipped, generated file that is neither .changeset/ input nor content/docs/releases/ #16849 (the Guardrails table near line 672) by region. scripts/check-partof-closing-keyword.mjs: PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (the citation string).
.claude/skills/spec-property-retirement/SKILL.md (337/337): PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 (E) at the terminal.
references/platform-readings.md (402/402): free → [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 . references/contract-review.md (60/60): free → the exit-0 rider (previous shift's item 5) rides the next PR on that file. references/review-checklist.md (77/77): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (:43). references/state-machine.md (42/42) / decision-analysis.md (50/50): B (one sentence in one of them).
objectui: skills/objectui/guides/plugin-development.md: PR spec: record:alert / record:quick_actions / record:history have no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (F) at the terminal. CONTRIBUTING.md + scripts/check-doc-snippet-types.mjs (+ docs/adr/** only if touched): H . AGENTS.md: I (the trap-one passage, line ~186) ∥ docs: layout-dsl.mdx Console Template authors tabs on a record:details component, a key ui/RecordDetailsProps does not declare #8403 (the verification passage) by region.
Notes
Job description: references/lanes/skills.md. Standing facts carried from the previous shift: value gate + reject authority from #13597 ; scripts/docs-audit/handwritten-docs.json NON-governed by ruling; published skills/** governed in objectui too (objectui AGENTS.md 受管面 five items: AGENTS.md, CLAUDE.md, .claude/**, skills/**, docs/adr/**); scripts/pm/** pure-code PRs land by in-seat contract-tier review → ready → queue, any .md in the diff ⇒ draft at the governed terminal; on a governed draft, read the PR's event log before touching anything; the path face is read with get_files and check-governed-merges.mjs --test (objectui: check-governed-queue-guard.mjs --test) before any flip. Ruling C (#16502 ) admits a non-required by-design red into the queue when its three conditions are read and recorded on the PR (precedent PR #16832 ). PR #16915 landed 02:17Z: clause-② cards are BUILT at the default tier and REVIEWED at CONTRACT_REVIEW_TIER (core-rules.md:113 on f7a9740c). pnpm check:pm-dispatch-gates exceeds the 600 s foreground cap: detach + tail --pid. Gate lists derive in this seat's detached scratch worktree at origin/main (scratchpad os-main; an objectui shallow mirror beside it feeds the governed audit); dispatch-gates.mjs --tier --repo objectstack-ai/objectui REFUSES by design — objectui gate lists are hand-derived from its manifest. Governed four-piece writes go through REST (POST …/issues/N/labels, POST …/pulls/N/requested_reviewers, both with Content-Type: application/json) and are read back on GET /pulls/N. Half-state anchor #9857 (swept 2026-09-08T19:46Z): the H19 row on #14343 handled; no other row names this lane; the H17 index names #14290 only for this lane's files. Timers : trig_01Q8PcSXKtjfuFWyrWLbM2WL (check-in #2 , fires 03:21Z). Worktrees : the seat's scratch os-main (detached); dev worktrees objectstack-issue-{16662,16795,16272}, objectui-issue-8363, objectui-issue-8390, each owned by its dev; the devs of 16516, 16987, 16814 and objectui 7493 removed theirs. PR subscriptions : #17016 , #17021 , #17023 , objectui #8744 (harness auto-subscriptions on create).
This post is the single authoritative registration of the skills seat. Four-section template; the job description is versioned at
.claude/skills/pm-dispatch/references/lanes/skills.md— ⛔ not copied here.Current PM
🟢 yinlianghui — session
session_01HxLw5aKDPR5RJgyUR7Exkd, seated 2026-09-09T01:41Z on the maintainer's/pm-dispatch skills 强制接管(forced takeover; the previous shift's 收班简报 5583658093 was on the thread as the release marker; round-open marker + takeover audit 5594493741), round 1. Seat tier:claude-fable-5-1(get_sessionat 01:47Z) — in-seat contract-tier review is admissible. Maintainer instruction in the live chat at 02:0xZ, verbatim: 「并发加到5个,加快进度」 ⇒ batch 5 for this shift. The previous shift (hotlong,session_01P58euzUXCVJNwmhuPC9DXY, closed 2026-09-08T10:25Z) is archived in the body revision of 2026-09-08T10:23Z.Round 1 — in flight 5 devs,
mode:subagent(state at 02:58Z):open_questionsarray are invisible to every sweep — one sat 17 days, and it is not the only one #16662 →claude/issue-16662-open-questions-reader(at baseee2cb6b4at 02:41Z) · opus · governed (references half) · dispatched 02:02Z — first link of thecheck-half-states.mjschainclaude/issue-16795-outside-list-other-lanes(47e1d710pushed 02:41Z) · opus · ungoverned (in-seat review → ready → queue) · 02:02Zbatchdefaults to 3 while the maintainer's cap has been 5 since 2026-09-03 — say which is default and which is ceiling #16272 →claude/issue-16272-batch-row-default-and-ceiling· opus (one-cell mechanical exit, fable review in seat) · governed · 02:40Z, basef7a9740cclaude/issue-8363-adr-code-blocks-are-specimens· opus · governed only ifdocs/adr/**is touched · 02:53Z, base objectui1a23981claude/issue-8390-agents-app-shell-test-count· opus · governed (AGENTS.md) · 02:57Z, base objectui1a23981Accepted this round (all at the governed terminal, no approval yet at 02:58Z; four-piece placed on each PR):
check-partof-closing-keywordmust stop telling agents to force-push #16516 → PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (49e0fa05, 4 files +39/−4: the queue-entry third case + the two ceiling raises as ruled) — ACCEPT 5594930840 at 02:38Z. [Decision] A commit-trailer red is unclearable by any permitted act, and the gate's own repair requires a MANUAL merge the lane forbids — which rule yields? #16502 stayspm:blocked(this + setting D).<pkg>#test, but since #16466 the 6 split packages hash the radius on#test:repo— and the gate reds if it is on#test#16987 → PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 (c7178179, +4/−4) — ACCEPT 5594873394 at 02:30Z; CI fully green on the head at 02:42Z.record:alert/record:quick_actions/record:historyhave no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (022ea6a, +3/−3) — ACCEPT 5595028993 at 02:50Z.## 验收备注, AGENTS.md requires English for GitHub artifacts — devs are picking a side silently #16807 (fold) → PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (4d41829b, 5 files +13/−13: Reading A at three trailer sites,## Acceptance notesat five sites, the partof gate's citation following) — ACCEPT 5595061136 at 02:56Z.All five cards stay
pm:dispatchedwith this seat as assignee until the merge; landing records then.Done on arrival (01:47–02:10Z): #16182 landing record + assignee cleared (PR #16843 merged by os-zhuang,
a814bdb8); #14343 closedcompleted(H19 row: blocker #14791 closed by PR #16777e0af1a83); findings graded by the lane's self-triage — #16995 p2/Task, #16987 p2/Task, #16814 p2/Task, #16993 p3/Task, #16807 p3/Task, objectui#8403 p3/Task, objectui#8390 p3/Task, objectui#7493 p3/Bug —findingdropped on each; #17007 filed (half 2 of #16995). Previous shift's 留守 item 6 checked 02:05Z: no 原则缺 finding.Inherited + running ledger
check-partof-closing-keywordmust stop telling agents to force-push #16516, A) · PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 ([finding] the retirement playbook's walk-radius mandate names<pkg>#test, but since #16466 the 6 split packages hash the radius on#test:repo— and the gate reds if it is on#test#16987, E) · PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 ([finding] AGENTS.md's commit-trailer sentence is self-ambiguous: it prescribes the "model-free trailer pair" and in the same breath exempts "the harness-written Co-Authored-By trailer" — which carries a model name, so two seats read it two ways and objectui main now holds both shapes #16814 + [finding] Two rules collide on the dev report's acceptance-notes heading: the os-dev definition names## 验收备注, AGENTS.md requires English for GitHub artifacts — devs are picking a side silently #16807, D) · objectui PR spec:record:alert/record:quick_actions/record:historyhave no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (pm-dispatch SKILL: the file-at-destination ruling (#7165) putstarget:v17cards into cloud, which the 发版板 section says can never happen — a live v17 card was invisible to both prescribed queries for ~10h #7493, F) — all this seat's; os-zhuang + hotlong requested on each; no approval yet. PR skills(pm-dispatch): clause-② cards build at the default tier and are gated by the contract review at CONTRACT_REVIEW_TIER (#16905) #16915 (skills(pm-dispatch): 强制条款② mandates CONTRACT_REVIEW_TIER for IMPLEMENTATION of clause-② cards — drop it to TIER_DEFAULT and let the existing contract review be the gate (maintainer-authorised trial already running) #16905) MERGED92949593at 02:17Z by os-zhuang (director-seat card, closed).squash_merge_commit_message→PR_BODY) still NOT applied — the multi-commit squashdb76982(docs(spec): publish the solution-blueprint module header instead of its export list #16992, read 01:45Z) carries the bulleted commit list; [Decision] A commit-trailer red is unclearable by any permitted act, and the gate's own repair requires a MANUAL merge the lane forbids — which rule yields? #16502 stayspm:blockedon it. Listed, not chased.pm:queue, this lane) at 02:58Z, selection order: pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding]needs:contract-reviewwas pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 (p2, fold, serial behind B oncheck-half-states.mjs) · [finding]domain:cli'spm:queuereads as 8 dispatchable cards and is 1 — five of them need a RULING, and the vocabulary already has a state for that #16688 (p2, serial behind that) · dispatch-gates routes nopackages/qa/dogfood/**change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 (p2 Bug, serial behind C ondispatch-gates.mjs) · [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 (p3, platform-readings eighth increment + its ratchet row — region-parallel with PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021's two rows, free) · [finding] on a .sh source the JS comment masker swallows real shell code — a/*inside a#comment opens a phantom block comment that runs to the next terminator #16744 (p3 Bug, serial behind dispatch-gates routes nopackages/qa/dogfood/**change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285) · [finding] The lane table'spackages/lintsplit betweendomain:specanddomain:devxis stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993 (p3,SKILL.mdlane table — region-parallel with G / PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 / PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023, free) · gate/AGENTS: the Documentation Guardrails table has no row forpackages/*/CHANGELOG.md— a released, consumer-shipped, generated file that is neither.changeset/input norcontent/docs/releases/#16849 (p3,AGENTS.mdGuardrails row — region-parallel with PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023's lines 442–444, free) · pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 (p3,SKILL.mdround-open line — serial behind [finding] The lane table'spackages/lintsplit betweendomain:specanddomain:devxis stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993). objectui lane:pm:queue1 — docs: layout-dsl.mdx Console Template authorstabson arecord:detailscomponent, a keyui/RecordDetailsPropsdoes not declare #8403 (AGENTS.md, verification passage; region-parallel with I) — next slot;pm:dispatched4 (pm-dispatch SKILL: the file-at-destination ruling (#7165) putstarget:v17cards into cloud, which the 发版板 section says can never happen — a live v17 card was invisible to both prescribed queries for ~10h #7493 at the terminal, fix(pm): derive check:i18n by owning-package walk in dispatch-gates #8363 H, feat(lint): ADR-0091 seed pair crosses the runtime publish gate (#8307) #8390 I);pm:blocked2 (fix(objectql): key i18n bundles by (name, locale) so no member is overwritten (#7730) #7775; fix(spec): scope themodifyAllRecordsbypass declaration to what sharing enforces (#6698) #6852 p1);pm:awaiting-maintainer1 (fix(spec,rest): 三条路由不再应答各自 responseSchema 从未声明的形状 (#5882 #5950 #6442) #6596).search_issuesDID honour GitHub qualifiers (repo:is:label:) in two exact readings — the ledger's "qualifier form returns total_count 0" rule needs a second session before it stands or falls #16762 · [Decision] The shared GitHub identity's GraphQL quota is being burned to 2× — MCP writes go through GraphQL, so seats are silently write-blocked while reads keep working #11742 (unchanged). devx holds on radar: CI: the shard-timings file is stale for the CLI package — 672s predicted vs 28m46s measured against a 30-minute timeout, so Test Core shard 1/6 is one slow run from being killed on any PR touching the CLI #16173 · [finding] the generated shard-timings dataset has no scheduled refresh, and its documented refresh path is unreachable from an agent container #16222 · dispatch-gates: STAGE-THEN-RUN reaches a program by an edge neither follow traverses — check:objectui-changeset inherits nothing from scripts/bump-objectui.sh #14290 (Restart-touch: scripts/pm/dispatch-gates.mjs— named on C's claim as a report-only rider with [finding] dispatch-gates residue: after #12514 the extensionless-target reason is only reachable for a BARE hint, where it names the wrong cause — latent wrong-reason row, zero instances today #12797 / [finding] check-cross-package-test-inputs' docblock states the single-segment hint refusal without its one exception #12808).hotcrmhas no half-state patrol anchor, so thepm:dispatched+ assignee residue after aFixesauto-close has now been repaired by hand seven rounds running #14881 (os-steve).pm:dispatched, zhuangjianguo) · Published-skills factual sweep: verify every behavioral claim in skills/** against the implementation — program anchor #13658 (pm:epic) · Skills catalog optimization program (maintainer-directed): audit every skill on both roots, then optimize — program anchor #14292 (tracking).--since-ref objectstack=8ccf7a1dfde5 --since-ref objectui=a9bc029969df): objectstack 11 governed merges in window — PRs docs(agents): stacked PR series are not a supported working form #16743, docs(skills): platform skill's Complete Working Example prints the scaffolder's TypeScript range #16763, docs(pm-skill): the seventh readings increment — seven landed lines, one in-place correction, and a NON-reproduction #16764, docs(agents): PR-body footer rule states channel/action dependence, not a form #16771, docs(skills): name flow-filter-token-unknown for the flow-node filter position #16803, docs(skills): recommend the per-agent install that lands the bundle once #16806, feat(hooks): guard the shared process table — kill only a PID you recorded #16843 (the previous shift's, all under os-zhuang's approval), feat(spec, metadata-protocol): add a locale filter axis to seed datasets, composed with env #16592, feat(spec)!: retire the ListView objectName / viewType react-tier aliases — data / type are the only spellings (#14791) #16777, feat(spec)!: one node-id space —FlowSchemarefuses a region node whose id is declared elsewhere in the flow (#16134) #16825, docs(spec): publish the solution-blueprint module header instead of its export list #16992; objectui 1 (PRdeleteManyData's row errors carry raw driver text inerrors[].message— the data-batch producer #8136/#8333 never reached #8502). Since then: PR skills(pm-dispatch): clause-② cards build at the default tier and are gated by the contract review at CONTRACT_REVIEW_TIER (#16905) #16915 (governed,92949593, merged_by os-zhuang 02:17Z). cloud / objectos / hotcrm UNAUDITED (no checkout; outside this session's repo scope) ⇒ sweep INCOMPLETE. Next round, exactly:--since-ref objectstack=8d4690b8f55d --since-ref objectui=a9bc029969df.list_issueslabelsarray is OR not AND (01:41Z) — already [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 rider C; MCPcreate_pull_requestappends the 90-byte footer block (flight E, n=2 on the MCP side) — already [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 rider A; RESTPOSTwithoutContent-Type: application/jsonanswers 415 (02:31Z);dispatch-gates.mjs --commandsaddspnpm check:required-contextsfor any.claude/**diff (flight A); a shallow checkout'sgit log -1 -- PATHanswers the boundary commit for any file older than it (objectui, 02:51Z). 可机械化 — B (Maintainer questions filed inside a dev report'sopen_questionsarray are invisible to every sweep — one sat 17 days, and it is not the only one #16662 row) in flight; the pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding]needs:contract-reviewwas pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 rows queued. 原则错/缺 — pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 filed.Hot-file serial queue
.claude/skills/pm-dispatch/SKILL.md(811/811 → 812 when PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 lands): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (A, lines 631–634) ∥ PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (D, lines 348 / 352 / 778) ∥ G (line 60, thebatchrow) — region-parallel → [finding] The lane table'spackages/lintsplit betweendomain:specanddomain:devxis stated only as a trailing clause on two rows — two seats mis-read it the same way on the same day #16993 (lane table + anchoring rule, free) → pm-dispatch: a seated session keeps the charter it loaded — a governed merge to SKILL.md or the seat's lane file is invisible to it until re-seated #17007 (round-open line).references/core-rules.md(150/150 → 151): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (+1).scripts/pm/check-skill-line-ratchet.mjs: PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (two rows) ∥ [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779 (the platform-readings row + its record) by region.scripts/pm/check-half-states.mjs: B (Maintainer questions filed inside a dev report'sopen_questionsarray are invisible to every sweep — one sat 17 days, and it is not the only one #16662, row H52) → pm-dispatch: a contract-review verdict without the label handoff is invisible to every seat — name the FAIL end-state in one sentence, and add H51 for "verdict posted on this head, carrier still on" #16836 + [finding]needs:contract-reviewwas pre-hung at triage again within hours of ruling A landing — 13 carriers on cards with no claim and no PR, and no patrol row reads "carrier without increment" #16995 fold (H51 + carrier-without-increment) → [finding]domain:cli'spm:queuereads as 8 dispatchable cards and is 1 — five of them need a RULING, and the vocabulary already has a state for that #16688.scripts/pm/dispatch-gates.mjs: C ([finding] dispatch-gates' other two output lanes disclaim an incomplete OUTSIDE list too — --ran names three of five blocks, and --commands never discloses the WIDE population at all #16795) → dispatch-gates routes nopackages/qa/dogfood/**change to any gate family — a full derived-family run is green while the Dogfood Regression Gate is red #16285 → [finding] on a .sh source the JS comment masker swallows real shell code — a/*inside a#comment opens a phantom block comment that runs to the next terminator #16744.AGENTS.md(1068/1068) +.claude/agents/os-dev.md(403/403) +references/dispatch-runbook.md: PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (D) at the terminal ∥ gate/AGENTS: the Documentation Guardrails table has no row forpackages/*/CHANGELOG.md— a released, consumer-shipped, generated file that is neither.changeset/input norcontent/docs/releases/#16849 (the Guardrails table near line 672) by region.scripts/check-partof-closing-keyword.mjs: PR docs(agents): the commit-trailer exemption is a reporting one; the acceptance-notes heading is English at all five sites #17023 (the citation string)..claude/skills/spec-property-retirement/SKILL.md(337/337): PR docs(skills): the walk-radius mandate picks the turbo task by rule, not by name #17016 (E) at the terminal.references/platform-readings.md(402/402): free → [finding] platform-readings.md eighth increment — carrier for four readings taken 2026-09-08 (the create-cell footer discriminator, a title-only edit leaving the footer alone, github.com pages 403 through the proxy, the PR-native head-filter read-back leg) #16779.references/contract-review.md(60/60): free → the exit-0 rider (previous shift's item 5) rides the next PR on that file.references/review-checklist.md(77/77): PR skills(pm-dispatch): the queue-entry rule names its third case — red BY DESIGN on a non-required check — and the two ceilings rise by one as ruled #17021 (:43).references/state-machine.md(42/42) /decision-analysis.md(50/50): B (one sentence in one of them).skills/objectui/guides/plugin-development.md: PR spec:record:alert/record:quick_actions/record:historyhave no ComponentPropsMap row — same silent no-op mechanism #8691 closed for the rail #8744 (F) at the terminal.CONTRIBUTING.md+scripts/check-doc-snippet-types.mjs(+docs/adr/**only if touched): H.AGENTS.md: I (the trap-one passage, line ~186) ∥ docs: layout-dsl.mdx Console Template authorstabson arecord:detailscomponent, a keyui/RecordDetailsPropsdoes not declare #8403 (the verification passage) by region.Notes
Job description:
references/lanes/skills.md. Standing facts carried from the previous shift: value gate + reject authority from #13597;scripts/docs-audit/handwritten-docs.jsonNON-governed by ruling; publishedskills/**governed in objectui too (objectuiAGENTS.md受管面 five items:AGENTS.md,CLAUDE.md,.claude/**,skills/**,docs/adr/**);scripts/pm/**pure-code PRs land by in-seat contract-tier review → ready → queue, any.mdin the diff ⇒ draft at the governed terminal; on a governed draft, read the PR's event log before touching anything; the path face is read withget_filesandcheck-governed-merges.mjs --test(objectui:check-governed-queue-guard.mjs --test) before any flip. Ruling C (#16502) admits a non-required by-design red into the queue when its three conditions are read and recorded on the PR (precedent PR #16832). PR #16915 landed 02:17Z: clause-② cards are BUILT at the default tier and REVIEWED atCONTRACT_REVIEW_TIER(core-rules.md:113 onf7a9740c).pnpm check:pm-dispatch-gatesexceeds the 600 s foreground cap: detach +tail --pid. Gate lists derive in this seat's detached scratch worktree atorigin/main(scratchpados-main; an objectui shallow mirror beside it feeds the governed audit);dispatch-gates.mjs --tier --repo objectstack-ai/objectuiREFUSES by design — objectui gate lists are hand-derived from its manifest. Governed four-piece writes go through REST (POST …/issues/N/labels,POST …/pulls/N/requested_reviewers, both withContent-Type: application/json) and are read back onGET /pulls/N. Half-state anchor #9857 (swept 2026-09-08T19:46Z): the H19 row on #14343 handled; no other row names this lane; the H17 index names #14290 only for this lane's files. Timers:trig_01Q8PcSXKtjfuFWyrWLbM2WL(check-in #2, fires 03:21Z). Worktrees: the seat's scratchos-main(detached); dev worktreesobjectstack-issue-{16662,16795,16272},objectui-issue-8363,objectui-issue-8390, each owned by its dev; the devs of 16516, 16987, 16814 and objectui 7493 removed theirs. PR subscriptions: #17016, #17021, #17023, objectui #8744 (harness auto-subscriptions on create).