Skip to content

id: design: capability observability surface — granted sets, used sets, diffs over time, per audience #6017

Open

Description

@dezren39

Part of the worlds design program: #5955. Wave-2 follow-up from the prior-art research (Lane B item 50); parent topic issue: #5958. Research source: workspace/scratch/worlds-capabilities-brief-2026-11-04/prior-art-research.md.

Scope

The brief's program framing names observability as a first-class axis alongside permissions and composability. The server-invariants child of #5955 covers budget observability (what trips, who sees it); this follow-up covers the capability surface:

Done looks like

An audience×surface matrix with the concrete views each audience gets, specified against the registry schema from #5958.

Activity

  1. added
    priority/normalOrdinary priority (the default)
    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. added
    kind/designA design proposal (design-architect): multi-step, phased, decision-bearing
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    on Nov 5, 2026
  4. 116 remaining items

  5. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

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

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  8. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    Proposed audience × surface matrix

    This is a read/query view contract, not a replacement capability model. The live #5958 issue settles the key distinction as requested versus discovered-used, but does not yet publish canonical field names or a complete registry schema. Keep those names provisional until #5958 settles them. Also preserve its C2 ruling: isolated/no-filesystem/no-network remains the default; additional file/network capability is opt-in, off by default on servers, first-party-published for now, and designed so a future general-enablement decision remains possible.

    One distinction the views must make explicit: requested is not granted. Show the world-requested set, the analyzer-derived used set, and the effective server/admin grant as separate facts. A requested capability may be denied; a derived-used capability does not itself authorize use.

    Surface Users (before/during connection) World authors (their own worlds) Server admins
    Requested capabilities and effective grant Requested set for the exact release; separately show granted/denied/conditional effective state, scope, and the policy reason. Do not label the request itself as a grant. Requested set by release, with the effective policy outcome where known; highlight declarations that appear broader than the derived-used set. Requested set and effective grant side by side, including grant scope and the policy/default that produced it.
    Derived-used set and certification Show the derived-used set for the connected release, attributed to the world or dependency where useful. If derivation is absent or invalidated, show unknown / not certified and why, never an empty set that looks like “uses nothing.” Show transitive library footprint and capability origins, plus certification status, analyzer/input version, and the reason for any uncertified result. Consume #5998/#6000 policy; do not redefine which language features invalidate certification. Per-world derived-used set and certification status; make uncertified worlds filterable and visibly distinct from certified worlds. Do not treat an uncertified result as safe.
    Changes over time Since the user’s last-seen registry revision: requested, effective-grant, and derived-used changes separately. Use #5999’s user-meaningful capability classes for re-approval; a used-set change under an unchanged request is visible but is not silently turned into a new grant. Compare releases/revisions; show added/removed requested and used capabilities, dependency-origin changes, and certification transitions. Audit changes to requests, effective grants, derivation/certification, and policy for a world or across the server; filter by time, world, and change kind.
    Inherited library footprint Concise summary of capability contribution from included libraries, sufficient to explain why the world’s footprint differs from its own direct declarations. Expand each transitive library and its contribution/origin; retain the aggregate world set while allowing drill-down. Aggregate and drill down by world and dependency origin; use the same derived set and provenance as the author view.
    Grants in force and inventory For the selected world, show what the server currently permits and the scope of that decision before the user connects. For each owned world, show the request and known deployment grant outcome; do not imply authors can grant server authority. Fleet inventory by world, requested/used capabilities, certification, and effective grant; show who/what policy supplied each in-force grant and its scope.
    Moderation-pack provenance Show the active pack/version and user-visible policy effect when relevant, separate from capability grants. Show the pack/version attached to each authored world and its configured local parameters/overrides. Show pack id/version, publisher/signature status, preset, subscribed feed ids/versions and freshness, plus local overrides/exemptions. Consume the data-only pack and signed/versioned-feed inputs in #6005/#6006; moderation provenance is not itself a capability.

    History as queryable registry facts

    The current view should be the latest projection of revisioned facts, not the only retained state. At minimum, a history query needs a world id, monotonically ordered registry/release revision, event time, event kind, and references to the prior/current values (or normalized deltas) for requested, derived-used, certification, and effective grants. Record the catalog/schema and analyzer versions needed to interpret those facts; include actor/policy provenance for grant changes. Moderation-pack/feed version changes can be recorded as a separate provenance event. Sets should use stable capability ids, with display labels resolved for the requested catalog version.

    Queries should support current state, a revision/time range, and “since revision X,” so #5959’s reconnect notice can ask for exactly the changes since a client last saw the world. The user’s last-seen cursor belongs to the notice/connection state, not in the world’s capability facts. Access must follow the audience scopes above: users only for worlds they may inspect/connect to, authors only their own worlds, and admins within their server authority. Retention policy is not specified here.

    Boundary with #5958

    This proposal does not change the requested-vs-discovered-used model, capability vocabulary, compilation ceiling, or default/opt-in posture. The one explicit extension point is history: if #5958 settles a current-entry-only schema, observability needs an append-only revision/event history (or equivalent queryable snapshots) keyed to that schema. That is a schema decision for #5958 to accept or reject; this issue must not silently fork its registry. Exact field names and diff classifications remain owned by #5958 and #5999 respectively.

  9. dezren39 commented on Nov 6, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · 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)kind/designA design proposal (design-architect): multi-step, phased, decision-bearingpriority/normalOrdinary priority (the default)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