Skip to content

[pm:seat] domain:ui — objectui execution seat · 🟢 session_01CSoz9uGhaaSgiq3hshtN7L · R38 dispatched 12:45Z 08-24 · in flight 5 · 1 rework · 5 awaiting a human #5560

Description

@os-sales

Seat registration post for the domain:ui lane (objectui execution seat), created under the maintainer's 2026-08-21 ruling that split objectui cards three ways (domain:devx / domain:spec / domain:ui, the last being the only new label).

Body is authoritative; title and assignee are derived views. Single writer: the sitting seat PM. Comments are audit only and never carry state.


🟢 SEAT OCCUPIED — R38 dispatched 2026-08-24T12:45Z, running

⛔ THIS IS NOT A ROUND-BOUNDARY LINE. R38 is mid-flight with 5 cards out. The mutex anchor for a next session is the R38 dispatch cluster at 12:42Z–12:45Z, not a close-out.

  • Sitting PM: session_01CSoz9uGhaaSgiq3hshtN7L, took the seat 09:50Z 08-24 from a clean VACANT. Held continuously through R35 → R36 → R37 → R38.
  • In flight: 5 (the full batch). See §3.
  • The round boundary is not a stopping point. Maintainer, 2026-08-24, verbatim: 「怎么空了?继续啊,待人类决策的整成清单,不要停掉活」. 收工点 = in-flight zero ⇒ dispatch the next wave immediately. ⛔ Do not end a round on a report and wait for a human gate. Items needing a human go on the §6 list and the loop keeps running.

⚠️ RUN THE FOURTH MUTEX READ. The three prescribed readings are structurally blind to a session that does not use pm:dispatched — its cards go pm:queue → closed. Also read the lane's most recently CLOSED card and check its provenance. It fired in R35: three readings clear, then an eight-card write cluster at 08:08Z, 38 minutes after the previous seat closed. It resolved to the triage Routine's hourly unlock scan, not a competing seat — but the three prescribed readings could not tell those apart, which is the whole point. Cost: one list_issues + one issue_read. Filed as objectstack#11604.

Corroborate with liveness, not absence: git ls-remote --heads origin 'refs/heads/claude/issue-*' and the open-PR list.


1. Current PM

2. Mutex lesson (standing, do not compact away)

See the ⚠️ block above. A stale seat post plus an unused status label is otherwise indistinguishable from a free seat.

3. In flight (R38) and the hot-file serial queue

Dispatched 12:42Z–12:45Z, all claimed atomically (assign + pm:queuepm:dispatched, then claim comment, then race re-read — all three re-reads clean).

card surface size Clause-② state
#5631 packages/types/layout + renderers/basic (~29 files) L yes 🟡 running, carried from R37
#5293 packages/plugin-viewprose-only REWORK on PR #6008 S yes 🟡 running
#5824 packages/types/src/__tests__/phase2-schemas.test.ts S no 🟡 running
#4730 packages/i18n/src/locales/** (console.objectView.* only) M no 🟡 running
#5927 packages/types/src/zod/{navigation,objectql,form,data-display,views}.zod.ts + zod-mirror-parity.test.ts L yes 🟡 running

Serial fences currently held:

Pre-registered for R39 — read the comments before dispatching any of these:

4. Landing ledger

⛔ Counting restarted at the 04:00Z takeover; the predecessor's 138/134 cannot be extended across the gap.

round window verdicts landed
R34 04:08Z → 07:23Z 3 cards closed / 4 PRs merged
R35 09:50Z → 10:43Z 5/5 ACCEPT 2 cards closed / 4 PRs merged / 1 awaiting a human
R36 10:43Z → ~11:40Z 5/5 ACCEPT all merged
R37 ~11:40Z → 12:45Z 3 ACCEPT · 1 REWORK · 1 ESCALATE #6005 merged, #6003 merged, #6007 enqueued
R38 12:42Z → running

R37 detail:

⚠️ Blind-spot-5 keeps firing: R35 closed 2 cards but merged 4 PRs. ⛔ "PRs = cards − no-PR cards" is false. The five blind spots are unchanged:

  1. ⛔ Do not count from the merged-PR list. 2. ⛔ A taken-over card may not carry domain:ui. 3. ⛔ The query returns cards closed by ANY seat — intersect first. 4. ⛔ Count by closed_at in THIS round's window. 5. ⛔ A card can produce more than one PR, or a PR without closing.

5. Notes

6. ⏸ Awaiting a human — the standing list

Per the maintainer's 「待人类决策的整成清单,不要停掉活」: this list is the parking lot, not a stop condition. The loop keeps dispatching around it.

A. Needs a maintainer ruling (in the decision box):

  1. finding(types): TableColumn.type disagrees three ways — interface declares 8 literals, zod mirror accepts any string, renderer's live read set handles values outside the union via an as any cast #5853 — re-ruled request, escalated by this seat 08-24. The recorded ruling fixed a 12-value canonical vocabulary on NUMERIC_EDIT_TYPES evidence. Honest end-to-end measurement gives ~55: packages/plugin-grid/src/ObjectGrid.tsx:2206 does if (next.type == null && fieldDef.type) next.type = fieldDef.type;, forwarding the spec FieldType (49 options) verbatim into TableColumn.type. Tightening to 12 would refuse 42 live spellings — the exact failure the ruling rejected, at ~10× scale. Four-facet block posted with options A/B/C/D; non-binding lean A (import SpecFieldTypeEnum.options; precedent verified at ui-action.ts:28/:190/:211, and packages/types already depends on @objectstack/spec ^17.0.0). ⛔ This seat does not re-rule it.
  2. 17 zod mirrors refuse spellings their TypeScript declarations declare — each needs a widen-the-mirror / narrow-the-declaration ruling #5927 Groups B/C — eight per-key widen/narrow questions come back to the inbox with the renderer reading attached, per the 08-24 ruling. Not yet filed; the in-flight dispatch produces them.
  3. Published skill objectui/guides/data-integration.md teaches a QueryParams shape the adapters silently drop — unprefixed keys plus a direction sort key #6006 budget — dispatching the skills/** guide fix needs an expansion budget attached under the 2026-08-21 ruling.

B. Needs a maintainer hand on a button (no ruling required):

  1. PR docs(adr-0056): reconcile Consequences with the P2/P4 pure model #5970 (ADR-0056 的 Consequences 自相矛盾:「Capabilities 在 Setup 里作者化」与 P2/P4「在 Studio 设计、Setup 里没有 facet 可编辑」冲突 #3794, ADR-0056) — awaiting a human merge. Governed path, draft, CI clean (19 success + 3 skipped), review requested from os-zhuang. Two Consequences bullets reconciled; the second was found by the mandated audit and is a separate self-contained hunk a reviewer can drop alone.
  2. Console/app-shell Sentry: a live DSN with sendDefaultPii: true is committed in apps/console/.env.production and baked into every production build — the VITE_SENTRY_ENABLED switch is build-time and absent from the inlined env, so a shipped bundle cannot be silenced #5522pm:awaiting-maintainer. Two operator actions, neither of them code:

C. Needs triage, not the maintainer:

  1. A third teaching site still writes the retired condition: { expression, then } branch shape — guide/schema-overview.md, outside #3917's fence #5980 — carries no labels, therefore not claimable by anyone. Needs a triage first touch.
  2. [finding] 「同一 en 字符串必须同一译文」不能做成门禁:281 组共享 en 值里 164 组至少有一个包刻意分开译 —— 记下分母,并点出其中两组像是笔误 #3880 stays OPEN as the denominator record — 281 shared en strings, 164 legitimately divergent; triage ruled this "knowledge, not dispatchable work". Carries domain:ui with no pm-state, so it sits in sweep case ③. → the right grade is tracking. ⛔ Not applied here; grading is not this seat's to produce.
  3. Unassigned, awaiting a triage first touch: [finding] After #3878 merged the two ellipsis groups, Loading… is one 10-key group and de renders it four ways (ko two, ar two) — #3880's "two-key typo" no longer describes it #5972, ObjectMap's marker useMemo never memoizes — getMapConfig runs unmemoized in the render body, so mapConfig has a fresh identity every render #5976, ObjectMap.listViewMapConfigReach.test.tsx:138 narrates a getMapConfig literal in the present tense that no longer exists #5977, A third teaching site still writes the retired condition: { expression, then } branch shape — guide/schema-overview.md, outside #3917's fence #5980, Published skill objectui/guides/data-integration.md teaches a QueryParams shape the adapters silently drop — unprefixed keys plus a direction sort key #6006, plus [finding] aggregate-capability.test.ts's header claims analytics.query() never throws on a non-2xx — the installed client throws, and the tests below depend on it #5954 from R34.

D. Resolved since the last revision — do not re-file:

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions