jouleclaw-compliance: no ESPR record on an AI service passport #441

Merged
dcharlot merged 1 commit from fix/passport-no-espr into main 2026-11-01 09:38:43 -05:00
Owner

The AI Service Passport's compliance record carried an ESPR digital product passport: a URL and a bare registry_submitted: bool. ESPR applies to "any physical goods that are placed on the market or put into service" (Regulation (EU) 2024/1781, Art. 1(2), read from the Official Journal text). This passport describes an inference service. So the record claimed a regime that cannot apply, through a flag nothing checked. The 2026-10-19 sweep raised this as item 21 ("Retire EsprCompliance.registry_submitted").

Changes

  • EsprCompliance and ComplianceRecord.espr_dpp are removed. The record's doc says why. It also says the hardware a service runs on is a physical good, so where a delegated act requires a product passport, that passport belongs to the hardware.
  • A passport written with the record still reads, and the member is dropped. A seal taken over the old shape covered that member too, so sealed_hash of the re-read passport does not reproduce it. The doc says to check such a seal against the original bytes.
  • EsprReport, a report shaped for physical products (repairability, recyclable materials), now says it is for a physical product rather than "product / model".

Nothing outside the crate constructs or re-exports the removed type.

Verification (build host)

  • cargo test -p jouleclaw-compliance: 85 pass. cargo clippy -p jouleclaw-compliance --all-targets --no-deps -D warnings is clean.
  • A new test feeds a passport that still carries an ESPR record. It must read, and the record must leave nothing in what is sealed. A mutant marking the record deny_unknown_fields fails that test.
  • Public-name and spec-reference checks are clean. The comparative-prose script, run on these files, flags one test comment ("Unclaimed, every method builds."). That comment is already on main and is not promotional.

🤖 Generated with Claude Code

The AI Service Passport's compliance record carried an ESPR digital product passport: a URL and a bare `registry_submitted: bool`. ESPR applies to "any physical goods that are placed on the market or put into service" (Regulation (EU) 2024/1781, Art. 1(2), read from the Official Journal text). This passport describes an inference *service*. So the record claimed a regime that cannot apply, through a flag nothing checked. The 2026-10-19 sweep raised this as item 21 ("Retire `EsprCompliance.registry_submitted`"). ## Changes - `EsprCompliance` and `ComplianceRecord.espr_dpp` are removed. The record's doc says why. It also says the hardware a service runs on is a physical good, so where a delegated act requires a product passport, that passport belongs to the hardware. - A passport written with the record still reads, and the member is dropped. A seal taken over the old shape covered that member too, so `sealed_hash` of the re-read passport does not reproduce it. The doc says to check such a seal against the original bytes. - `EsprReport`, a report shaped for physical products (repairability, recyclable materials), now says it is for a physical product rather than "product / model". Nothing outside the crate constructs or re-exports the removed type. ## Verification (build host) - `cargo test -p jouleclaw-compliance`: 85 pass. `cargo clippy -p jouleclaw-compliance --all-targets --no-deps -D warnings` is clean. - A new test feeds a passport that still carries an ESPR record. It must read, and the record must leave nothing in what is sealed. A mutant marking the record `deny_unknown_fields` fails that test. - Public-name and spec-reference checks are clean. The comparative-prose script, run on these files, flags one test comment ("Unclaimed, every method builds."). That comment is already on main and is not promotional. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jouleclaw-compliance: no ESPR record on an AI service passport
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 5s
jouleclaw public surface must stay documented / Public-surface audit (jouleclaw-rs) (pull_request) Successful in 1m1s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 46s
standards workspaces build + test / jouleclaw-rs (-nodebug, jouleclaw/jouleclaw-rs, -p jouleclaw-energy --features rapl,nvml, jouleclaw-rs, linux-arm64, -C target-feature=+fp16) (pull_request) Successful in 2m25s
standards workspaces build + test / mesh-rs (mesh/mesh-rs, -p mesh-engine-gguf -p mesh-openai --features mesh-engine-gguf/gguf,mesh-openai/server, mesh-rs, linux-arm64) (pull_request) Successful in 1m11s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 8m17s
standards workspaces build + test / jouledesk-rs (jouledesk/jouledesk-rs, jouledesk-rs, macos) (pull_request) Successful in 2m57s
58273f374e
The AI Service Passport's compliance record carried an ESPR digital product
passport with a bare `registry_submitted: bool`. ESPR applies to physical
goods placed on the market or put into service (Regulation (EU) 2024/1781,
Art. 1(2)); a passport here describes a service, so the record claimed a
regime that cannot apply, under a flag nothing checked. It is removed. The
hardware a service runs on is a physical good, and its passport, where a
delegated act requires one, is the hardware's.

A passport written with the record still reads, and the member is dropped.
A seal taken over the old shape does not re-derive from what is read; the
record's doc says to check it against the original bytes.

EsprReport, a product-shaped report, now says it is for a physical product
rather than "product / model".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Transaction-Science/open-standards!441
No description provided.