Repository navigation
Recover unsent layouts across reload and browser process loss - #213
Conversation
🧪 Comprehensive Test Suite
Full-stack smoke gate runs in the CI workflow. |
|
Independent exact-head review found a Settings race in Corrected in The corrected head is under renewed independent review and full CI/browser validation. The superseded c4df01e CI run was cancelled to release its workflow slot; cancellation is not counted as a pass. Its Comprehensive run completed successfully, but corrected-head evidence is still required. |
🧪 Comprehensive Test Suite
Full-stack smoke gate runs in the CI workflow. |
|
Exact-head integration evidence for
Live dev is |
|
Native administrative merge completed under the owner’s standing dev-only authorization. Actual dev is Final dev CI40617447937 and Comprehensive40617447914 are running. #181 remains open pending those results. Main remains |
|
Resolved by reviewed #213, integrated with #214. Durable account/graph/node-scoped receipts preserve unsent positions across reload and actual owned-browser process termination/restart. Generation fences and exact-session replay checks prevent stale/cross-account replay; accepted writes with failed cleanup retry cleanup only. Pending Settings state and delayed error ownership were independently reviewed and corrected. Nine strict browser cases include actualquota/two-tab ordering, account replacement, revoked/deleted targets, unavailable storage/locks and stable LOD labels while work is pending. Earlier negative evidence and the review correction remain in the PR and canonical lessons. Final aggregate dev acceptance passed at All applicable quality/build/unit/security, realNeo4j/MCP, three runtime-image, effects/showcase, supported Node22.18/24 and installer/config jobs passed. Main/nightly production-stack job was inapplicable and skipped, not claimed as passed. Native dev parents/tree were verified before closeout; main remains775362e. No release/deployment/protection changes. The intermediate ed963 dev CI was cancelled by the newer aggregate push and was not counted as success. Closing the defined durability acceptance. Unsupported storage/locks and inaccessible records remain explicit recoverable states; no universal network/hosted guarantee is inferred. Nested LOD continues separately in #215/#216 and must preserve these regressions. |
Problem and behavior
Unsent drags currently survive navigation but disappear when the browser reloads or exits. This change persists the newest pending coordinates in the existing account IndexedDB store before network replay, restores them before graph initialization, and distinguishes memory-only, device-committed, server-accepted and cleanup-pending states.
Owner/graph/node receipts and transactional generation checks prevent a stale tab from restoring old coordinates over a newer acknowledged layout. Replay checks the active account and bearer token, serializes matching items with Web Locks, and removes only matching revisions. Settings exposes explicit recovery/discard for inaccessible or deleted graphs. Offline-sync mode keeps its existing local mutation/sync authority. Memoized recovery overlays preserve stable LOD labels during camera movement.
Refs #181 and #193. This PR remains draft until exact-head review and all applicable checks finish; it does not close #181 before final dev CI.
Validation
Candidate:
168b98470c1051a6c48eae4132e1e4ab08c0a0ef. Parent525ca4e5aa5bd4a918ad85165d0f2a0e8caf59achas the same complete tree as integrated dev780a7599d1d7949d5e0fac56091f0b07bb0e6e0d.docs/quality/LAYOUT_RECOVERY_2026-10-28.mdand the linked repository lessons.Limits
Committed browser storage can survive this tested process termination; it does not guarantee survival of OS/power/storage loss or browser-data clearing. Known accepted saves retry only receipt cleanup. An ambiguous response/crash boundary remains at-least-once; server-side multi-actor ordering is separate. Missing storage/coordination and capacity failures stay visible. No hosted D1, release or deployment acceptance is claimed.