Skip to content

spec: retire the page member of the list-view type enum and its pageName mount — enforce-or-remove, the objectui render half was never built (maintainer 2026-09-09 「撤」) #17063

Description

@os-bill

Filed by the director seat (summon #20, session_01Tep4AYXZvyBA7jsvne5KZV, GitHub os-bill) executing a maintainer ruling. domain:spec set by the mechanical rule 凡触 packages/spec 一律转 spec 座位; triage corrects if it disagrees.

Ruling (who / verbatim / where)

Maintainer, live PM chat with the director seat, 2026-09-09T05:3xZ, on decision batch #107 item 1 (objectui#8429) after two questions — what a type: 'page' list view is, and when the requirement was decided and whether it is valuable. Presented options: A finish the objectui delegating mount · retire the enum member from spec under enforce-or-remove · D park with the current-state pin. Reply, verbatim: 「撤」.

Governing text: the 2026-08-29 ruling on #13216 (direction 1: a page member on the view type enum, render delegated to the page renderer — landed on the spec side as PR #13372 d23dc08a; the objectui mount half never landed, objectui#8429); ADR-0049 enforce-or-remove; the four-axis principle 「已发布零消费的能力不因沉没成本获得豁免」 (SKILL.md 〈升级与决策〉); packages/spec/liveness/view.json /props/list/children/type/note and /props/list/children/pageName/*.

What is measured (2026-09-09, origin/main c0e4bc74+)

Deliverable — follow .claude/skills/spec-property-retirement end to end

  1. Remove 'page' from the list-view type enum on every door that carries it (ListViewSchema, ObjectListViewSchema, ListViewOverlayWireSchema and any mirror), remove pageName, checkListViewPageMount and its three messages, the validateCrossReferences branch and validateViewPageRefs (or narrow them to what remains), and every docblock / VIEW_HISTORY line that describes the mount — replace with the standard tombstone naming this card and the ruling.
  2. Liveness ledger: retire the pageName rows and rewrite the type note; regenerate every generated baseline / form / skill reference the playbook lists (⛔ never by hand).
  3. ADR-0087: a stored view with type: 'page' or a pageName key is refused by name at rehydration and by os migrate meta (zero producers ⇒ not-required / refuse-by-name per the playbook's route choice; the dev records the route and its reason in the changeset).
  4. Docs: every content/docs/** mention of the page view type / pageName on views is removed or rewritten (the nav-item type: 'page' docs are a different key and stay).
  5. Pins: a refusal pin per door (type: 'page' refused; pageName refused as unknown key), and the liveness/enum ratchets green.
  6. Changeset: @objectstack/spec (and @objectstack/lint if touched) minor with the BREAKING banner under the launch-window convention, naming what an author loses and the tombstone.

Dispatch shape: Clause-②: no — an accept-set narrowing / retirement (#16349 direction), ordinary tier; the path arm hits (packages/spec/src/**) so the in-seat contract review at CONTRACT_REVIEW_TIER is on record before enqueue per SKILL.md 〈入队与落地〉.

Downstream

objectui#8429 becomes the objectui half — retire UNDRAWABLE_VIEW_KINDS.page, the normalizeListViewSchema warn arm and the PR #8684 current-state pin once the spec release carrying this removal is installable (cross-repo unlock criterion = 消费方可安装, not merged). It carries Blocked-by: objectstack-ai/objectstack#<this card>.

Dedupe: #13216 (closed, the ruling that added the member), #13100 (closed, the finding), #13620 (direction 2 design card — different question); no open card asks for this removal.

Activity

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions