docs: pin verified energy successor boundary

#2
Files changed (2) hide show
  1. DEPRECATED.md +39 -13
  2. README.md +21 -2
DEPRECATED.md CHANGED
@@ -1,19 +1,20 @@
1
  # DEPRECATED — this repo has been consolidated into `szl-energy-attest`
2
 
3
- **Status: DEPRECATED (Wave D consolidation). Canonical home: [`szl-holdings/szl-energy-attest`](https://github.com/szl-holdings/szl-energy-attest).**
 
4
 
5
  `governed-inference-meter` was a duplicate SZL *energy* micro-repo. To keep ONE
6
  canonical energy package, its **unique** code has been **copied (folded) into
7
  the canonical `szl-energy-attest` repo** under the subpackage
8
- [`szl_energy_attest.inference_meter`](https://github.com/szl-holdings/szl-energy-attest/tree/main/szl_energy_attest/inference_meter).
9
 
10
  Nothing here was deleted. This repository is **kept intact and reversible** —
11
  **archiving it is a later founder step**, not part of this consolidation.
12
 
13
  ## What moved (and where)
14
 
15
- Only the code the canonical package did **not** already have was folded in — the
16
- **live inference metering** surface:
17
 
18
  | This repo (`governed_inference_meter`) | Canonical home (`szl_energy_attest.inference_meter`) |
19
  | --- | --- |
@@ -21,18 +22,43 @@ Only the code the canonical package did **not** already have was folded in — t
21
  | Advisory policy gate: `PolicyResult`, `allow_all`, `deny_all`, `evaluate`, `ALLOW`/`DENY` (`_policy.py`) | same names under `szl_energy_attest.inference_meter` |
22
  | `ReceiptChain` + `meter()` / `metered()` wrappers with tokens-per-joule (`_receipt.py`, `__init__.py`) | `szl_energy_attest.inference_meter.ReceiptChain` / `meter` / `metered` |
23
  | `selfcheck`, `receipt_head/count/tail/verify` | same names under `szl_energy_attest.inference_meter` |
24
- | `test_meter.py` | `szl-energy-attest/tests/test_inference_meter.py` |
 
 
25
 
26
- ### What was NOT re-copied (deduped)
27
 
28
- The canonical `szl-energy-attest` package **already provided** these, so the
29
- duplicates here were intentionally *not* copied (to avoid drift):
 
30
 
31
- - the attestable, hash-chained energy **receipt schema** + offline verifier,
32
- - the **in-toto / SLSA-shaped** attestation + EU-AI-Act / NIST-AI-RMF mapping
33
- (`_attest.py`),
34
- - the canonical **PCGI szl-receipt** binding / spine fold (`_spine.py`),
35
- - the DSSE/HMAC **signing** layer.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  ## Migration
38
 
 
1
  # DEPRECATED — this repo has been consolidated into `szl-energy-attest`
2
 
3
+ **Status: DEPRECATED (Wave D consolidation). Canonical home:**
4
+ [`szl-holdings/szl-energy-attest@4d8d105c`](https://github.com/szl-holdings/szl-energy-attest/tree/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043).
5
 
6
  `governed-inference-meter` was a duplicate SZL *energy* micro-repo. To keep ONE
7
  canonical energy package, its **unique** code has been **copied (folded) into
8
  the canonical `szl-energy-attest` repo** under the subpackage
9
+ [`szl_energy_attest.inference_meter`](https://github.com/szl-holdings/szl-energy-attest/tree/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/szl_energy_attest/inference_meter).
10
 
11
  Nothing here was deleted. This repository is **kept intact and reversible** —
12
  **archiving it is a later founder step**, not part of this consolidation.
13
 
14
  ## What moved (and where)
15
 
16
+ The fold contains the **live inference metering** surface plus the legacy
17
+ meter-specific compatibility adapters required to preserve public imports:
18
 
19
  | This repo (`governed_inference_meter`) | Canonical home (`szl_energy_attest.inference_meter`) |
20
  | --- | --- |
 
22
  | Advisory policy gate: `PolicyResult`, `allow_all`, `deny_all`, `evaluate`, `ALLOW`/`DENY` (`_policy.py`) | same names under `szl_energy_attest.inference_meter` |
23
  | `ReceiptChain` + `meter()` / `metered()` wrappers with tokens-per-joule (`_receipt.py`, `__init__.py`) | `szl_energy_attest.inference_meter.ReceiptChain` / `meter` / `metered` |
24
  | `selfcheck`, `receipt_head/count/tail/verify` | same names under `szl_energy_attest.inference_meter` |
25
+ | Meter-specific in-toto/compliance adapter (`_attest.py`) | `attest`, `to_intoto_statement`, `compliance_evidence`, `verify_statement` |
26
+ | Meter-specific PCGI spine/signing-facing adapter (`_spine.py`) | `emit_szl_receipt`, `from_meter_receipt`, `meter_szl_receipt`, receipt/statement verifiers |
27
+ | `test_meter.py` plus migration invariants | [`test_inference_meter.py`](https://github.com/szl-holdings/szl-energy-attest/blob/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/tests/test_inference_meter.py) and [`test_inference_meter_migration.py`](https://github.com/szl-holdings/szl-energy-attest/blob/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/tests/test_inference_meter_migration.py) |
28
 
29
+ ### Compatibility surfaces retained with provenance
30
 
31
+ The canonical `szl-energy-attest` root package already has its own energy-receipt,
32
+ attestation, PCGI, and signing surfaces. Those are a distinct receipt schema, not
33
+ a drop-in replacement for every legacy meter import. For continuity:
34
 
35
+ - the meter-specific `_attest.py` adapter is retained with only its package name
36
+ and install guidance rewritten to the canonical successor;
37
+ - the meter-specific `_spine.py` adapter is retained with only the package import
38
+ and install guidance rewritten to the canonical successor name;
39
+ - the hardened `_receipt.py` chain verifier is retained byte-for-byte;
40
+ - signing and statement construction continue to delegate lazily to the shared
41
+ `szl-receipt` library rather than forking cryptography.
42
+
43
+ The successor's immutable
44
+ [`MIGRATION_PROVENANCE.json`](https://github.com/szl-holdings/szl-energy-attest/blob/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/MIGRATION_PROVENANCE.json)
45
+ records both legacy and successor SHA-256 digests and the bounded `_attest.py` /
46
+ `_spine.py` transformations. This preserves import and signing-facing continuity
47
+ without claiming that the legacy and root successor receipt schemas are equal,
48
+ that a key is configured, or that any receipt is signed.
49
+
50
+ ## Deprecation boundary
51
+
52
+ - New integrations use `szl_energy_attest.inference_meter` at the verified
53
+ successor revision above.
54
+ - This GitHub repository and its Hugging Face kernel remain readable as
55
+ provenance and rollback surfaces; deprecation is not deletion.
56
+ - No new capability, install, schema-parity, measured-energy, or signature claim
57
+ is made by this pointer correction.
58
+ - Archiving is **not authorized by this document**. It remains an explicit owner
59
+ decision after the GitHub and Hugging Face pointers are live, active inbound
60
+ references are repaired or classified, CI remains green, and rollback evidence
61
+ is retained.
62
 
63
  ## Migration
64
 
README.md CHANGED
@@ -20,9 +20,28 @@ tags:
20
 
21
  > # ⚠️ DEPRECATED — consolidated into [`szl-energy-attest`](https://github.com/szl-holdings/szl-energy-attest)
22
  >
23
- > **This repo is DEPRECATED (Wave D consolidation).** Its unique code (the **live inference metering** path — power-integral / trapezoidal energy fallback, `capability_report`, the advisory policy gate, the `meter()` / `metered()` wrappers, the tokens-per-joule `ReceiptChain`, and `selfcheck`) has been **folded into the canonical energy package** [`szl-holdings/szl-energy-attest`](https://github.com/szl-holdings/szl-energy-attest) under the `szl_energy_attest.inference_meter` subpackage. **Canonical: `szl-energy-attest`.**
 
 
 
 
 
24
  >
25
- > The attestation / spine / signing code was **not** copied because `szl-energy-attest` already provides it (deduped). Nothing was deleted; this repo is kept intact and reversible. **Archiving is a later founder step.** See [`DEPRECATED.md`](./DEPRECATED.md) for the migration guide. Λ remains **Conjecture 1 (advisory, uniqueness OPEN)** — never upgraded to proven.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
  **Energy-metered, governed inference receipts.** A lightweight, dependency-light
28
  Python utility (and Hugging Face *universal* kernel) that wraps any inference
 
20
 
21
  > # ⚠️ DEPRECATED — consolidated into [`szl-energy-attest`](https://github.com/szl-holdings/szl-energy-attest)
22
  >
23
+ > **This repository is deprecated.** Its live inference meter and meter-specific
24
+ > attestation, hardened receipt-chain, PCGI spine, and signing-facing compatibility
25
+ > APIs were folded into the canonical
26
+ > [`szl_energy_attest.inference_meter`](https://github.com/szl-holdings/szl-energy-attest/tree/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/szl_energy_attest/inference_meter)
27
+ > package in verified merge
28
+ > [`4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043`](https://github.com/szl-holdings/szl-energy-attest/commit/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043).
29
  >
30
+ > Three legacy modules (`_energy.py`, `_policy.py`, `_receipt.py`) are exact
31
+ > hash-preserving copies; `_attest.py` and `_spine.py` carry only bounded
32
+ > package/import and install-guidance rewrites. The immutable
33
+ > [`MIGRATION_PROVENANCE.json`](https://github.com/szl-holdings/szl-energy-attest/blob/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/MIGRATION_PROVENANCE.json)
34
+ > records every source and destination digest, and the
35
+ > [migration regressions](https://github.com/szl-holdings/szl-energy-attest/blob/4d8d105c3d5ea67b5eb25826e8a2a35ca35f4043/tests/test_inference_meter_migration.py)
36
+ > verify that boundary.
37
+ >
38
+ > **Boundary:** the successor's root energy receipt remains a different schema;
39
+ > compatibility does not imply schema equality, a configured signing key, or a
40
+ > signed receipt. This legacy repository and its Hugging Face artifact remain
41
+ > readable for provenance and rollback, but are not the target for new
42
+ > integrations. Archiving requires a separate owner decision after pointer and
43
+ > inbound-link gates are evidenced. See [`DEPRECATED.md`](./DEPRECATED.md).
44
+ > Λ remains **Conjecture 1 (advisory, uniqueness OPEN)** — never upgraded to proven.
45
 
46
  **Energy-metered, governed inference receipts.** A lightweight, dependency-light
47
  Python utility (and Hugging Face *universal* kernel) that wraps any inference