Filing gate ③: a ruled task. Stage (ii) of ruling 甲 on #20051 (5856781584, batch #227 item 2, maintainer 「开始总监决裁」).
Seam: the stored view overlay's round-trip keys: objectstack packages/spec declares them, objectui's console reads them back
Filed by the triage seat (seat post #6015, session_01AavokzJ5DndAwitDXvKy4U) in place of domain:spec seat 2, which the ruling names as filer and which is vacant (#18549). The maintainer asked the triage seat directly, verbatim: 「#20051 的子卡 你为什么不能立」. ⛔ Not a claim.
What the ruling orders (item 1, stage ii, verbatim)
Sub-card 「declare the console's round-trip keys」 (domain:spec, Seam: with objectui): the dev measures the complete list the console reads back from a stored view row (isPinned, isDefault, sortOrder, objectName, visibility, sort[].id, filter[].id, the exportOptions shape, and whatever else the measurement finds — the seat's list is a floor, not the census), declares each on the stored-overlay wire with its meaning, and objectui aligns its reads to the declared spellings.
Why now
Stage (i), #20186, is closed, so this stage is dispatchable. The end state is the persisted document being the parsed body (stage iv). ⛔ That storage change is not part of this card. The ruling forbids it before stages (ii) and (iii) close, because doing it now turns 「stored and unread」 into 「200, then the user's pinned / sort / visibility state silently dropped」.
Measured floor (seat 2's analysis 5853397704, dev reading at 8d1f7ab through the real saveMetaItem)
Storing the parsed body today would strip:
isPinned / sortOrder on the flattened overlay;
visibility on the ViewItem row;
sort[].id / filter[].id on the personalization PUT.
It would also rewrite exportOptions ['csv'] into an object and fill defaults. objectui reads isPinned / sortOrder / visibility back from the stored row (ObjectView.tsx VIEW_ROW_STATE_KEYS, ViewTabBar).
Acceptance
- The census first: every key objectui's console reads back from a stored view row. Name the reading method and give its lit control, so a zero is a reading and not a dead scan. The floor above is a minimum.
- Each key declared on the stored-overlay wire with its meaning, as a spec symbol that stage (iii)'s ADR note can cite.
- objectui aligns its reads to the declared spellings, as the second end of the seam, in its own PR.
- Changeset
minor, with Clause-②: yes (the declarations widen the wire) and an at-tier contract review (ruling item 4).
- Measure production
sys_metadata for stored views that carry undeclared top-level keys, or record it as NOT MEASURED with the reason. Stage (iv) cannot land without that count.
- ⛔ No change to what is persisted. The three GUARD pins stay as they are, and flipping them is stage (iv)'s.
Part of #20051
Filing gate ③: a ruled task. Stage (ii) of ruling 甲 on #20051 (
5856781584, batch #227 item 2, maintainer 「开始总监决裁」).Seam: the stored view overlay's round-trip keys: objectstack
packages/specdeclares them, objectui's console reads them backFiled by the triage seat (seat post #6015,
session_01AavokzJ5DndAwitDXvKy4U) in place ofdomain:specseat 2, which the ruling names as filer and which is vacant (#18549). The maintainer asked the triage seat directly, verbatim: 「#20051 的子卡 你为什么不能立」. ⛔ Not a claim.domain:specseat that dispatches this card. ASeam:card claims both ends.#20051|round-trip keys|appendix \(c\)3 times outside spec(ui)+metadata save: judge a flattened view overlay's top-leveloptions.KINDwith the strict per-kind schema and persist the PARSED body — the door half of objectui#10380 #20051: spec(ui): a flattenedviewKind: 'list'view overlay with nocolumnsis refused by the list overlay member, then ACCEPTED by the form overlay member, so its list keys are stripped unjudged and a wrong 200 stores it #20186, spec(ui): a flattened view overlay acceptsowner/hiddenat the save door and nothing reads either, sohidden: truesaves clean and the view stays listed #20230 and metadata: a page saved withouttypeis stored and served without it, soPageSchema's declaredtypedefault (record) never reaches a consumer that reads the served body #20101, all closed and none of them this stage. No open duplicate.What the ruling orders (item 1, stage ii, verbatim)
Why now
Stage (i), #20186, is closed, so this stage is dispatchable. The end state is the persisted document being the parsed body (stage iv). ⛔ That storage change is not part of this card. The ruling forbids it before stages (ii) and (iii) close, because doing it now turns 「stored and unread」 into 「200, then the user's pinned / sort / visibility state silently dropped」.
Measured floor (seat 2's analysis
5853397704, dev reading at8d1f7abthrough the realsaveMetaItem)Storing the parsed body today would strip:
isPinned/sortOrderon the flattened overlay;visibilityon the ViewItem row;sort[].id/filter[].idon the personalization PUT.It would also rewrite
exportOptions ['csv']into an object and fill defaults. objectui readsisPinned/sortOrder/visibilityback from the stored row (ObjectView.tsxVIEW_ROW_STATE_KEYS,ViewTabBar).Acceptance
minor, withClause-②: yes(the declarations widen the wire) and an at-tier contract review (ruling item 4).sys_metadatafor stored views that carry undeclared top-level keys, or record it as NOT MEASURED with the reason. Stage (iv) cannot land without that count.Part of #20051