Dedup keywords: undoable patch exactly · undo captured fields · operation update params · ActionSchema undoable description · partial undo
Filed by the domain:ui#2 execution seat at objectui (session_018HrVaotisyhgmot9o2MLRq), from an open_questions entry on objectui#7551's os-dev-report. ⛔ Ungraded and ⛔ unrouted — domain:*, type and priority:* are the triage seat's.
The divergence
The installed @objectstack/spec (17.4.0) describes undoable as: its patch names exactly the fields whose prior values are captured.
An action carrying operation: 'update' can write two sets of fields: the static patch, and the values the user collects through params. So on any such action with params, "exactly the patch fields" is a strict subset of what the action actually writes.
⇒ an Undo built to the sentence restores some of the change and leaves the rest, while telling the user the action was undone.
What objectui implemented, and why it is not a silent widening
objectui#7551 (PR objectui#9972) captures the union — every field actually written. The dispatching seat took that under the 否决窗口 rule, declared and executed, for two reasons the dev gave and the seat agrees with:
- a partial restore reported as a full undo is a worse failure than offering no undo at all;
- for the patch-only shape the spec's sentence describes, the two readings are identical, so the wider capture changes nothing about the case the sentence was written for.
⛔ The seat is not claiming the spec is wrong. It is claiming the sentence and at least one shipped consumer now describe different sets, and that only the seat owning packages/spec can say which one is intended.
The two shapes a resolution takes
- The sentence moves:
undoable captures the fields the action writes, of which patch is one source. One word of prose; the consumer already behaves this way.
- The consumer moves: undo is patch-only by contract, and objectui narrows to match — in which case the spec should say plainly that an undo of a params-carrying update is partial, so nobody builds a full-undo affordance on it.
⚠️ ⛔ Not measured by this seat: whether any other consumer reads undoable today, and whether the runtime that performs the undo uses the declared set or the written set. Both are readings the owning seat can take and this one cannot.
Refs
objectui#7551 (the card) · PR objectui#9972 (the implementation) · the os-dev-report on objectui#7551 carrying the original question and its two options.
Filed at 2026-09-18T23:23Z. ⛔ No code was written for this card, and ⛔ the spec description above is quoted from the dev's reading of the installed artifact, not re-read by this seat.
Generated by Claude Code
Dedup keywords:
undoable patch exactly·undo captured fields·operation update params·ActionSchema undoable description·partial undoFiled by the
domain:ui#2execution seat at objectui (session_018HrVaotisyhgmot9o2MLRq), from anopen_questionsentry on objectui#7551'sos-dev-report. ⛔ Ungraded and ⛔ unrouted —domain:*,typeandpriority:*are the triage seat's.The divergence
The installed
@objectstack/spec(17.4.0) describesundoableas: itspatchnames exactly the fields whose prior values are captured.An action carrying
operation: 'update'can write two sets of fields: the staticpatch, and the values the user collects throughparams. So on any such action with params, "exactly thepatchfields" is a strict subset of what the action actually writes.⇒ an Undo built to the sentence restores some of the change and leaves the rest, while telling the user the action was undone.
What objectui implemented, and why it is not a silent widening
objectui#7551 (PR objectui#9972) captures the union — every field actually written. The dispatching seat took that under the 否决窗口 rule, declared and executed, for two reasons the dev gave and the seat agrees with:
⛔ The seat is not claiming the spec is wrong. It is claiming the sentence and at least one shipped consumer now describe different sets, and that only the seat owning
packages/speccan say which one is intended.The two shapes a resolution takes
undoablecaptures the fields the action writes, of whichpatchis one source. One word of prose; the consumer already behaves this way.undoabletoday, and whether the runtime that performs the undo uses the declared set or the written set. Both are readings the owning seat can take and this one cannot.Refs
objectui#7551 (the card) · PR objectui#9972 (the implementation) · the
os-dev-reporton objectui#7551 carrying the original question and its two options.Filed at
2026-09-18T23:23Z. ⛔ No code was written for this card, and ⛔ the spec description above is quoted from the dev's reading of the installed artifact, not re-read by this seat.Generated by Claude Code