Skip to content

id: long-term — group encryption and authorization (BeeKEM / p2panda-encryption) #1070

Closed

Description

@dezren39

Long-term: group encryption and authorization

From pkgs/id/TODO.md (long-term section):

Group key agreement so a world's documents and envelopes can be encrypted for its current members only. Candidates: keyhive's BeeKEM (pre-alpha — revisit when stable) or p2panda-encryption. Borrow ideas; do not depend on pre-stable crates without review.

Long-term idea, filed so it is tracked and prioritized rather than lost. Not on the path to Phase 12.

Coordination (2026-10-26 reprioritization, per Drew): every id roadmap item now has its own GitHub issue, and priority encodes the order: (1) the path to Phase 12 — now + priority/high; (2) Phase 12 itself — next; (3) Phase 13 and long-term ideas — priority/low. The dashboard mirrors this list (org Project "Developing Today" #4, Area id-train; Grist Program roadmap, Area id). If this item turns out to be blocked, wrong, or superseded, park or close it with a note rather than letting it stall the queue — dropping an issue is always allowed; silently stalling is not.

Acceptance criteria

  • A candidate evaluation is recorded on this issue (keyhive BeeKEM vs p2panda-encryption), including each candidate's stability status at evaluation time.
  • No pre-stable crate is adopted as a dependency without an explicit review note here.
  • A decision is recorded: adopt (with the first implementation issue filed), defer (with a revisit trigger), or drop (with reason).

Activity

  1. added
    kind/featureNew feature or capability request
    source/humanFiled directly by a human
    priority/lowNice to have; do when convenient
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    effort/lLarge: multi-day or open-ended; expect staged check-ins
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: Source: pkgs/id/TODO.md (long-term) · related provenance/trust work: F12.17 #1069

    Notes: Long-term, priority/low, explicitly not on the path to Phase 12. BeeKEM is pre-alpha per the TODO — the evaluation's job is mostly to set the revisit trigger so this doesn't get re-litigated from scratch.

    Risks: Depending on a pre-alpha KEM would put world encryption on a moving foundation; the guardrail in the body (borrow ideas, don't depend without review) is the controlling rule.

    Suggested approach: Timebox the evaluation; the deliverable is the decision record, not a prototype.

    Labels were already normalized by the filer (kind, source/human, status/needs-triage, priority, effort, app/id all present); this pass appended the acceptance criteria above and adds meta/enriched.

    🤖 Agent note · filed

    • Agent: fleet monitor
    • Session / ID: repo-fleet-monitor run 2026-10-26 22:19 CDT
    • Found via: monitor reconciliation (intake enrichment, protocol §5)
    • Task: Intake review — verified still live (filed this evening as part of Drew's roadmap/validation batch; no merged PR or commit resolves it), appended acceptance criteria, posted this review.
    • Expectation: done when the acceptance criteria above are met (effort class as labelled by the filer).
  4. added
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Oct 27, 2026
  5. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), lane D
    • Session / ID: queue task 2351
    • Found via: queue claim
    • Task: Triage id: long-term — group encryption and authorization (BeeKEM / p2panda-encryption) #1070 (long-term group encryption: BeeKEM vs p2panda-encryption) — verify repo state at current main and record the candidate evaluation the issue asks for
    • Expectation: effort l long-term; triage done = evaluation + decision (adopt/defer/drop) recorded on the issue
    • Links: task 2351 in queue repo-health-code-pilot
  6. dezren39 commented on Oct 28, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    • Agent: queue worker (repo-worker-code), lane D
    • Session / ID: queue task 2351
    • Found via: queue claim
    • Task: Candidate evaluation + decision for id: long-term — group encryption and authorization (BeeKEM / p2panda-encryption) #1070 (BeeKEM vs p2panda-encryption), per this issue's acceptance criteria
    • Expectation: evaluation and decision recorded below; closing as completed
    • Links: pkgs/id/src/encryption/mod.rs, pkgs/id/Cargo.toml:72, pkgs/id/TODO.md:250-253

    Candidate evaluation (recorded 2026-10-28, per acceptance criteria)

    p2panda-encryption — ADOPTED (already, in Phase 4).

    • At current main (35726e8e), pkgs/id/src/encryption/mod.rs opens: "Group encryption on the DataScheme of p2panda-encryption (Phase 4, P4.1 to P4.6 and P4.8 to P4.13)" — per-device/group sessions, epoch rotation on create/update/add/remove/recovery, history modes, welcomes. The group-encryption half of this issue's TODO item is built and shipped on this candidate.
    • Stability status: upstream is pre-1.0 — latest release 0.7.1, and upstream states its APIs are "not yet considered stable for production use… Stability guarantees will improve with the release of v1.0.0."
    • How the pre-stable risk was handled (the review note criterion 2 asks for): the crate is vendored (pkgs/id/Cargo.toml:72: p2panda-encryption = { path = "vendor/p2panda-encryption", … }, vendored copy is exactly 0.7.1) and the sibling p2panda crates are pinned to a fixed git rev (da80c05b…). Adoption is therefore pinned and auditable in-tree, not a floating pre-stable dependency.

    keyhive / BeeKEM — DEFER (do not adopt).

    • Stability status at evaluation time: still pre-alpha. The keyhive workspace is at version 0.1.0 across packages, self-described as "pre-alpha… not audited — not suitable for production use", with an unstable API (inkandswitch/keyhive). Automerge's July 2026 update still describes Keyhive as a work-in-progress access-control layer. Nothing since the TODO entry ("pre-alpha — revisit when stable") has changed that status.
    • Revisit trigger: keyhive publishes a stable release (≥1.0, or an explicitly production-ready, audited release) — re-evaluate then, primarily for the authorization half (keyhive-style signed, attenuable, revocable grants, TODO.md:253), which p2panda-encryption does not cover and which remains open.

    Decision

    • Adopt: p2panda-encryption — already implemented in Phase 4 (no new implementation issue needed; it exists and is the shipped scheme). Vendoring + rev pinning is the recorded pre-stable review mechanism.
    • Defer: BeeKEM/keyhive — with the revisit trigger above.
    • Out of scope of this decision and still open in pkgs/id/TODO.md:251-253: whether past content is re-keyed on removal, encryption at rest for world stores/outbox, and keyhive-style authorization grants. Those are separate roadmap items, not part of the candidate choice.

    Closing this issue as completed: its acceptance criteria (evaluation recorded with stability status, no unreviewed pre-stable adoption, decision recorded) are now met. If Drew wants the BeeKEM revisit tracked as its own open item when the trigger fires, this note is the record to file it from.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/lLarge: multi-day or open-ended; expect staged check-inskind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientsource/humanFiled directly by a humanstatus:done

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions