You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
console: align the stored-view-row reads to the spec's declared round-trip spellings, and drop the reads nothing writes (objectstack#20456 objectui end, #20051 ruling 甲 stage ii) #11013
Filing gate ③: a ruled task. This is the objectui end of objectstack-ai/objectstack#20456, stage (ii) of objectstack-ai/objectstack#20051's ruling 甲 (5856781584, batch #227 item 2, maintainer 「开始总监决裁」). Filed by objectstack domain:spec seat 4 (session_01ARcDurZ5j34RdqsGgc4jgH, seat post objectstack-ai/objectstack#18917) at the ACCEPT of the spec end, as the cross-repo rule requires: spec first, and the consumer card carries Blocked-by:. ⛔ Filed bare: routing and grading belong to objectui triage. ⛔ Not a claim.
Acting reader: the objectui lane seat that dispatches this card. It can be dispatched once objectstack-ai/objectstack#20474 is merged AND the objectstack .objectui-sha / published @objectstack/spec the console builds against carries VIEW_CONSOLE_ROUND_TRIP_KEYS. That symbol is the cross-repo unlock reading.
What the ruling orders for this end (verbatim)
…declares each on the stored-overlay wire with its meaning, and objectui aligns its reads to the declared spellings.
packages/spec/src/ui/view.zod.ts declares the six keys the console writes and reads back from a stored view row. The new export VIEW_CONSOLE_ROUND_TRIP_KEYS maps each key to its member:
Read the declared spellings, not the undeclared ones.
The bound object: read object, not objectName. Every reader already falls back to object: data-objectstackindex.ts:2698, ObjectView.tsx:1802 and ResourceEditPage.tsx:933 at the pin.
The row identity: read name, not a top-level id. viewRowId reads name first (viewIdentity.ts:95).
filter[].id / sort[].id stay row decorations the spec strips before the parse. The builders already re-mint a missing id (view-config-utils.ts:159, :319); make sure no reader keys state by a row id across a reload.
exportOptions: read the object form { formats } that the parse lifts a bare array to (ObjectGrid.tsx:3888 does). Retire the bare-array tolerance at ListView.tsx:1783 once rows are stored parsed.
Drop the reads that nothing writes (the seat's disposition for allowExport, answer 3: no producer means no declared spelling):
allowExport (ObjectView.tsx:2838-2839);
the eight renderer flags the record found read off the active view and written by no console surface: wrapHeaders, clickIntoRecordDetails, addRecordViaForm, addDeleteRecordsInline, collapseAllByDefault, fieldTextColor, prefixField (app-shell/ObjectView.tsx:2864-2870, plugin-view/ObjectView.tsx:2547-2553) and editRecordsInline (:2805).
listViews record flatten (the spec dev's note, verified by the record): data-objectstackindex.ts:5466-5472 flattens a ViewItem record to config + name / label / isDefault / _draft. So isPinned / sortOrder / visibility / columnState, written at the record's top level by the pin toggle and the config save, come back only through the loadViewOverrides override merge. Align that reader with the declared ViewItem members.
visibility: 'private' draws a lock icon and restricts nobody (ViewTabBar.tsx:442). The spec now declares it with that meaning. Any access-control reading of it would be a new product decision, not this card.
Dedupe: objectui#4227, #5344 and #6011 (all closed) touch view rows or spellings; none is this alignment.
Filing gate ③: a ruled task. This is the objectui end of objectstack-ai/objectstack#20456, stage (ii) of objectstack-ai/objectstack#20051's ruling 甲 (
5856781584, batch #227 item 2, maintainer 「开始总监决裁」). Filed by objectstackdomain:specseat 4 (session_01ARcDurZ5j34RdqsGgc4jgH, seat post objectstack-ai/objectstack#18917) at the ACCEPT of the spec end, as the cross-repo rule requires: spec first, and the consumer card carriesBlocked-by:. ⛔ Filed bare: routing and grading belong to objectui triage. ⛔ Not a claim.Blocked-by: objectstack-ai/objectstack#20474
Acting reader: the objectui lane seat that dispatches this card. It can be dispatched once objectstack-ai/objectstack#20474 is merged AND the objectstack
.objectui-sha/ published@objectstack/specthe console builds against carriesVIEW_CONSOLE_ROUND_TRIP_KEYS. That symbol is the cross-repo unlock reading.What the ruling orders for this end (verbatim)
The spec end, as accepted (objectstack-ai/objectstack#20474, head
fc5a47d0, at-tier PASS5874993923)packages/spec/src/ui/view.zod.tsdeclares the six keys the console writes and reads back from a stored view row. The new exportVIEW_CONSOLE_ROUND_TRIP_KEYSmaps each key to its member:viewItemlistOverlayisDefaultisPinnedboolean)sortOrderint)visibilityprivate/team/organization/public: display grouping only, restricts nobodycolumnState_isOverridetrueonlyThe census was read at objectui
dd3f7e1b(the objectstack pin), by a compiler-API walk with lit and dark controls. It is in the PR body.What this end owes (the seat's answers
5874463510on objectstack-ai/objectstack#20456, and the record)Read the declared spellings, not the undeclared ones.
object, notobjectName. Every reader already falls back toobject:data-objectstackindex.ts:2698,ObjectView.tsx:1802andResourceEditPage.tsx:933at the pin.name, not a top-levelid.viewRowIdreadsnamefirst (viewIdentity.ts:95).filter[].id/sort[].idstay row decorations the spec strips before the parse. The builders already re-mint a missing id (view-config-utils.ts:159,:319); make sure no reader keys state by a row id across a reload.exportOptions: read the object form{ formats }that the parse lifts a bare array to (ObjectGrid.tsx:3888does). Retire the bare-array tolerance atListView.tsx:1783once rows are stored parsed.Drop the reads that nothing writes (the seat's disposition for
allowExport, answer 3: no producer means no declared spelling):allowExport(ObjectView.tsx:2838-2839);wrapHeaders,clickIntoRecordDetails,addRecordViaForm,addDeleteRecordsInline,collapseAllByDefault,fieldTextColor,prefixField(app-shell/ObjectView.tsx:2864-2870,plugin-view/ObjectView.tsx:2547-2553) andeditRecordsInline(:2805).For each read, measure whether any producer exists, whether that is a stored row or an authored view (the spec's strict view schema refuses all nine). Zero producers ⇒ drop the read. A real producer ⇒ stop and raise it on spec(ui)+metadata save: judge a flattened view overlay's top-level
options.KINDwith the strict per-kind schema and persist the PARSED body — the door half of objectui#10380 objectstack#20051 as a spec declaration question, ⛔ never a consumer-side tolerance.showSearch/showFilters/showSortalready have declared spellings (userActions.search/.filter/.sort); align them.listViewsrecord flatten (the spec dev's note, verified by the record):data-objectstackindex.ts:5466-5472flattens a ViewItem record toconfig+name/label/isDefault/_draft. SoisPinned/sortOrder/visibility/columnState, written at the record's top level by the pin toggle and the config save, come back only through theloadViewOverridesoverride merge. Align that reader with the declared ViewItem members.Not this card
options.KINDwith the strict per-kind schema and persist the PARSED body — the door half of objectui#10380 objectstack#20051.visibility: 'private'draws a lock icon and restricts nobody (ViewTabBar.tsx:442). The spec now declares it with that meaning. Any access-control reading of it would be a new product decision, not this card.Dedupe: objectui#4227, #5344 and #6011 (all closed) touch view rows or spellings; none is this alignment.
objectstack
domain:specseat 4 · objectstack-ai/objectstack#18917 ·session_01ARcDurZ5j34RdqsGgc4jgHGenerated by Claude Code