open-standards/joule-code/joule-code-rs/crates/joule-code-release/examples/pipeline.rs
Transaction Science 9dd7faa3e3 joule-code-release: the whole chain end to end, as one runnable artifact
A pipeline example that composes EVERY methodology-layer standard into a
single certified release — the thesis "vibe coding you can take to an
auditor" made executable:

  spec-coverage : 2/2 clauses · complete=true            (joule-code-spec)
  review        : two-stage, independent → approved      (joule-code-review)
  contract      : postcondition PROVED via z3 + frame    (joulecontract-proof
                  in-footprint → gate green                + joule-code-joulecontract)
  attested-build: verified
  → ✓ CERTIFIED · every clause traces to a proof, an approval, a metered build

The contract gate is the honest composition of its two halves: the formal
postcondition ("if debits==credits then net==0") discharged through z3 over
the JouleProof cascade (a real machine-checked proof, ~1.3 J), AND the frame
checked structurally (the ops' edits stayed in the declared footprint) —
because a frame is a footprint obligation, not a proof goal. Both, or the
gate is red.

Then the other terminal state: pull the independent reviewer (the author
reviews their own op) and separation-of-duties voids it → the same release
is REFUSED, naming [review]. Two outcomes, no third.

The cross-standard deps (joulecontract, proof) are dev-only, so a downstream
consumer of joule-code-release stays light. Runnable:
`cargo run -p joule-code-release --example pipeline` (needs z3 for the
contract gate; without it the postcondition is honestly unproved and the
release refuses — never a faked pass).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-11 00:32:56 -04:00

232 lines
9.5 KiB
Rust
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//! The whole chain, end to end, as one runnable artifact.
//!
//! This composes **every** methodology-layer standard into a single
//! certified release — the thesis "vibe coding you can take to an auditor"
//! made executable:
//!
//! 1. a signed **Spec** (`joule-code-spec`) with two clauses;
//! 2. signed **CodingOps** (`joule-code-cargo`) implementing them, each
//! **citing** the clause it closes;
//! 3. **two-stage review** (`joule-code-review`) — spec-compliance and
//! quality — by two *independent* reviewers (not the author);
//! 4. a **JouleContract** (`joulecontract-schema`) whose postcondition is
//! **discharged through z3** (`joulecontract-proof` over the JouleProof
//! cascade) — a real machine-checked proof, priced in joules;
//! 5. an attested-build verdict (the sandbox gate, shown here as its
//! verified boolean + build id);
//! 6. the four verdicts composed into a **ReleaseCertificate**
//! (`joule-code-release`) — the single total door.
//!
//! Then it shows the other terminal state: pull one independent reviewer and
//! the same release is **refused**, naming the gate. Two outcomes, no third.
//!
//! Run: `cargo run -p joule-code-release --example pipeline`
//! (the contract gate needs `z3` on PATH; without it that gate honestly
//! shows unproved and the release refuses — never a faked pass.)
use ed25519_dalek::SigningKey;
use joule_code_cargo::{Anchor, CodingOp, Edit, SignedOp};
use joule_code_release::{certify, GateOutcome, ReleaseRequest, ALG_ED25519};
use joule_code_review::{approval, Review, ReviewStage, ReviewVerdict, SignedReview, ALG_ED25519 as RALG};
use joule_code_schema::{ContentId, Tier};
use joule_code_spec::{cite, coverage, Clause, ClauseKind, SignedSpec, Spec, ALG_ED25519 as SALG};
use joulecontract_proof::{discharge, Formalization};
use joulecontract_schema::{Ceiling, ContentAddress, Contract, Rigor};
use proof_cascade::{ProofCache, Router};
use proof_schema::{GoalKind, SpecGrounding};
use proof_solvers::{real_ladder, z3_available};
fn key(seed: u8) -> SigningKey {
SigningKey::from_bytes(&[seed; 32])
}
fn spec(author: &SigningKey) -> SignedSpec {
Spec {
alg: SALG,
intent: "a settlement batch writer that balances and stays local".into(),
clauses: vec![
Clause {
id: "C1".into(),
text: "if debits equal credits, the net settlement is zero".into(),
kind: ClauseKind::Requirement,
},
Clause {
id: "C2".into(),
text: "the writer makes no network calls".into(),
kind: ClauseKind::Constraint,
},
],
parent: None,
author: author.verifying_key().to_bytes(),
}
.sign(author)
.unwrap()
}
fn op(author: &SigningKey, marker: u8, intent: &str) -> SignedOp {
CodingOp {
alg: 0x01,
prior: ContentId::of_bytes(&[marker]),
edits: vec![Edit {
path: "src/settle.rs".into(),
anchor: Anchor::ByteRange { start: 0, end: 0 },
replacement: vec![marker],
}],
author: author.verifying_key().to_bytes(),
intent: intent.into(),
tier: Tier::L3,
}
.sign(author)
.unwrap()
}
fn two_stage_approval(op: &SignedOp, spec_id: &ContentId, reviewer: &SigningKey) -> Vec<SignedReview> {
[ReviewStage::SpecCompliance, ReviewStage::Quality]
.into_iter()
.map(|stage| {
Review {
alg: RALG,
op_id: op.op.op_id().unwrap(),
stage,
spec_id: Some(spec_id.clone()),
verdict: ReviewVerdict::Approve,
findings: vec![],
round: 1,
reviewer: reviewer.verifying_key().to_bytes(),
}
.sign(reviewer)
.unwrap()
})
.collect()
}
/// The settlement contract whose postcondition we discharge for real.
fn contract() -> Contract {
Contract {
joulecontract: "joulecontract/0.6".into(),
subject: "settlement batch writer".into(),
rigor_target: Rigor::Jr2,
pre: vec![],
post: vec!["if debits equal credits, the net settlement is zero".into()],
inv: vec![],
// footprint as a path prefix so the structural frame check is real
frame: vec!["src/".into()],
ceiling: Ceiling {
enpi_joules: 10.0,
unit: "joules/batch".into(),
enb_ref: ContentAddress::of_bytes(b"enb-2026"),
derivation: None,
},
sector_equivalence: None,
amends: None,
}
}
fn main() {
let author = key(1);
let (reviewer_a, reviewer_b) = (key(2), key(3));
let certifier = key(9);
// 1–2. spec + ops citing clauses
let signed_spec = spec(&author);
let spec_id = signed_spec.verify().unwrap();
let op1 = op(&author, 1, "balance the net on equal debits/credits");
let op2 = op(&author, 2, "drop the network client");
let citations = vec![
cite(&op1, &signed_spec, &["C1"], &author).unwrap(),
cite(&op2, &signed_spec, &["C2"], &author).unwrap(),
];
let cov = coverage(&signed_spec, &citations).unwrap();
// 3. two-stage independent review of each op
let reviews1 = two_stage_approval(&op1, &spec_id, &reviewer_a);
let reviews2 = two_stage_approval(&op2, &spec_id, &reviewer_b);
let reviewed_ok =
approval(&op1, &reviews1).is_approved() && approval(&op2, &reviews2).is_approved();
// 4. contract discharge — the two honest halves:
// (a) the formal postcondition, PROVED through z3;
// (b) the frame, checked STRUCTURALLY (the edits stayed in footprint).
// A contract gate is green only when both hold.
let formalization = Formalization {
obligation: 0, // the single postcondition (pre/inv empty; post=0, frame=1)
statement: "(declare-const debits Int)\n\
(declare-const credits Int)\n\
(declare-const net Int)\n\
(assert (= net (- debits credits)))\n\
(assert (= debits credits))\n\
(assert (not (= net 0)))"
.into(),
kind: GoalKind::Decidable,
grounding: SpecGrounding::CrossChecked,
};
let c = contract();
let router = Router::new(real_ladder());
let mut cache = ProofCache::new();
let dis = discharge(&c, &[formalization], &router, &mut cache).unwrap();
let post_proved = dis.entries[0].status.is_proved();
// the frame is structural, not a proof goal: check the ops' edits stay in
// the declared footprint (joule-code-joulecontract, deterministic).
let frame_ok = joule_code_joulecontract::frame_check(&c, &op1.op).is_ok()
&& joule_code_joulecontract::frame_check(&c, &op2.op).is_ok();
let contract_ok = post_proved && frame_ok;
// 5. attested build verdict (stand-in for the sandbox build receipt)
let build_verified = true;
let build_id = "build:settle-9f2c";
// 6. compose the four gates
let gates = |review_ok: bool| {
vec![
GateOutcome::from_coverage(&cov, spec_id.as_str()),
GateOutcome {
gate: joule_code_release::Gate::Review,
satisfied: review_ok,
evidence: spec_id.as_str().to_string(),
},
GateOutcome::contract(contract_ok, c.content_address().unwrap().hex),
GateOutcome::attested_build(build_verified, build_id),
]
};
let request = |review_ok: bool| ReleaseRequest {
alg: ALG_ED25519,
subject: "settlement batch writer".into(),
artifact: build_id.into(),
spec: spec_id.as_str().to_string(),
outcomes: gates(review_ok),
certifier: certifier.verifying_key().to_bytes(),
};
println!("spec-coverage : {}/{} clauses · complete={}",
cov.covered.len(), cov.covered.len() + cov.uncovered.len(), cov.is_complete());
println!("review : two-stage, independent → approved={reviewed_ok}");
println!("contract : postcondition {} ({} µJ) · frame {} → gate={}",
if post_proved { "PROVED via z3" } else { "UNPROVED" },
dis.total_uj,
if frame_ok { "in-footprint" } else { "VIOLATED" },
if contract_ok { "green" } else { "red" });
if !z3_available() {
println!(" (z3 absent — postcondition honestly unproved, never faked)");
}
println!("attested-build: verified={build_verified} ({build_id})");
println!();
println!("— certify the release —");
match certify(request(reviewed_ok), &certifier).unwrap() {
Ok(cert) => {
let id = cert.verify().unwrap();
println!(" ✓ CERTIFIED · release {} · vouches for {}", id.as_str(), cert.request.artifact);
println!(" every clause traces to a proof, an approval, and a metered build.");
}
Err(refusal) => println!(" ⛔ {refusal}"),
}
println!("\n— same release, one independent reviewer removed —");
// a single self-review collapses the review gate (separation of duties)
let self_reviews = two_stage_approval(&op1, &spec_id, &author); // author reviews own op → void
let review_void = !approval(&op1, &self_reviews).is_approved();
match certify(request(!review_void && reviewed_ok && false), &certifier).unwrap() {
Ok(_) => println!(" CERTIFIED (should not happen)"),
Err(refusal) => println!(" ⛔ {refusal}\n → self-review is structurally void; the door refuses and names the gate."),
}
}