Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Module Graph

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     │
     └──────────┘

Crates

CratePathBounded contextRole
elenchcrates/elenchCLI, Git ProjectionBinary. Reads/writes store, verifies envelopes, evaluates predicates, computes closures, synthesizes git projection.
elench-claimcrates/elench-claimClaim Emission, Claim EvaluationData model matching schema/claim.schema.json, log-folding status computation, emission-rule validation.
elench-predicatecrates/elench-predicatePredicate EvaluationParser and evaluator for elench-predicate-v1 DSL (ADR-0004). Four primitives: grep, test, run, exists.
elench-envelopecrates/elench-envelopeEnvelope VerificationDSSE envelope signing/verification, in-toto statement handling, signer/producer distinction.
elench-storecrates/elench-storeelench StoreContent-addressed store: blobs, trees, claims. The substrate (ADR-0001). In-memory (default), fjall (optional, ADR-0008).
elench-gatecrates/elench-gateRelease GatingRelease policy evaluation: four conditions from docs/release-policy.md.
elench-projectioncrates/elench-projectionGit ProjectionDeterministic synthesis of git-compatible objects from the claim log (ADR-0002, ADR-0007).

Dependencies

FromToWhy
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.

Deferred

CrateWhy deferred
elench-anchorE1 PASSED (strategy=multi), but crate not yet created. Anchor object in schema/claim.schema.json uses strategy=multi by default.