Skip to content

Purge/canonical follow-ups deferred from #196: slug normalization, mirror-ingest serialization, cache-publication fencing #583

Open

Description

@beardthelion

Deferred out of PR #196's review rounds (all verified real, all needing one coherent design pass rather than per-site patches):

Slug normalization (one decision, several sites)

  • Lock keys normalize the owner slug but cascade predicates and stored repo values do not: a same-slug create and purge do not mutually exclude.
  • The purge cascade matches only the shortened slug, so child rows stored under a full did:key: owner survive purge, and matching pending sync items stay eligible for dequeue.
  • Any fix must pick one canonical storage/matching form across lock keys, cascade predicates, and get_repo selection, and handle existing rows (normalizing future writes alone leaves them behind).

Mirror-ingest / writer serialization

  • create_bounty inserts do not take the normalized slug lock, so authorize-then-insert can straddle the purge tombstone update. The lock shape depends on the normalization decision above.

Cache-publication fencing

  • A cache-miss acquire can download the archive before purge and publish it after purge removes the row, directory, and archive. Needs cross-process fencing for in-flight downloads.

Canonical policy on sibling survival

  • Purging a private canonical repo can leave a public same-slug mirror selected by get_repo; the skip-when-sibling-exists guard's sibling lookup needs the same normalization so the canonical policy is preserved.

Activity

  1. added
    kind:bugDefect fix — wrong or unsafe behavior
    sev:mediumDegraded but workaround exists
    subsystem:identityDID/UCAN, http-sig auth, push authorization
    subsystem:storageBlob/object store, Arweave, IPFS, archives
    on Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind:bugDefect fix — wrong or unsafe behaviorsev:mediumDegraded but workaround existssubsystem:identityDID/UCAN, http-sig auth, push authorizationsubsystem:replicationMirror, replica, and cross-node syncsubsystem:storageBlob/object store, Arweave, IPFS, archives

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions