Skip to content

id: design: capability grants for providers (from #5686) #5900

Open

Description

@dezren39

Summary

Follow-on design ticket from #5686 — its decomposition sketch names this as a separate design, and the parent's acceptance requires these tickets to be filed and linked. Filed in the 2026-11-04 gap pass (WS-F) so the design work exists and can be prioritised on its own merits; implementation timing is a separate decision, possibly months out.

What this design must settle

Least-privilege scoping, observation vs actuation classes, approval flows by sensitivity, and attenuation for provider grants.

Context from the parent

The parent design fixes the single capability-provider model — declaration, discovery, negotiation, least-privilege grants — instantiated by ESP32/MQTT, terminal, Bevy, smartphone, and web providers. The parent issue carries the surrounding decisions this ticket must not re-decide; where this ticket's answer would change a parent decision, record that explicitly rather than silently forking it.

Decision record expected

Close this design with a recorded decision (on this issue or in a doc/ record linked from it): the chosen shape, the alternatives rejected and why, and the invariants implementation must hold. If the design splits further, file the splits and link them here rather than growing this issue.

Relations

Parent: #5686. Programme: epic #2056. Filed by WS-F (2026-11-04 ID design gap & expansion pass).

Activity

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Field survey filed: #5931 (capability-provider research widening, per Drew's 2026-11-04 ruling) covers the current option space relevant to this issue in §6.4 — the capability-token field (UCAN 1.0, Biscuit 3.x, macaroons, IETF AAT draft): attenuate-only offline-verifiable delegation is a solved, multiply-implemented pattern; open question is encoding vs ID-native objects. It is an inventory, not a decision — the section ends with the open questions this design needs to answer.

  4. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Wave-2 cross-link from the worlds prior-art pass (#5955 program).

    New evidence for the delegation-encoding question: Spritely's Brassica Chat prototype (Nov 2025) demonstrates the four-layer composition in production-adjacent form — (1) object capabilities for online access, (2) actors/async messaging over OCapN, (3) CRDTs for eventually-consistent offline messaging, (4) certificate capabilities (zcaps) for offline authorization via delegation chains — explicitly contrasting with ACL-based local-first apps (https://www.spritely.institute/news/composing-capability-security-and-conflict-free-replicated-data-types.html). The zcap layer is a third data point beside UCAN/Biscuit for attenuable, offline-verifiable delegation: chains of signed certificates rather than tokens. Full survey: workspace/scratch/worlds-capabilities-brief-2026-11-04/prior-art-research.md, Cluster 7.

  5. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  6. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  7. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: queue worker (repo-worker-code), lane code-i
    • Session / ID: task 10302
    • Found via: queue claim
    • Task: Triage issue id: design: capability grants for providers (from #5686) #5900 — assigned_lane=opencode, handed off to opencode claimant per §1b; parked 1800s for claimant launch
    • Expectation: claimant launches bound opencode session to triage at current main
    • Links: n/a
  8. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

  9. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 5, 2026
  12. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  13. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    Queue triage — task 10302

    Verdict: #5900 remains OPEN; the all-state PR search found no PR for it. Parent design #5686 and the capability-provider field survey #5931 are both open. The existing survey comment on this issue explicitly says it is an option inventory, not a design decision. Current main is 2aefba0.

    Existing foundation: the ID capability design at doc/2026-10-09T09-59-07Z_design_attenuated_capabilities/ records scope attenuation, delegation, expiry/use limits and revocation; pkgs/id/crates/id-core/src/world_caps.rs contains the corresponding ledger machinery. That work does not settle provider-specific identity/scope, risk classes, or approval flows, so #5900 is not already done.

    Triage scope and order:

    1. Keep this ticket to provider grants: capability/provider/consumer binding, purpose and rate/volume bounds, expiry, issuance/approval by sensitivity, and the observation-versus-actuation distinction. Do not re-decide declaration, discovery, negotiation, or each target's transport; those are the parent and sibling tickets' scope.
    2. Start from the parent design(id): client-side capability providers — one provider model for ESP32/MQTT, terminal, Bevy, smartphone, and web #5686 authority/ceiling model and the existing ID grant/delegation machinery. Use id: research: capability-provider field survey — current options & variants per provider class + cross-cutting frameworks (from #5686) #5931 as evidence, then make an explicit choice between ID-native grant objects and a token encoding (including rejected alternatives); the survey itself does not choose.
    3. Specify attenuation, revocation, expiry/use limits and provider lifecycle; coordinate offline/cached-grant behavior with id: design: offline & degraded operation for providers (from #5686) #5904 rather than duplicating its whole design.
    4. Record invariants and alternatives in a linked doc/ decision record, then close this design ticket only when its acceptance criteria are met. Split only if the decision work identifies a genuinely independent design boundary.

    Blockers: none to starting the design. The research input is already linked in the issue comments; its still-open status is not a dependency. No code changed in this triage.

    🤖 Agent note · triaged

  14. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  15. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged / done

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)task/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions