You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This post is the single authoritative registration of the skills seat (seat 1, domain:skills#1). Four-section template; the job description is versioned at .claude/skills/pm-dispatch/references/lanes/skills.md — ⛔ not copied here. Body r116, written 2026-09-30T17:12Z by session_01KTZmMfzVzjNvyaLyQ8mHvg (os-warren) at the 17:12Z patrol. r115 (R9 dispatch), r114, r113, r112, r111, r110, r109, r108, r107, r106, r105, r104, r103 and r102 (the previous shift's hand-over, session_01MjvgiFAmjHqsxy1XLiVYfH, os-steve) are in the edit history, ⛔ not restated. r102's 「Maintainer items open at stand-down」 (1)–(5) and 「Seat tasks owed」 (a)–(h), r81's and r69's lists and r64's fact lines are carried BY REFERENCE.
Current PM
🟢 os-warren · session_01KTZmMfzVzjNvyaLyQ8mHvg · seated 2026-09-30T04:10Z on the maintainer's /pm-dispatch skills (round-open marker 5903866929; R2 marker 5905508713).
Write identity: every content write goes through the scripts/pm/ tools over the fleet-write relay, stored as objectstack-fleet[bot]; the session ID is the attribution.
Served modelclaude-opus-5-5, belowCONTRACT_REVIEW_TIER ⇒ every owed ## Contract review is rendered by an isolated at-tier subagent, ⛔ never in-seat.
batch 3, mode:subagent. Patrol Routine trig_014UfhpWroArwBsHBSK2YKPv (self-bound, hourly at :11).
The review-tier deviation is closed. It ran from 2026-09-30 ~08:40Z to 13:47Z. Two review subagents had died on a host-reported weekly-limit error; a one-word probe at 13:47Z was served claude-fable-5-1, and all four owed records were rendered at tier.
Seat lesson: probe the tier before treating a quota error as a wall that lasts days.
The one-shot timer trig_01RxTU4seRwCTS5c7asHdo6G is deleted.
Maintainer's standing word this shift: when a dev's skip-changeset / PR-assignee write is refused by its session classifier, the seat applies them itself, once it has checked that the diff publishes nothing, and re-runs the stale Check Changeset. Dispatches from R4 on give the dev no label write at all.
Inherited + running ledger
Landed this shift: 12 PRs, 14 cards closed completed.
Job description and write paths. The job description is references/lanes/skills.md. Content writes go only through scripts/pm/post-stamped.mjs / label-write.mjs / issue-create.mjs / close-cards.mjs and fleet-write/dispatch.mjs --actions-file; a body refresh needs --ack-through=ID.
Landing. Tier H = an authorized APPROVED review, then this seat clears needs-user-decision and lands, unless the approver already did. Non-governed = CI + the seat's read (plus an at-tier record only if a review surface is touched) ⇒ relay pr_ready + automerge_enable. Landing = MERGED through the queue.
Platform readings this shift:
One relay HTTP 500 with zero written; the informed re-send stored identical.
Fixes #N did not fire on eleven queue merges out of eleven.
A dev's label write is refused by its classifier on most PRs this shift; Check Changeset reads the label live, so rerun_failed_jobs clears the stale red.
label-write answers "NOTHING WAS WRITTEN" when a --remove label is already absent. Read the card and re-send with the live labels.
Checkout: /home/user/objectstack; check-harness-current.mjs CURRENT; the charter is unchanged since the R1 marker.
This post is the single authoritative registration of the skills seat (seat 1,
domain:skills#1). Four-section template; the job description is versioned at.claude/skills/pm-dispatch/references/lanes/skills.md— ⛔ not copied here. Body r116, written 2026-09-30T17:12Z bysession_01KTZmMfzVzjNvyaLyQ8mHvg(os-warren) at the 17:12Z patrol. r115 (R9 dispatch), r114, r113, r112, r111, r110, r109, r108, r107, r106, r105, r104, r103 and r102 (the previous shift's hand-over,session_01MjvgiFAmjHqsxy1XLiVYfH, os-steve) are in the edit history, ⛔ not restated. r102's 「Maintainer items open at stand-down」 (1)–(5) and 「Seat tasks owed」 (a)–(h), r81's and r69's lists and r64's fact lines are carried BY REFERENCE.Current PM
🟢 os-warren ·
session_01KTZmMfzVzjNvyaLyQ8mHvg· seated 2026-09-30T04:10Z on the maintainer's/pm-dispatch skills(round-open marker 5903866929; R2 marker 5905508713).scripts/pm/tools over thefleet-writerelay, stored asobjectstack-fleet[bot]; the session ID is the attribution.claude-opus-5-5, belowCONTRACT_REVIEW_TIER⇒ every owed## Contract reviewis rendered by an isolated at-tier subagent, ⛔ never in-seat.batch3,mode:subagent. Patrol Routinetrig_014UfhpWroArwBsHBSK2YKPv(self-bound, hourly at :11).The review-tier deviation is closed. It ran from 2026-09-30 ~08:40Z to 13:47Z. Two review subagents had died on a host-reported weekly-limit error; a one-word probe at 13:47Z was served
claude-fable-5-1, and all four owed records were rendered at tier.trig_01RxTU4seRwCTS5c7asHdo6Gis deleted.Maintainer's standing word this shift: when a dev's
skip-changeset/ PR-assignee write is refused by its session classifier, the seat applies them itself, once it has checked that the diff publishes nothing, and re-runs the staleCheck Changeset. Dispatches from R4 on give the dev no label write at all.Inherited + running ledger
completed.credentialRefand stops teaching a secret-bearing webhook url (the skills half of #20590) #20657) · PR docs(skills): objectstack-query — engine aggregate row admits search / searchFields #20776 ([finding]skills/objectstack-query/SKILL.mdtells an agent that engineaggregaterefusessearch/searchFields— false since PR #20487 #20500)..strict()schema:spec-property-retirement§2 and AGENTS.md prescribe delete + guidance map, whileretired-key.tsand this week's retirements useretiredKey()#20465 + [finding]spec-property-retirementSKILL.md tells a step-18 author to append toconversionIdsand extend the rationale string: both change shape when PR #20572 lands #20575) · PR docs(skills): objectstack-automation calls the api flow secret required and routes explicit-only starts to autolaunched #20796 (skills/objectstack-automation still calls theapiflow secret optional and saystype: 'api'can be invoked explicitly only — both false since PR #20551 (split from #20553) #20569).issue_patchbody of about 41 KB comes back with two multi-byte characters replaced by U+FFFD, about 16 KB apart, identically on a re-send — anddispatch.mjsreports success without comparing the read-back #20571) · PR fix(pm): check-expected-skips derives schedule/dispatch-only jobs as expected skips under their raw name #20835 (check-expected-skips reads scaffold-e2e.yml's by-design 'Registry canary' skip as outside the roster (exit 4) on every PR that touches create-objectstack #20756).platform-readings.md:42#20764) · PR docs(skills): retirement kit routes a RETIRED_KEYS_BY_MAJOR entry through entries/retired-keys/ and gen:migration-registry, and an enum-value narrowing through enumWithRetiredValues() #20828 ([finding] retirement kit §3 andbuild-schemas.tsgate (b) tell an author to paste theRETIRED_KEYS_BY_MAJORentry intomigrations/registry.ts, which is generated fromentries/since #7297 #20803) · PR docs(skills): objectstack-query teaches the served route for a related record's column, not the refused nested form #20811 ([finding]skills/objectstack-queryteaches the nested relation filter{ relation: { field: value } }as a working form; no data-path driver serves it, and PR #20781 makes the engine refuse it #20782) · PR docs(agents,pm-dispatch): a draft conversion drops only an unqueued PR's auto-merge; a queued governed pull-back goes to the maintainer #20854 ([finding] AGENTS.md says a draft conversion removes a PR from the merge queue — every measured queued draft in this repo stayed queued and merged (Prime Directive #14's pull-back rests on it) #20847, p1).da93a8b3e. Non-governed: CI plus the seat's read, ACCEPT 5915517440. The maintainer's one-card exception to thetoolingslot is on record there.Fixesclosed no card on the first eleven queue merges; the seat closed each withclose-cards. On the twelfth (PR fix(pm): the queue guard's refusal remedies send a queued PR to the maintainer's manual removal, never claiming a DRAFT conversion dequeues it #20894) it did close [finding] the Governed Surface Queue Guard's refusal text tells a seat to dequeue a governed PR by converting it to DRAFT — measured not to dequeue in this repo (same family as #20847) #20855.close-cardsskips a closed card, so the seat posted the closing note and strippedpm:dispatched+ the assignee by hand.--no-skip-pr-referenced: used once, on [finding]skills/objectstack-queryteaches the nested relation filter{ relation: { field: value } }as a working form; no data-path driver serves it, and PR #20781 makes the engine refuse it #20782. Open PR feat(objectql): serve the nested-relation filter in where — lowered at the engine seam, the related object read as the caller, a loud cap, drivers untouched (#20802) #20872 names it only in prose.950180d8. Contract review PASS 5915913589 (isolatedclaude-fable-5-1subagent); ACCEPT 5915930227; 速读 5915939488;needs-user-decision; review requested fromos-zhuangandhotlong. CI green. Awaiting an authorized APPROVED review.skills/objectstack-querynow teaches that the engine refuses{ relation: { field: value } }(PR #20811), but since PR #20872 (ca5408c62) the engine serves it; the published skill states a refusal that no longer happens #20888 → PR docs(skills): objectstack-query states the served nested-relation filter in where, its limits, and the two-step route past them #20902, draft, headb73023a3. Contract review PASS 5916062797 (isolatedclaude-fable-5-1subagent), with three non-blocking precision items the seat lands as they are (named in the ACCEPT).Lint & Repo Gatesis still running at this refresh; the ACCEPT, 速读 and review request follow when CI is green.context,having,search,searchFields(the docs half of #20500) #20792: thecontent/docshalf of [finding]skills/objectstack-query/SKILL.mdtells an agent that engineaggregaterefusessearch/searchFields— false since PR #20487 #20500,domain:devx.build-schemas.tsgate (b) tell an author to paste theRETIRED_KEYS_BY_MAJORentry intomigrations/registry.ts, which is generated fromentries/since #7297 #20803: closed above.query-syntax.mdx's stale mechanism paragraph, for the docs lane.ca5408c62; its skill half is [finding]skills/objectstack-querynow teaches that the engine refuses{ relation: { field: value } }(PR #20811), but since PR #20872 (ca5408c62) the engine serves it; the published skill states a refusal that no longer happens #20888 (in flight above). The analytics half is #20802 analytics half (domain:services): the cube read and the analytics read scope answer{ relation: { field: value } }as the engine seam now serves it — as the caller, capped, one answer on every face #20887 (domain:services); the skill says nothing about analytics until it lands.domain:spec) quotes PR docs(skills): retirement kit routes a RETIRED_KEYS_BY_MAJOR entry through entries/retired-keys/ and gen:migration-registry, and an enum-value narrowing through enumWithRetiredValues() #20828's kit wording when it lands.domain:skills):pm:queue: empty (unlock scan at 17:12Z: [decision] 半状态巡逻的送法与形状:每天都在改的仪器靠「手工复制三个文件」分发,副本必然掉队——换成引用并把「写坏的」那半搬到写侧 #18471 still open, objectui#10887 unreadable). Standby between rounds: the hourly patrol, the unlock scan, and following queued PRs to MERGED.pm:blocked: docs(react-pages,skills,showcase): teach the data-invalidation nonce in a react page's live-data effect, and opt the two showcase react pages in (ruling A on objectui#10887 member 3) #20395 (Blocked-by: objectui#10887, unreadable here) and [finding] objectui's half-state findings reach no reader: the board has no anchor by ruling, and its copy of check-half-states still refuses in agent containers with the conclusion #13544 disproved #18290 (behind [decision] 半状态巡逻的送法与形状:每天都在改的仪器靠「手工复制三个文件」分发,副本必然掉队——换成引用并把「写坏的」那半搬到写侧 #18471, open).Hot-file serial queue
skills/objectstack-query/**→ [finding]skills/objectstack-querynow teaches that the engine refuses{ relation: { field: value } }(PR #20811), but since PR #20872 (ca5408c62) the engine serves it; the published skill states a refusal that no longer happens #20888.docs/adr/0005-metadata-customization-overlay.md→ docs(adr): ADR-0005 appendix (c): the storage switch is in force since PR #20868, and a saved view stores the parsed value of every key its body carried, not the whole parse output (#20051 ruling B) #20879.Notes
references/lanes/skills.md. Content writes go only throughscripts/pm/post-stamped.mjs/label-write.mjs/issue-create.mjs/close-cards.mjsandfleet-write/dispatch.mjs --actions-file; a body refresh needs--ack-through=ID.needs-user-decisionand lands, unless the approver already did. Non-governed = CI + the seat's read (plus an at-tier record only if a review surface is touched) ⇒ relaypr_ready+automerge_enable. Landing = MERGED through the queue.Fixes #Ndid not fire on eleven queue merges out of eleven.issue-createUNCONFIRMED on a list lag: the relay job log showed HTTP 201 ([finding] retirement kit §3 andbuild-schemas.tsgate (b) tell an author to paste theRETIRED_KEYS_BY_MAJORentry intomigrations/registry.ts, which is generated fromentries/since #7297 #20803).Check Changesetreads the label live, sorerun_failed_jobsclears the stale red.label-writeanswers "NOTHING WAS WRITTEN" when a--removelabel is already absent. Read the card and re-send with the live labels./home/user/objectstack;check-harness-current.mjsCURRENT; the charter is unchanged since the R1 marker.