Skip to content

A missed rotation no longer strands a bucket-only sibling: the self-addressed chain drop - #118

Merged
lannbot merged 2 commits into
mainfrom
fix/us-chain-drop
Aug 25, 2026
Merged

A missed rotation no longer strands a bucket-only sibling: the self-addressed chain drop#118
lannbot merged 2 commits into
mainfrom
fix/us-chain-drop

Conversation

@lannbot

@lannbot lannbot commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Fixes #110.

The strand: a us-doc name-key rotation leaves a bucket-only lagging sibling reading the rotator's stale old-epoch manifest forever — the new epoch's objects sit under names only the new chain derives, and the chain lives in the very document those names gate. Kit revocation made it reachable from a sheet button.

The fix: the self-addressed chain dropstore_revoke on the us-doc writes every non-revoked account device a sealed copy of the new chain at kp_location(us, member, member) (the K_p machinery pointed at itself: one derivable location per member, any rotator writes it, sealed to the member's prekeys exactly like a grantee K_p), and the S3 sibling pull probes its own drop before deriving any name, adopting a strictly longer chain. Revoked member's drop deleted beside its K_p. Concurrent rotators LWW the drop exactly as the chain register itself does — best-effort freshness channel, wire sync stays truth. Drive neither writes nor probes (its revoke arm never rotates, by its own ruling; the reading half is provider-neutral and a re-add is three lines per side).

Gates: recover battery act 9 (one pull across a missed rotation, runnable PM_NO_CHAIN_DROP negative control reproducing the strand, revoked kit's pickup+drop gone as exactly two objects); devstore row 67 (same claim through the worker's pull path; row 63's no-revocation pair constraint retired as historical); check/pair/resume green; SYNC.md amended.

Note: devstore rows 65/66 are left as a numbering gap for #117's unmerged rows — whichever PR merges second will need a trivial append-region conflict resolution in run.ts, handled at automerge time.

Automerge is armed.

…ddressed chain drop

Issue #110's strand, closed at the mechanism: a us-doc name-key
rotation left a lagging bucket-only sibling reading the rotator's
stale old-epoch manifest forever — the new epoch's objects sit under
names only the new chain derives, and the chain lives in the very
document those names gate. store_revoke on the us-doc now writes every
non-revoked account device a sealed copy of the new chain at
kp_location(us, member, member) — the K_p machinery self-addressed:
one derivable location per member, any rotator writes it, payload
sealed to the member's prekeys exactly like a grantee K_p. The S3
sibling pull probes its own drop before deriving any name and adopts a
strictly longer chain (idempotent; chains only extend). The revoked
member's drop is deleted beside its K_p. The rotator writes its own
drop too — it may be the lagging sibling next time, resumed from a
checkpoint predating somebody else's rotation.

Drive neither writes nor probes drops, and the absence is the ruling:
its store-revoke arm never rotates (names there are not access
control), so a probe would bill every us pull for an object that
cannot exist; the reading half is provider-neutral and the re-add is
three lines per side if a trigger ever arrives.

Gates: the recover battery grows act 9 — one pull across a missed
rotation (epochs 2 to 3, profile and registry both current), the
revoked kit's pickup AND drop gone as exactly two objects, with a
runnable PM_NO_CHAIN_DROP negative control reproducing the strand;
devstore row 67 asserts the same claim through the worker's own pull
path against a pair that HAS crossed a revocation, retiring row 63's
no-revocation constraint as historical; check/pair/resume green;
SYNC.md carries the design amendment.
@lannbot
lannbot enabled auto-merge August 25, 2026 13:06
@lannbot
lannbot merged commit aeeff29 into main Aug 25, 2026
3 checks passed
@lannbot
lannbot deleted the fix/us-chain-drop branch August 25, 2026 13:32
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.

A name-key rotation strands a bucket-only lagging sibling on the us-doc until wire contact

2 participants