Skip to content

System services: schema-authority data services, computed capability profiles, the egress-reachability badge #21

Description

@lannbot

Design recorded in NOTES.md — System services: one component kind, capability profiles (from the 2026-08-17 design discussion; leaning, not ruling). This issue tracks making it real.

The design, in brief

  • Data services are schema-authority components: a versioned service (polymorph-data:tasks) owns a doc partition — schema, policy, migrations — and multiple apps project it. Engine owns CRDT/crypto/sync mechanics behind the Data services: the polymorph:automerge surface - document as ACL unit, host-side ownership, indexing, encrypted backup #8 surface; one schema authority per doc; singleton service instance per partition serving multi-version facades; apps never touch doc surfaces.
  • One component kind: data services and egress providers are not structural types but computed capability profiles. The load-bearing badge is transitive egress-reachability over the composition graph ("pure: this code cannot reach the network") — derived by the linker, cannot lie, handles compositions. Obligations attach to capabilities: doc authority ⇒ singleton/schema/facade rules; egress ⇒ scoping/proxied-fetch/audit + the compound prompt with data authority (Network capabilities: per-destination grants, the app manifest, proxied fetch and the audit log, exfiltration stance #7's flow matrix is the badge's complement for data-mediated flows).
  • Splitting (pure-data + egress-adapter) is an engineering choice where it buys failure tolerance — cheap via composition, incentivized (purity earns lighter review) — never a forced classification.
  • Defaults: per-app partitions everywhere (shared scopes are explicit grants); refs-by-id across ACL units; blob-attachment pattern via the storage layer.

Deliverables

Related: #8 (engine surface), #20 (demo; G1 = tasks service), #7 (flow prompts), #6 (linker enforcement), #13 (apps become thin: UI + service bindings), #10/#19 (sharing/storage under partition = doc).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions