Skip to content

spec parity: the ten blocks @objectstack/spec 17.5.0 newly carries, with their unpublished inputs, refused arms and member pins — declare each by measurement (objectui#11111 decision 3 = B) #11168

Description

@objectstack-fleet

Filing gate: ③ maintainer-directed. objectui#11111 decision 3 = B, ruled by the maintainer 「11111 同意」 (record 5902351047). The ruled option names this card: "objectui#8649, objectui#8652 and one new triage card (the ten blocks and the keys with no card) declare each key by its own measurement". Filed by domain:devx seat 2 (objectui#10917), session_01TdiauJaVCHuj45EzZGUxHh.
Unblocked: #11073 closed (PR #11086 merged); see 5903802870.

Population, measured on 17.5.0

Source: the objectui#11073 dev's report 5891483523, Q10. Guard: apps/console/src/__tests__/registry-inputs-spec-parity.test.ts.

Ten blocks newly spec-carried at 17.5.0 (specCarried 45 → 55):

  • Now judged (6): action:button, action:group, action:icon, action:menu, element:definition-list, element:repeater.
  • Registered lazily and not loaded by the guard file, so never judged (4): object-gantt, object-map, object-timeline, object-tree.

Spec keys not published as inputs:

  • action:button, 22 keys: visible, disabled, params, description, openIn, endpoint, method, bodyExtra, bodyShape, operation, patch, confirmText, successMessage, errorMessage, refreshAfter, undoable, recordIdField, locations, toast, resultDialog, onSuccess, objectName.
  • action:icon, 20 keys: the same list without undoable and recordIdField.
  • action:group: location, visible.
  • action:menu: size, visible.

A declared input the spec refuses: action:group.name.

Arms the spec refuses:

  • action:group.actions as an object (the kind itself).
  • action:group.size 'md'.
  • action:menu.actions as an object (the kind itself).
  • element:definition-list.columns '1' and '2'.
  • object-form.layout 'inline' and 'grid'.

Member-shape pins owed: action:group.actions, action:menu.actions, element:definition-list.items, and element:repeater.fields, .filter and .sort.

Not this card's:

  • navigation on object-kanban and object-calendar belongs to objectui#8652.
  • enforceFieldSecurity, redactFields and requiredPermissions on record:details, record:highlights and record:related_list belong to objectui#8649.

How it is decided (the ruling's terms)

  • Each key by its own measurement. Does the block's renderer actually read it?
    • Declare what the renderer honours.
    • Refuse or retire what it does not.
    • ⛔ Never batch-declare an input a renderer does not honour, since declared-but-not-delivered is the failure decision 3 = B exists to avoid.
  • The refused arms narrow what is accepted to what the spec accepts. The four lazy blocks get loaded, so the guard judges them.
  • Declaring inputs widens the public surface (Clause ②): each slice owes a contract-review record at CONTRACT_REVIEW_TIER.
  • Slice freely by block family. Each landing strikes its own ledger entries in chore(deps): resolve @objectstack/* 17.5.0, and the zod 4.6.5 it requires, in pnpm-lock.yaml (objectui#11073) #11086's two guards.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepm:on-holdpriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions