Skip to content

p0: main is RED — #10695 retired six spec/ui theme schemas that the PINNED objectui still imports, so Console Pin Gate cannot build the SPA #10856

Description

@claude

main is red right now. Filed by the domain:devx PM seat (#6023, session session_01DdCnBGcHeufjrq7drTD3wt) from a merge-queue triage comment on PR #10839. Every claim below is measured on the refs, not inferred. (Correction on the thread: the gate is measured NON-blocking — red on every queue build, but merges proceed.)

Blocked-by: objectstack-ai/objectui#5710

The failure

Console Pin Gate → step "Build the Console SPA at the pinned objectui SHA":

✗ Build failed in 6.04s
error during build:
Build failed with 6 errors:

[MISSING_EXPORT] "ColorPaletteSchema" is not exported by "../../../../packages/spec/dist/ui/index.mjs".
    ╭─[ ../../packages/types/src/zod/theme.zod.ts:18:10 ]

All six, from one import line in the pinned objectui (.cache/objectui-9a3daf8d37ad), packages/types/src/zod/theme.zod.ts:18:

ColorPaletteSchema · TypographySchema · BorderRadiusSchema · ShadowSchema · ThemeModeSchema · ThemeSchema

The cause, established rather than assumed

PR #10695 (merged 2026-08-21T14:12:50Z) deleted packages/spec/src/ui/theme.zod.ts (−503) and edited the ui barrel (packages/spec/src/ui/index.ts, +11/−1). Counted on origin/main, all six names now have 0 exports anywhere under packages/spec/src:

ThemeSchema: 0 · ColorPaletteSchema: 0 · TypographySchema: 0
BorderRadiusSchema: 0 · ShadowSchema: 0 · ThemeModeSchema: 0

⇒ the pinned objectui imports six symbols the framework no longer exports, so the SPA cannot build.

Current state: origin/main = 08318f7c0e, Console Pin Gate = failure. This is a required-looking gate on every PR, so the blast radius is the whole repo — the same shape as today's earlier p0 (#10807), which also evicted queued PRs on rebuild. (See the correction comment: non-blocking in fact.)

⭐ Why this slipped through, and why it is not a mistake in the diff

This is not a case of nobody thinking about objectui. #10695's own body records the ruling:

B:退役授权面 — 收掉 themes 载体键与 schema,app.branding 留作唯一颜色面;objectui 引擎代码与单测保留

and again:

Retained, per the ruling: objectui's ThemeEngine/ThemeContext and their unit tests (objectui untouched); app.branding end to end.

The ruling accounted for objectui's engine code and unit tests. It did not account for objectui's type packagepackages/types/src/zod/theme.zod.tsimporting the retired schemas from @objectstack/spec/ui.

⚠️ "Leave objectui untouched" and "remove the exports objectui imports" cannot both hold, because Console Pin Gate builds the pinned objectui against the CURRENT framework. The gate is not a bystander to the ruling; it is the thing that makes "untouched" impossible. That interaction is the gap, and it is a ruling-level gap rather than a defect in the diff — which is why this card is for a human and not a dispatch.

What I have NOT done, deliberately

⛔ Not dispatched. ⛔ No revert. ⛔ No touch to packages/spec. The three candidate remedies are all decisions a maintainer owns, and two of them modify or reinterpret an already-merged ruling:

  1. Change objectui and bump the pin — the shape the retirement implies, but it contradicts "objectui untouched" and is cross-repo: this session's GitHub access is scoped to objectstack-ai/objectstack and there is no objectui checkout on disk (today's check-governed-merges sweep reports the same three repos unaudited for the same reason).
  2. Restore the six exports as a compatibility surface until the pin moves — directly contradicts the retirement feat(spec): retire the themes carrier key and ThemeSchema — app.branding is the one colour surface (#10485, ADR-0049) #10695 just landed.
  3. Rule on what Console Pin Gate should do for a deliberate retirement — e.g. whether a pin-breaking removal must land together with its pin bump. This is the general fix and the only one that stops the class.

Requested

A ruling on which of the three, and — if 1 — someone with objectui access. Until then main stays red and Console Pin Gate fails on every PR.

RULED 2026-08-22 (see comments): A + C. The objectui first leg is objectui#5710 (Blocked-by above); this card's remaining scope after it lands = the Console pin bump. C = #10986.

Refs: PR #10695 (the retirement) · PR #10839 (where the queue triage surfaced it) · queue build 32489707921, job 96794300524 · #10807 (today's earlier main-red p0, same blast radius)

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions