Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

@enc-protocol/cvn/enc — ENC, but no app

Two layers sit on CVN in an ENC application, and the line between them is drawn by evidence, not prediction:

  • The app's kernelshared/kernel/families/<family>.ts in impl-super-mvp: Super's verbs as stated decision functions with written invariants. #invitemember mentions rosters, DM epochs and moments; it is Super, and it stays Super.
  • cvn/enc — the residue each family surfaces that mentions only enclaves, events, nodes and DataViews. Every ENC client applies these rules; none of them may import an application. A module lands here only when a family in a real app travels it (peerEnclave — declared, green, never travelled — is the failure this order prevents), and it comes with its own tests and, when it is protocol, a Lean oracle case.

Modules

modulerulepinned by
inclusionan event is really in the log when the bundle leaf is in the CT tree under the signed tree head, the event is in its bundle, and the STH signature verified; the verdict is ok only when all three hold, and the detail names eachEnc/Cvn/Inclusion.lean (inclusion_ok_iff_all, inclusion_fail_of_any), eight oracle cases replayed by test/enc-inclusion.test.mjs

Crypto primitives are injected (InclusionPrims): the rule is pure, the host owns the hashing and the signature checks, and the same verdict runs on node, web and native without a platform import.

The rhythm that grows this layer

  1. Pick a verb family in the app. Write its invariants as sentences a test can refute.
  2. Redesign it as a decision function. While doing that, ask of each part: does it mention the app's nouns, or only enclaves, events, nodes, DataViews?
  3. The protocol-only parts move here, with tests and a Lean case; the app's parts stay in the app's family module and import from here.
  4. Gate, commit, next family.

impl-super-mvp/CVM-PORT-6.md is the plan for Super's sixteen families and the code-derived measure its loop halts on. For a native host, the family modules and this layer are exactly what to adopt: the app's kernel plus cvn/enc are the code shared across hosts; the host implements HostPorts and the app's declared ports, nothing else.