Brit (בְּרִית, "covenant") is an expansion of gitoxide that makes version control covenantal. Every commit carries three-pillar metadata (lamad/shefa/qahal). Merges are covenantal joinings of lineages. Forks are new covenants, legitimately grown from old ones. Branches carry reach levels that govern who sees what.
gitoxide is a pure-Rust git implementation with a clean modular design — each concern lives in its own gix-* crate and swaps independently. That modularity lets us layer protocol semantics onto git without rewriting the object model. The engine/app-schema split (§2 of the schema manifest) keeps brit-epr usable as a generic substrate while the Elohim Protocol vocabulary stays behind a feature flag.
Brit is the semantic layer (commits, refs, pillar coupling, governance) over two substrates:
- gitoxide — the git object model, refs, pack protocol
- rust-ipfs — CIDs, multihash, Bitswap, libp2p (Phase 2+)
The hybrid design: commit trailers are the protocol surface (survive git clone from any forge); linked ContentNodes are the graph surface (rich pillar metadata, resolved through doorway).
See composition.md for how brit composes with rakia, protocol schemas, and storage.
Seven phases, decomposed by protocol capability — what the protocol gains, not what crate gets written. Each phase produces working, testable software.
| Phase | Capability unlocked | What the protocol gains | Status |
|---|---|---|---|
| 0+1 | Commits carry covenant | Every commit can be checked for three-pillar compliance. Trailers parse, validate, round-trip through stock git. brit verify works. |
Complete (plan) |
| 2a | Artifacts become self-aware | Build, deploy, and validation attestations as signed ContentNodes. Refs under refs/notes/brit/. Reach computation. brit build-ref CLI. Pure local. |
Complete (plan) |
| 2 | Git artifacts become protocol content | Repos, commits, branches, trees addressable by CID. Schema-driven types. Rakia can emit BuildManifestContentNode. | Summary |
| 3 | Git over P2P | Clone, fetch, push over libp2p. No forge required. Rakia-peer shares transport. | Summary |
| 4 | Branches tell their story | Per-branch READMEs as EPRs. Reach-governed visibility. Build status per branch. | Summary |
| 5 | Repos discoverable on the network | DHT announcement. Peers find repos by CID. Build manifests discoverable. | Summary |
| 6 | Forks are governance acts | Fork as ContentNode with stewardship. Cross-fork merges via qahal consent. | Summary |
Brit and rakia evolve on parallel tracks. Each brit phase unlocks rakia capability, but neither blocks the other:
| Brit phase | What rakia gains |
|---|---|
| Phase 0+1 (current) | Attestation trailers. Change detection via gix. Baseline refs. |
| Phase 2 | BuildManifestContentNode + BuildAttestationContentNode as protocol content |
| Phase 3 | Shared P2P transport for manifest distribution |
| Phase 4 | Build status per branch via reach-governed branch metadata |
| Phase 5 | Build manifest discovery via DHT |
| Phase 6 | Forked build recipes with independent stewardship |
-
Round-trip with stock git. Every commit brit produces must be readable by stock git. Trailers are RFC-822 lines, not magic bytes.
git clonefrom any forge works. -
Schema-driven development. JSON Schema files define all ContentNode types, trailer grammar, and enum vocabularies. Rust types are generated from schemas. Validation harness catches drift.
-
Engine doesn't know the protocol. brit-epr parses trailers and dispatches to
AppSchema. The Elohim Protocol vocabulary is behind#[cfg(feature = "elohim-protocol")]. Someone can writeAcmeSchemafor carbon accounting without touching brit. -
Brit doesn't own governance. Brit reads consent requirements from the parent EPR's qahal context. The governance gateway handles tally logic. Brit publishes proposals and executes results.
-
Upstream-rebaseable. New functionality goes in new crates. Modifications to
gix-*crates are limited to bugs and additive extension points. The fork doesn't become a boat anchor. -
Additive, not destructive. Phase 0 doesn't rename
gix-*tobrit-*. We earn renames only when semantics diverge enough to justify the churn. -
LLM-first CLI. Command names mirror git (use training as cognitive carrier). Hard parts of pillar authoring pushed into skill + template, not into the prompt. Humans use the UI for review and consent.
| Loop | How brit closes it |
|---|---|
| Build baselines | Pipeline baselines become git refs (refs/notes/rakia/baselines), not Jenkins artifacts |
| Build artifacts | CI outputs become CID-addressed, attested ContentNodes via rakia |
| Schema versioning | Every schema version is a commit, every evolution is a branch, N versions coexist |
| Journal publishing | Journal entries become commits to stewarded refs |
| Attestation | Agent-signed reviews are commit trailers with capability claims |
| Fork governance | Forks are ContentNodes with their own stewardship and governance |
| Branch views | Branches are ContentNodes with reach, audience, and per-branch READMEs |
| Document | Purpose |
|---|---|
| Schema manifest | 1700+ line exploration of the full app schema: ContentNode catalog, trailer spec, CLI surface, signals, doorway registration |
| Design spec | Formal spec with architecture, design decisions, and open questions |
| Composition model | How brit composes with rakia, protocol schemas, rust-ipfs, storage |
| Merge consent critique | Design review of async-default merge consent |
| Phase 0+1 plan | Implementation plan (complete) |
Phase plans in phases/ are summary documents with vision, prerequisites, sprint sketches, and risks. Each gets a full implementation plan (in this directory) before execution.
Implementation plans follow the superpowers writing-plans skill format: bite-sized tasks, TDD-first, implementation-ready for someone with Rust experience and zero prior context.