Deterministic chip-processing runtime with cryptographic receipts, policy enforcement, and operational rollout controls.
- Rust workspace implementing the full gate pipeline:
KNOCK -> WA -> CHECK -> TR -> WF - Unified receipt model with stage chain + signature verification
- Durable commit boundary (SQLite):
receipts + idempotency + outbox - Rich URL verification (shadow/strict)
- Runtime self-attestation, metrics, manifests, and MCP proxy endpoints
cargo build --workspace
cargo test --workspace
cargo run -p ubl_gateGate default: http://localhost:4000
POST /v1/chipsGET /v1/chips/:cidGET /v1/chips/:cid/verifyGET /v1/receipts/:cid/traceGET /v1/receipts/:cid/narrateGET /v1/runtime/attestationGET /metricsGET /openapi.jsonPOST /mcp/rpc
Start here: docs/INDEX.md
LLM/human canonical entrypoint: START-HERE.md
Key docs:
ARCHITECTURE.md(normative architecture)TASKLIST.md(execution status)START-HERE.md(declarative canonical guardrails)docs/canon/CANON-REFERENCE.md(exhaustive canon reference)ROLLOUT_P0_TO_P1.md(rollout sequence)/openapi.json(OpenAPI 3.1 surface generated by gate runtime)docs/reference/README.md(official reference sources and paths)SECURITY.md(signature/verification model)GOVERNANCE.md(documentation/process governance)docs/ops/INCIDENT_RUNBOOK.md(operational response)
- Prefer deterministic, canonical paths for CID/sign/verify (
ubl_canon, NRF). - Treat docs as code: update relevant docs in the same PR as behavior changes.
- Archive superseded strategy/checklist docs under
docs/archive/instead of deleting.
- Production signature path is Ed25519 (receipt/runtime attestations).
- PQ dual-sign (
ML-DSA3) is feature-gated as a rollout stub (ubl_kms/pq_mldsa3): API/wire shape is present, and PQ signature currently returnsNoneuntil backend integration is completed.