DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path standing-notes/loomworks-standing-note-confidentiality-posture-v0_2.html

Loomworks — Confidentiality posture as a declared engagement property (standing note)

Version. 0.2
Date. 2026-06-13
Status. Settled architectural direction — a destination and the discipline for reaching it. Architecture only; no engine change implied, nothing built. Each rung above the default is a substantial arc with its own scoping. Candidate for absorption into the comprehensive specification (and eventually the seed) once the property stabilizes.
Amendment note (v0.2). Adds two refinements (2026-06-13), both grounded in a scope-model inspection of the engine at HEAD 7159870: (1) Rung 0 is a permanent, first-class, frictionlessly-selectable choice — an Operator may declare "no content protection" for any engagement without justification, preserved explicitly against "secure-by-default" drift (§2a). (2) The posture is scope-kind-aware by design; domain scopes default to Rung 0 as a forward commitment — domain knowledge is shared, open-by-nature reference material, but domains (and every scope kind other than the engagement) are not yet built, so this defaulting is forward-looking, not current state (§3a). The v0.1 body is otherwise preserved.
Provenance. Operator (Marvin Percival) direction, 2026-06-13. The v0.2 refinements rest on the scope-model inspection @ 7159870 (engagement is the sole Memory scope; domain/team/role/jurisdiction and the reference relation are forward-commitment-only). Seed-grounded resolutions rest on the verbatim seed check of candidate seed v0.12 (2026-06-13). Protection-mechanism landscape rests on web sources verified 2026-06-12 (cited in the parent investigation).
Parent / sibling. investigations/loomworks-data-at-rest-protection-investigation-v0_2; scoping-notes/loomworks-key-custody-hardening-scoping-note-v0_1 (Rung 1).

Plain-language summary

What this records. A destination. Loomworks will treat confidentiality posture — how strongly an engagement's content is protected from DUNIN7 itself — as a declared property carried by the Engagement, governed by its Operator. The engine reads the posture and behaves accordingly. The posture names a rung on a protection ladder. The strongest practical rung releases a customer-held key only into an attested hardware enclave, so DUNIN7 is structurally unable to read the content outside that seal — a cryptographically provable fact, not a promise.

Why it matters. It turns "which single protection do we build for the whole platform" into "each engagement declares the protection it needs, and the engine honors it." One engine serves an ordinary coaching engagement and a privilege-sensitive legal engagement without being two products. And it anchors the strongest claim to a structural property — key absence plus hardware attestation — because structural properties are the only ones that survive a decade of adversaries getting smarter.

Settled here. That posture is a declared, enforced, engagement-carried property; orthogonal to the access axis; bounded by the UUID-identity invariant; that the destination is the enclave-with-customer-key rung; that enforcement-by-key-absence is non-negotiable and designed before any protective rung ships.

Not settled here. The build of any rung; the enclave platform; the precise Companion degradation per rung; the seed addition (deferred). All downstream.

1. The property

Confidentiality posture is a property an Engagement declares and the engine honors. It answers: how strongly is this engagement's content protected from DUNIN7 itself? Set per-Engagement, governed by the Operator in their per-engagement capacity.

A correction recorded rather than smoothed: the property was first described as "a property of an Operator and by extension Engagement." The seed check resolved it — the load-bearing locus is the Engagement; the Operator governs, the Engagement carries. (See §3, Resolution 1.)

2. The protection ladder

The posture names a rung. The rungs stack — they are not a one-time menu. The engine honors whichever rung an Engagement declares; rungs are built in order as demand pulls.

Rung 0 — none (operational trust). Content readable by the running system; protection is access control plus operator trust. Full Companion — proactive organizing, recall, premise-change detection — unconstrained. The default; always exists.
Rung 1 — key-custody hardening. Still DUNIN7's key, but rotated, envelope-wrapped (data-key / key-encryption-key split), ideally in a key-management service not the process environment. Raises cost-of-leak; ends the single-key exposure. Makes no claim against DUNIN7 itself — the key is still DUNIN7's. Build regardless — the floor under every rung above. (Already scoped.)
Rung 2 — customer key, released only into an attested enclave. The key is the customer's, released into a hardware enclave only after attestation proves the exact code, present only for the computation, never to DUNIN7's general infrastructure. DUNIN7 is structurally unable to read content outside the seal; the customer verifies cryptographically. The server-side Companion survives, because reasoning happens inside the seal. The architectural destination for the strong claim.
Rung 3 — customer key, client-side only. The key never touches DUNIN7's infrastructure. DUNIN7 stores ciphertext it cannot decrypt under any circumstance. The Companion goes where the key is — client-side, constrained; the proactive between-sessions behavior is surrendered. The absolute exclusion bar, at the cost of the product's most valuable property. For buyers who require it.

The destination is Rung 2. The highest rung that preserves the server-side Companion — Loomworks's actual product — while making confidentiality a structural, attestable fact rather than a promise. Rung 3 exists for the absolute-exclusion buyer; the property lets each Engagement choose its rung rather than forcing the platform to pick one.

2a. Rung 0 is a permanent, first-class choice (added v0.2)

Rung 0 — none, no content protection beyond access control — is a permanent, first-class, frictionlessly-selectable rung, not a deprecated fallback. An Operator may declare Rung 0 for any engagement, without justification, on equal footing with every other rung. An Operator who runs ordinary, non-sensitive engagements and never wants content encryption is making a valid choice, not a negligent one.

Recorded explicitly because the failure mode is real: a future "secure-by-default" drift could quietly demote Rung 0 to a grayed-out "unprotected (not recommended)" option carrying friction or a justification burden. That would violate the property's own logic — the posture is the Operator's declared choice per engagement, and Rung 0 is a legitimate value of it — and the seed's "only show what is available" rule, which means Rung 0 appears as a clean, selectable posture, not a discouraged one. Rung 0 stays first-class.

3. Three resolutions from the seed (candidate seed v0.12, checked 2026-06-13)

The seed is silent on confidentiality-as-an-engagement-property, key custody, content protection, and inheritance grammar — by its own line-15 rule the comprehensive specification governs, making this property net-new architecture, not an amendment to a settled commitment. But the seed is not silent on three binds:

3a. The posture is scope-kind-aware by design; domain scopes default to Rung 0 — a forward commitment (added v0.2)

Confidentiality posture is scope-kind-aware in its design. Not every scope kind carries the same default: domain scopes — shared bodies of practice referenced across engagements — are open-by-nature reference knowledge, not sensitive, and so default to Rung 0 (none). Encrypting a domain's body of practice would protect something meant to be shared and fight its purpose. This mirrors the seed's existing access-axis intent, where domain scopes default to open while engagements default to private — "different scope kinds, different defaults."

The default is a default, not a mandate: a domain carrying something genuinely proprietary — a bespoke methodology, or a practitioner's encoded method/vertical sold as the product — may declare a higher posture, exactly as a domain may be restricted on the access axis. So "domain knowledge needs no protection" is the correct everyday case, not a hard rule. (This matters for the method-as-product line: a sold vertical is domain-shaped knowledge that is also the thing being sold, and may want protection.)

Posture travels with the scope that owns the content, and references are non-transitive: an engagement at Rung 2 that references an open Rung 0 domain keeps its own content sealed — the reference is read-only and one-directional, the two postures do not mix. An engagement's protection is not weakened by reading from an open domain.

This is a forward commitment, not a description of current state. A scope-model inspection (engine HEAD 7159870) confirmed the engagement is the only Memory scope that exists in code. Domain, team, role, jurisdiction are not built as Memory scopes; the engagement→domain reference relation is not built; access-default-by-scope-kind is not built (a single per-engagement visibility column exists for dashboard filtering, no OVA/ACL enforcement); organizations exist only as an auth-policy/membership object, not a content scope. So today posture has only the engagement to attach to — landing as a column beside visibility, Operator-governed per-engagement, consistent with the founder-authority finding that Operator governance is engagement-scoped. The seed's own per-scope-kind access defaulting is equally unbuilt; the posture's per-scope-kind defaulting and the access axis land together, when the scope model gains domain (and the other kinds) as first-class. Until then: the engagement is where posture lives, Rung 0 is its de-facto current state, and "domain scopes default to Rung 0" is honored when domain becomes a first-class scope — designed-for now, built later.

4. The enforcement discipline — non-negotiable, designed first

A posture the engine merely describes — a flag consulted politely while a path to the plaintext remains — is worse than no posture, because it manufactures false confidence. For any rung above 0 the posture must be load-bearing: the engine structurally unable to read the content, because the key genuinely is not there (Rung 3) or is present only inside the attested seal (Rung 2). The flag's truth is enforced by the absence of the key, not by code that promises to behave.

Consequence for sequencing: before any protective rung ships, the engine's inability to read protected content must be testable and attestable. The customer receives cryptographic proof — enclave attestation at Rung 2, the structural impossibility of decryption at Rung 3 — not DUNIN7's assurance. Enforcement is designed and proven first; the rung is built on it, never the reverse. This is the line that converts "we did our best" into "we cannot betray you even under compulsion."

5. The bound that survives every rung

The residual at every rung is the authorized human. The destination accepts this by making the posture the customer's declared choice, not by pretending a rung dissolves it.

6. What is true today (do not over-claim)

Only Rung 0 exists, and not even hardened — content is plaintext at rest, only secrets encrypted under one static key. Stand only on: per-engagement isolation, no training, no sharing, access control, encrypted secrets, TLS in transit. Do not claim content encryption at rest, customer-held keys, "DUNIN7 cannot read your content," or de-identification until the corresponding rung is built and its enforcement proven.

7. Prerequisites and sequence toward the destination

  1. Rung 1 (key-custody hardening) — build regardless. Already scoped. The floor under every rung above.
  2. Enforcement discipline (§4) — designed and proven before any rung above 1. Testable, attestable inability to read protected content. The gate, not a later refinement.
  3. Rung 2 (enclave + customer key) — the destination; demand-pulled. Scope when a buyer requiring the strong claim is real. Composes on Rung 1. Needs the enclave-platform decision and the Companion-degradation design.
  4. Rung 3 (client-side only) — for absolute-exclusion buyers. Scope when such a buyer is real; accepts the constrained Companion.
  5. Seed addition — deferred until the property stabilizes. Once posture and access axis are both settled in the comprehensive specification, the seed may gain a confidentiality-posture commitment alongside its access-mode commitment. Recorded as the eventual home.

The order is the resolution: the property is the frame (settled); enforcement is the foundation (non-negotiable, first); rungs are built upward as demand pulls; the strongest practical rung that keeps the Companion is the destination.

DUNIN7 — Done In Seven LLC — Miami, Florida
Loomworks — Confidentiality posture as a declared engagement property (standing note) — v0.2 — 2026-06-13