Context
Found while answering the maximize-classifier review on PR #18470. The new operation's direct-path repair is separate; this Group-envelope defect already affects existing operations on dev a57ffbe717. Ada independently confirmed the source trace. The measured receipt and boundary and defect-note MESSAGE:9790d8a0-69f6-469a-83cb-e493777c8eb7 carry the discovery.
The Problem
A real WorkspaceSet.commit('main', [setActiveItem]) probe with the node maximized committed the requested active tab but cleared maximizedNodeId to null. The same scalar descriptor classified neutral. The projection received {operations:[{operation:'setActiveItem',tabsNodeId:'tabs',itemId:'b'}],workspaceKey:'main'}.
This contradicts the landed maximize input contract from #17928: operations confined to the maximized node preserve its transient, subject to the node surviving projection. The new finding does not reopen that resolved ticket. Browser geometry was not measured in this discovery probe; the failing state transition and real Group envelope were.
The Architectural Reality
src/dashboard/dock/window/WorkspaceSet.mjs:355 packages commit metadata as {operations, workspaceKey}.
src/dashboard/dock/plugin/Maximize.mjs:isNeutralOperation requires scalar descriptor.operation; its early guard rejects that envelope before any neutral-operation case is reached. onBeforeDockZoneDocumentChange then clears the transient.
- Workstation
registerMainWorkspace and PopupWorkspace forward context.descriptor into the engine projectDockZoneDocument hook.
- Group semantic adoption precedes projection.
manager/transaction/Commit.mjs supplies captured and valuesBefore in the participant context; the classifier must retain the meaning of an operation's source, rather than inferring it solely from the already-adopted result.
The Fix
Carry the existing Group operation context through the engine projection/collaborator seam and make the maximize decision agree with the existing scalar rules for the affected workspace. Classify a batch with its ordered before/after meaning. Keep policy in the engine maximize/projection boundary, with consumer callbacks only forwarding the needed context. Use the existing transaction capture; do not introduce a second document history, writer or maximize state.
Contract Ledger Matrix
| Surface |
Authority |
Behavior |
Refusal / fallback |
Docs / evidence |
| Group projection metadata → maximize decision |
WorkspaceSet commit envelope and Commit participant context |
Preserve confinement decisions over admitted operations in order |
Unknown/whole-document/boundary-changing inputs retain the existing conservative clear |
Existing seam JSDoc; real Group integration controls |
| Maximize transient continuity |
Landed maximize input contract and plugin re-projection |
Confined changes preserve a surviving maximized node; changes beyond it clear terminally before reconciliation |
A removed node clears; failed semantic writes cause no maximize mutation |
Plugin JSDoc; direct/Group parity and rendered workspace witness |
Acceptance Criteria
Out of Scope
The addItem vocabulary repair in #18467 / PR #18470, maximize FLIP arming in #18027, declarative configuration design, and Workstation responsibility extraction. This ticket repairs Group presentation-context propagation; it does not redefine operation or transaction semantics.
Avoided Traps
Simply applying operations.every(isNeutralOperation) against the adopted document can misclassify cross-node moves. Do not flatten away workspace identity, re-admit documents during projection, or repair only one app while leaving the engine contract broken.
Decision Record impact
Aligned with ADR 0029: maximize stays transient presentation, semantic writes remain Group-owned, and persisted shapes are unchanged. No new module placement is prescribed.
Related: #18303 · #18305 · #17928
Ownership: @neo-gpt-emmy claimed this leaf after #18470 merged. Implementation branch: codex/18471-group-maximize-continuity.
Origin Session ID: 153d2e0a-ebae-4087-bcd5-3c92d213132c
Retrieval Hint: Maximize isNeutralOperation WorkspaceSet operations envelope captured valuesBefore setActiveItem
Creation sweeps (2026-09-08 11:49 UTC): live latest 20 open issues and 30 all-state recent A2A checked; no competing filing/claim. All-state maximize searches and the bodies of #17928, #18021 and #18027 distinguish feature, oracle and motion work. Own assignments checked (six open); same-surface #18467, #18456 and #16498 bodies do not own this defect. KB found no direct source; MC problem query returned three unrelated results, so live source and the measured Group probe govern.
Context
Found while answering the maximize-classifier review on PR #18470. The new operation's direct-path repair is separate; this Group-envelope defect already affects existing operations on dev
a57ffbe717. Ada independently confirmed the source trace. The measured receipt and boundary and defect-noteMESSAGE:9790d8a0-69f6-469a-83cb-e493777c8eb7carry the discovery.The Problem
A real
WorkspaceSet.commit('main', [setActiveItem])probe with the node maximized committed the requested active tab but clearedmaximizedNodeIdtonull. The same scalar descriptor classified neutral. The projection received{operations:[{operation:'setActiveItem',tabsNodeId:'tabs',itemId:'b'}],workspaceKey:'main'}.This contradicts the landed maximize input contract from #17928: operations confined to the maximized node preserve its transient, subject to the node surviving projection. The new finding does not reopen that resolved ticket. Browser geometry was not measured in this discovery probe; the failing state transition and real Group envelope were.
The Architectural Reality
src/dashboard/dock/window/WorkspaceSet.mjs:355packages commit metadata as{operations, workspaceKey}.src/dashboard/dock/plugin/Maximize.mjs:isNeutralOperationrequires scalardescriptor.operation; its early guard rejects that envelope before any neutral-operation case is reached.onBeforeDockZoneDocumentChangethen clears the transient.registerMainWorkspaceandPopupWorkspaceforwardcontext.descriptorinto the engineprojectDockZoneDocumenthook.manager/transaction/Commit.mjssuppliescapturedandvaluesBeforein the participant context; the classifier must retain the meaning of an operation's source, rather than inferring it solely from the already-adopted result.The Fix
Carry the existing Group operation context through the engine projection/collaborator seam and make the maximize decision agree with the existing scalar rules for the affected workspace. Classify a batch with its ordered before/after meaning. Keep policy in the engine maximize/projection boundary, with consumer callbacks only forwarding the needed context. Use the existing transaction capture; do not introduce a second document history, writer or maximize state.
Contract Ledger Matrix
Acceptance Criteria
Out of Scope
The addItem vocabulary repair in #18467 / PR #18470, maximize FLIP arming in #18027, declarative configuration design, and Workstation responsibility extraction. This ticket repairs Group presentation-context propagation; it does not redefine operation or transaction semantics.
Avoided Traps
Simply applying
operations.every(isNeutralOperation)against the adopted document can misclassify cross-node moves. Do not flatten away workspace identity, re-admit documents during projection, or repair only one app while leaving the engine contract broken.Decision Record impact
Aligned with ADR 0029: maximize stays transient presentation, semantic writes remain Group-owned, and persisted shapes are unchanged. No new module placement is prescribed.
Related: #18303 · #18305 · #17928
Ownership: @neo-gpt-emmy claimed this leaf after #18470 merged. Implementation branch:
codex/18471-group-maximize-continuity.Origin Session ID: 153d2e0a-ebae-4087-bcd5-3c92d213132c
Retrieval Hint:
Maximize isNeutralOperation WorkspaceSet operations envelope captured valuesBefore setActiveItemCreation sweeps (2026-09-08 11:49 UTC): live latest 20 open issues and 30 all-state recent A2A checked; no competing filing/claim. All-state maximize searches and the bodies of #17928, #18021 and #18027 distinguish feature, oracle and motion work. Own assignments checked (six open); same-surface #18467, #18456 and #16498 bodies do not own this defect. KB found no direct source; MC problem query returned three unrelated results, so live source and the measured Group probe govern.