Two claim classes report on one energy figure without changing the receipt that seals it. `measurement` carries a bracket's values as integers with each bracket's liveness facts, the build and the power reader, and is accepted only against the receipt that carries its figure. `operating-point` records the requested, committed and delivered operating points and a prediction. The ratio, verdict and residual are derived by every reader, never stated. energy-measurement §6.2 gives the figure and the least declaration a report's integers support as exact integer formulas; wai-rs `energy_report` implements them with no floating-point arithmetic. §3.1 defines a live power reader: a rail must advance in two consecutive intervals, in at least five and in at least four of every five, over at least 300 ms. A frozen or held rail is refused rather than sealed under a hardware class. An unmetered `0` is never a figure of zero joules. A JWP object's figure, class and origin are bound into its Merkle leaf (`\x02`), and a labelled group payload signs the total's class, its coverage and the parent link. An object must sit at the position its inclusion proof walks, and group signatures follow the strict Ed25519 rule claims use. `jwp_delivery` and `energy_figure` implement this in wai-rs; joule-moq 0.2.0 builds and verifies both labelled forms. New corpus `jwp-conformance/` with `jwp_verify.py`, more claim vectors with the earlier ones pinned, and a CI job that runs claim_verify.py, differential.py and jwp_verify.py. Legacy receipts keep their bytes. External JWP implementations must adopt the `\x02` leaf and the labelled group payload before verifying objects or groups that use them. Co-Authored-By: Claude Opus 5.5 <[email protected]>
4554 lines
179 KiB
JSON
4554 lines
179 KiB
JSON
{
|
|
"about": "jwp-receipts sections 2.2-2.4.2, 3 and 3.3, and moq-streaming-format section 5: labelled leaves, labelled group receipts, the group total and the WAI_RECEIPT property. Every vector is synthetic: keys are Ed25519 from fixed 32-byte seeds (0x11 publisher, 0x22 meter, 0x33 relay) and attest nothing; envelopes, figures, origins and calibration references are invented. Expected outcomes are declared per vector in the generator, not copied from a verifier. Regenerate with `wai_jwp_vectors gen`.",
|
|
"vectors": [
|
|
{
|
|
"name": "leaf_legacy",
|
|
"about": "an object with no label: the legacy leaf over the content hash alone",
|
|
"procedure": "leaf",
|
|
"input": {
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
}
|
|
},
|
|
"expected": {
|
|
"leaf": "65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8"
|
|
}
|
|
},
|
|
{
|
|
"name": "leaf_labelled_unmetered",
|
|
"about": "tag 0 beside a zero figure: the object is explicitly unmetered and its origin is bound",
|
|
"procedure": "leaf",
|
|
"input": {
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
}
|
|
},
|
|
"expected": {
|
|
"leaf": "339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93"
|
|
}
|
|
},
|
|
{
|
|
"name": "leaf_labelled_on_chip_counter",
|
|
"about": "tag 4 with its declared uncertainty and filtering state",
|
|
"procedure": "leaf",
|
|
"input": {
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
}
|
|
},
|
|
"expected": {
|
|
"leaf": "eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760"
|
|
}
|
|
},
|
|
{
|
|
"name": "leaf_labelled_calibrated_instrument",
|
|
"about": "tag 5 with its declared uncertainty and length-prefixed calibration reference",
|
|
"procedure": "leaf",
|
|
"input": {
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
}
|
|
},
|
|
"expected": {
|
|
"leaf": "281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f"
|
|
}
|
|
},
|
|
{
|
|
"name": "leaf_labelled_model_based",
|
|
"about": "tag 2, followed by nothing",
|
|
"procedure": "leaf",
|
|
"input": {
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
}
|
|
},
|
|
"expected": {
|
|
"leaf": "3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_legacy_accept",
|
|
"about": "the mixed group in the legacy payload: it signs the total and no class",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "accept",
|
|
"link_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"signing_payload": "6d6f712d6a77703a67726f75702d7369676e010000000000000007000000000000000362ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d00000000000000050000000000000af000000014323032362d30392d33305431323a30303a30305a00000014323032362d30392d33305431323a30303a30315ad04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737000000156469643a6578616d706c653a7075626c6973686572"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_accept",
|
|
"about": "the labelled payload: the total's class (OnChipCounter, the weaker of a counter and an instrument, 14,000 ppm over 2 s), coverage Partial (one part is zero) and the parent link, chained to the mixed group",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"previous": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "accept",
|
|
"link_hash": "9c49baff6e40a5d24222e49679dad204f036e356b402449a4047e9bafcdaa7b7",
|
|
"signing_payload": "6d6f712d6a77703a67726f75702d7369676e02000000000000000700000000000000045a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29000000000000000300000000000007d000000014323032362d30392d33305431323a30303a30305a00000014323032362d30392d33305431323a30303a30315ad04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737000000156469643a6578616d706c653a7075626c697368657204000036b000000000001e84800001012e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_bad_signature",
|
|
"about": "one bit flipped in sig",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "82a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_signature_s_not_reduced",
|
|
"about": "S replaced by S + L: the verification equation still holds, and the strict rule of jwp-receipts 3.1 step 3 refuses S >= L",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877b86d5e3e148e78a89a9431b2d2ece60f39f3fe91cb6f3c25621991914f7e341a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_signer_key_identity",
|
|
"about": "the identity point as signer_pubkey",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "0100000000000000000000000000000000000000000000000000000000000000",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "bad_signer_key"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_missing_parent_field",
|
|
"about": "parent_receipt_hash absent rather than null",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "malformed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_signer_key_non_canonical",
|
|
"about": "signer_pubkey encodes y = p + 3, a point not of small order, in a form RFC 8032 section 5.1.3 refuses (y >= p): every point has one encoding",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "bad_signer_key"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_sign_version_unknown",
|
|
"about": "a labelled group whose sign_version is 3: a version this extension does not define is not the labelled form",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 3,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_sign_version_legacy",
|
|
"about": "a legacy group carrying sign_version 1 and no class: a sign_version other than 2 is refused, never read as the legacy form",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null,
|
|
"sign_version": 1
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_sign_version_string",
|
|
"about": "sign_version written as the string \"2\"",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": "2",
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_legacy_with_class_members",
|
|
"about": "a legacy group carrying energy_provenance: refused, never read as the legacy form",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null,
|
|
"energy_provenance": "ModelBased"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_class_unknown",
|
|
"about": "a labelled group naming a class energy-measurement section 2 does not define",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "Measured",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 1,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_class_tampered",
|
|
"about": "the total's declared uncertainty rewritten smaller after signing",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 1000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_coverage_tampered",
|
|
"about": "coverage rewritten from Partial to Whole after signing",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Whole"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_parent_tampered",
|
|
"about": "the parent link rewritten after signing: the labelled payload signs it",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "abababababababababababababababababababababababababababababababab",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_hwshunt",
|
|
"about": "a labelled group whose total is classed legacy HwShunt, correctly signed",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "d0105eeb8ff38f3a6e7cea7df72f56b2dd0759a8eb81af16137a3ff376816c77ccb350a530351c2d078b457068fdc00ccdf841a3b4ba8d4ba3fafd10ff25db06",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "HwShunt",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_class_beside_zero_total",
|
|
"about": "a class beside a zero total, correctly signed",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 0,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "330fc4b15dcc7e2f4e5e78dd8f2c078326368338de10635e90691febcd1f6255e3a99ce75673791dd21710c6ec40571eeeedbc67283e51c2649c8c4b11b8150b",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_unmetered_beside_figure",
|
|
"about": "the unmetered marker beside a non-zero total, correctly signed",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "1701d1d0e0de50a5547d64109f2345982a4ac1245d96ba1847450c863e1124e90965307897fb8a67afed74147d265e903152172ef02f885d7e898393da6ab50e",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_labelled_below_resolution",
|
|
"about": "a 2,000 uJ total declared at 144 ppm: below the resolution floor, correctly signed",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "25118a4d5c09142f8dba83eaff7274150066cb2c47a23b9deb530e7ebd17d6669099f62f3cc45fd92a5e1259e652a81efda1366d665628b5df6f45d94b184405",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 144,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "group_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_chain_break",
|
|
"about": "the parent named is not the previous group held",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"previous": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 2,
|
|
"root_hash": "280ae8f73e196ab28c8252779d47b29ce73ddac14f59c579a34ba75fadedefdb",
|
|
"leaf_count": 1,
|
|
"joules_total": 1,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "a8ae8b8bec0013ee9ae6ddf30fe017173ab8fef18b40e011b73ae2669db8e21571de3748997abbb840240d415070062747fbba328c81c3560bcda749a3e79004",
|
|
"parent_receipt_hash": null
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 3,
|
|
"reason": "chain_break"
|
|
}
|
|
},
|
|
{
|
|
"name": "group_parent_not_held",
|
|
"about": "a parent the verifier does not hold is fetched, never accepted silently",
|
|
"procedure": "group",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
}
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 3,
|
|
"reason": "parent_not_held"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_labelled_counter_accept",
|
|
"about": "a labelled leaf: the figure, the counter's class and evidence, and the origin are under the group signature",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_labelled_instrument_accept",
|
|
"about": "a labelled leaf carrying a calibrated instrument",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_legacy_accept",
|
|
"about": "a legacy leaf beside labelled ones in one group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_labelled_unmetered_accept",
|
|
"about": "tag 0 beside a zero figure",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_legacy_figure_unsigned_accept",
|
|
"about": "a legacy leaf binds neither the figure nor the origin: both rewritten, the object still verifies",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 9999,
|
|
"origin": "elsewhere.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_in_labelled_group_accept",
|
|
"about": "an object of the labelled group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
"expected": {
|
|
"outcome": "accept"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_envelope_mutated",
|
|
"about": "the envelope does not hash to content_hash",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206d75746174656420696e207472616e736974"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 4,
|
|
"reason": "content_hash_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_stripped",
|
|
"about": "the class members removed from a labelled object: its leaf is computed in the legacy form and misses the root",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_added",
|
|
"about": "a class added to a legacy object",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_class_restated",
|
|
"about": "a labelled object's declared uncertainty rewritten smaller",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 2000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_class_promoted",
|
|
"about": "a labelled object's ModelBased class rewritten to Estimator",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "Estimator"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_labelled_figure_altered",
|
|
"about": "a labelled object's figure rewritten",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 801,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_labelled_origin_altered",
|
|
"about": "a labelled object's origin rewritten: the labelled leaf binds it",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "elsewhere.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "inclusion_proof_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_hwshunt",
|
|
"about": "a leaf labelled legacy HwShunt in a correctly built group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"root_hash": "47833e1e1230c5866245b7be2e34d42ebd71a664e79c2ad09e01604c90f76403",
|
|
"leaf_count": 1,
|
|
"joules_total": 100,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "d742de392302d506d432832a67737be95b80173f48367cb6dfb13ad610e8ce4422c8fe1e7a149c56fdcbea182892002541973a047c4ad4059fa7624038ac8101",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"object_id": 0,
|
|
"content_hash": "3682aa6fa34ed352628956084b932046781813b030dcc7cf4f65b576d8a25479",
|
|
"joules_micro": 100,
|
|
"origin": "dc-40.example",
|
|
"merkle_proof": {
|
|
"siblings": [],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "HwShunt"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203430"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_beside_zero",
|
|
"about": "a class beside a zero figure in a correctly built group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"root_hash": "8db6b1cc8ca1811d1744f001c31d42898b7008f7ebe9cbad4b2520664c37eba1",
|
|
"leaf_count": 1,
|
|
"joules_total": 0,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "b18215496a534416305a39905b0d69b59644384ec457d23824dfbe89fc107ab6a400b12270189545e2622cc416cd573efcd81b1a34834a4fc7b020892b46d900",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"object_id": 0,
|
|
"content_hash": "f151bb3b9bccac787e44237d38993413a3f752010f4e1ab68d054e600a31f60a",
|
|
"joules_micro": 0,
|
|
"origin": "dc-41.example",
|
|
"merkle_proof": {
|
|
"siblings": [],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203431"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_unmetered_beside_figure",
|
|
"about": "tag 0 beside a non-zero figure in a correctly built group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"root_hash": "c4d92b7fa856e48a1f003414e188c2d93ee15bce57dcb0ef6ee261d7b5bf3343",
|
|
"leaf_count": 1,
|
|
"joules_total": 100,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "174b8238b1981527b4b5911fc4baeff31b7576d9e72ff7875a1ad9e1b45bcf153c09bb0aceddaf5b8acde42ac92589b36fbe6891b6d9eb382d5006f1bb417304",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"object_id": 0,
|
|
"content_hash": "faf10f31c03e74ea0522bb4abd60ff0c9d1f2276a17a5edcbaaa0765536855dd",
|
|
"joules_micro": 100,
|
|
"origin": "dc-42.example",
|
|
"merkle_proof": {
|
|
"siblings": [],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203432"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_below_resolution",
|
|
"about": "a 1 uJ figure declared at 288,675 ppm in a correctly built group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"root_hash": "de3bfe5c5df20f3a1f3f4cfca7b4fcb27577a8392bc89fcd8a1c6018bc28f699",
|
|
"leaf_count": 1,
|
|
"joules_total": 1,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "81a9198030c8fa8a757d8e16c9a0f7a26139a9d8b6e2905bfd1a8d730276e554d54018ca1ef995ecf5ad6c623196306ee142bdef84498d791d8716b72f79650b",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 9,
|
|
"object_id": 0,
|
|
"content_hash": "7551647b60b1df54a15e33b2febd2a26159320728df948ae106460f703260e19",
|
|
"joules_micro": 1,
|
|
"origin": "dc-43.example",
|
|
"merkle_proof": {
|
|
"siblings": [],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 288675,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203433"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_evidence_without_class",
|
|
"about": "a labelled object's class removed and its evidence kept: refused, never read as legacy",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_label_members_without_leaf_version",
|
|
"about": "class members on an object without leaf_version 2",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "object_label_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_at_another_index",
|
|
"about": "an object presented at its neighbour's index with its own proof, which still walks to the root",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "proof_position_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_past_the_end",
|
|
"about": "the last of three objects at index 3: the duplicated leaf's proof walks that position too",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 8,
|
|
"root_hash": "6f4275af51849b75868f80fdb5332a387f4b22a05e91b3ae1509a8fb99078d8b",
|
|
"leaf_count": 3,
|
|
"joules_total": 60,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "c931bde5e7895a44d5d993bdaa3551322b11dc03bddce30f83b137811af5a3767efc7c2df8c44c4ad5ddf54bd71a088a7880b4f0cf0a633df50bb3d3430c930e",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 8,
|
|
"object_id": 3,
|
|
"content_hash": "7ef012d887d192c988a1b85894ed54ebeae9885a250be7e93a9b7584189f5c77",
|
|
"joules_micro": 30,
|
|
"origin": "dc-32.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"412226eb14d389ee7cfd88e8a0d57ad3acb85c918d46d0be03c627a69ae4ba92",
|
|
"b99f24d41ef3c99a9c76eac34087f8ebf2f49084f94d58e7054a8aa6775b84ef"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203332"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "proof_position_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_id_not_its_index",
|
|
"about": "object_id other than leaf_index",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "proof_position_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_proof_short",
|
|
"about": "a proof one sibling short of the group's depth",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "proof_position_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_other_group",
|
|
"about": "an object of another group_id presented under this group",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 5,
|
|
"reason": "proof_position_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_under_unverified_group",
|
|
"about": "a valid proof against a group whose signature fails: no partial verification",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "82a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "object_unknown_member",
|
|
"about": "a member the object receipt does not define",
|
|
"procedure": "object",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"note": "x"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 4,
|
|
"reason": "malformed"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_legacy_unlabelled_part",
|
|
"about": "every object of the mixed group held; one non-zero figure is unlabelled, so the total reads as unlabelled",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unlabelled"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_legacy_every_part_labelled",
|
|
"about": "a legacy group whose every non-zero part is labelled: the weakest class, as a name only",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 5,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "e2941e025b5118c7123e90045046934288dc8588f4f26aa725fc1f36dccf80844c4056fcb066b52352753a868a923957de2fe5dfbb5aad0b069bc20907290c0f",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 5,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 5,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 5,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "weakest class=OnChipCounter coverage=Partial"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_legacy_all_zero",
|
|
"about": "every figure zero: unmetered, never zero joules",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"root_hash": "7df5acfc544e5effec6b8b86ac64737a17c878d13eb6939d10a9050a246598af",
|
|
"leaf_count": 2,
|
|
"joules_total": 0,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "d83aa322b9ab2d448d4d5877a16510c090c19b175f7b4491a87afb54d4f84f908a8876629c3256b1cac96e523d8d74bca69e1a815c4398ec55de6257e8740d05",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"object_id": 0,
|
|
"content_hash": "8d8357f0a07ac69eb96d9ceb376a011689316225f9b46f370f57073d3ec30c2f",
|
|
"joules_micro": 0,
|
|
"origin": "dc-50.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"74fc74301cf60db5362ab0d52ece299a0b32dc4c834e8e6f325829b515077daa"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203530"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"object_id": 1,
|
|
"content_hash": "01b4370a24aebd23a6f9424a669db17f3dacad26695e6eb198d1489c7e9954ce",
|
|
"joules_micro": 0,
|
|
"origin": "dc-51.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"972f079040dfe0ff3b45972f88dec15fe185ecccd3726f3e2fa9e3f485d75e24"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203531"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unmetered"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_legacy_object_missing",
|
|
"about": "one object not held: unlabelled",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unlabelled"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_legacy_figure_altered",
|
|
"about": "a legacy object's unsigned figure rewritten: each object verifies, and the sum does not match the signed total",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 501,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_total_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_duplicate_cannot_hide_weaker_class",
|
|
"about": "the counter's object presented again at the model's index: refused at its position, so the model's index is not held and the total reads unlabelled rather than as a counter's",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"root_hash": "8f6690b749a2282288561f90191b5ffe173a291cdabacab47e90b0ccf90670b1",
|
|
"leaf_count": 2,
|
|
"joules_total": 1000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "b71b79144c59da0ee14b133c5de4be6945900f0c64f9b9a96ce475c1c8b1fef754664ef654495cb54f573f7fd9312d5d6faaf565c63f918fc8f2df6fc5c7e700",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"object_id": 0,
|
|
"content_hash": "a20982ddf6fac7ca596c0cb44d14ffb74a2cb143d5937a9d2a46996296f2af20",
|
|
"joules_micro": 500,
|
|
"origin": "dc-60.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"555d9ed4c576f1b94a09780000a0055e7f07b0e1b79b6c3d1634f5a23bf3111b"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203630"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"object_id": 1,
|
|
"content_hash": "a20982ddf6fac7ca596c0cb44d14ffb74a2cb143d5937a9d2a46996296f2af20",
|
|
"joules_micro": 500,
|
|
"origin": "dc-60.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"555d9ed4c576f1b94a09780000a0055e7f07b0e1b79b6c3d1634f5a23bf3111b"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203630"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unlabelled"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_duplicate_both_held",
|
|
"about": "the same two objects held properly: the weaker class",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"root_hash": "8f6690b749a2282288561f90191b5ffe173a291cdabacab47e90b0ccf90670b1",
|
|
"leaf_count": 2,
|
|
"joules_total": 1000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "b71b79144c59da0ee14b133c5de4be6945900f0c64f9b9a96ce475c1c8b1fef754664ef654495cb54f573f7fd9312d5d6faaf565c63f918fc8f2df6fc5c7e700",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"object_id": 0,
|
|
"content_hash": "a20982ddf6fac7ca596c0cb44d14ffb74a2cb143d5937a9d2a46996296f2af20",
|
|
"joules_micro": 500,
|
|
"origin": "dc-60.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"555d9ed4c576f1b94a09780000a0055e7f07b0e1b79b6c3d1634f5a23bf3111b"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203630"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 7,
|
|
"object_id": 1,
|
|
"content_hash": "977f8380017633e746436852b1da3417bdc536c9359d4cffa912c47ada491292",
|
|
"joules_micro": 500,
|
|
"origin": "dc-61.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0d4aff60416317eb13aa7159cb04d87aa563b85d21933d3f068075a96a65c43f"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203631"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "weakest class=ModelBased coverage=Whole"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_checked",
|
|
"about": "the labelled group with every object held: its signed class is what they compose to",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=OnChipCounter relative_ppm=14000 window_us=2000000 coverage=Partial parts=checked"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_part_held",
|
|
"about": "the labelled group with one object held: its signed class stands, unchecked",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "cd89ea4722e276b4458604faaf7d92a2fb1286c69a62dde021dfaaed9d6fc2975150865e71dffa91526ca52e2844a74197dc87102a5f489dcf32dc3394fd6509",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=OnChipCounter relative_ppm=14000 window_us=2000000 coverage=Partial parts=unchecked"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_above_least",
|
|
"about": "a declaration above the least the parts compose to",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "a2ae6e3d881661d7d55e9e8695cb7ca95e92b1987deab551a125fa168b24954798576e2296f43b9794362a583e0bb6a4bdccd50b9be7d780c50bbb96b6923e03",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14001,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=OnChipCounter relative_ppm=14001 window_us=2000000 coverage=Partial parts=checked"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_below_least",
|
|
"about": "one ppm below the least the parts compose to",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "d06c7577f2a414b137d1f6cd630c1259b484287007c45bdb4a27280a1199ab1fb84d1bddb3d764ab222f322e830a6d21441da5ff4a2da23948302540a3f3fd01",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 13999,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_uncertainty_below_parts"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_window_not_the_longest",
|
|
"about": "the parts' longest window is 2 s; the group declares 1 s",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "72b1007ffda39cd30d1d8ad9842b497e98bdf2a545a61955ac8a5a6f1c35f71ee89d39966e0403e0a7eb878bca4f335e1874d4f2f468bf90d33815f2b1d4f20d",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_uncertainty_below_parts"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_class_stronger_than_parts",
|
|
"about": "the group classes its total as a calibrated instrument; one part is a counter",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "e644ab9f98db960d48403402eb722ca7306bb40e38d5592c5eda9886efe5a4df2e30c3304a215c36af7cb73113c9c2c8e569e174098acdd8be166d42867e1409",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_class_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_coverage_whole",
|
|
"about": "the group says Whole; one part is zero",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"root_hash": "5a8870c49a7ce232b1a4cd4bced3b0ee70b33535bcb8f9f563f617279ae9ce29",
|
|
"leaf_count": 3,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "f98b6324a04062fef7a583b8b2d46955e9e57ed75811ff4273a08d8fd0ced0a28da3eadd0abf2958e73724315c1823267f2c1eb9c21ffa165a2bafa28b6fb807",
|
|
"parent_receipt_hash": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5",
|
|
"sign_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 14000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_counter_filtering": "Unknown",
|
|
"energy_coverage": "Whole"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 0,
|
|
"content_hash": "805138ef87f855ed95d3b7b1d6af233880735f7aff37bdbce6a04beb70a4969e",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-10.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"04e8700113c4c7ef527c261a8982a555e8329745144326763b99ec062819b53a",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203130"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 1,
|
|
"content_hash": "3e9410265f8b97cbc296544a1625a08bc7c414a87d7f5d9c5ba6ca1772f7aaec",
|
|
"joules_micro": 800,
|
|
"origin": "dc-11.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"0ca346e40f6aeefac6f4c22f1668ac477fe3a1b0565123f50ec60e15fb314cbd",
|
|
"d507a5e609507a082972720179f44a746dc3b040f20da0ebd8d757b6a46d51d2"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203131"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 4,
|
|
"object_id": 2,
|
|
"content_hash": "8a70f1dbf741839ffecdf4da81833c9d138f5a424dfc3ce5d10688fb27343037",
|
|
"joules_micro": 0,
|
|
"origin": "dc-12.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"06f4ee1788b1df78dc2ef90c8c8b7e44b09a0a4f641c5ada33f7099dc1b730f0",
|
|
"e6ecd7356f041fa203ee887686493a43ac8673ac827f810b2470b4eeb7a61124"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203132"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_coverage_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_over_unlabelled_part",
|
|
"about": "a labelled group over parts one of which is unlabelled: it may carry no class",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "0f3d71f81f70d5ee41d4b9bd65b15d15a1cfb5e2bb9d423e2b5651f28d56d0c698be09e203bf4895b6282d2d64d4cb6ebeb45c5ac03b075a51ef35ae4c366f03",
|
|
"parent_receipt_hash": null,
|
|
"sign_version": 2,
|
|
"energy_provenance": "ModelBased",
|
|
"energy_coverage": "Partial"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_class_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_two_certificates",
|
|
"about": "two instruments under two certificates: a calibrated-instrument total needs one",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 8,
|
|
"root_hash": "5053281251b86aaea8347a93cd1d1b849098db941748928ba15cdf90227330d2",
|
|
"leaf_count": 2,
|
|
"joules_total": 2000,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "1fe44f495bf7193fe3d92cc8b93c66c605e4c3b28fb4b03ef488a440418fb5a29c1b40b919fd12ffc30a5a446fa67581d81658f18d84cea1066911cf80c2120d",
|
|
"parent_receipt_hash": null,
|
|
"sign_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 300,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/a",
|
|
"energy_coverage": "Whole"
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 8,
|
|
"object_id": 0,
|
|
"content_hash": "987e7495f9e0e3558ee23446144b639e2114754480adc0e346f3494bf84d0476",
|
|
"joules_micro": 1000,
|
|
"origin": "dc-70.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"32e4569cb617c4fa87be251f1c6f320728a4c69f4187e33d57a9392c26daa7de"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 300,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/a"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203730"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 8,
|
|
"object_id": 1,
|
|
"content_hash": "61a454e3fc7d36563f637a01b2f94a68161cf45d159acf5b481b0aded29511d6",
|
|
"joules_micro": 1000,
|
|
"origin": "dc-71.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"4990a4bf0801f29c12bc3d6f05b33230056baccbc3dc2056d367c6a5c182b18b"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 300,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/b"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203731"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "group_class_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_labelled_unmetered",
|
|
"about": "a labelled group of zero figures: the unmetered marker",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"root_hash": "7df5acfc544e5effec6b8b86ac64737a17c878d13eb6939d10a9050a246598af",
|
|
"leaf_count": 2,
|
|
"joules_total": 0,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "557d3223b187de0818a1fb265ab75fcff03835301ce98cadcdc1d8c50b0b3ac2058fea33c10277a11837c59a71e7d57b3eab4a16ff40c5caf4cdde199242f20c",
|
|
"parent_receipt_hash": null,
|
|
"sign_version": 2
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"object_id": 0,
|
|
"content_hash": "8d8357f0a07ac69eb96d9ceb376a011689316225f9b46f370f57073d3ec30c2f",
|
|
"joules_micro": 0,
|
|
"origin": "dc-50.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"74fc74301cf60db5362ab0d52ece299a0b32dc4c834e8e6f325829b515077daa"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203530"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 6,
|
|
"object_id": 1,
|
|
"content_hash": "01b4370a24aebd23a6f9424a669db17f3dacad26695e6eb198d1489c7e9954ce",
|
|
"joules_micro": 0,
|
|
"origin": "dc-51.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"972f079040dfe0ff3b45972f88dec15fe185ecccd3726f3e2fa9e3f485d75e24"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a656374203531"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unmetered"
|
|
}
|
|
},
|
|
{
|
|
"name": "total_group_does_not_verify",
|
|
"about": "the group's signature fails: no total is read",
|
|
"procedure": "total",
|
|
"input": {
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "82a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"delivered": [
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 1,
|
|
"content_hash": "a900d4803cc1c6cf8384e4238c3745bd6a1c3838a917b4c0a99fb77bd9ba7c1e",
|
|
"joules_micro": 800,
|
|
"origin": "dc-1.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"eeb5d0cf357a3bca9437eff04cf82570a6338652c842d9a20a7670f409a80760",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 1,
|
|
"leaf_index": 1
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "CalibratedInstrument",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 5000,
|
|
"window_us": 2000000
|
|
},
|
|
"energy_calibration_ref": "https://calibration.example.org/certificates/0001"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742031"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
{
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 4,
|
|
"content_hash": "d328f60c60ffa2d36830838218ee22a5e31cc674b816e63526ebd74c1fe66cdc",
|
|
"joules_micro": 300,
|
|
"origin": "dc-4.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"3049a2823be995b9ef123c82675c47e2df96a77b50be6a71d676246325d46a76",
|
|
"c2638ebd069f911759c78d18685c71ef0791acbde44f604fe298e40448cda8c2",
|
|
"5880f5698f5a1b6b230f65c481aa126e56f86e3a26e1a29d2edb79eae011a818"
|
|
],
|
|
"direction_bits": 4,
|
|
"leaf_index": 4
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "ModelBased"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742034"
|
|
}
|
|
]
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 2,
|
|
"reason": "signature_verify_failed"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_signed_by_leaf",
|
|
"about": "the property restates the labelled leaf: its class is signed",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"acquisition": "OnChipCounter",
|
|
"acquisition_evidence": "00004e2000000000000f424000",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=OnChipCounter by=d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_evidence_differs",
|
|
"about": "the property's declared uncertainty differs from the leaf's",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"acquisition": "OnChipCounter",
|
|
"acquisition_evidence": "0000271000000000000f424000",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_figure_differs",
|
|
"about": "the property's figure differs from the leaf's",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1201,
|
|
"acquisition": "OnChipCounter",
|
|
"acquisition_evidence": "00004e2000000000000f424000",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_names_another_group",
|
|
"about": "the property names another group receipt",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"acquisition": "OnChipCounter",
|
|
"acquisition_evidence": "00004e2000000000000f424000",
|
|
"group_receipt": "9c49baff6e40a5d24222e49679dad204f036e356b402449a4047e9bafcdaa7b7"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742030"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_class_beside_zero",
|
|
"about": "a class beside a zero figure",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_figure_without_class",
|
|
"about": "a non-zero figure with no class",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_invalid"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_legacy_leaf",
|
|
"about": "the object's leaf is legacy: the property's class is outside every signature, and the figure reads as unlabelled",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 2,
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"origin": "dc-2.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"339ea521d795afe4a4ec26042a2827fc9e8052b581fdbb1636b2315ee9953e93",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 2,
|
|
"leaf_index": 2
|
|
}
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742032"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unsigned"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_unmetered",
|
|
"about": "a zero figure and no class beside an object explicitly unmetered",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"acquisition": "",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 3,
|
|
"content_hash": "6e90ee47565591796c76e57de2b092695ba42d4e5dae585eb1503589e2b703d7",
|
|
"joules_micro": 0,
|
|
"origin": "dc-3.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"65dbe4a732e01bd69de3104e03d9822107318551714d055c8a7acc45313796e8",
|
|
"81b35ae562bccadd9651fe74f2669b85dd2cfe5c60fc050119ceb3277483af12",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 3,
|
|
"leaf_index": 3
|
|
},
|
|
"leaf_version": 2
|
|
},
|
|
"envelope": "57414931206a77702d636f6e666f726d616e6365206f626a6563742033"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unmetered"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_object_does_not_verify",
|
|
"about": "the envelope does not hash to the object's content hash: nothing is read",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"acquisition": "OnChipCounter",
|
|
"acquisition_evidence": "00004e2000000000000f424000",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"group": {
|
|
"kind": "group",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"root_hash": "62ceef6eff690aa495e0744b8f17dc530e69ed587f3de45fc3107992ee531f8d",
|
|
"leaf_count": 5,
|
|
"joules_total": 2800,
|
|
"group_start": "2026-09-30T12:00:00Z",
|
|
"group_end": "2026-09-30T12:00:01Z",
|
|
"signer_pubkey": "d04ab232742bb4ab3a1368bd4615e4e6d0224ab71a016baf8520a332c9778737",
|
|
"signer_id": "did:example:publisher",
|
|
"sig": "83a54aac08476e4af1ccdf8b87db5f1685fe20e428a1ab008e596749d08bf877cb9968e1f92a6650c4f7390ff4f207fb38f3fe91cb6f3c25621991914f7e340a",
|
|
"parent_receipt_hash": null
|
|
},
|
|
"object": {
|
|
"kind": "object",
|
|
"track_alias": 7,
|
|
"group_id": 3,
|
|
"object_id": 0,
|
|
"content_hash": "16d34babd9a027ad12b61e4d0aef877f560d87e8b4884a3a2b2d59cb54a4850d",
|
|
"joules_micro": 1200,
|
|
"origin": "dc-0.example",
|
|
"merkle_proof": {
|
|
"siblings": [
|
|
"281de97b5d3b5f872298b30812bf65f6a14d2cb223c135d17034e19e20988c9f",
|
|
"59057bc02626a58b09500bf398bc79d53501ce15bb752e14be51fc3f56de8480",
|
|
"9d64da32bb5321c05b43826384e2006364e5b144e765f5e7fd2da262f46d295d"
|
|
],
|
|
"direction_bits": 0,
|
|
"leaf_index": 0
|
|
},
|
|
"leaf_version": 2,
|
|
"energy_provenance": "OnChipCounter",
|
|
"energy_uncertainty": {
|
|
"relative_ppm": 20000,
|
|
"window_us": 1000000
|
|
},
|
|
"energy_counter_filtering": "Unknown"
|
|
},
|
|
"envelope": "57414931206d757461746564"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"step": 4,
|
|
"reason": "content_hash_mismatch"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_signed_by_energy_claim",
|
|
"about": "an energy claim about the legacy object restates the property's figure and class",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"claim": "{\"body\":{\"coverage\":\"Whole\",\"energy_calibration_ref\":null,\"energy_counter_filtering\":null,\"energy_provenance\":\"ModelBased\",\"energy_uncertainty\":null,\"grade\":\"derived\",\"joules_micro\":500,\"method\":\"https://transaction.science/wai/extensions/energy-measurement\",\"oer_receipt\":null,\"work_unit\":\"object\",\"work_units\":1},\"class\":\"energy\",\"issued_at\":\"2026-09-30T12:00:00Z\",\"kind\":\"claim\",\"parent_receipt_hash\":null,\"seq\":0,\"sig\":\"e1b90fc2ceb247ca2e5fcf52c8763421a77b468e451d5dc9bd27c4f71be5f78596426d63f3f1a176ffae2d65b2806da872c145360f05bcf0d7c9c46d755f7200\",\"signer_id\":\"did:example:meter\",\"signer_pubkey\":\"a09aa5f47a6759802ff955f8dc2d2a14a5c99d23be97f864127ff9383455a4f0\",\"subject\":\"3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4\",\"subject_type\":\"object\"}"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=ModelBased by=a09aa5f47a6759802ff955f8dc2d2a14a5c99d23be97f864127ff9383455a4f0"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_signed_by_third_party_claim",
|
|
"about": "an energy claim signed by a relay's own key restates the property: the class reads as signed by that key, not by the publisher",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"claim": "{\"body\":{\"coverage\":\"Whole\",\"energy_calibration_ref\":null,\"energy_counter_filtering\":null,\"energy_provenance\":\"ModelBased\",\"energy_uncertainty\":null,\"grade\":\"derived\",\"joules_micro\":500,\"method\":\"https://transaction.science/wai/extensions/energy-measurement\",\"oer_receipt\":null,\"work_unit\":\"object\",\"work_units\":1},\"class\":\"energy\",\"issued_at\":\"2026-09-30T12:00:00Z\",\"kind\":\"claim\",\"parent_receipt_hash\":null,\"seq\":0,\"sig\":\"b07414055b7bf57c16593e11e49b0b0d8422844d134c5c7db7f1bcc0057b57d3e9c394c78cb19214e9ef4e8b320154394d9bc2f1b0323448a850dd7cecdbe501\",\"signer_id\":\"did:example:relay\",\"signer_pubkey\":\"17cb79fb2b4120f2b1ec65e4198d6e08b28e813feb01e4a400839b85e18080ce\",\"subject\":\"3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4\",\"subject_type\":\"object\"}"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "signed class=ModelBased by=17cb79fb2b4120f2b1ec65e4198d6e08b28e813feb01e4a400839b85e18080ce"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_energy_claim_disagrees",
|
|
"about": "the energy claim states another figure",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"claim": "{\"body\":{\"coverage\":\"Whole\",\"energy_calibration_ref\":null,\"energy_counter_filtering\":null,\"energy_provenance\":\"ModelBased\",\"energy_uncertainty\":null,\"grade\":\"derived\",\"joules_micro\":499,\"method\":\"https://transaction.science/wai/extensions/energy-measurement\",\"oer_receipt\":null,\"work_unit\":\"object\",\"work_units\":1},\"class\":\"energy\",\"issued_at\":\"2026-09-30T12:00:00Z\",\"kind\":\"claim\",\"parent_receipt_hash\":null,\"seq\":0,\"sig\":\"882d3954eb578a1eab413c195bf760f9d7c43d7892cfdebb2eedbe9800adf42fb2913fba89618819d6b2a3e4c101801f826d85e56f289e2a0199b8dfab67b108\",\"signer_id\":\"did:example:meter\",\"signer_pubkey\":\"a09aa5f47a6759802ff955f8dc2d2a14a5c99d23be97f864127ff9383455a4f0\",\"subject\":\"3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4\",\"subject_type\":\"object\"}"
|
|
},
|
|
"expected": {
|
|
"outcome": "reject",
|
|
"reason": "property_disagrees"
|
|
}
|
|
},
|
|
{
|
|
"name": "property_energy_claim_altered",
|
|
"about": "an energy claim altered after signing is no signed statement: the property reads as unsigned",
|
|
"procedure": "property",
|
|
"input": {
|
|
"property": {
|
|
"content_hash": "3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4",
|
|
"joules_micro": 500,
|
|
"acquisition": "ModelBased",
|
|
"acquisition_evidence": "",
|
|
"group_receipt": "2e58ff648d74e0ad023c4efe65f69fba6103655f0be027c8cba5f4767548fea5"
|
|
},
|
|
"claim": "{\"body\":{\"coverage\":\"Whole\",\"energy_calibration_ref\":null,\"energy_counter_filtering\":null,\"energy_provenance\":\"ModelBased\",\"energy_uncertainty\":null,\"grade\":\"derived\",\"joules_micro\":501,\"method\":\"https://transaction.science/wai/extensions/energy-measurement\",\"oer_receipt\":null,\"work_unit\":\"object\",\"work_units\":1},\"class\":\"energy\",\"issued_at\":\"2026-09-30T12:00:00Z\",\"kind\":\"claim\",\"parent_receipt_hash\":null,\"seq\":0,\"sig\":\"e1b90fc2ceb247ca2e5fcf52c8763421a77b468e451d5dc9bd27c4f71be5f78596426d63f3f1a176ffae2d65b2806da872c145360f05bcf0d7c9c46d755f7200\",\"signer_id\":\"did:example:meter\",\"signer_pubkey\":\"a09aa5f47a6759802ff955f8dc2d2a14a5c99d23be97f864127ff9383455a4f0\",\"subject\":\"3cb85c360e2af8f1a586389d13f0415ca90ea8ab6fa5fcdf1b3204a2dd1a44c4\",\"subject_type\":\"object\"}"
|
|
},
|
|
"expected": {
|
|
"outcome": "read",
|
|
"reading": "unsigned"
|
|
}
|
|
}
|
|
]
|
|
}
|