Skip to content

feat(data): Data Spheres — ring-fenced immutable data, sharpened by the live mount table - #29

Merged
mdheller merged 1 commit into
mainfrom
feat/data-spheres
Aug 4, 2026
Merged

feat(data): Data Spheres — ring-fenced immutable data, sharpened by the live mount table#29
mdheller merged 1 commit into
mainfrom
feat/data-spheres

Conversation

@mdheller

@mdheller mdheller commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Fuses the Trusted-Data-Spheres pattern (immutable + token-gated + provenance) with our commons + grant + Needs-firewall, hardened by four lessons read off the sandbox's own mount table.

tools/data_sphere.py:

  • Integrity by construction — squashfs/erofs + dm-verity with a pinned root_hash (a signature check, not readOnly:true; the inode has no write path at any layer). access_check refuses a sphere without a pinned integrity root.
  • Tenancy by construction — isolation key in the mount source ref (sphere-store:<session>:<id>), unforgeable from inside, not a policy a bad manifest can get wrong.
  • Direction axis (ingress|egress|bidirectional|none) + check_egress_invariant: at most one egress mount per workload — the single durable-write chokepoint.
  • backend_for: intent × link_availability × durability → backend. Reference-mount over reliable links (no copy/divergence/reconciliation); copy+reconcile only on intermittent×canonical.
  • Grant-gated read (effect:read bound to sphere id + digest), fail-closed.

docs/MOUNT_TAXONOMY.md witnesses the analysis — the two diagrams compose into one lattice, the egress chokepoint, dm-verity vs readOnly, construction-tenancy, and the honest root-ext4-collapse counterexample.

136 tools tests green (+7). Aligns directly with your mount-table read.

…he live mount table

Fuses the Trusted-Data-Spheres pattern (immutable + token-gated + provenance) with our commons +
grant + Needs-firewall, and hardens it with four lessons read off the sandbox's own mount table.

tools/data_sphere.py:
  - mint_sphere: content-addressed, immutable, INTEGRITY BY CONSTRUCTION — squashfs/erofs + dm-verity
    with a pinned root_hash (a signature check, not a readOnly:true assertion; the inode has no write
    path at any layer). access_check REFUSES a sphere without a pinned integrity root.
  - tenancy_binding: TENANCY BY CONSTRUCTION — the isolation key is in the mount SOURCE ref
    (sphere-store:<session>:<sphere_id>), session-scoped + unforgeable from inside, not a policy a bad
    manifest can get wrong.
  - DIRECTION axis (ingress|egress|bidirectional|none) + check_egress_invariant: AT MOST ONE egress
    mount per workload — the single durable-write chokepoint where egress attestation lives.
  - backend_for: intent x link_availability x durability -> backend. Reference-mount over reliable
    links (no copy, no divergence, no reconciliation); copy+reconcile ONLY on intermittent x canonical
    (so CRF machinery is paid only where the link forces it).
  - read_grant_capability + access_check: reading a sphere needs a Grant with effect:read bound to the
    sphere id + content digest; fail-closed (wrong effect / mutation / bad residency / no integrity).

docs/MOUNT_TAXONOMY.md witnesses the analysis: the two diagrams compose into one lattice
(intent x link x durability), the egress chokepoint, dm-verity vs readOnly, construction-tenancy, and
the honest root-ext4-collapse counterexample. capd/data-spheres.mesh.capd.json.

Tests: +7 = 140 tools tests green. validate REQUIRED + CapD + Makefile `sphere`.
@mdheller
mdheller force-pushed the feat/data-spheres branch from 6be89e5 to ecb126d Compare August 4, 2026 05:45
@mdheller
mdheller merged commit ad10d39 into main Aug 4, 2026
1 check passed
@mdheller
mdheller deleted the feat/data-spheres branch August 4, 2026 05:46
mdheller added a commit that referenced this pull request Aug 4, 2026
The enterprise-PaaS governance the BlueMix Gen3/Gen4 diagrams model, done light + sovereign.

Account tiers (admission.py) — BlueMix entitlement/Free-Paid, as quota + backend entitlement:
  - TIERS free|pro|enterprise: each sets max_concurrent/gpu_max/cost_budget AND allowed_backends
    (free -> local/wasm only; pro -> +k8s/hpc/volunteer; enterprise -> all).
  - AdmissionController(tiers={subject: tier}); quota_for applies the tier (explicit quotas still
    override); allowed_backends(subject) feeds compute_plane.place() policy. Default tier: pro.
  - free tier denies GPU work (gpu_max 0), fail-closed.

Availability-maturity grade (availability.py) — the DW-DevOps Zero-Downtime legend as a governance
artifact (like the commons' reproducible/declared grade):
  - GRADES: non-managed -> needs-work -> almost-zd -> zero-downtime.
  - a CapD declares policy.availability; estate_availability() reports per-capability grades + a
    histogram (default non-managed). Honest grades added: compute-plane needs-work; commons /
    verification / data-spheres almost-zd.

Tests: +5 tier +2 availability = 147 tools tests green. validate REQUIRED + Makefile `availability`.
Completes the three PaaS-lesson units (dev-mode #28, data-spheres #29, tiers+availability).
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