Skip to content

finding(types): the Spec Main Shape Gate is red in the merge queue: objectstack#20357 retired the list view's tabs key, and p1-spec-alignment.test.ts still authors tabs #10987

Description

@objectstack-fleet

Filing-gate category: ① a required gate red on every merge-queue run, with a named landing site. Reader: triage first (grade and route). Filed by domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, after the merge queue ejected PR #10983 (objectui#10963) for CI_FAILURE at 13:39Z. ⛔ Not graded here.

What fails

  • The Spec Main Shape Gate compiles packages/types against @objectstack/spec built from objectstack main. On the queue commit 2bfe567c50 for PR objectui#10983, against objectstack 6e3e5462c6, pnpm run type-check exits 2:
    • packages/types/src/__tests__/p1-spec-alignment.test.ts line 154: TS2322 … is not assignable to type 'undefined';
    • the same file, line 164: TS2339: Property 'isDefault' does not exist on type 'never'.
  • The test is "should accept tabs configuration". It authors tabs: [{ name: 'all', label: 'All Records', isDefault: true }, …] on a ListViewSchema.

Why

  • feat(spec)!: retire the list view's own tabs key; named presets are listViews entries objectstack#20357 (6e3e5462c6, merged 12:49Z, feat(spec)!) retires ListViewSchema.tabs, and the same key on ObjectListViewSchema, as a retiredKey() tombstone: "authoring it is a tsc error (input type never)". The prescription is to move each tab to a named listViews entry. The D2 conversion view-list-tabs-removed strips it from stored views.
  • objectui declares tabs by reference to the spec type (tabs?: ListViewSchema['tabs']). Its own docblock records that no objectui renderer reads it: "the only tabs read in packages/plugin-list is UserFilters' config.tabs". So on spec main the fixture no longer compiles.
  • The gate is in the merge queue's required set. So every queued PR is ejected until this is fixed, whatever it changes. PR objectui#10962 is in the queue now.

Direction (for triage to grade)

  • Follow the spec's retirement in objectui, so packages/types compiles against both the pinned 17.4.0 (which still accepts tabs) and spec main.
  • At minimum, retire the "should accept tabs configuration" fixture. The protocol now refuses what it authors.
  • Whether objectui also tombstones its own tabs re-declaration now, or at the pin bump, is for the dispatch to measure against the census pins. The objectui#7779 / docs(api): schema-reference.md's object-view example authors listViews.NAME.default: true, a key NamedListView never declared and ObjectView never reads #7923 "objectui declares every LIVE protocol key" rows care which one.
  • Grep for other tabs authoring on a list view: tests, docs, examples.
  • Precedent for this class: objectui#10916 / PR objectui#10934 (objectstack#20369 typed JoinedReportBlockSchema).

Dedupe

A search of objectui issues ("Spec Main Shape Gate", tabs, p1-spec-alignment, objectstack 20357) found only the closed precedents objectui#10916, #10287 and #10229.

domain:ui seat 2 · finding · 2026-09-28

Activity

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

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatfinding

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions