1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//! `dpp-rules` — pure EU ESPR cross-field regulatory rules.
//!
//! Rules are grouped by sector module. Batteries, textiles, and electronics are
//! the active sectors; all others have placeholder modules and will be populated
//! in a later phase.
//!
//! Inputs are primitive borrowing views so each caller adapts its own
//! representation — typed structs in core, `serde_json::Value` fields in
//! plugins — without this crate depending on either. That is why this crate is
//! kept separate from `dpp-domain`: a regulatory rule has exactly one
//! implementation, shared by core and the Wasm plugins alike.
//!
//! The `bundle` feature (off by default) adds the ruleset-bundle format +
//! verification seam (the `bundle` module — conditionally compiled, so not
//! linked here) and pulls in `std` — see that module's docs.
extern crate alloc;
// Only needed when `no_std` is actually active (default build); when the
// `bundle` feature is on, `no_std` is off and `std` is already available.
extern crate std;
// Shared helpers (cross-sector utilities).
// Chemical substance rules — REACH, RoHS, EU 2026/405.
// SVHC lives here rather than under any single sector because REACH Art. 33
// applies across textiles, electronics, toys, construction, and more.
// Active sectors.
// Plausibility lints — non-binding findings, never a compliance gate.
// Placeholder sectors — rules to be implemented in a later phase.
// Canonical JCS content hashing — the one hasher shared by the bundle
// verifier and by downstream evidence/dossier consumers, so an integrity
// hash cannot drift between the code that writes it and the code that checks it.
// Ruleset-bundle format + verification seam (signed, versioned Compliance
// Current bundles). Optional: signing and hot-swap runtime state stay
// engine-side; this crate only carries the open format + fail-closed verify.
// ── Crate-root re-exports ────────────────────────────────────────────────────
// Preserved for backward compatibility with existing callers
// (dpp-domain adapters, dpp-plugin-sdk::rules).
pub use validate_cas_format;
pub use ;
pub use ;
pub use country_code_valid;
pub use ;
/// Compile-checks this crate's README examples.
///
/// A README example is a public claim about the API, and nothing else in the
/// build compiles one. Without this, a README can advertise a function that
/// does not exist — which is exactly what happened before this harness landed.
;