Skip to content

[PM seat] domain:devx @ objectstack — 🟡 OFF SHIFT · 上一班 session_016vtdMao3dQS9EfQfpyWixd · 5 卡落地 · 1 PR 在队列 #6023

Description

@claude

1. 当前 PM

  • 🟡 OFF SHIFT — vacant. Last shift: os-project-manager / session session_016vtdMao3dQS9EfQfpyWixd, seated 2026-09-05T13:04Z by a maintainer forced takeover (audit 5552018884, 原话「devx 强制接管。」), stood down 2026-09-05T15:58Z on the maintainer's 「当前任务处理完就下班」. Closing briefing is the last comment on this post — it is a release marker, not a lock: the next seat sits down directly, no confirmation needed.
  • Job description + standing commitments: .claude/skills/pm-dispatch/references/lanes/devx.md (pointer only; ⛔ not restated here).
  • No timer is armed. Every trigger this session created was deleted at stand-down.
  • Publish/verification layer for this repo: merges do NOT publish; landing = MERGED on origin/main + textual probe on a re-fetched tree (this checkout lacks typescript, @typescript-eslint/parser, tsx — gates importing them exit 3 and are NOT MEASURED locally; CI's merge group is the arbiter).

2. 继承台账(现值 2026-09-05T15:58Z)

Landed this shift — 5 cards, 5 PRs, zero rework

PR card merge probe
#15883 #15800 4f379125 13:17Z inherited from the outgoing session, which closed it out; independently re-probed by this seat, both limbs pass
#15896 Part of #15869 94d435dd 14:27Z 13 PAGE_ROW_REFERENCES/ROW REFERENCES anchors, control NON_READ_ANCHORS=22; page untouched
#15911 #15850 12901563 14:49Z 5 new units, DECLARED_PREREQUISITE at :715 covers both frame entry points, floor 17→18, control EXIT_PREREQUISITE_NOT_MET=10
#15933 #14659 7b20ae22 15:47Z relocationClause=6, newUseOfferNamesRelocation=7, "pure RELOCATION" present, control MAINTAINER-ONLY=3; baseline ledger untouched
#15934 #15602 a2051fa4 15:52Z row :734 now DECLARED-NARROWER, sha e581457b in its why:, control REFUSE-UNSPELLABLE=18 elsewhere; gate untouched

⏳ The one live tail

PR #15940 (Fixes #15835) — ACCEPTed (5552873830), all 34 checks green, flipped ready 15:52Z, auto-merge armed 15:53:10Z, not yet enqueued at 15:55Z (normal ~30–60 s window). On MERGED: probe docsExtractorPrerequisite in scripts/check-doc-frontmatter.mjs on a re-fetched origin/main with a firing control, post LANDED on #15835, strip pm:dispatched, clear the assignee. ⛔ Never re-arm a queued PR.

⛔ Awaiting the maintainer — untouched by this shift, do not flip/arm/merge

Decision box: 6

#15565 · #15631 · #15468 · #15723 · #15740 · #15632 (seat recommends A graded with D). None touched this shift.

Cards filed this shift

Verified dispatchable, deliberately NOT dispatched (maintainer said stop)

Lane inventory — 96 open domain:devx at 15:55Z (102 at takeover)

pm state n pm state n
(BARE — no pm state) 26 pm:queue 11
pm:on-hold 25 pm:dispatched 7
pm:blocked 14 pm:epic 1
pm:awaiting-maintainer 12

10 cards carry pm:queue unassigned: #15793 (blocked, see #15791) · #15715 · #15589 (= #15715) · #15410 (AGENTS.md contested by open #15427) · #14944 (.claude/skills/pm-dispatch/** contested by open #15641) · #14701 · #13799 · #13611 · #12511 · #11730. The 26 bare cards (median age 1.4 d) are sweep disjunct ③ and triage's population, ⛔ not this seat's to grade — they are also the likeliest explanation for the gap against the outgoing ledger's 「lane 58」.

3. 热文件串行队

file / surface held by → next
scripts/check-doc-frontmatter.mjs PR #15940 (queued)
packages/lint/src/validate-expressions.ts PR #15791 (awaiting maintainer) → then #15793
content/docs/api/error-catalog.mdx PR #15750 (held — decision #15631)
content/docs/permissions/system-context.mdx merge=os-regen, held by eight open PRs (#15889 #15888 #15879 #15878 #15863 #15838 #15673 #15235) — fenced; #15927 waits on it
AGENTS.md #15427 (draft) + #15885#15410
.claude/skills/pm-dispatch/** #15641#14944
docs/adr/0087-*.md #15160
scripts/check-published-files.mjs FREE → #15715
scripts/import-prerequisite.mjs, check-role-word.mjs, pm/bare-root-worklist.mjs, check-system-context-census.mjs FREE (all landed this shift)

4. 说明

  • Sound mergeability probe: the bare shared clone /home/user/objectstack-probe.git has no merge.os-regen.driver — use it. ⛔ Never a plain git merge-tree in the working checkout (it HAS the driver, can read MERGES CLEAN where GitHub reads dirty, and writes os-regen-pending into the shared git dir). ⛔ Never -c merge.os-regen.driver=.
  • Worktree recipe ([finding] .gitignore node_modules/ is directory-only, so the os-dev worktree recipe’s node_modules SYMLINK is untracked — dispatch-gates counts it as a changed path on every card #15763): mkdir node_modules in the new worktree — ⛔ never ln -s to the shared install. pnpm install --offline can fail on a missing tarball (fumadocs-core); --prefer-offline works.
  • Required contexts are SEVEN: Lint & Repo Gates, TypeScript Type Check, Test Core, Build Core, Dogfood Regression Gate, Temporal Conformance (live PG + MySQL), Governed Surface Queue Guard. A skipped run passes. ⚠️ Lint & Repo Gates takes ~20–25 min — it is always the last to converge, so plan the flip around it. Enqueue eligibility is every check green, not the required subset.

Platform readings measured or corrected THIS shift

  • enable_pr_auto_merge ignores mergeMethod. Passing SQUASH explicitly still records auto_merge.merge_method: "merge" (API and webhook agree), on a repo that is allow_merge_commit: false. It does not matter — the merge QUEUE performs the merge with its own configured method, and a PR carrying merge enqueued and merged normally. ⛔ Do not disable/re-enable to "fix the method"; that was measured to be unnecessary (correction 5552437524 supersedes the earlier note 5552345384).
  • Arming → enqueue is a latency, not a fault. Measured four times: ~31 s, ~51 s, ~65 s, and one still pending at ~120 s. mergeable_state: blocked with no queue event inside that window is normal async recompute — ⛔ never read as a failed arm, ⛔ never a reason to re-arm.
  • The only reliable queue probe is positive: added_to_merge_queue in GET /issues/N/events. auto_merge: null cannot distinguish "queued" from "never armed"; auto_merge: set means armed-and-not-yet-queued. A gh-readonly-queue ref search returns nothing even for a genuinely queued PR — ⛔ ref absence is not evidence.
  • list_issues does NOT intersect multiple labels["pm:seat","domain:devx"] returned the whole domain:devx lane. ⛔ Never read it as an AND; filter locally. list_pull_requests omits mergeable_state even when fields names it.
  • check-governed-merges.mjs refuses on a stale mirror rather than under-reporting (a short governed list reads as compliance, Three seat-run tools ask windowed history questions with no shallow guard, so each answers plausibly and wrongly in an agent container #9902) — git fetch origin main in every governed checkout first.
  • The half-state anchor [Half-state patrol] check-half-states live sweep — generated view (please pin) #9857 is not a clean read for this lane: it reports 269 half-states and renders 33; 236 are dropped by the body-size trim. A lane's absence from the rendered set is an unread surface, ⛔ not a clean lane. Full list: the workflow run log.

Standing rules

Before EVERY dispatch read bash scripts/pm/os-verify-lock.sh --status; ⛔ do not dispatch while depth including the arriving run would be ≥2 (#14944). An armed PR at mergeable_state: blocked with an empty queue and past the ~60 s window is RED — inspect check-runs. Two live PRs never share a hot file. Governed surfaces (docs/adr/**, .claude/**, skills/**, AGENTS.md, CLAUDE.md) are ⛔ never flipped, armed or merged by this seat. Corrections to an ACCEPT are new comments. No model identifiers in anything pushed. ⛔ #13503: no deletion before the maintainer's release line.

⚠️ Dispatch-brief defect found this shift, fix it in your briefs: ⛔ do NOT tell a dev to write an attribution footer in the PR body — the platform appends its own session-URL footer on create, so the PR ends up with two, and a PATCH to remove one downgrades the durable session-URL form to the bare one.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    pm:seatPM seat registry issue - single-writer body, index = this label

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions