Skip to content

docs: permissions model across all Workspace file types#26

Open
LeslieOA wants to merge 2 commits into
developfrom
docs/permissions
Open

docs: permissions model across all Workspace file types#26
LeslieOA wants to merge 2 commits into
developfrom
docs/permissions

Conversation

@LeslieOA

Copy link
Copy Markdown
Member

Summary

  • Adds docs/PERMISSIONS.md covering the intended access-control model for .md, .canvas, and .table/ files
  • Simple formats get flat read / edit / admin roles; .table/ gets the same by default with opt-in field-level tiering via x-tier in schema.json
  • Grounds the design in the Hypercore + UCAN findings from workspace-p2p-spike, with direct links to FINDINGS.md, ucan-prior-research.md, and the open issues tracking remaining unknowns
  • Revocation semantics documented honestly: forward-only by design

Not in scope

Implementation — this is the intended design doc only. Tracked open questions link to the P2P spike repo.

🤖 Generated with Claude Code

LeslieOA and others added 2 commits May 22, 2026 20:03
Covers the intended permission model for all current and eventual
Workspace file types (.md, .canvas, .table/), grounded in the
Hypercore + UCAN findings from workspace-p2p-spike.

Simple formats get flat read/edit/admin roles. .table/ gets the same
by default, with opt-in field-level tiering (x-tier in schema.json)
for sensitive tables such as HR records. Key distribution is
peer-to-peer via UCAN delegation; no relay required.

Links to workspace-p2p-spike FINDINGS.md, ucan-prior-research.md,
and open issues #5 and #6 for the remaining unknowns.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Substantial revision following design-critique walkthrough. Corrects
several conflations in the original draft and adds the engineering
patterns that make the model workable.

Key changes:

- Split Hypercore writer keypair from symmetric encryption keys —
  two unrelated layers, doing different jobs (signed-append vs.
  content gating). The original draft blurred them.
- Drop "re-encrypt history" language. Hypercore is append-only;
  key rotation applies to future writes only. Past blocks remain
  encrypted with whichever key was current when they were written.
- Add Autobase as the multi-writer answer for collaborative docs
  (each writer keeps their own log; merged view computed locally).
  Single-writer Hypercores can't support Alice-edits-her-own-record.
- Add UCAN vs. wrapped-key separation: UCAN authorises, the wrapped
  key (X25519 ECDH to recipient's public key) delivers the actual
  symmetric key material. Two artefacts, delivered together.
- Add the encrypted-Hypercore-as-mailbox pattern for asynchronous
  key delivery. No separate infra — key distribution rides the same
  protocol as document data. One protocol all the way down.
- Add topic-layer revocation as a second lever distinct from
  encryption-layer revocation. Encryption alone leaks metadata
  (log existence, sizes, timing); dropping the peer from the
  Hyperswarm topic closes that channel.
- Add scaling section: simple model works to ~500 peers, asynchronous
  delivery to ~10k, MLS as the upgrade path beyond.
- Add concrete worked example (1 admin + 3 managers + 50 employees +
  HR) with the keys-held and can-read tables.
- Add metadata-leakage section being honest about what's still
  observable even with encryption (log existence, sizes, write
  patterns) and how the topic lever addresses it post-departure.

Open questions list expanded with Autobase merge semantics, topic-
layer connection authentication, and MLS integration as the
enterprise-scale escape hatch.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.

1 participant