Derived from the domain model (bounded contexts) and the ADR log. Each
crate maps to one or more bounded contexts. Dependencies are acyclic.
┌─────────────┐
│ elench │ (binary: CLI + git projection)
│ (crates/ │
│ elench) │
└──────┬──────┘
┌────────┬─────┴──────┬─────────┐
▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌────────┐ ┌────────┐
│elench- │ │elench- │ │elench- │ │elench- │
│claim │ │envelope │ │store │ │gate │
└────┬─────┘ └──────────┘ └────────┘ └────┬───┘
│ │
│ ┌─────────────┐ │
└────┤ elench- │ │
│ predicate │ │
└─────────────┘ │
│
┌─────────────┐ │
│ elench- │ │
│ projection ├────────────────────────────┘
└──────┬──────┘
│
▼
┌──────────┐
│elench- │
│store │
└──────────┘
Crate Path Bounded context Role
elenchcrates/elenchCLI, Git Projection Binary. Reads/writes store, verifies envelopes, evaluates predicates, computes closures, synthesizes git projection.
elench-claimcrates/elench-claimClaim Emission, Claim Evaluation Data model matching schema/claim.schema.json, log-folding status computation, emission-rule validation.
elench-predicatecrates/elench-predicatePredicate Evaluation Parser and evaluator for elench-predicate-v1 DSL (ADR-0004). Four primitives: grep, test, run, exists.
elench-envelopecrates/elench-envelopeEnvelope Verification DSSE envelope signing/verification, in-toto statement handling, signer/producer distinction.
elench-storecrates/elench-storeelench Store Content-addressed store: blobs, trees, claims. The substrate (ADR-0001). In-memory (default), fjall (optional, ADR-0008).
elench-gatecrates/elench-gateRelease Gating Release policy evaluation: four conditions from docs/release-policy.md.
elench-projectioncrates/elench-projectionGit Projection Deterministic synthesis of git-compatible objects from the claim log (ADR-0002, ADR-0007).
From To Why
elenchelench-claimClaim data model
elenchelench-envelopeEnvelope signing/verification
elenchelench-storeContent-addressed storage
elenchelench-gateRelease gate evaluation
elenchelench-predicatePredicate validation
elenchelench-projectionGit projection
elench-envelopeelench-claimClaim type (sign/verify)
elench-storeelench-claimClaim type (store/read)
elench-gateelench-claimStatus computation (log fold)
elench-projectionelench-claimClaim types
elench-projectionelench-storeStore (read trees)
No cycles. elench-claim is the sole leaf — it depends on nothing in
the workspace. elench-predicate depends on nothing in the workspace
(regex is external). elench-envelope, elench-store, and
elench-gate all depend on elench-claim. elench-projection
depends on elench-claim and elench-store. The binary depends on
all six library crates.
Crate Why deferred
elench-anchorE1 PASSED (strategy=multi), but crate not yet created. Anchor object in schema/claim.schema.json uses strategy=multi by default.