open-standards/joule-code/joule-code-rs/crates/joule-code-identity/Cargo.toml
Transaction Science 4132daa233 joule-review: persistent per-role identities replace the fixed demo seeds
The reviewer and semantic-tier principals were fixed demo keys ([0xAE], [0x5e]).
They are now persistent joule-code-identity keyfiles: the structural reviewer
loads/creates .joule/reviewer.key (or JOULE_REVIEWER_IDENTITY), the semantic
tier .joule/semantic-reviewer.key (or JOULE_REVIEW_SEMANTIC_IDENTITY). Each is
a distinct, traced agent principal that stays the same across runs — the same
reviewer signs across sessions, attributable by its did:key, rather than an
anonymous per-run seed.

Separation of duties is unchanged and now identity-backed: author, structural
reviewer, and semantic reviewer are three distinct persistent principals; an
op authored by the reviewer's own identity is still skipped (self-review). The
self-review integration test now exercises the real path — write a reviewer
keyfile, author an op as that principal, confirm the binary skips it.

(joule-code-identity needs ed25519-dalek's rand_core feature for key
generation; enabled on that crate.) 17 tests; clippy clean.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-11 19:01:45 -04:00

18 lines
543 B
TOML

[package]
name = "joule-code-identity"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true
[dependencies]
ed25519-dalek = { workspace = true, features = ["rand_core"] }
serde = { workspace = true }
serde_json = { workspace = true }
bs58 = "0.5"
rand_core = { version = "0.6", features = ["getrandom"] }
[dev-dependencies]
# Dev-only: prove our did:key encoding is byte-identical to JCP's Did.
jcp-schema = { path = "../../../../jcp/jcp-rs/crates/jcp-schema" }