The field converged on spec-driven development with two-stage review (Superpowers, spec-kit, Amplifier), but every artifact in that consensus is prompt-enforced testimony. These three crates make the methodology checkable, in the family's house style (canonical det-CBOR, content addresses, Ed25519 over id ‖ context preimages): - joule-code-spec: the Spec artifact — intent + individually addressable clauses (requirements, constraints, and first-class NON-GOALS), signed and content-addressed, revisions chained by parent. A signed Citation binds a coding op to the clauses it claims to implement (the op stays wire-identical; traceability is additive, like the receipt). coverage() is the deterministic audit: open obligations, cited non-goals (a flag, not a pass), and invalid citations — recorded, never silently dropped. Completes the chain spec → clause → op → receipt. - joule-code-review: two-stage review (spec-compliance, then quality) as signed rounds. Separation of duties is ENFORCED, not advised: a review whose reviewer key equals the op author's key fails verification — self-approval is structurally void. RequestChanges without findings is malformed; approval() audits the latest verified round per stage, with rejected rounds kept on the record (the cost of convergence is part of the artifact). - joulecontract-proof: vericoding for the contract — each obligation with an explicit Formalization (statement + grounding tag; this crate NEVER invents one) becomes a ProofGoal citing the contract's content address and runs the JouleProof cascade. Per-obligation ledger: Proved (full CascadeResult, cache flywheel included) / Unproved (attempts + joules on record) / Unformalized (demoted, never dropped). discharged() is true only when every obligation proved — a contract is not "mostly" discharged. 16 new tests across the three crates; clippy clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>
14 lines
366 B
TOML
14 lines
366 B
TOML
[package]
|
|
name = "joule-code-review"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[dependencies]
|
|
joule-code-schema = { workspace = true }
|
|
joule-code-cargo = { workspace = true }
|
|
ed25519-dalek = { workspace = true }
|
|
serde = { workspace = true }
|
|
thiserror = { workspace = true }
|