Skip to content

fix(desktop): recover canonical device-home persona coordinates - #21

Merged
reynholm merged 1 commit into
reynholm:mainfrom
Apregot:fix/device-home-persona-coordinates
Oct 19, 2026
Merged

reynholm merged 1 commit into
reynholm:mainfrom
Apregot:fix/device-home-persona-coordinates

Conversation

@Apregot

@Apregot Apregot commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Joining a workspace can fail with invalid home event signed scope or coordinate when recovery replays a builtin Claim. The journal records builtin:fizz / builtin:honey, while signed persona events use builtin-fizz / builtin-honey. Recovery rejects the event and blocks workspace preparation. The same mismatch affects the last-instance Delete reported in #14.

Resolve local persona IDs through the existing persona_d_tag policy, including imported source slugs. Use the same coordinate for retained-head lookup, label deduplication and monotonic retry timestamps. Retained-only label worklists preserve their original coordinates even when an unrelated local ID collides. Recovery keeps the original signed bytes, owner and relay; signature, kind, owner and coordinate validation remains mandatory and SQL batches remain atomic.

Fixes #14.

Validation:

  • 37 device-home operation tests, 4 device workflow tests and 4 workspace preparation tests passed using real signatures, temporary app data and SQLite.
  • Both registered mutation checks failed as expected when canonical coordinate resolution or the canonical label timestamp floor was removed; source was restored afterward.
  • Fork tooling suite: 77 tests, no failures, 1 environment-specific skip. Patch registry validation, Rust formatting and file-size gates passed.
  • Full local just ci passed: repository-wide static checks, Rust/Tauri/desktop/mobile tests, and desktop/web builds. GitHub Actions checks are running separately.
  • Agent review completed and its findings were fixed.

This remains a draft pending native-app and human acceptance. Verify reconnecting with a persisted builtin Claim, deleting the last builtin instance, and renaming the device twice while publication is unavailable, then retrying. No release or installed-app update is included.

Assisted-by: Codex
Signed-off-by: Savva Melnikov <s.melnikov@bitrix.ru>
@Apregot
Apregot marked this pull request as ready for review October 16, 2026 22:34
@Apregot
Apregot requested a review from reynholm October 16, 2026 22:34
@reynholm
reynholm merged commit 1df1225 into reynholm:main Oct 19, 2026
65 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants