A Metered tag whose meter attestation did not bind was always demoted to ModelBased, but ModelBased is defined (SPEC §4.2) as a figure anchored to a metered baseline, with that anchor sealed. A receipt with no meter and no anchor was therefore certified ModelBased on evidence it did not carry. An unbound reading is no reading: the class now falls to ModelBased only where the metered-baseline anchor is sealed, else to Unaccounted (with the `unaccounted` demotion), on the issue side and on the sealed-evidence side alike; an unresolved anchor still demotes a ModelBased figure to Unaccounted after that. SPEC §4.2 and the §15 demotion table say so. The metered_unattested negative vector, regenerated by gen_vectors, now composes to ⟨JR-3 · Unaccounted · certified⟩ with demotions metered_unattested and unaccounted; the other 21 vectors are byte-identical. A unit test pins both branches (no anchor → Unaccounted; anchor → ModelBased). Co-Authored-By: Claude Opus 5.5 <[email protected]>
318 lines
No EOL
12 KiB
JSON
318 lines
No EOL
12 KiB
JSON
{
|
|
"description": "Metered tag with no meter attestation and no metered-baseline anchor: an unbound reading is no reading, so the Energy class demotes to Unaccounted; the Metered claim is illegal.",
|
|
"expected_composed": {
|
|
"claim": "⟨JR-3 · Unaccounted · certified⟩ — demotions: metered_unattested; unaccounted",
|
|
"demotions": [
|
|
"metered_unattested",
|
|
"unaccounted"
|
|
],
|
|
"max_profile": {
|
|
"energy": "Unaccounted",
|
|
"governance": "certified",
|
|
"rigor": "JR-3"
|
|
},
|
|
"permits_claimed_profile": false
|
|
},
|
|
"receipt": {
|
|
"claimed_profile": {
|
|
"energy": "Metered",
|
|
"governance": "certified",
|
|
"rigor": "JR-3"
|
|
},
|
|
"contract": "sha2-256:76dc6fd370236adb2b7c31fb63a6e666f929aceecadd6be83aa8d75fb4891780",
|
|
"discharge": [
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "pre",
|
|
"text": "all orders signed"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:3cc32cec487dce142a356163d3e6d99998a96cdf35411340e80c31804b9b9bd5",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-A1",
|
|
"verifier_keys": [
|
|
"sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "pre",
|
|
"text": "sum(debits) == sum(credits)"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:ab1aeaa87644e79faef08d9428a87c6095c419a8f44032e85f41215855d48c61",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-B2",
|
|
"verifier_keys": [
|
|
"sha2-256:640b3b64b111999b35c821031a2f467af4f1f0c6b33a071761f963c999a892db"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "post",
|
|
"text": "ledger balanced"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:035cf8cf094f961c26d763d399c3e8e7529225b7ebe33b24e51d7fede0df5199",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-A1",
|
|
"verifier_keys": [
|
|
"sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "post",
|
|
"text": "each order has a settlement id"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:422780905a0dedb73cfcef39e89c9d75932682c5db44c0c11975ad434db488b4",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-B2",
|
|
"verifier_keys": [
|
|
"sha2-256:640b3b64b111999b35c821031a2f467af4f1f0c6b33a071761f963c999a892db"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "inv",
|
|
"text": "no order in two settlements"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:291ad7f932cd556b879e0d97e829a9d54af6246b5041b71739ef7e2c3f4563a6",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-A1",
|
|
"verifier_keys": [
|
|
"sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": null,
|
|
"obligation": {
|
|
"kind": "inv",
|
|
"text": "no negative balance at any step"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:589039b6a5c6a4ecb1a860402d9ffe7bc602b12561c120d7d9ecd60aff7a12c1",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-B2",
|
|
"verifier_keys": [
|
|
"sha2-256:640b3b64b111999b35c821031a2f467af4f1f0c6b33a071761f963c999a892db"
|
|
]
|
|
},
|
|
{
|
|
"engagement": {
|
|
"compensated_by": "did:web:relying-bank.example",
|
|
"selected_by": "did:web:relying-bank.example"
|
|
},
|
|
"mode": "observed",
|
|
"obligation": {
|
|
"kind": "frame",
|
|
"text": "frame: ledger table+settlement index"
|
|
},
|
|
"qualification": {
|
|
"attestation": "sha2-256:d927ef51dd5dbd9b3632c09b7ecabee59e1fac0707001a57c88bb905a1291f40",
|
|
"root": "human-attested",
|
|
"signer_key": "sha2-256:f11456540629ae942ff3f9544d0f3f2f3355ef1e80326c1310281e0d9ab13ac0",
|
|
"valid_until": 20000,
|
|
"validated_at": 10000
|
|
},
|
|
"re_discharged_by": null,
|
|
"recourse": "ISAE3000",
|
|
"result": "closed",
|
|
"tier": "sha2-256:26b92e9480524489d4294a485cdd86591d5defdb357254ef592db1dd60337963",
|
|
"tier_class": "deterministic",
|
|
"tier_operator_keys": [
|
|
"sha2-256:32b9a4cebd230a5cb6c495576f3e4afb5a32bea5f7c01fd1b4dcf0001f282793"
|
|
],
|
|
"verifier_entity": "vLEI:5493-A1",
|
|
"verifier_keys": [
|
|
"sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
]
|
|
}
|
|
],
|
|
"enb_ref": "sha2-256:812e1165c85ae3ff795ec46b4b9cdf59ad41409cb4fbad6feebe8a7c438f0d37",
|
|
"energy_anchor": null,
|
|
"evidence": "sha2-256:7238b33dd4d4854239c74c73579ed52d31f53adc4dc0e8b6110ac54ff248b09c",
|
|
"execution": [
|
|
"sha2-256:3cc32cec487dce142a356163d3e6d99998a96cdf35411340e80c31804b9b9bd5",
|
|
"sha2-256:ab1aeaa87644e79faef08d9428a87c6095c419a8f44032e85f41215855d48c61",
|
|
"sha2-256:035cf8cf094f961c26d763d399c3e8e7529225b7ebe33b24e51d7fede0df5199",
|
|
"sha2-256:422780905a0dedb73cfcef39e89c9d75932682c5db44c0c11975ad434db488b4",
|
|
"sha2-256:291ad7f932cd556b879e0d97e829a9d54af6246b5041b71739ef7e2c3f4563a6",
|
|
"sha2-256:589039b6a5c6a4ecb1a860402d9ffe7bc602b12561c120d7d9ecd60aff7a12c1",
|
|
"sha2-256:26b92e9480524489d4294a485cdd86591d5defdb357254ef592db1dd60337963"
|
|
],
|
|
"generator": {
|
|
"attestation": "sha2-256:ea72cbd4d841ebab39268fbbb8b9af277da552ce798ae29765fd97e4ca524028",
|
|
"attestation_signer": "sha2-256:3d916499376bd23e7c47ad52a197ebc7a43cb0039ca22d8f89babe024e70604e",
|
|
"entity": "vLEI:5493-PROD",
|
|
"human_principals": [
|
|
"did:web:eng-a.example"
|
|
],
|
|
"key_set": [
|
|
"sha2-256:92a910aad61aeee1ce387329cf663fa0914740118188f86ccf7cf1746b817405",
|
|
"sha2-256:d1990f97a1f4fe7b8e86da8c03c9dd3f7d536c14aa4a6f9eedab07f34cd961b0"
|
|
],
|
|
"loop_governance": {
|
|
"contract": "sha2-256:5b0490189b4732e08aebe0bb63c1bc05fd115882c7213206413e01de7646a8f9",
|
|
"discharged_by": [
|
|
"sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
],
|
|
"root": "human-attested"
|
|
},
|
|
"system": "joulecode-agent",
|
|
"version_digest": "sha2-256:a2d42c4aa884e21216cbb8da4c7ba2fcf9b6033b2331666e666145c24caf7a38"
|
|
},
|
|
"grid_mix": null,
|
|
"joules_allowed": 3.0,
|
|
"joules_spent": 2.1,
|
|
"meter": null,
|
|
"provenance": "Metered",
|
|
"receipt_signer": "sha2-256:d1990f97a1f4fe7b8e86da8c03c9dd3f7d536c14aa4a6f9eedab07f34cd961b0",
|
|
"register_pin": "sha2-256:68f5ca24886c168ce4c00d5cbf75987b3a76f35cd1624bab599fc201dde059fb",
|
|
"transition": "sha2-256:25e103f382c2bb472dbba05ba0ed7c46cfde15284a5c3f31e05cefc8b7d46b70"
|
|
},
|
|
"sealed_context": {
|
|
"evidence_bundle_address": "sha2-256:7238b33dd4d4854239c74c73579ed52d31f53adc4dc0e8b6110ac54ff248b09c",
|
|
"interval": {
|
|
"receipt": {
|
|
"at": 160,
|
|
"authority": "did:web:tsa-1.example",
|
|
"independent": true
|
|
},
|
|
"start": {
|
|
"at": 100,
|
|
"authority": "did:web:tsa-1.example",
|
|
"independent": true
|
|
}
|
|
},
|
|
"key_log": {
|
|
"events": [
|
|
{
|
|
"Added": {
|
|
"at": 0,
|
|
"key": "sha2-256:0efbbcb3197f91e4dbc2e9484080952b1139d4e6bab640bc24db13e7f8a2125a"
|
|
}
|
|
},
|
|
{
|
|
"Added": {
|
|
"at": 0,
|
|
"key": "sha2-256:640b3b64b111999b35c821031a2f467af4f1f0c6b33a071761f963c999a892db"
|
|
}
|
|
},
|
|
{
|
|
"Added": {
|
|
"at": 0,
|
|
"key": "sha2-256:9fb646f44ce13ba86b62e1be7bbc6a6a6ef5e589f6a61fad337e2b86889d8087"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"max_anchor_latency_secs": 3600,
|
|
"note": "The bundle's five members (qualification, meter, and generator attestations; the CONTRACT's ceiling-derivation attestation; the signed EnB object) ship as bytes in evidence-bundle.json. Bundle address = sha2-256 of the LF-joined, lexicographically sorted member address strings (SPEC §5.1.3).",
|
|
"open_breach_unamended": false,
|
|
"transition_end_at": 150
|
|
}
|
|
} |