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.

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.

⭐ 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.

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)


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions