open-standards/jcp/jcp-rs
Repository files (latest commit first)
Filename Latest commit message Latest commit date
David Charlot eb424fb7e0
All checks were successful
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 3m1s
standards workspaces build + test / aac-rs (pull_request) Successful in 2m10s
standards workspaces build + test / joule-code-rs (pull_request) Successful in 54s
standards workspaces build + test / joulecontract-rs (pull_request) Successful in 40s
standards workspaces build + test / map-rs (pull_request) Successful in 37s
standards workspaces build + test / mesh-rs (pull_request) Successful in 37s
standards workspaces build + test / openpay (pull_request) Successful in 1m49s
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Successful in 3s
no-vanity-metrics / WAI public text names no comparison (pull_request) Successful in 3s
no-vanity-metrics / WAI public text names no company or product (pull_request) Successful in 3s
standards workspaces build + test / eoc-rs (pull_request) Successful in 1m50s
standards workspaces build + test / jcp-rs (pull_request) Successful in 1m20s
standards workspaces build + test / proof-rs (pull_request) Successful in 1m13s
standards workspaces build + test / sandbox-rs (pull_request) Successful in 2m10s
standards workspaces build + test / smart-byte-rs (pull_request) Successful in 3m39s
standards workspaces build + test / arl-rs (pull_request) Successful in 2m52s
standards workspaces build + test / joule-ui-rs (pull_request) Successful in 3m10s
standards workspaces build + test / jouledesk-rs (pull_request) Successful in 3m8s
standards workspaces build + test / joulehook-rs (pull_request) Successful in 3m4s
standards workspaces build + test / sense-rs (pull_request) Successful in 2m59s
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Successful in 5m0s
jcp: traceability becomes a precondition, not a report
§5 says JCP "makes it a precondition, not a report". Traceability was a report.
`Efficiency::seal` serialises and signs whatever it is handed, so an untraceable
outcome, a double-counted activity, a figure no part could have drawn, and a
frozen counter claiming hardware could all be sealed, signed, and afterwards
indistinguishable from a sound receipt. A signature over an unchecked claim is
the most durable way to publish it.

`OutcomeTrace::admit` is the gate. Three checks, in the order a verifier applies
them:

1. **It reconciles.** Unbound, duplicated or over-accounted is refused — the
   arithmetic closes before anything else matters.
2. **No window is physically impossible.** Against the part's envelope: above
   the burst ceiling, or below the floor a powered executing part must draw.
   The second is the shape a frozen counter takes, which is why §5 has a
   liveness rule at all — and it is now enforced at seal time rather than
   stated in prose.
3. **The grade is earned, not asserted.** A receipt may carry no stronger
   provenance than the floor across its parts.

Two deliberate asymmetries. Claiming *more* than the evidence supports is
**refused**, not silently downgraded: a caller asking to seal `HwShunt` over
`Estimator` evidence has a bug, and quietly writing the weaker grade would hide
it. Claiming *less* is permitted — under-claiming is always allowed, and the
receipt still records the floor.

`AdmittedTrace` cannot be constructed except by passing the gate, so a function
taking one knows the checks ran instead of hoping the caller remembered — the
same reason `sandbox-attest` hands back a sealed run rather than a boolean. It
carries the **derived** grade, so the sealer writes what the evidence supports
in place of what it was handed. Aggregation is not a step at which a grade
improves.

Additive throughout: `seal()` is untouched and `jouledesk`, which path-depends
on this crate from another workspace, is unaffected — checked, since
`--workspace` here never builds it.

Verified: 56 tests in `jcp-efficiency` (50 unit, 6 pack), including that a
frozen counter cannot be sealed as anything, and that supplying no envelope
admits on arithmetic alone rather than passing a physical check that never ran.

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-10-02 00:14:19 -04:00
..
conformance/v1 jcp: JCR-1 receipts bind their payload — jcp/2 + version dispatch (SPEC §8, C23) 2026-07-18 03:04:19 -04:00
crates jcp: traceability becomes a precondition, not a report 2026-10-02 00:14:19 -04:00
Cargo.lock jcp: publish the energy_trace/1 conformance pack, and replay it 2026-10-02 00:06:10 -04:00
Cargo.toml jcp-action-receipt: AR-1, the composition envelope 2026-08-28 08:44:07 -04:00