provin
← Back to home

ARCHITECTURE

Put execution and proof in the same data flow

provin treats receive, verify, process, sign, and pass on as one execution model, leaving each segment a record the next segment can verify.

Three roles that make a chain

Source starts a line, Chained carries the previous record forward, and Sink verifies and hands data outside. Each role can be extended for its use case.

01

Source

Turn input into a signed record and start a new line.

02

Chained

Verify the previous record and connect it to the processed record.

03

Sink

Verify the record, present data and its verdict outside, and end the line.

Each dot is a signed record issued at a processing boundary.

Chained processing patterns

Verification before processing and signing afterward stay the same. The processing in between can vary.

One data-plane pass

Each segment verifies the evidence before it, runs its work, and leaves a record the next segment can verify.

  1. 01 Input
  2. 02 Verify predecessor
  3. 03 Evaluate / transform
  4. 04 Sign record
  5. 05 Emit onward

Responsibilities in the codebase

Public surfaces are named for durable responsibilities instead of the implementation that happens to fulfill them today.

pipeline/

Process execution, I/O, provenance continuity, and completion events.

vc/ · canon/ · crypto/

Canonical signing scopes, record issuance, signatures, and verification.

did/ · delegation/ · resolver/

Issuer, key, and delegated-authority resolution for attribution.

network/ · cmd/

Registration, resolution, and audit services plus the node and operator CLI.

Design boundaries

File-backed by default

The node runs on YAML and files; storage and PDP boundaries are replaceable interfaces. External requirements depend on the selected auth provider, PDP, and adapter.

Fail closed

Unknown state or unverifiable input is never accepted implicitly.

Separate execution surfaces

Pipeline and support services communicate across a wire boundary instead of importing each other.

Portable evidence

Required records can be bundled and re-verified away from a running node.

View the source