jouleclaw-compliance: EU Cyber Resilience Act Article 14 reporting as an auditable filing chain #282

Merged
dcharlot merged 2 commits from feat/cra-art14-filing-chain into main 2026-10-17 04:02:37 -04:00
4 changed files with 1421 additions and 1 deletions

View file

@ -3280,9 +3280,11 @@ version = "0.1.0"
dependencies = [
"blake3",
"chrono",
"ed25519-dalek",
"jouleclaw-core",
"jouleclaw-energy",
"jouleclaw-prov",
"jouleclaw-transparency-log",
"serde",
"serde_json",
"thiserror 2.0.20",

View file

@ -6,14 +6,18 @@ rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
description = "Regulatory-compliance wedge for JouleClaw: ISO/IEC 21031 SCI calculator, signed AI-service energy passport (BLAKE3-hashed for tamper evidence), and CSRD Scope-3 / EU AI Act / EED / ESPR report generators. Built on jouleclaw-energy + jouleclaw-prov."
description = "Regulatory-compliance wedge for JouleClaw: ISO/IEC 21031 SCI calculator, signed AI-service energy passport (BLAKE3-hashed for tamper evidence), and CSRD Scope-3 / EU AI Act / EED / ESPR report generators. Built on jouleclaw-energy + jouleclaw-prov. Also an EU Cyber Resilience Act Article 14 filing chain: hash-linked, Merkle-logged, with each stage's deadline."
[dependencies]
jouleclaw-core = { path = "../jouleclaw-core" }
jouleclaw-energy = { path = "../jouleclaw-energy" }
jouleclaw-prov = { path = "../jouleclaw-prov" }
jouleclaw-transparency-log = { path = "../jouleclaw-transparency-log" }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror.workspace = true
chrono = { workspace = true }
blake3 = { workspace = true }
[dev-dependencies]
ed25519-dalek = { workspace = true }

File diff suppressed because it is too large Load diff

View file

@ -13,6 +13,10 @@
//! - **EU compliance reports** — EED (Energy Efficiency Directive),
//! CSRD Scope 3, EU AI Act energy disclosure, ESPR Digital Product
//! Passport. See [`eu_compliance`].
//! - **EU Cyber Resilience Act, Article 14 reporting** — one case's early
//! warning, notification and final report as a hash-linked filing chain,
//! each filing a leaf in a Merkle log with an inclusion-proof receipt, and
//! each stage's statutory deadline read off the chain. See [`cra`].
//!
//! Every passport links a [`passport::MeasurementMethod`] to a
//! [`jouleclaw_energy::Provenance`] tag — measurement honesty travels
@ -40,7 +44,13 @@ pub mod sci;
pub mod banding;
pub mod passport;
pub mod eu_compliance;
pub mod cra;
pub use cra::{
Art14Subject, ChainError, DeadlineState, FiledReceipt, Filing, FilingChain, FilingStage,
ProductStatement, ProductStatus, ReceiptError, Revision, StageDeadline,
article_14_applies_from,
};
pub use eu_compliance::{
AiActReport, CsrdScope3Report, CustomerAllocation, EedReport, EsprReport,
generate_ai_act_report, generate_csrd_scope3, generate_eed_report,