Skip to content

Sync: opaque Sedimentree histories and disposable-tree lifecycle - #204

Merged
lannbot merged 1 commit into
mainfrom
feat/opaque-sedimentree-lifecycle
Sep 12, 2026
Merged

Sync: opaque Sedimentree histories and disposable-tree lifecycle#204
lannbot merged 1 commit into
mainfrom
feat/opaque-sedimentree-lifecycle

Conversation

@lannbot

@lannbot lannbot commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Carry non-Automerge histories through the existing signed Sedimentree/Subduction transport and storage. Add trusted Rust create/open/publish/read operations with explicit GroupSealed or CallerEncrypted modes, causal references, raw snapshots, peer discovery and notifications.
  • Keep disposable-tree lifecycle in one metadata-only current us register per slot. Fresh replacement IDs, deterministic concurrent intent resolution, execution-time eligibility checks, control-first reconnect and retirement prevent stale content from resurrecting after winning control is learned.
  • Integrate opaque Drive roundtrips and idempotent deletion of validated obsolete objects. Publish durable retiring control before cleanup, recheck in-flight uploads/imports, and retry cleanup across restart.
  • Keep raw payloads out of Automerge and its compactor. Add focused concurrency, restore, stale-replica, envelope-binding, multi-parent, catalog-ordering and Drive race coverage. Independent review: LGTM.

Verification

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace (engine 6 unit + 48 integration; kernel 27 unit + 87 integration)
  • cargo test -p polyvisor-engine -p polyvisor-kernel
  • just wit
  • cargo build --workspace --target wasm32-wasip2 --release
  • just compose
  • deno task build
  • deno task check
  • deno task test (36 passed)

CI supplies the existing real-Chromium E2E regression gate. No UI changes or new browser claims.

Scope and limits

Exploratory project with no users: document IDs now have a disjoint namespace; no migration layer. No public history WIT, backup identity/recovery implementation, or chat protocol/UI.

Cleanup concerns cooperating replicas/stores, not secure erasure. Offline replicas may retain/serve a former version until learning winning control. Keyhive's private, nonserialized content-key cache can remain until vault teardown; wrapper payload/head/ancestor cleanup and eligibility still apply. An upload completing during group adoption can remain orphaned in the old folder because adoption does not authorize deleting old-group data.

Automerge will be armed with merge commits and watched through CI.

@lannbot
lannbot enabled auto-merge September 12, 2026 21:52
@lannbot
lannbot merged commit e0c3a76 into main Sep 12, 2026
2 checks passed
@lannbot
lannbot deleted the feat/opaque-sedimentree-lifecycle branch September 12, 2026 21:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants