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]>
18 lines
543 B
TOML
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" }
|