diff --git a/.github/workflows/wai-conformance.yml b/.github/workflows/wai-conformance.yml index ac5e7de3d..9e4a6cc1a 100644 --- a/.github/workflows/wai-conformance.yml +++ b/.github/workflows/wai-conformance.yml @@ -95,6 +95,13 @@ on: # reports, energy_steering_verify.py reads that table, and the registry's wire # identifiers test reads its sections. - 'wai/extensions/energy-steering.md' + # tests/stream_energy.rs requires this extension's §7 to list the codes the reference + # reports, stream_energy_verify.py reads that table, and the registry's wire + # identifiers test reads its sections. + - 'wai/extensions/stream-energy.md' + # codecs::energy_budget's tests recompute each reference budget from the raw spans + # recorded here. + - 'docs/research/wai-sink-energy.jsonl' # tests/live_moderation.rs requires this extension's §10 to list the codes the reference # reports, live_moderation_verify.py reads its §9.5, §9.6 and §10 tables, and the # registry's wire identifiers test reads its sections. @@ -569,7 +576,10 @@ jobs: # OER's second implementation is portable C, not Rust. Rebuild it from source and # require its output to match the pinned corpus byte for byte: the kernel is # deterministic, and wai_oer_vectors above has already verified the pinned copy, - # so equality carries that verification to what the source produces today. + # so equality carries that verification to what the source produces today. The + # modelled corpus is the kernel graded from a meter that is not a measurement + # (model_estimated, projected); the harness also requires the kernel to refuse + # signing such a figure as measured, so a regression there fails the run. # `cc` with the Makefile's flags, so the step needs no `make` on the runner. - name: OER C kernel reproduces its pinned receipts (unix) if: matrix.os != 'windows' @@ -581,6 +591,8 @@ jobs: -o "$RUNNER_TEMP/settle_host" host_main.c settle.c sha256.c tweetnacl.c -lm "$RUNNER_TEMP/settle_host" "$RUNNER_TEMP/firmware_vectors.json" 400 cmp "$RUNNER_TEMP/firmware_vectors.json" ../firmware_vectors.json + "$RUNNER_TEMP/settle_host" "$RUNNER_TEMP/firmware_vectors_modelled.json" 400 modelled + cmp "$RUNNER_TEMP/firmware_vectors_modelled.json" ../firmware_vectors_modelled.json - name: Every cargo-class corpus reproduces its frozen hashes (Windows) if: matrix.os == 'windows' shell: pwsh @@ -1105,6 +1117,45 @@ jobs: (cd wai-rs && cargo test --no-default-features --features energy_steering --lib energy_steering::) (cd wai-rs && cargo test --no-default-features --features energy_steering --test energy_steering) python3 -I live-conformance/energy_steering_verify.py live-conformance/steering + # wai.stream.energy (extensions/stream-energy.md): the reference module's unit tests + # (a record round-trips and its signature covers every byte, the legacy class refused + # before anything else, a hardware decode on the media engine a lower bound, the + # display hop always an estimate with its basis, a sum read at its weakest class), the + # sink profiles' tests (energy-measurement §9: the span figure and its declaration + # follow the formula, each refusal has its condition, each profile admits its classes + # and bounds its fabrics) and the reference budgets' tests (§9.5: every budget + # recomputes from its published spans and parameter set), then tests/stream_energy.rs + # (the committed corpus regenerates byte for byte from its fixed seeds, wai-rs gives + # every vector its stated outcome, every reason of §7 refuses a vector, and §7 lists + # exactly the reference's codes); then the corpus's second implementation, + # stream_energy_verify.py, written from the extension's text and sharing no code with + # wai-rs, which checks every signature, recomputes shares, totals and sums at their + # weakest class, and requires every mutated copy of the corpus to fail; standard + # library only, run isolated (-I). + - name: stream energy · wai-rs and stream_energy_verify.py + working-directory: wai + shell: bash + run: | + set -euo pipefail + (cd wai-rs && cargo test --no-default-features --features stream_energy --lib -- stream_energy:: sink_energy:: codecs::energy_budget::) + (cd wai-rs && cargo test --no-default-features --features stream_energy --test stream_energy) + python3 -I energy-conformance/stream_energy_verify.py energy-conformance/stream + # Display capability (extensions/capability-constraints.md §6): the reference module's + # unit tests (declarations checked by §6.2, the acuity bound at the arcminute + # distance, each dimension its own bit, the first rendition within selected by §6.3) + # and tests/display_caps.rs (the committed corpus regenerates byte + # for byte, every vector and refusal gets its stated outcome, and the cases §6.5 names + # are in it); then display_verify.py, written from the extension's text and sharing no + # code with wai-rs, which recomputes every outcome and requires every mutated copy of + # the corpus to fail; standard library only, run isolated (-I). + - name: display capability · wai-rs and display_verify.py + working-directory: wai + shell: bash + run: | + set -euo pipefail + (cd wai-rs && cargo test --no-default-features --lib display_caps::) + (cd wai-rs && cargo test --no-default-features --test display_caps) + python3 -I constraints-conformance/display_verify.py constraints-conformance/display # wai.live.moderation (extensions/live-moderation.md): the reference module's unit tests # (policies, statements and notices round-trip and their rules refuse, the export's # strings and dates, the content types, the states that show an item) and diff --git a/docs/research/wai-sink-energy.jsonl b/docs/research/wai-sink-energy.jsonl new file mode 100644 index 000000000..b2152c813 --- /dev/null +++ b/docs/research/wai-sink-energy.jsonl @@ -0,0 +1,39 @@ +{"case":"int_motion/video_real","capability":"wai.video.int_motion","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"efce5ada256cb3443a673ee0c10aa4e0a8ce4a372102cd918627e5eec746880f","input_bytes":29428,"output_sha256":"cbf8a7bdba15fb39811a5fcfa6bbd19ff6767a2e715fc1914b3619f2c9f43af3","work":{"units":73728,"unit":"pixels"},"completions_per_span":408,"spans":{"energies_nj":[3941555156,3954730401,3930370213,3933549585,3935447503],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1619279,1594481,1597435,1564551,1590902],"settle_nj":[7127,5048,7518,7245,2312],"liveness":[[29,29,29],[28,28,28],[28,28,28],[28,28,28],[29,29,29]],"cpu_ns":[1566385542,1538280833,1553175542,1531647750,1532395541],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":9655,"class":"OnChipCounter","relative_ppm":1094,"window_us":1564551,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[59.77294921875,99.21826171875,115.98095703125],"loadavg_after":[54.8876953125,96.87255859375,114.95263671875]} +{"case":"int_hyper/tiny","capability":"wai.neural.int_hyper","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"5dd962ad8d60675f458fab5b36d7bcfc62d409755190a77d8a98b8addf118a3b","input_bytes":2764,"output_sha256":"dce7282d46f88f03d5dc0fd42f325756d310fe1fc982b6e1792a1fbfbeb482cf","work":{"units":256,"unit":"pixels"},"completions_per_span":57019,"spans":{"energies_nj":[6937697884,6868113900,6879045507,6882789139,6857964575],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1548132,1576618,1535088,1575180,1552010],"settle_nj":[2877,2989,2436,2798,2710],"liveness":[[28,28,28],[30,30,30],[26,26,26],[29,29,29],[27,27,27]],"cpu_ns":[1495456666,1543469709,1504631583,1527556041,1505366375],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":121,"class":"OnChipCounter","relative_ppm":3118,"window_us":1535088,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[54.8876953125,96.87255859375,114.95263671875],"loadavg_after":[49.33447265625,94.29345703125,113.8251953125]} +{"case":"video_int_hyper/video_nk","capability":"wai.video.int_hyper","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"853a8bb31ece7f04536e9881809c0cedf991e9911549375c6250f6a2e411d806","input_bytes":4824,"output_sha256":"8594d78eba936c12db0b58c4ba5f50379d03e1d0f6f44e78ff6c0103ca520382","work":{"units":1280,"unit":"pixels"},"completions_per_span":16511,"spans":{"energies_nj":[4487231567,4478343632,4490347874,4453344374,4415225080],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1516652,1570581,1617006,1543647,1610334],"settle_nj":[2507,7819,7553,7251,8069],"liveness":[[27,27,27],[28,28,28],[30,30,30],[28,28,28],[29,29,29]],"cpu_ns":[1494510208,1537754041,1572013666,1524001375,1552551583],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":270,"class":"OnChipCounter","relative_ppm":3321,"window_us":1516652,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[49.33447265625,94.29345703125,113.8251953125],"loadavg_after":[48.20361328125,92.55810546875,112.97998046875]} +{"case":"int_codec/audio","capability":"wai.audio.int_codec","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"a428b93c017cdc7e91fd600835e749a89f52014ec36686fcd0060353a570a0fa","input_bytes":14863,"output_sha256":"4b0344c87c67fc30b7d977ae2077fc310822199598e5d2f9f8fc06314b3a2875","work":{"units":8192,"unit":"samples"},"completions_per_span":917,"spans":{"energies_nj":[6607793834,6541667053,6564402340,6565224344,6555325371],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1580015,1539743,1628337,1559906,1568349],"settle_nj":[7134,8528,8176,7400,31273],"liveness":[[27,27,27],[27,27,27],[29,29,29],[28,28,28],[27,27,27]],"cpu_ns":[1542785750,1530169250,1588191042,1534059667,1539334250],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":7161,"class":"OnChipCounter","relative_ppm":1687,"window_us":1539743,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[48.20361328125,92.55810546875,112.97998046875],"loadavg_after":[42.47705078125,89.8720703125,111.7880859375]} +{"case":"int_codec/splat","capability":"wai.splat.int_codec","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"d426c00992eabbb8d673fb516c9f3cdd1135671347cb7a48724f37b41bd2ab93","input_bytes":81727,"output_sha256":"f07679de87ff7c3d4fc4890b80919ef857fb85bd4d9e4cfa16105211d580427f","work":{"units":1024,"unit":"gaussians"},"completions_per_span":2695,"spans":{"energies_nj":[6686397889,6603477907,6574463676,6586784513,6574148918],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1541455,1586069,1604703,1585531,1576673],"settle_nj":[3477,8292,7342,3403,8307],"liveness":[[27,27,27],[28,28,28],[29,29,29],[28,28,28],[27,27,27]],"cpu_ns":[1515077291,1538163458,1557676833,1536804375,1553693875],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":2451,"class":"OnChipCounter","relative_ppm":3186,"window_us":1541455,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[42.47705078125,89.8720703125,111.7880859375],"loadavg_after":[39.248046875,87.6201171875,110.732421875]} +{"case":"int_synth/photo","capability":"wai.neural.int_synth","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"2404a4260bc05ebbdfa4fb3f49f27a20995796e3474754b3ced67e01bac26e9c","input_bytes":798896,"output_sha256":"2a3db89614cd632829d873cf59d6300b0e49c5647a9ede1115719a6604d42115","work":{"units":16384,"unit":"pixels"},"completions_per_span":301,"spans":{"energies_nj":[6291548959,6375851754,6378805470,6367938380,6343074413],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1634880,1488961,1516055,1517420,1502678],"settle_nj":[2965,2678,3161,7337,6706],"liveness":[[29,29,29],[26,26,26],[26,26,26],[27,27,27],[27,27,27]],"cpu_ns":[1562461750,1462136834,1487185916,1489691458,1480779459],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":21101,"class":"OnChipCounter","relative_ppm":2557,"window_us":1488961,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[39.248046875,87.6201171875,110.732421875],"loadavg_after":[35.46533203125,85.212890625,109.60791015625]} +{"case":"int_mlicpp/stream","capability":"wai.neural.int_mlicpp","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"b1d34c812c213a8de002c72894557662cb481576457a9c63812ad6eb4c51ebe0","input_bytes":42289,"output_sha256":"45040d17b4178b91a0547b435e57a50fa1021101e290a94d1c57e6fbb4583a10","work":{"units":4096,"unit":"pixels"},"completions_per_span":2009,"spans":{"energies_nj":[6830396655,7053556688,7015876893,6776800435,7160143501],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1784054,1636352,1706675,1795078,1633800],"settle_nj":[8443,7060,8698,6989,3010],"liveness":[[31,31,31],[29,29,29],[30,30,30],[32,32,32],[29,29,29]],"cpu_ns":[1717501667,1590977917,1632206875,1731686917,1573983792],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":3468,"class":"OnChipCounter","relative_ppm":10252,"window_us":1633800,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[35.46533203125,85.212890625,109.60791015625],"loadavg_after":[34.0830078125,83.27880859375,108.63623046875]} +{"case":"world_model/int_world","capability":"wai.world.model","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"ae1491cd01b2d4583a8e5b26bffd8102bc417e0361d239d33bdf5924abb7a420","input_bytes":77108,"output_sha256":"fa0d33b375167d9f5eeb13bc170efa986f24edeb24d64db2e3f00027403869fb","work":{"units":9,"unit":"frames"},"completions_per_span":175,"spans":{"energies_nj":[5323779999,5490370902,5476573007,5500882124,5496916016],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1612890,1339668,1419044,1262568,1256739],"settle_nj":[8480,2708,6925,7612,2780],"liveness":[[28,28,28],[24,24,24],[25,25,25],[22,22,22],[22,22,22]],"cpu_ns":[1389297542,1294971375,1320472375,1236618375,1222840291],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":31187,"class":"OnChipCounter","relative_ppm":6182,"window_us":1256739,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[34.0830078125,83.27880859375,108.63623046875],"loadavg_after":[31.40478515625,81.09375,107.56494140625]} +{"case":"png/1024x768","capability":"wai.image.png","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"42892d6716dfb9fe2246bab4fa6f7a4c780df326a1eb0043161f79933ce9b2e4","input_bytes":1782056,"output_sha256":"a99c8dd16f7ff58593abbb55316b82fbe84efaae8bb566d4d07327c2abf5d9ce","work":{"units":786432,"unit":"pixels"},"completions_per_span":355,"spans":{"energies_nj":[5458490554,5366121674,5404918887,5312757693,4721777656],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1561733,1533632,1536515,1629357,1965927],"settle_nj":[3611,7472,8751,9649,10711],"liveness":[[27,27,27],[27,27,27],[27,27,27],[29,29,29],[34,34,34]],"cpu_ns":[1503086709,1525169625,1525737625,1547501917,1714757250],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":14797,"class":"OnChipCounter","relative_ppm":25678,"window_us":1533632,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[31.40478515625,81.09375,107.56494140625],"loadavg_after":[35.12841796875,80.2119140625,106.93994140625]} +{"case":"jpeg/1024x768","capability":"wai.image.jpeg","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"143f0cee657a70379281667177bfe182bf751c5b68dbab94c94b1c508aaadc41","input_bytes":238765,"output_sha256":"cf1c0be470d3850c44c53328a2715c8c951603c8c6a26b4c33d477965c3754d4","work":{"units":786432,"unit":"pixels"},"completions_per_span":470,"spans":{"energies_nj":[5634959867,5659303813,5648139752,5771810715,5811444827],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1968616,1936801,1845424,1774926,1729158],"settle_nj":[9728,9978,11207,9657,8923],"liveness":[[33,33,33],[33,33,33],[31,31,31],[32,32,32],[31,31,31]],"cpu_ns":[1720136541,1714746334,1710393542,1680447042,1656277166],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":12139,"class":"OnChipCounter","relative_ppm":6323,"window_us":1729158,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[35.12841796875,80.2119140625,106.93994140625],"loadavg_after":[41.31201171875,80.05517578125,106.57177734375]} +{"case":"avif/1024x768","capability":"wai.image.avif","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"8407f25a62a4b55945a9ed52f2405f73e5d48c89098d18e115578b41651fef25","input_bytes":154488,"output_sha256":"d450d14349a8fcf635c222bfb1b662b74abe4219cebf350c7078582d1396c09d","work":{"units":786432,"unit":"pixels"},"completions_per_span":72,"spans":{"energies_nj":[5708085073,5526089646,5865463383,5840421448,5878811093],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1577669,1621732,1555384,1511096,1484988],"settle_nj":[7594,9582,4846,7565,8295],"liveness":[[29,29,29],[30,30,30],[27,27,27],[26,26,26],[27,27,27]],"cpu_ns":[1529491666,1573725500,1494611583,1479097833,1464621208],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":80052,"class":"OnChipCounter","relative_ppm":11577,"window_us":1484988,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[41.31201171875,80.05517578125,106.57177734375],"loadavg_after":[39.90869140625,78.48681640625,105.70556640625]} +{"case":"jxl/1024x768","capability":"wai.image.jxl","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"d231f13bee3540cfc948735b29aaf22684b642463610d33ad1cabfedadd0b4c3","input_bytes":11632,"output_sha256":"b7b5f41aa41d7435e02d9c409b0eeccdeb3d6abd0de7d1e1257a5d6db85c9a3a","work":{"units":786432,"unit":"pixels"},"completions_per_span":122,"spans":{"energies_nj":[7493898767,7659259523,7556088876,7729505463,7732611610],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1720295,1442485,1630845,1543563,1460258],"settle_nj":[8286,7830,8946,2782,8674],"liveness":[[32,32,32],[27,27,27],[30,30,30],[28,28,28],[27,27,27]],"cpu_ns":[1603166875,1432874208,1565481542,1482746709,1446699292],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":62576,"class":"OnChipCounter","relative_ppm":6226,"window_us":1442485,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[39.90869140625,78.48681640625,105.70556640625],"loadavg_after":[38.294921875,76.8857421875,104.81982421875]} +{"case":"opus/10s-stereo","capability":"wai.audio.opus","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"67c07b61a751fbdf92cb659b138008877a43a1fe525233b9e802add52531e628","input_bytes":323406,"output_sha256":"89f391cb96b6865297f6f864b078e31eab93d35d7b214d234ef5cead892da271","work":{"units":960000,"unit":"samples"},"completions_per_span":67,"spans":{"energies_nj":[5466692050,5565531843,5457566274,5613370774,5648448157],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1806138,1807526,1770942,1751822,1688065],"settle_nj":[8945,9992,8252,7699,7390],"liveness":[[33,33,33],[32,32,32],[33,33,33],[32,32,32],[31,31,31]],"cpu_ns":[1654724459,1626549083,1659824667,1632952167,1617460917],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":82841,"class":"OnChipCounter","relative_ppm":6912,"window_us":1688065,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[38.294921875,76.8857421875,104.81982421875],"loadavg_after":[43.04052734375,76.65283203125,104.412109375]} +{"case":"flac/10s-stereo","capability":"wai.audio.flac","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"b76f782ae2571503ef43abb5dd85a3d5e1437c57f2e09d48bf76b32b13d5186d","input_bytes":1353452,"output_sha256":"60790d0b64d0eb0ff2f23e1b733afc5a067bb4003699402872d7553ebda05033","work":{"units":960000,"unit":"samples"},"completions_per_span":134,"spans":{"energies_nj":[5117693599,5167201472,5159609360,5010862708,4947352439],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1597676,1560647,1504677,1620752,1736054],"settle_nj":[40033,7634,2513,8818,8345],"liveness":[[28,28,28],[27,27,27],[26,26,26],[29,29,29],[31,31,31]],"cpu_ns":[1534612500,1501885917,1498535875,1561133125,1590742875],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":37915,"class":"OnChipCounter","relative_ppm":8550,"window_us":1504677,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.04052734375,76.65283203125,104.412109375],"loadavg_after":[43.3544921875,75.583984375,103.70703125]} +{"case":"zstd/SPEC.md","capability":"wai.text.zstd","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"9125054aebee1c1ee0cb483cb8bba39c1fccb91027fdbbc5761d63703c1baa29","input_bytes":66728,"output_sha256":"696d19ecdee0960a6f02758385e8e267c4d6e59e20cf1f2064628adbd50c25ea","work":{"units":221853,"unit":"bytes"},"completions_per_span":8372,"spans":{"energies_nj":[6298097936,6379399080,6436745302,6309252264,6081999789],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1547572,1439305,1440648,1490711,1654838],"settle_nj":[8539,3112,2644,7273,7843],"liveness":[[28,28,28],[25,25,25],[27,27,27],[26,26,26],[29,29,29]],"cpu_ns":[1465826959,1427246250,1403116375,1445770250,1496091792],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":753,"class":"OnChipCounter","relative_ppm":9566,"window_us":1439305,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.3544921875,75.583984375,103.70703125],"loadavg_after":[43.61328125,74.55078125,103.009765625]} +{"case":"xz/SPEC.md","capability":"wai.text.xz","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"691cdca1a6bfb2a877f31257578aa5a6db2a10665413cd4ea5f76b2c8d91143c","input_bytes":65476,"output_sha256":"696d19ecdee0960a6f02758385e8e267c4d6e59e20cf1f2064628adbd50c25ea","work":{"units":221853,"unit":"bytes"},"completions_per_span":695,"spans":{"energies_nj":[4830244595,4892331354,4937320545,4780419984,4788886453],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1640260,1612425,1598427,1801930,1798496],"settle_nj":[7855,7298,9128,10355,8159],"liveness":[[30,30,30],[29,29,29],[29,29,29],[32,32,32],[32,32,32]],"cpu_ns":[1576398417,1572607334,1563928750,1641636125,1632170125],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":6972,"class":"OnChipCounter","relative_ppm":6243,"window_us":1598427,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.61328125,74.55078125,103.009765625],"loadavg_after":[43.6337890625,73.5166015625,102.30859375]} +{"case":"av1/640x360x30","capability":"wai.video.av1","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"5070597235c5d601b6cf33f661393baa9f6d9e18a2787789c83c602d3a566356","input_bytes":73064,"output_sha256":"644f0d02dfad11a1d0f9d186feabfeb80d2aa11e221175d51356cf4481dd10c5","work":{"units":6912000,"unit":"pixels"},"completions_per_span":26,"spans":{"energies_nj":[3295829878,3643794862,3142667812,4073011061,5396618076],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[2589061,1783018,1642590,1325672,1114854],"settle_nj":[7798,8866,7171,2399,7516],"liveness":[[43,43,43],[31,31,31],[29,29,29],[23,23,23],[19,19,19]],"cpu_ns":[1621506792,1850466875,1846541625,2437807333,3305228917],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":150399,"class":"OnChipCounter","relative_ppm":103460,"window_us":1114854,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.6337890625,73.5166015625,102.30859375],"loadavg_after":[42.888671875,72.404296875,101.5791015625]} +{"case":"av1.lossless/640x360x30","capability":"wai.video.av1.lossless","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"2ad3daf044fc9cfbddda61403e7a1a6f444292380c1a249e1f5f85bdab60c435","input_bytes":227898,"output_sha256":"9b46e198b310cd8099de82f5a3996f1a2b1c2462a247e94a6936205640afa063","work":{"units":6912000,"unit":"pixels"},"completions_per_span":32,"spans":{"energies_nj":[7956753651,8619583887,7652663740,8166032848,8530623315],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1596419,1660593,1696276,1619073,1564101],"settle_nj":[6940,2665,2773,2387,5654],"liveness":[[27,27,27],[31,31,31],[30,30,30],[28,28,28],[28,28,28]],"cpu_ns":[3792755584,4163230375,3707972917,3901309042,3987975542],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":255785,"class":"OnChipCounter","relative_ppm":21926,"window_us":1564101,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[42.888671875,72.404296875,101.5791015625],"loadavg_after":[38.6484375,70.52880859375,100.57275390625]} +{"case":"haptic/thud","capability":"wai.haptic.signal","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"f316c6df2fe04a2c5c9afbe9cf1b48c6399b7f6bdefb3559b88608a130ff743f","input_bytes":160,"output_sha256":"aa496bf1d42be4e34d361f8f5ef8cca515a9eeac93a42a93de6525cd4526b281","work":{"units":120,"unit":"samples"},"completions_per_span":1048576,"spans":{"energies_nj":[5467195874,5182613465,5239221700,5310510243,5165679644],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1456335,1659419,1667889,1585544,1669422],"settle_nj":[8196,8262,7618,7851,2660],"liveness":[[27,27,27],[30,30,30],[30,30,30],[29,29,29],[30,30,30]],"cpu_ns":[1429010667,1578721583,1561732750,1499225709,1590597125],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":5,"class":"OnChipCounter","relative_ppm":58672,"window_us":1456335,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[38.6484375,70.52880859375,100.57275390625],"loadavg_after":[43.07080078125,70.44140625,100.19140625]} +{"case":"score/chord","capability":"wai.audio.score","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"e39e4123c8b404f6d316a94f47639ab7c8a3a9144635a373f0fa11627c5584ba","input_bytes":304,"output_sha256":"c4e9c4e9f3fe59b76875cd22e16a8251092a921d2ddffefc2c05aa61ef8f79b7","work":{"units":10000,"unit":"samples"},"completions_per_span":8073,"spans":{"energies_nj":[4825609897,4664326202,4751293336,4773567299,4615665319],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1742149,1949267,1956641,1861239,1986934],"settle_nj":[5242,10461,35936,45027,10045],"liveness":[[30,30,30],[34,34,34],[36,36,36],[33,33,33],[35,35,35]],"cpu_ns":[1633623459,1748934167,1705787625,1679212459,1781763167],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":585,"class":"OnChipCounter","relative_ppm":8051,"window_us":1742149,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.07080078125,70.44140625,100.19140625],"loadavg_after":[47.787109375,70.52978515625,99.87353515625]} +{"case":"film/dolly","capability":"wai.film.linear","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"f02eae0262627de5a24ef94ec4b01a24d3241d393a65e7c349dc99eec3840754","input_bytes":1257,"output_sha256":"c75dca469f3b708a628cf025882dc0624cba773d63538f6f02a521a52270ca40","work":{"units":9,"unit":"frames"},"completions_per_span":12584,"spans":{"energies_nj":[4142518603,4155666313,4088800958,4206070059,4131187991],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1951976,1849127,2042283,1742308,1948261],"settle_nj":[9564,42940,7996,8061,47948],"liveness":[[34,34,34],[33,33,33],[35,35,35],[31,31,31],[34,34,34]],"cpu_ns":[1663598792,1642939750,1711729000,1591322791,1649427708],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":329,"class":"OnChipCounter","relative_ppm":4666,"window_us":1742308,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[47.787109375,70.52978515625,99.87353515625],"loadavg_after":[55.1767578125,71.353515625,99.822265625]} +{"case":"reel/coverage","capability":"wai.film.reel","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"83013c3485437b054770ab9cf574a0dd806cc62afab9f4a208938c75480f5742","input_bytes":6618,"output_sha256":"b525fed7e5041b2a9c69c53364ab4da84734650292d7847910e2cf25e6b5c517","work":{"units":12,"unit":"frames"},"completions_per_span":1528,"spans":{"energies_nj":[4078194247,4095275758,3950314078,4017159276,4027218908],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1839817,1765251,2032223,1829153,1797778],"settle_nj":[8425,8873,54523,7888,7607],"liveness":[[32,32,32],[31,31,31],[35,35,35],[33,33,33],[32,32,32]],"cpu_ns":[1636112125,1589322083,1714594208,1672336750,1658620500],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":2640,"class":"OnChipCounter","relative_ppm":6331,"window_us":1765251,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[59.16650390625,71.91162109375,99.8525390625],"loadavg_after":[66.00439453125,72.95263671875,99.89453125]} +{"case":"splat4d/orbit","capability":"wai.splat.4d","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"0a6da0771b55aee9d66b1b15aa0d55c731749e7504d0c31090e07e34ef552dc8","input_bytes":592,"output_sha256":"f7de606c76d5e0161d337adfb860020cc15375f1176329f9bf00538dc68584e3","work":{"units":26,"unit":"frame-gaussians"},"completions_per_span":290833,"spans":{"energies_nj":[4584568058,4495919118,4372569408,4411707581,4566096031],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1659086,1695351,1861703,1745877,1588901],"settle_nj":[9070,9550,8752,10457,10039],"liveness":[[29,29,29],[29,29,29],[32,32,32],[31,31,31],[29,29,29]],"cpu_ns":[1460073375,1494050958,1553117166,1523893666,1461961375],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":15,"class":"OnChipCounter","relative_ppm":21479,"window_us":1588901,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[66.00439453125,72.95263671875,99.89453125],"loadavg_after":[73.20654296875,74.28271484375,100.052734375]} +{"case":"protocol/sleep-1s","capability":"none","decoder":"none","policy":"fast kernels, one worker","input_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","input_bytes":0,"output_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","work":{"units":1,"unit":"spans"},"completions_per_span":2,"spans":{"energies_nj":[671892,453995,869648,900240,393672],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[2045012,2051338,2054279,2033261,2068323],"settle_nj":[9235,9148,8862,45931,11408],"liveness":[[38,38,38],[38,38,38],[38,38,38],[38,38,38],[37,37,37]],"cpu_ns":[2287459,2234417,2318083,2156542,2163291],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":329,"class":"OnChipCounter","relative_ppm":162702,"window_us":2033261,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[73.20654296875,74.28271484375,100.052734375],"loadavg_after":[67.9931640625,73.076171875,99.17138671875]} +{"case":"av1_10bit/dav1d","capability":"wai.video.av1","decoder":"dav1d 1.5.4, 4 threads","command":["dav1d","-q","-i","in/av1_10bit.ivf","-o","/dev/null","--muxer","null","--threads","4"],"input_sha256":"37c45a33f5be0f702e9346eead49e5d0a0025749551bd11a1bd572cd4e0ef1fe","input_bytes":13810150,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[9651871964,10695529844,9335532704,12178866288,13811942203],"billed_nj":[6956,11315,8782,5873,6574],"service_nj":[5598163893,1411085485,0,0,0],"services":[16,3,0,0,0],"windows_us":[9918905,4761574,8162966,4143730,3594433],"settle_nj":[0,0,0,0,0],"liveness":[[151,150,150],[80,79,79],[129,128,128],[68,67,67],[60,59,59]],"cpu_ns":[7313357125,7205569958,7262531083,7049588916,6677534416],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":11134749,"class":"OnChipCounter","relative_ppm":74835,"window_us":3594433,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[67.9931640625,73.076171875,99.17138671875],"loadavg_after":[62.74365234375,71.48095703125,97.6982421875]} +{"case":"av1_10bit/videotoolbox","capability":"wai.video.av1","decoder":"VideoToolbox through FFmpeg 9.0.2","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-hwaccel","videotoolbox","-hwaccel_output_format","videotoolbox_vld","-i","in/av1_10bit.mp4","-map","0:v","-f","null","-"],"input_sha256":"545599cd04e9978130675c5da4165f167c6c6f790268611e8f2cc2358fdc8a22","input_bytes":13796900,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[914602472,839165487,792155819,723534979,780917268],"billed_nj":[463265330,442582603,393052474,360731797,405969123],"service_nj":[670475772,630034187,582087058,541696005,588826608],"services":[1,1,1,1,1],"windows_us":[2621912,2461291,2381344,2417116,2308343],"settle_nj":[0,0,0,0,0],"liveness":[[44,43,43],[42,41,41],[40,39,39],[41,40,40],[39,38,38]],"cpu_ns":[668078458,655284416,604123291,596413541,574777416],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu","media"],"figure":{"joules_micro":810075,"class":"OnChipCounter","relative_ppm":39457,"window_us":2308343,"filtering":"Unknown","coverage":"Partial","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[62.74365234375,71.48095703125,97.6982421875],"loadavg_after":[66.98291015625,71.955078125,97.40673828125]} +{"case":"av1_8bit/dav1d","capability":"wai.video.av1","decoder":"dav1d 1.5.4, 4 threads","command":["dav1d","-q","-i","in/av1_8bit.ivf","-o","/dev/null","--muxer","null","--threads","4"],"input_sha256":"b7f59e1c04fb544170e81982d8281971898d1ec83c1ba31d93f8b132549fe36c","input_bytes":11986821,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[8333663467,8213689868,6770106266,7373794105,7865218647],"billed_nj":[7332,7038,7914,7420,20666],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[8150883,9085374,4837294,11309988,12552573],"settle_nj":[0,0,0,0,0],"liveness":[[124,123,123],[136,135,135],[77,76,76],[167,166,166],[183,182,182]],"cpu_ns":[4826437000,4802418833,5581635250,4985488125,4782767083],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":7711294,"class":"OnChipCounter","relative_ppm":37397,"window_us":4837294,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[66.98291015625,71.955078125,97.40673828125],"loadavg_after":[87.927734375,76.78515625,97.87158203125]} +{"case":"av1_8bit/videotoolbox","capability":"wai.video.av1","decoder":"VideoToolbox through FFmpeg 9.0.2","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-hwaccel","videotoolbox","-hwaccel_output_format","videotoolbox_vld","-i","in/av1_8bit.mp4","-map","0:v","-f","null","-"],"input_sha256":"a8a7448793a855d19a07ce33cc55559328549e123c5d73abae1012c6327de438","input_bytes":11974893,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[889608809,827210394,861313186,928983804,785513678],"billed_nj":[521029468,509705924,523850709,526093098,477791725],"service_nj":[7586228658,676358651,669731041,5488342543,630060102],"services":[17,1,1,12,1],"windows_us":[4371784,4531783,4447877,4515958,4475457],"settle_nj":[0,0,0,0,0],"liveness":[[72,71,71],[75,74,74],[75,74,74],[74,73,73],[74,73,73]],"cpu_ns":[735364583,822050583,792923375,810231875,780794041],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu","media"],"figure":{"joules_micro":858526,"class":"OnChipCounter","relative_ppm":28827,"window_us":4371784,"filtering":"Unknown","coverage":"Partial","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[87.927734375,76.78515625,97.87158203125],"loadavg_after":[82.5048828125,76.58447265625,97.0703125]} +{"case":"hevc/ffmpeg","capability":"wai.video.hevc","decoder":"FFmpeg 9.0.2 hevc, 4 threads","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-threads","4","-i","in/hevc.mp4","-map","0:v","-f","null","-"],"input_sha256":"ca061d92265642de4db05b292001d778d35bc84961b43d451522b2a74474870d","input_bytes":13879385,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[10255171837,11693556332,10141508887,11810832350,11545874792],"billed_nj":[6833,5415,6786,9421,7291],"service_nj":[6987969221,0,3477668235,0,0],"services":[16,0,8,0,0],"windows_us":[7915215,6805438,6616973,9900601,10217469],"settle_nj":[0,0,0,0,0],"liveness":[[121,120,120],[106,105,105],[103,102,102],[148,147,147],[152,149,149]],"cpu_ns":[7453248916,6988401500,7432819541,6881976958,6903496916],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":11089389,"class":"OnChipCounter","relative_ppm":33061,"window_us":6616973,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[82.5048828125,76.58447265625,97.0703125],"loadavg_after":[85.50830078125,77.7578125,96.537109375]} +{"case":"hevc/videotoolbox","capability":"wai.video.hevc","decoder":"VideoToolbox through FFmpeg 9.0.2","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-hwaccel","videotoolbox","-hwaccel_output_format","videotoolbox_vld","-i","in/hevc.mp4","-map","0:v","-f","null","-"],"input_sha256":"ca061d92265642de4db05b292001d778d35bc84961b43d451522b2a74474870d","input_bytes":13879385,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[888570353,820557820,844953918,831143758,849513973],"billed_nj":[458470020,455859781,454356933,450916641,459251547],"service_nj":[613773654,609558910,584000634,602294372,610532203],"services":[1,1,1,1,1],"windows_us":[4307213,4329493,4301051,4331327,4308526],"settle_nj":[0,0,0,0,0],"liveness":[[71,70,70],[72,71,71],[71,70,70],[72,70,70],[72,71,71]],"cpu_ns":[912642625,962709250,944142416,935362541,938999708],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu","media"],"figure":{"joules_micro":846948,"class":"OnChipCounter","relative_ppm":13692,"window_us":4301051,"filtering":"Unknown","coverage":"Partial","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[85.50830078125,77.7578125,96.537109375],"loadavg_after":[86.048828125,78.48681640625,96.25439453125]} +{"case":"h264/ffmpeg","capability":"wai.video.avc","decoder":"FFmpeg 9.0.2 h264, 4 threads","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-threads","4","-i","in/h264.mp4","-map","0:v","-f","null","-"],"input_sha256":"718ceec17117b3de280efa413055b48635e1f1f17b9aa1a073d2fe3ba25f9bcf","input_bytes":22992199,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[12948885911,12717486712,12943163990,18631630496,16641862077],"billed_nj":[27918,7527,6302,5326,4348],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[5424298,4021953,3061957,1903541,2327641],"settle_nj":[0,0,0,0,0],"liveness":[[85,84,84],[63,62,62],[50,49,49],[32,31,31],[39,38,38]],"cpu_ns":[6251787875,6373217291,6532757541,4802011125,5235079416],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":14776606,"class":"OnChipCounter","relative_ppm":81887,"window_us":1903541,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[86.048828125,78.48681640625,96.25439453125],"loadavg_after":[76.1044921875,76.66455078125,95.29345703125]} +{"case":"h264/videotoolbox","capability":"wai.video.avc","decoder":"VideoToolbox through FFmpeg 9.0.2","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-hwaccel","videotoolbox","-hwaccel_output_format","videotoolbox_vld","-i","in/h264.mp4","-map","0:v","-f","null","-"],"input_sha256":"718ceec17117b3de280efa413055b48635e1f1f17b9aa1a073d2fe3ba25f9bcf","input_bytes":22992199,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[1053333890,850490829,853093769,947261538,897165664],"billed_nj":[485028442,389174963,382768553,441868244,415827031],"service_nj":[651913424,549945049,545922736,12170072952,585528255],"services":[1,1,1,30,1],"windows_us":[4587943,4519071,4455891,4444665,4418829],"settle_nj":[0,0,0,0,0],"liveness":[[76,75,75],[72,71,71],[73,72,72],[72,71,71],[72,71,71]],"cpu_ns":[1040427958,1072122458,1042478541,962991375,1023413166],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu","media"],"figure":{"joules_micro":920269,"class":"OnChipCounter","relative_ppm":40912,"window_us":4418829,"filtering":"Unknown","coverage":"Partial","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[76.1044921875,76.66455078125,95.29345703125],"loadavg_after":[60.48583984375,72.947265625,93.4130859375]} +{"case":"av1_10bit/ffmpeg-demux-only","capability":"none","decoder":"FFmpeg 9.0.2, stream copy (no decode)","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-i","in/av1_10bit.mp4","-map","0:v","-c","copy","-f","null","-"],"input_sha256":"545599cd04e9978130675c5da4165f167c6c6f790268611e8f2cc2358fdc8a22","input_bytes":13796900,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[121260261,122938157,78846819,70906615,104917211],"billed_nj":[4040,11331,3393,5939,5667],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[65330,65513,66611,57387,65802],"settle_nj":[0,0,0,0,0],"liveness":[[2,1,1],[2,1,1],[2,1,1],[2,1,1],[2,1,1]],"cpu_ns":[35999416,36342583,49567958,50384208,40167666],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"refused":"span_not_live"},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[60.48583984375,72.947265625,93.4130859375],"loadavg_after":[60.48583984375,72.947265625,93.4130859375]} +{"case":"av1_8bit/ffmpeg-demux-only","capability":"none","decoder":"FFmpeg 9.0.2, stream copy (no decode)","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-i","in/av1_8bit.mp4","-map","0:v","-c","copy","-f","null","-"],"input_sha256":"a8a7448793a855d19a07ce33cc55559328549e123c5d73abae1012c6327de438","input_bytes":11974893,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[120216992,121892878,90931044,92498799,98900226],"billed_nj":[13453,5591,6488,3083,5083],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[65700,65537,58479,56439,66463],"settle_nj":[0,0,0,0,0],"liveness":[[2,1,1],[2,1,1],[2,1,1],[2,1,1],[2,1,1]],"cpu_ns":[35596916,39085291,46166708,45715958,44142916],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"refused":"span_not_live"},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[60.48583984375,72.947265625,93.4130859375],"loadavg_after":[60.48583984375,72.947265625,93.4130859375]} +{"case":"hevc/ffmpeg-demux-only","capability":"none","decoder":"FFmpeg 9.0.2, stream copy (no decode)","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-i","in/hevc.mp4","-map","0:v","-c","copy","-f","null","-"],"input_sha256":"ca061d92265642de4db05b292001d778d35bc84961b43d451522b2a74474870d","input_bytes":13879385,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[112347297,113218116,72950860,82071290,112360953],"billed_nj":[19013,11992,2512,2507,12356],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[65011,64712,62340,66527,65536],"settle_nj":[0,0,0,0,0],"liveness":[[2,1,1],[2,1,1],[2,1,1],[2,1,1],[2,1,1]],"cpu_ns":[32156208,33844625,50618750,42744541,32340041],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"refused":"span_not_live"},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[60.48583984375,72.947265625,93.4130859375],"loadavg_after":[60.48583984375,72.947265625,93.4130859375]} +{"case":"h264/ffmpeg-demux-only","capability":"none","decoder":"FFmpeg 9.0.2, stream copy (no decode)","command":["ffmpeg","-nostdin","-hide_banner","-loglevel","error","-i","in/h264.mp4","-map","0:v","-c","copy","-f","null","-"],"input_sha256":"718ceec17117b3de280efa413055b48635e1f1f17b9aa1a073d2fe3ba25f9bcf","input_bytes":22992199,"work":{"units":1440,"unit":"frames"},"completions_per_span":1,"spans":{"energies_nj":[186282708,186429425,187602955,189126032,183602735],"billed_nj":[5777,5329,2163,29295,5972],"service_nj":[0,0,0,0,5791425964],"services":[0,0,0,0,16],"windows_us":[64941,65230,64955,64743,57821],"settle_nj":[0,0,0,0,0],"liveness":[[2,1,1],[2,1,1],[2,1,1],[2,1,1],[2,1,1]],"cpu_ns":[53018708,52426791,52557125,56403875,50737958],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"refused":"span_not_live"},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[60.48583984375,72.947265625,93.4130859375],"loadavg_after":[56.60302734375,71.93505859375,92.93603515625]} +{"case":"world_replay/basic_kinematics","capability":"wai.world.replay","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"c90b8a03ea11ab87428b2255f402c17eb26a89c625b59d8d753afad143707491","input_bytes":1394,"output_sha256":"917ccd419bf0e1360441ce11c3cde83a9ee90badca2b7a0a0651799b47891953","work":{"units":200,"unit":"ticks"},"completions_per_span":6998,"spans":{"energies_nj":[4165206495,4221683404,4163956788,4258611767,4246600207],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1735662,1579109,1613841,1532674,1568832],"settle_nj":[8453,8268,6784,7621,6334],"liveness":[[30,30,30],[28,28,28],[29,29,29],[27,27,27],[27,27,27]],"cpu_ns":[1569792542,1535462708,1577928750,1487730625,1512120833],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":602,"class":"OnChipCounter","relative_ppm":4760,"window_us":1532674,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[43.96240234375,47.66015625,74.95654296875],"loadavg_after":[41.1748046875,46.9453125,74.3837890625]} +{"case":"feed_state/market_ticks","capability":"wai.feed.state","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"b8b9aee96579bf8a3c75512e3d835290c140a4830b8f0e17bc875ab92c18366b","input_bytes":1154,"output_sha256":"c3e22385ec0c45384ea12e8cec396d280d4b40350e90c7188385f4a2a0c43a4d","work":{"units":3,"unit":"ticks"},"completions_per_span":8786,"spans":{"energies_nj":[4329738901,4251518871,4277318667,4291100386,4305501354],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1529618,1537512,1537924,1542556,1535822],"settle_nj":[2739,3377,2794,2582,2976],"liveness":[[26,26,26],[26,26,26],[26,26,26],[26,26,26],[27,27,27]],"cpu_ns":[1494978458,1508027333,1526298042,1504904292,1525680167],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":488,"class":"OnChipCounter","relative_ppm":3123,"window_us":1529618,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[36.50732421875,45.638671875,73.4384765625],"loadavg_after":[32.65234375,44.513671875,72.7138671875]} +{"case":"avatar_pose/arm_wave","capability":"wai.avatar.pose","decoder":"builtin:wai@0.3.0","policy":"fast kernels, one worker","input_sha256":"c53a0c65c91dd8bb481e48e815e4146efdea5cb6c7cf05ba4e1aefd415638a80","input_bytes":2442,"output_sha256":"c35086d4e9be522ed39223196651e188c3316efa691f75a6315949a1deb12921","work":{"units":8,"unit":"ticks"},"completions_per_span":3757,"spans":{"energies_nj":[4142125715,4043965954,3990721853,4084091280,4128101863],"billed_nj":[0,0,0,0,0],"service_nj":[0,0,0,0,0],"services":[0,0,0,0,0],"windows_us":[1464198,1506323,1657400,1492994,1518008],"settle_nj":[2905,7873,8855,7738,2550],"liveness":[[26,26,26],[27,27,27],[29,29,29],[26,26,26],[27,27,27]],"cpu_ns":[1437717250,1486289458,1588206167,1461699583,1455524625],"gpu_ns":[0,0,0,0,0]},"fabrics":["cpu"],"figure":{"joules_micro":1085,"class":"OnChipCounter","relative_ppm":6821,"window_us":1464198,"filtering":"Unknown","coverage":"Whole","fits_profile":true},"profile":"macos-task","build":{"profile":"release","toolchain":"rustc 1.98.0 (88d9e12ae 2026-08-18)","target":"aarch64-apple-darwin"},"host":{"chip":"Apple M3 Ultra","cpus":"32","os":"macOS 27.0.1"},"loadavg_before":[31.36572265625,43.65380859375,71.9140625],"loadavg_after":[30.626953125,43.0888671875,71.38330078125]} diff --git a/docs/research/wai-sink-energy.md b/docs/research/wai-sink-energy.md new file mode 100644 index 000000000..3420fd943 --- /dev/null +++ b/docs/research/wai-sink-energy.md @@ -0,0 +1,219 @@ +# What a sink spends decoding: one figure per capability, without privileges + +Measurements of 2026-10-22, for [energy-measurement](../../wai/extensions/energy-measurement.md) +§9 (the sink measurement profiles, the span protocol for a task counter, and the energy +budgets of learned capabilities) and for the sink decode figure of a +[stream-energy](../../wai/extensions/stream-energy.md) hop record. Every figure is a decode +on one sink, the build host, read through the `macos-task` profile with no privilege: +no `sudo`, no root counter, no entitlement. + +**Method.** Exact counts and digests are exact. Times and energies are indicative: the host +is shared, and each figure's row gives the one-minute load average before and after it. The +raw spans of every row are in [`wai-sink-energy.jsonl`](wai-sink-energy.jsonl), one JSON line +per case, from which §9.4's arithmetic (`wai::sink_energy::SpanSet::figure`) gives each +figure and its declaration again; a test (`codecs::energy_budget`) does so for the budgets. + +## 1. The sink and the reader + +| | | +|---|---| +| Sink | the build host: Apple M3 Ultra, 32 CPU cores, macOS 27.0.1 | +| Load | one-minute load average 30 to 88 from other work over the runs (per row below) | +| Counter | `proc_pid_rusage(RUSAGE_INFO_V6)`: `ri_energy_nj + ri_billed_energy` of the decoding process, read by that process for itself, or for a child before it is reaped | +| GPU | the IORegistry's per-client `accumulatedGPUTime`: no case accrued any, so no GPU rail was needed | +| Media engine, neural engine | no counter (energy-measurement §9.2); a decode on the media engine is a lower bound | +| Protocol | §9.4: 5 spans per case; in process, each span about 1.5 s of whole decodes on one worker thread under the fast kernels (`Policy::fast(1)`), started after the opening read; out of process, one run of the decoder per span; the counter read every 50 ms for liveness; a 200 ms settle wait, then a 100 ms settle check | +| Tool | `wai_sink_meter` (`wai/wai-rs/src/bin/wai_sink_meter.rs`), release build, rustc 1.98.0, `aarch64-apple-darwin`; SHA-256 `4e5cdab6…4a43` for every row but the three sealed-world rows, `72fea002…a2a` (the same code with those cases added) for them | +| External decoders | dav1d 1.5.4 and FFmpeg 9.0.2 (its `hevc` and `h264` decoders, and VideoToolbox through `-hwaccel videotoolbox -hwaccel_output_format videotoolbox_vld`, which cannot fall back to software), from Homebrew | + +**The counter, probed first** (one thread spinning, the process reading itself). It advanced +in each of 100 successive reads 2 ms, 10 ms and 50 ms apart. After the spinning thread was +joined, the process's counter rose by a further 75 to 227 µJ over the next second, most of it +within the first 200 ms, while its only remaining thread slept between reads; in two of three +earlier probes whose reader polled every 2 to 10 ms, 9.4 mJ and 12.1 mJ arrived within 100 ms +of the join. That is why a span closes after a 200 ms settle wait and declares what its last +100 ms check still shows as a systematic term. + +**The protocol's own cost.** A span whose work is a thread sleeping for one second costs +329 µJ (±16 %): the reader's wakes and the sleeping thread. It is inside every in-process +span, so every in-process figure includes about 0.3 mJ per second of span, at most 0.03 % of +any figure below except `protocol/sleep-1s` itself. + +**Why the kernel's billing, not the decoder service's total.** VideoToolbox decodes in a +service process of its own (`VTDecoderXPCService`), and on this shared host other clients +start such services at any moment: in one 58 ms run of a decoder that uses no VideoToolbox at +all, 16 services started and spent 5.8 J. So a service's whole energy is never attributed to +the decode. The kernel bills a service's work for a client to that client +(`ri_billed_energy`, its `energy_billed_to_me` ledger, in nanojoules); the figure counts that, +and a VideoToolbox figure is a lower bound for that reason too: what the kernel bills to no +one is not in it. + +## 2. WAI's capabilities, decoded in the reference sink + +Each row decodes the capability's committed vector (the integer codecs' and the extension +classes' conformance vectors) or a source this tool makes from a fixed seed and encodes once +before metering (1024×768 pictures, ten seconds of 48 kHz stereo, the repository's SPEC.md, +and 30 frames of 640×360 video). Each figure is per decode of that input, `OnChipCounter`, +filtering `Unknown`, coverage `Whole`: every one ran on the CPU alone. + +| case | capability | figure | `relative_ppm` | `window_us` | per unit | load | +|---|---|---:|---:|---:|---:|---| +| int_motion/video_real | `wai.video.int_motion` | 9.655 mJ | 1,094 | 1,564,551 | 130 nJ per pixel | 60–55 | +| int_hyper/tiny | `wai.neural.int_hyper` | 121 µJ | 3,118 | 1,535,088 | 472 nJ per pixel | 55–49 | +| video_int_hyper/video_nk | `wai.video.int_hyper` | 270 µJ | 3,321 | 1,516,652 | 210 nJ per pixel | 49–48 | +| int_codec/audio | `wai.audio.int_codec` | 7.161 mJ | 1,687 | 1,539,743 | 874 nJ per sample | 48–42 | +| int_codec/splat | `wai.splat.int_codec` | 2.451 mJ | 3,186 | 1,541,455 | 2,393 nJ per Gaussian | 42–39 | +| int_synth/photo | `wai.neural.int_synth` | 21.101 mJ | 2,557 | 1,488,961 | 1,287 nJ per pixel | 39–35 | +| int_mlicpp/stream | `wai.neural.int_mlicpp` | 3.468 mJ | 10,252 | 1,633,800 | 846 nJ per pixel | 35–34 | +| world_model/int_world | `wai.world.model` | 31.187 mJ | 6,182 | 1,256,739 | 3.465 mJ per frame | 34–31 | +| world_replay/basic_kinematics | `wai.world.replay` | 602 µJ | 4,760 | 1,532,674 | 3.0 µJ per tick | 44–41 | +| feed_state/market_ticks | `wai.feed.state` | 488 µJ | 3,123 | 1,529,618 | 163 µJ per tick | 37–33 | +| avatar_pose/arm_wave | `wai.avatar.pose` | 1.085 mJ | 6,821 | 1,464,198 | 136 µJ per tick | 31–31 | +| png/1024x768 | `wai.image.png` | 14.797 mJ | 25,678 | 1,533,632 | 18 nJ per pixel | 31–35 | +| jpeg/1024x768 | `wai.image.jpeg` | 12.139 mJ | 6,323 | 1,729,158 | 15 nJ per pixel | 35–41 | +| avif/1024x768 | `wai.image.avif` | 80.052 mJ | 11,577 | 1,484,988 | 101 nJ per pixel | 41–40 | +| jxl/1024x768 | `wai.image.jxl` | 62.576 mJ | 6,226 | 1,442,485 | 79 nJ per pixel | 40–38 | +| opus/10s-stereo | `wai.audio.opus` | 82.841 mJ | 6,912 | 1,688,065 | 86 nJ per sample | 38–43 | +| flac/10s-stereo | `wai.audio.flac` | 37.915 mJ | 8,550 | 1,504,677 | 39 nJ per sample | 43–43 | +| zstd/SPEC.md | `wai.text.zstd` | 753 µJ | 9,566 | 1,439,305 | 3 nJ per byte | 43–44 | +| xz/SPEC.md | `wai.text.xz` | 6.972 mJ | 6,243 | 1,598,427 | 31 nJ per byte | 44–44 | +| av1/640x360x30 | `wai.video.av1` | 150.399 mJ | 103,460 | 1,114,854 | 21 nJ per pixel | 44–43 | +| av1.lossless/640x360x30 | `wai.video.av1.lossless` | 255.785 mJ | 21,926 | 1,564,101 | 37 nJ per pixel | 43–39 | +| haptic/thud | `wai.haptic.signal` | 5 µJ | 58,672 | 1,456,335 | 41 nJ per sample | 39–43 | +| score/chord | `wai.audio.score` | 585 µJ | 8,051 | 1,742,149 | 58 nJ per sample | 43–48 | +| film/dolly | `wai.film.linear` | 329 µJ | 4,666 | 1,742,308 | 37 µJ per frame | 48–55 | +| reel/coverage | `wai.film.reel` | 2.640 mJ | 6,331 | 1,765,251 | 220 µJ per frame | 59–66 | +| splat4d/orbit | `wai.splat.4d` | 15 µJ | 21,479 | 1,588,901 | 576 nJ per frame-Gaussian | 66–73 | + +The decoded output of the integer vectors is the conformance output: its SHA-256 equals the +committed sidecar's for `int_hyper/tiny` (`dce7282d…82cf`), `int_codec/audio` +(`4b0344c8…2875`) and `int_codec/splat` (`f07679de…427f`), and every case's input and output +SHA-256 are in the JSON lines. The per-unit column divides the figure by the decode's output +and is derived, for reading across rows; it carries no declaration of its own. The +`wai.video.av1` row runs the dav1d library inside the process with its own threads, which is +why its spans scatter most (10.3 %). + +## 3. The classical decoders: software against the media engine + +The same 60 seconds of big-buck-bunny (from 120 s, 1440 frames of 1920×1080 at 24 fps), as +the ladder's own 10-bit AV1 rung (copied, 1.84 Mbit/s) and as 8-bit encodes made for this +run: AV1 by SVT-AV1 4.2.0 (preset 8, CRF 32, 1.60 Mbit/s), HEVC by x265 (medium, CRF 22, +1.85 Mbit/s), H.264 by x264 (medium, CRF 20, 3.06 Mbit/s). Each figure is one decode of the +whole clip. + +| input | decoder | figure | `relative_ppm` | `window_us` | coverage | per frame | load | +|---|---|---:|---:|---:|---|---:|---| +| AV1, 10-bit | dav1d, 4 threads | 11.134 J | 74,835 | 3,594,433 | `Whole` | 7.73 mJ | 68–63 | +| AV1, 10-bit | VideoToolbox | ≥ 810.075 mJ | 39,457 | 2,308,343 | `Partial` | ≥ 0.56 mJ | 63–67 | +| AV1, 8-bit | dav1d, 4 threads | 7.711 J | 37,397 | 4,837,294 | `Whole` | 5.36 mJ | 67–88 | +| AV1, 8-bit | VideoToolbox | ≥ 858.526 mJ | 28,827 | 4,371,784 | `Partial` | ≥ 0.60 mJ | 88–83 | +| HEVC, 8-bit | FFmpeg `hevc`, 4 threads | 11.089 J | 33,061 | 6,616,973 | `Whole` | 7.70 mJ | 83–86 | +| HEVC, 8-bit | VideoToolbox | ≥ 846.948 mJ | 13,692 | 4,301,051 | `Partial` | ≥ 0.59 mJ | 86–86 | +| H.264, 8-bit | FFmpeg `h264`, 4 threads | 14.776 J | 81,887 | 1,903,541 | `Whole` | 10.26 mJ | 86–76 | +| H.264, 8-bit | VideoToolbox | ≥ 920.269 mJ | 40,912 | 4,418,829 | `Partial` | ≥ 0.64 mJ | 76–60 | + +Every class is `OnChipCounter`, filtering `Unknown`. Of each VideoToolbox figure, 0.36 to +0.53 J per run is what the kernel billed to FFmpeg for the decoder service's work; every run +started one service, and no run accrued GPU time. A stream-copy run of FFmpeg over each input +(no decode) gives no figure: its spans last 56 to 66 ms, under §9.4's 300 ms, and its counter +rose by 71 to 189 mJ, which is FFmpeg's start, demux and exit rather than any decode. + +Decoded-output digests, from separate runs that were not metered: dav1d's MD5 of the 10-bit +AV1 clip `59493f9c8a34d276e85b8636c31a26b9`, of the 8-bit `87f829462e087649d053309bbe233629`; +FFmpeg's MD5 of the HEVC clip `5cbeaebc59aeacb8efa2d99728eeb191`, of the H.264 +`b821318fbc668637e2512823c5325641`. Input SHA-256: 10-bit AV1 `545599cd…8a22` (MP4) and +`37c45a33…f1fe` (IVF), 8-bit AV1 `a8a74487…e438` and `b7f59e1c…036f`, HEVC +`ca061d92…870d`, H.264 `718ceec1…9bcf`. + +## 4. What is a lower bound, and why + +- **Every VideoToolbox row.** The media engine has no counter an unprivileged process can + read on macOS 27 (energy-measurement §9.2): IOReport has no decoder channel. The figure + covers FFmpeg's CPU energy and what the kernel billed to it of the decoder service's, and + neither the media engine nor the part of the service's energy billed to no one. It is + sealed `Partial` and reads "at least". The rows say that the CPU side of a hardware decode + is between a ninth and a sixteenth of a software decode's whole energy on this sink; they do not say what + the hardware decode costs in all. +- **No WAI capability row.** Each ran on the CPU alone, which the task counter covers, so each + is `Whole`, as far as the class goes: an `OnChipCounter` declaration covers only what the + implementation could evaluate (the spans' scatter, the settle bound, the readings' and the + figure's resolution), never the counter's own systematic error (§2.3). + +## 5. The budgets of the learned capabilities + +The learned capabilities measured above have energy budgets +([energy-measurement](../../wai/extensions/energy-measurement.md) §9.5) in the form +[platform-decode](../../wai/extensions/platform-decode.md) §5 reads, each bound to the +parameter set its vector decodes with: + +| capability | per | budget | `relative_ppm` | parameter set (`wai.prior.set` listing SHA-256) | +|---|---|---:|---:|---| +| `wai.audio.int_codec` | second | 13,986 µJ | 1,688 | `69c4d553…85d6` | +| `wai.neural.int_hyper` | picture | 121 µJ | 3,118 | `13e8b0d1…b818` | +| `wai.neural.int_mlicpp` | picture | 3,468 µJ | 10,252 | `85a05b0d…9d1b` | +| `wai.neural.int_synth` | picture | 21,101 µJ | 2,557 | `04073f4c…df1b` | +| `wai.splat.int_codec` | frame | 2,451 µJ | 3,186 | `75cc5f10…8657` | +| `wai.video.int_hyper` | frame | 54 µJ | 3,321 | `13e8b0d1…b818` | + +The audio budget is the 0.512 s vector's figure per second, its rounding added to its +declaration. These budgets are of the conformance vectors' models: seeded random weights for +`int_hyper` and synthetic ones for `int_mlicpp`, trained ones for `int_synth`, `int_codec` +and the splat codec, all small. A production model of the same capability has its own weights +and no budget until it is measured: a budget applies only to an entry pinned to its set. + +## 6. Registered capabilities not measured here + +- **Learned, sink-supplied.** Every `wai.neural.*` capability of the `NeuralFloat` class + (bmshj2018, cmic, dac, dcvc_fm, dcvc_rt, elic, encodec32, glc, mbt2018_mean, mimi, mlicpp, + mlicv2, snac, video_bmshj2018, wavtokenizer), `wai.image.jpegai` (its exact decoder's + integer weight bundle is sink-supplied and not in the repository), and the behavioural + `wai.semantic.clip` and `wai.semantic.perco2`. With no budget, each ranks after classical + decode under platform-decode §4. +- **Standard codecs the reference sink does not decode itself**: AAC, AC-4, AVS3 (audio and + video), IAMF, IVAS, MPEG-H, Opus packets, JPEG 2000 (`wai.image.jp2`, `wai.video.j2k`), + Draco, glTF, G-PCC, V-PCC, SPZ, MIHS, AV2, EVC, VP8, VP9, VVC, and the companions + (the SMPTE ST 2094 dynamic metadata `wai.meta.dovi` and `wai.meta.hdr10plus`, LCEVC). AVC + and HEVC are measured above through FFmpeg and VideoToolbox. +- **WAI capabilities with a decoder in the reference sink and no case in this revision**: + `wai.audio.scene`, `wai.generate.spectral`, `wai.prior.nnc`, `wai.prior.set`, + `wai.quantum.circuit`, `wai.quantum.circuit2`, `wai.ternary.tt`, `wai.world.live`, + `wai.world.scene`, and the four refinements (`wai.audio.int_refine`, + `wai.image.int_refine`, `wai.splat.int_refine`, `wai.video.int_refine`). +- **Other sinks.** Only the build host was measured. The fleet's other Macs serve + production work and were not used. No Linux sink was measured (RAPL needs root there, + §9.2), and no Android or iOS device is in the fleet. + +## 7. What these figures do not support + +- **A property of the capability.** Each figure is one decode of one input with one build on + one machine at one load (energy-measurement §5). The software decoders' spans scatter by + up to 8 % at these loads, and the scatter is what the declaration states, not the counter's + systematic error, which nobody has stated. +- **A figure for the media engine, or for a hardware decode in all.** §4. +- **A ranking of codecs by energy.** The encodes differ in bitrate and quality, and the + in-process sources are synthetic; the tables compare decoders on one input, not codecs. +- **A display, a network or a phone figure.** None of these was measured; stream-energy + carries the display as an `Estimator` from a declared power, and the network as no figure + at all. +- **A rate a viewer would see.** The decodes ran as fast as the sink could go, not at + presentation rate, which changes how long the cores stay at a high clock. + +## 8. Reproducing + +On a Mac with the repository checked out, unprivileged: + +```sh +cd wai/wai-rs +cargo build --release --no-default-features \ + --features "sink_meter codecs video_int audio_int splat_int world_int haptic score splat4d film" \ + --bin wai_sink_meter +target/release/wai_sink_meter run --spans 5 --seconds 1.5 --out inproc.jsonl +target/release/wai_sink_meter command --case h264/videotoolbox --capability wai.video.avc \ + --decoder "VideoToolbox through FFmpeg" --fabrics cpu,media --units 1440 --unit frames \ + --input h264.mp4 --spans 5 --out external.jsonl -- \ + ffmpeg -nostdin -loglevel error -hwaccel videotoolbox -hwaccel_output_format videotoolbox_vld \ + -i h264.mp4 -map 0:v -f null - +``` + +The build host's run kept its inputs, logs and the script that drove it in its own scratch +directory; the JSON lines here are its complete output. diff --git a/wai/CHANGELOG.md b/wai/CHANGELOG.md index 7488fbc22..b8901d61d 100644 --- a/wai/CHANGELOG.md +++ b/wai/CHANGELOG.md @@ -6,6 +6,60 @@ wire format may change and such changes are recorded here. ## v0.4.0 — current +### Energy a stream spends: measured where it can be, bounded where it cannot + +- **Sink measurement profiles** ([energy-measurement](extensions/energy-measurement.md) + §9). Per operating system, which counters an unprivileged sink can read, the class each + figure is sealed under, and which fabrics none covers: `macos-task` (the kernel's per-task + CPU energy, `ri_energy_nj` with what it bills the task for work done on its behalf, and + the GPU rail under the sole-user rule; the media engine and the neural engine unmetered), + `linux-rapl-nvml` (RAPL readable only by root since Linux 5.10, NVML not), `android-app` + and `ios-app` (an `Estimator` from a declared basis, or `ModelBased`; Android 15's power + monitors refresh every 30 s with up to 10 J of deliberate noise, and iOS's task counter + is unmeasured). A figure over work on a fabric its profile does not meter is `Partial`, + a lower bound, and a reader shows it as one. The span protocol for a task counter + (§9.4) computes the figure and the least declaration from the spans' integers alone. +- **One figure per capability, measured** (`docs/research/wai-sink-energy.md`): WAI's + integer codecs, its world, film, score, haptic and splat classes and the standard codecs + the reference sink decodes itself, each decoded in the reference sink, and AV1, HEVC and + H.264 decoded in software and on the media engine; each figure `OnChipCounter` with its + `relative_ppm` and `window_us`, the media-engine ones as lower bounds, and the spans + published. `wai_sink_meter` runs + the protocol unprivileged. +- **Energy budgets** (§9.5): the learned capabilities measured have a budget in the form + platform-decode §5 reads, per picture, frame or second, bound to the parameter set it was + measured with (`codecs::energy_budget::budget_for`), so a figure of one model never + qualifies another. +- **`wai.stream.energy`** ([stream-energy](extensions/stream-energy.md)): each hop's signed + figure for a segment (`WSH1`) with its class, coverage and, for an estimate, the declared + power and time it is computed from; the display always an `Estimator` from the panel's + declared on-mode power; the sink's stream-segment receipt (`WSE1`) with each hop's share, + a total per class, a delivery sum and a display sum at their weakest class, and the panel + verdict; and a termination record (`WST1`) for a stream stopped because its page was + hidden, its player occluded, its display off, its autoplay not continued, or its viewer + idle, with the joules spent while the condition held. `HwShunt` is refused before any + other rule. Corpus `energy-conformance/stream/`, second implementation + `stream_energy_verify.py`. +- **Display capability** ([capability-constraints](extensions/capability-constraints.md) + §6): WAI-authored `wai-display:*` and `wai-video:*` parameters (sides, refresh, bit depth, + transfers, diagonal, viewing distance), the exact test of whether a rendition is above a + panel, the one-arc-minute acuity rule where a sink declares its distance, and selection + that sends no rendition above the panel when one within it is offered. Corpus + `constraints-conformance/display/`, second implementation `display_verify.py`. +- **Unmetered work is never zero joules.** `energy_class::Presented` is the one rendering + of a figure, and it writes the unmetered marker as "unmetered" and a `Partial` figure as + "at least". The world demo of `wai-web` labels its wall-time estimate `Estimator` and + renders it through `energy_text`. +- **The C kernel's grade is its meter's** (`oer-conformance/settle/`). The portable kernel + wrote `measured` for every receipt; it now writes the grade and device its meter states + and refuses `measured` unless the meter names an instrument. Its harness grades its + modelled meter `projected` (`firmware_vectors_modelled.json`, which `wai_oer_vectors` + verifies); the pinned `firmware_vectors.json` keeps its bytes as the receipts the kernel + issued, and [oer-receipts](extensions/oer-receipts.md) is unchanged. +- **The packer's GPU kernels in integers** (`wai-pack-gpu/tests/integer_only.rs`): + packaging §11.6's integer steps, held to conditions 1 and 2 of determinism-tiers §5 on + their source. + ### GPUs: when `decode-equivalence` may be claimed, and WGSL's integer semantics on every adapter - **Claiming the tier on a GPU** ([determinism-tiers](extensions/determinism-tiers.md) diff --git a/wai/REGISTRY.md b/wai/REGISTRY.md index 0143e67d9..be1d24847 100644 --- a/wai/REGISTRY.md +++ b/wai/REGISTRY.md @@ -250,6 +250,7 @@ and a role are fixed once registered. | `wai.splat.int_refine` | refinement | registered | volumetric | refinement | royalty-free | standard-defined | — | §5 Refinement capabilities (staged delivery) | | `wai.splat.sog` | payload | candidate | volumetric | standalone | patent-pool | standard-unclassified | — | §5 Immersive audio, cinema, volumetric, haptics, HDR | | `wai.splat.spz` | payload | registered | volumetric | standalone | royalty-free | standard-unclassified | — | §5 Interactive, temporal & computed content | +| `wai.stream.energy` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | | `wai.tensor.nnc` | payload | candidate | binary | standalone | patent-pool | standard-unclassified | — | §5 Prior artifacts, general tensors and derivation operations | | `wai.ternary.tt` | payload | registered | binary | standalone | royalty-free | standard-defined | — | §5 Interactive, temporal & computed content | | `wai.text.timed` | record | registered | — | — | — | — | — | §5 Interactive, temporal & computed content | @@ -341,9 +342,12 @@ and a role are fixed once registered. | `WRM1` | magic | defined | live-recording §4.1 | | `WRP1` | magic | defined | live-rooms §10.5.1 | | `WSD1` | magic | defined | energy-steering §7.1 | +| `WSE1` | magic | defined | stream-energy §4.1 | +| `WSH1` | magic | defined | stream-energy §3.1 | | `WSIX` | magic | defined | packaging §6 | | `WSP1` | magic | defined | energy-steering §3.1 | | `WSS1` | magic | defined | settlement §7.1 | +| `WST1` | magic | defined | stream-energy §5.1 | | `WTM1` | magic | defined | capture-binding §7.1 | | `WTX1` | magic | defined | timed-text §4.2 | | `WUR1` | magic | defined | capture-binding §6.2 | diff --git a/wai/SPEC.md b/wai/SPEC.md index 20a8f0083..1fc36e058 100644 --- a/wai/SPEC.md +++ b/wai/SPEC.md @@ -1005,6 +1005,18 @@ event timeline, and only a cell of at least fifty sessions reaches the receipt. onto C2PA's `c2pa.environmental-sustainability` assertion where one class covers the session whole: [`extensions/live-metering.md`](extensions/live-metering.md). +And for **what one segment of a stream cost at each hop** — `wai.stream.energy`: the +origin, each relay, the sink's decode and its display each sign a hop figure record, +`WSH1`, for the segment, with the figure's acquisition class, its coverage (`Partial`, a +lower bound, wherever a fabric no counter covers did part of the work) and, for an +estimate, the declared power and time it is computed from; a display figure is always an +`Estimator` from the panel's declared on-mode power. The sink signs a stream-segment +receipt, `WSE1`, with each hop's share, a total per class, a delivery sum and a display sum +each at its weakest class, and whether the rendition was above the panel; and a termination +record, `WST1`, when it stops a stream nobody is watching, with the reason and the joules +spent while the condition held. A verifier recomputes every number from the records: +[`extensions/stream-energy.md`](extensions/stream-energy.md). + And for the protocols standard encoders and players already speak, a binding onto a room's tracks rather than a record: WHIP (RFC 9725) into them through a gateway that admits a publisher by its room grant, carries each frame as one envelope on a MoQ track, places it on diff --git a/wai/constraints-conformance/README.md b/wai/constraints-conformance/README.md new file mode 100644 index 000000000..e37f9e614 --- /dev/null +++ b/wai/constraints-conformance/README.md @@ -0,0 +1,17 @@ +# constraints-conformance + +The conformance corpus of [display capability](../extensions/capability-constraints.md) §6: +a panel's `wai-display:*` parameters against renditions' `wai-video:*` parameters, the +respects in which each rendition is above the panel (size, rate, depth, transfer, acuity), +and the rendition §6.3 selects; and each declaration §6.2 refuses, with its code. + +| file | what it is | +|---|---| +| `display/vectors.json` | written by `wai_display_vectors gen`: panels of common devices against a ladder from 2160p60 HDR to 360p, a panel offered only renditions above it, a frame rate above a panel's refresh rate, a ladder with nothing pickable, and the refusals. The panels and ladders are examples, not measurements | +| `display_verify.py` | the second implementation, written from §6 in Python's integers; it shares no code with `wai-rs` and requires every mutated copy of the corpus to fail | + +```sh +cargo run --no-default-features --bin wai_display_vectors -- verify ../constraints-conformance/display +cargo test --no-default-features --test display_caps +python3 -I constraints-conformance/display_verify.py constraints-conformance/display +``` diff --git a/wai/constraints-conformance/display/vectors.json b/wai/constraints-conformance/display/vectors.json new file mode 100644 index 000000000..9f997d5be --- /dev/null +++ b/wai/constraints-conformance/display/vectors.json @@ -0,0 +1,1232 @@ +{ + "format": "wai capability-constraints display corpus v1", + "about": "extensions/capability-constraints.md §6.5. Each vector is a panel (wai-display:*) and renditions (wai-video:*) in a deployer's order, each pickable or not; it states each rendition's bits above the panel and the selection §6.3 gives. Each refusal is a declaration §6.2 refuses, with its code.", + "tan_arcmin_e13": 2908882086, + "vectors": [ + { + "name": "tv_4k_hdr_near", + "display": { + "width": 3840, + "height": 2160, + "refresh_mhz": 120000, + "bit_depth": 10, + "transfers": 7, + "diagonal_mm": 1651, + "distance_mm": 1200 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 0, + "within": true, + "above": [] + } + }, + { + "name": "tv_4k_hdr_far", + "display": { + "width": 3840, + "height": 2160, + "refresh_mhz": 60000, + "bit_depth": 10, + "transfers": 7, + "diagonal_mm": 1397, + "distance_mm": 3000 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 5, + "within": true, + "above": [] + } + }, + { + "name": "monitor_1440p_sdr", + "display": { + "width": 2560, + "height": 1440, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 686, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 3, + "within": true, + "above": [] + } + }, + { + "name": "monitor_1080p_sdr_144hz", + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 144000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 610, + "distance_mm": 650 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer", + "acuity" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer", + "acuity" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 3, + "within": true, + "above": [] + } + }, + { + "name": "laptop_1600p", + "display": { + "width": 2560, + "height": 1600, + "refresh_mhz": 120000, + "bit_depth": 10, + "transfers": 3, + "diagonal_mm": 406, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 2, + "within": true, + "above": [] + } + }, + { + "name": "phone_portrait_hdr", + "display": { + "width": 1179, + "height": 2556, + "refresh_mhz": 60000, + "bit_depth": 10, + "transfers": 3, + "diagonal_mm": 155, + "distance_mm": 350 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "acuity" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "acuity" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "acuity" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 6, + "within": true, + "above": [] + } + }, + { + "name": "phone_portrait_hdr_no_distance", + "display": { + "width": 1179, + "height": 2556, + "refresh_mhz": 60000, + "bit_depth": 10, + "transfers": 3, + "diagonal_mm": 155, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 3, + "within": true, + "above": [] + } + }, + { + "name": "tablet_hlg_only", + "display": { + "width": 2048, + "height": 2732, + "refresh_mhz": 60000, + "bit_depth": 10, + "transfers": 5, + "diagonal_mm": 330, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "transfer" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "transfer" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "transfer" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 3, + "within": true, + "above": [] + } + }, + { + "name": "monitor_sdr_offered_hdr_only", + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 610, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "size", + "depth", + "transfer" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": false, + "above": [] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": false, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": false, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": false, + "above": [] + } + ], + "selected": { + "index": 0, + "within": false, + "above": [ + "size", + "depth", + "transfer" + ] + } + }, + { + "name": "tv_hlg_broadcast_first", + "display": { + "width": 3840, + "height": 2160, + "refresh_mhz": 50000, + "bit_depth": 10, + "transfers": 7, + "diagonal_mm": 1397, + "distance_mm": 2000 + }, + "renditions": [ + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 50000, + "bit_depth": 10, + "transfer": 3 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "rate", + "acuity" + ] + }, + { + "rendition": { + "width": 3840, + "height": 2160, + "frame_rate_mhz": 30000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "acuity" + ] + }, + { + "rendition": { + "width": 2560, + "height": 1440, + "frame_rate_mhz": 60000, + "bit_depth": 10, + "transfer": 2 + }, + "pickable": true, + "above": [ + "rate", + "acuity" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 60000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "rate" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + }, + { + "rendition": { + "width": 640, + "height": 360, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 5, + "within": true, + "above": [] + } + }, + { + "name": "rate_120_on_60", + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 0, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 120000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [ + "rate" + ] + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 59940, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": true, + "above": [] + } + ], + "selected": { + "index": 1, + "within": true, + "above": [] + } + }, + { + "name": "nothing_pickable", + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 0, + "distance_mm": 0 + }, + "renditions": [ + { + "rendition": { + "width": 1280, + "height": 720, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 1 + }, + "pickable": false, + "above": [] + } + ], + "selected": null + } + ], + "refusals": [ + { + "display": { + "width": 0, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 600, + "distance_mm": 700 + }, + "name": "display_zero_width", + "code": "display_malformed" + }, + { + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 17, + "transfers": 1, + "diagonal_mm": 600, + "distance_mm": 700 + }, + "name": "display_depth_17", + "code": "display_malformed" + }, + { + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 0, + "diagonal_mm": 600, + "distance_mm": 700 + }, + "name": "display_no_transfer", + "code": "display_transfer" + }, + { + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 9, + "diagonal_mm": 600, + "distance_mm": 700 + }, + "name": "display_unknown_transfer_bit", + "code": "display_transfer" + }, + { + "display": { + "width": 1920, + "height": 1080, + "refresh_mhz": 60000, + "bit_depth": 8, + "transfers": 1, + "diagonal_mm": 0, + "distance_mm": 700 + }, + "name": "display_distance_without_diagonal", + "code": "display_distance_alone" + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 0, + "bit_depth": 8, + "transfer": 1 + }, + "name": "rendition_zero_rate", + "code": "display_malformed" + }, + { + "rendition": { + "width": 1920, + "height": 1080, + "frame_rate_mhz": 30000, + "bit_depth": 8, + "transfer": 4 + }, + "name": "rendition_transfer_4", + "code": "display_transfer" + } + ] +} diff --git a/wai/constraints-conformance/display_verify.py b/wai/constraints-conformance/display_verify.py new file mode 100644 index 000000000..650c59d3c --- /dev/null +++ b/wai/constraints-conformance/display_verify.py @@ -0,0 +1,139 @@ +#!/usr/bin/env python3 +"""Independent verifier of the display-capability corpus (extensions/capability-constraints.md §6). + +Written from the extension's text. It shares no code with wai-rs, which generates the +corpus, and never runs it. For every vector it recomputes, in Python's integers, each +rendition's bits above the panel (§6.1: size, rate, depth, transfer, acuity) and the +selection of §6.3, and requires the ones the corpus states; for every refusal, the code +§6.2 gives the declaration. Then it mutates copies of the corpus, one defect each, and +requires every copy to fail. + + python3 display_verify.py + +Exit status 0 only if every check holds and every mutated copy fails. Python 3.8 or later; +standard library only. +""" + +import copy +import json +import os +import sys + +# tan(1') x 10^13, rounded down (§6.1). +TAN_ARCMIN = 2908882086 +BITS = ((1, "size"), (2, "rate"), (4, "depth"), (8, "transfer"), (16, "acuity")) + + +def above(d, r): + W, H = d["width"], d["height"] + w, h = r["width"], r["height"] + bits = 0 + if max(w, h) > max(W, H) or min(w, h) > min(W, H): + bits |= 1 + if r["frame_rate_mhz"] > d["refresh_mhz"]: + bits |= 2 + if r["bit_depth"] > d["bit_depth"]: + bits |= 4 + if r["transfer"] not in (1, 2, 3) or not (d["transfers"] >> (r["transfer"] - 1)) & 1: + bits |= 8 + dist, diag = d["distance_mm"], d["diagonal_mm"] + if dist and diag: + s, lines = min(W, H), min(w, h) + # lines > S_mm / (D tan 1'), with S_mm = diag * s / sqrt(W^2 + H^2), squared. + if lines * lines * dist * dist * TAN_ARCMIN * TAN_ARCMIN * (W * W + H * H) > diag * diag * s * s * 10 ** 26: + bits |= 16 + return [t for b, t in BITS if bits & b] + + +def select(d, renditions): + pickable = [(i, r) for i, r in enumerate(renditions) if r["pickable"]] + for i, r in pickable: + if not above(d, r["rendition"]): + return {"index": i, "within": True, "above": []} + if pickable: + i, r = pickable[0] + return {"index": i, "within": False, "above": above(d, r["rendition"])} + return None + + +def refusal(f): + if "display" in f: + d = f["display"] + if d["width"] == 0 or d["height"] == 0 or d["refresh_mhz"] == 0 or not 1 <= d["bit_depth"] <= 16: + return "display_malformed" + if d["transfers"] == 0 or d["transfers"] & ~0b111: + return "display_transfer" + if d["distance_mm"] and not d["diagonal_mm"]: + return "display_distance_alone" + return None + r = f["rendition"] + if r["width"] == 0 or r["height"] == 0 or r["frame_rate_mhz"] == 0 or not 1 <= r["bit_depth"] <= 16: + return "display_malformed" + if r["transfer"] not in (1, 2, 3): + return "display_transfer" + return None + + +def check(doc, quiet=False): + fails = [] + if doc.get("tan_arcmin_e13") != TAN_ARCMIN: + fails.append("the corpus's tan(1') constant") + for v in doc["vectors"]: + for i, r in enumerate(v["renditions"]): + if above(v["display"], r["rendition"]) != r["above"]: + fails.append("%s: rendition %d's bits" % (v["name"], i)) + if select(v["display"], v["renditions"]) != v["selected"]: + fails.append("%s: the selection" % v["name"]) + for f in doc["refusals"]: + if refusal(f) != f["code"]: + fails.append("%s: the refusal" % f["name"]) + if not quiet: + for f in fails: + print("FAIL " + f) + return fails + + +def mutations(doc): + out = [] + + def mutate(name, f): + d = copy.deepcopy(doc) + f(d) + out.append((name, d)) + + def vec(d, n): + return next(v for v in d["vectors"] if v["name"] == n) + + mutate("a selection's index", lambda d: vec(d, "monitor_1440p_sdr")["selected"].update(index=0)) + mutate("an acuity bit dropped", lambda d: vec(d, "tv_4k_hdr_far")["renditions"][0].update(above=["size"])) + mutate("a rendition made pickable", lambda d: vec(d, "nothing_pickable")["renditions"][0].update(pickable=True)) + mutate("a panel's refresh", lambda d: vec(d, "rate_120_on_60")["display"].update(refresh_mhz=120000)) + mutate("a refusal's code", lambda d: d["refusals"][0].update(code="display_transfer")) + mutate("the arc-minute constant", lambda d: d.update(tan_arcmin_e13=TAN_ARCMIN + 1)) + return out + + +def main(corpus_dir): + with open(os.path.join(corpus_dir, "vectors.json"), encoding="utf-8") as f: + doc = json.load(f) + fail = 0 + fails = check(doc) + print("%s %d vectors and %d refusals verify from the text" % ("PASS" if not fails else "FAIL", len(doc["vectors"]), len(doc["refusals"]))) + fail += bool(fails) + caught = 0 + muts = mutations(doc) + for name, d in muts: + if check(d, quiet=True): + caught += 1 + else: + print("FAIL the mutation '%s' goes unnoticed" % name) + fail += 1 + print("%s %d of %d mutated copies of the corpus fail" % ("PASS" if caught == len(muts) else "FAIL", caught, len(muts))) + return 1 if fail else 0 + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("usage: display_verify.py ", file=sys.stderr) + sys.exit(2) + sys.exit(main(sys.argv[1])) diff --git a/wai/energy-conformance/README.md b/wai/energy-conformance/README.md new file mode 100644 index 000000000..a60ab06f1 --- /dev/null +++ b/wai/energy-conformance/README.md @@ -0,0 +1,23 @@ +# energy-conformance + +The conformance corpus of [stream energy](../extensions/stream-energy.md) (`wai.stream.energy`): +hop figure records (`WSH1`), stream-segment receipts (`WSE1`) and termination records +(`WST1`), each vector with the outcome extensions/stream-energy.md §6 gives it. + +| file | what it is | +|---|---| +| `stream/vectors.json` | every vector: a receipt or a termination record with the receipts and hop records it names, as lowercase hex, and the outcome (accept with its facts, or refuse with the reason and the place). Written from fixed seeds by `wai_stream_energy_vectors gen`; the figures are synthetic and claim nothing about any device | +| `stream_energy_verify.py` | the corpus's second implementation, written from the extension's text; it shares no code with `wai-rs`, verifies Ed25519 with `../claim-conformance/_ed25519.py`, recomputes every share, total, sum and panel verdict, and requires every mutated copy of the corpus to fail | + +```sh +# wai-rs: the file regenerates byte for byte, and every vector gets its outcome +cargo run --no-default-features --features stream_energy --bin wai_stream_energy_vectors -- verify ../energy-conformance/stream +cargo test --no-default-features --features stream_energy --test stream_energy + +# the second implementation +python3 -I energy-conformance/stream_energy_verify.py energy-conformance/stream +``` + +The figures a real sink seals come from energy-measurement §9: the sink measurement +profiles, and the span protocol whose reference figures are in the repository's research +notes (`docs/research/wai-sink-energy.md`). diff --git a/wai/energy-conformance/stream/vectors.json b/wai/energy-conformance/stream/vectors.json new file mode 100644 index 000000000..53179b3dc --- /dev/null +++ b/wai/energy-conformance/stream/vectors.json @@ -0,0 +1,1947 @@ +{ + "format": "wai.stream.energy corpus v1", + "about": "extensions/stream-energy.md §8. Each vector is a stream-segment receipt (WSE1) or a termination record (WST1), with the receipts and hop figure records (WSH1) it names, as lowercase hex, and the outcome §6 gives it: accept with the facts every verifier recomputes, or refuse with the reason and the place. The figures are synthetic and claim nothing about any device.", + "keys": { + "origin": "6695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c", + "relay_a": "0651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9", + "relay_b": "68d0df8405cbd593aeeab34bd2acc91bd4ce820dd9451690fc6b595199c8e350", + "sink": "9884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977", + "phone": "d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6ca", + "stranger": "4f53f17618c727a793c63e039abb2aadee2daa3e376e0d0f2436ff6dcea1bd08" + }, + "vectors": [ + { + "name": "four_hops_metered", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f77f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000014c09cfd2addadbbdb539f25ac7544b59973383c3be45d7b80667a4c789b951fe039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000017149a3d7a1914adf454ff224ce57f5b82b77832343b255372ed9108de078a601049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010018bc6d9e2a1e0c359bc6b4aee61524f91b84ec6b0c25233949a1f6d6cb03b7be37608dcdb53f8330acd641f0da224718c09e041e533858a831044591e031ab0f", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c6093b4820e5db1b298725e0e39def1ef1f30ab0f861bc1539f5243523f5a0933d7b3111b1cc7715092b1f0948b8f9fe5b6b36faf352fc4f3b80c3619976860c", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900ed63eb508f0259e6ca5fb5fb039b888fedc5610a16dd554f93dfc0ecd12614388a6343b8148608c8a17a248ea3944f1b33997b3633ac5b20ba19bdbaffaa750d" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 900, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 196000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + }, + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 660900 + } + ], + "delivery": { + "joules_micro": 663900, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 196000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "media_engine_lower_bound", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f77325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000128e98c4219e07966f35ac61c696b654c6e7d680a3388fbcab2f71b22e4dfe9d0039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997790e20000000000000100000090e2000000000000040000cb2000000000001e84800002196981b6ff4e8538950b857f90ad27ace57ebfccc8c5e783a85df3e405583b38049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b00000000040200000014e6000000000000ccf1000000000000020200b9ae0b000000000301010050810dd6c025470c7de46b698e27ab891adfeeb070c36eb8f384d08f4cb3efe0025d71b3e44699987e608e9c8d5165a53efe39c37c5148443ace5216d093bc03", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000090e2000000000000040000cb2000000000001e8480000201058007000038040000c05d0000080180841e0000000000007336b3420a0594630acbfea4765883fa3f7ffa9d2303de69f6c8d40b68601fc30cd2d26fc2f0dc68607cc330ae8b9003944b9cc27cd379ee885fed72240f6b0b", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006ea44256e5d829150987cb533ffbafb55f8ae55432d4b8bfe4fbbd4b0979b431aaf74ec92d44c492a178159e476291f08f950cfc742cae44c88786e472634806" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 900, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 58000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 196000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + }, + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 58900 + } + ], + "delivery": { + "joules_micro": 61900, + "class": "ModelBased", + "coverage": "Partial" + }, + "display": { + "joules_micro": 196000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "relay_unmetered", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f75096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b000000000000020134139f58cdb15e712bbb4350f3d6e666ea342f91ed8d960568dd665c947302db020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e900000000000000000c00000000000000000000000000438b3d3d5f229bdea7e7ba4e77f1f87105b9ccadcf35ab36b3502a97ffd963df039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016b508d5d4f4d016797538232efb103c575bdab97ccf02b1e240240545f43f170049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030101030201000000b80b000000000000030100000000b9ae0b00000000040100000020120a0000000000d81d0a0000000000020200b9ae0b00000000030101008892cf723b8ce80c0a15dfdd2365b60df57db86cbacd47de18342ab2a85ae19215620bccae5519635f89b9b924a1ba6ea3c4cdb640231542cd8d7c425f67d902", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000008007000038040000c05d0000080180841e000000000000be4d6081ed5884613d31bd37f06a4a6a88f52c1166d53f74a9a880257969d1d99efac9c4edbc4fcf407be84e66321f8a7c4dd1668f6f38a0ab7c38eb4d30ff0b", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000f761bb13123a9e1e42907e520c6145ab137d6a2ee101b175c6a6df7e3ed54ce7e33b6de436f32d83187692def798fee3e15deb09aada08424da7d908e0a98403", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f8d12a2b95dc41085f240fea94bd6669b984957bad9f576cd54841a060110f53fa35c5a22e93115b85e4a2420215002c3fa090fa7fe8ea743c23382d163c3f06" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 0, + "class": "unmetered" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 196000000, + "class": "Estimator" + } + ], + "unmetered": 1, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 660000 + } + ], + "delivery": { + "joules_micro": 663000, + "class": "ModelBased", + "coverage": "Partial" + }, + "display": { + "joules_micro": 196000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "origin_shared", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000400d7366d45ef9ae984298e80c23f073a2419ec1b3268a69fc6cda1abe622554e016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c404b4c0000000000e803000088130000000000000201c67db8f882b01b666135cda82edc8c647697f90c01feab2bece8f2e9684c5021020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e980ee3600000000009001000028230000000000000400009c4000000000001e848000015670455b524ba5cfe2db5d3e57298948090a14550ffd0a4aac4eb7d366573bb4039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001b4e232ff0ef6988ca79f176ee1713b20e8d5425fa11717b5eca5a3f4ce4f8996049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b000000000301000302010000008813000000000000030100000000b9ae0b00000000040200000048350a0000000000d0480a0000000000020100b9ae0b0000000003010100804e53a1ce326c55c869e35a9ceac53ae3060f3d73613215b74152dcde901f5fb60544b4cd0f0c552dd5d5d8f2fd08e0a2f2a705fb66ef6992a1b41dcf0d320b", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000000000000000000000000000000000000000000000000000000000000000000e8030000404b4c0000000000020100008007000038040000c05d0000080180841e00000000000056c2c9752123af97abd8ba048bb5aced873b47b36f55973f66e38142423942b813999af7e7eee49af4686aa8e8b673d5311252bbc6556d0dce57e2c4f554ba06", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000009001000080ee3600000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000cf4f3e2edc6f41a1507a2758be8fdef57ddeb26f4e810880b8fa3740c24c04c9022c3ce17467d576962109f90c1ae7a46540d44b377545f2ab3055d5c7874a0f", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000001c36443899a54a0331e8813db1cd77574c1c910eba2712a558bd751aeab5448e3167dbd83957e1dea1aaf5be50717b6caa94295767d16eac1eaf05413098410d", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900765e225756f64a4bb73debafc422ff552eedc4481b0746d3565e0c9b6d7db7290a3f4aaecd933b57e3c3975581513d62ba4573d4e12ffb50b6acfd198d15ee02" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 5000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 9000, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 196000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 5000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + }, + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 669000 + } + ], + "delivery": { + "joules_micro": 674000, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 196000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "two_relays", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f74ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f361680000000000000005f3e708ffb5ce236695e7bcd03942f77461b691cafcf7047c71f39f9280149c21016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b000000000000020163218309cf120270343703c02765ae0962363ee1b15338e15a045ba74f1264ad020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000178a885fabe7eaadf6ef5c53c55c978f39b235e3a904f7cddd97ef73c09bf61a30268d0df8405cbd593aeeab34bd2acc91bd4ce820dd9451690fc6b595199c8e350bc0200000000000001000000bc020000000000000400009c4000000000001e8480000129dbb10ae938300058fbbd6e5bc98096271ebe2ed8fb3a37d0ee1f3d154cc06e039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001ac5db188303a0b85146f78d82c4fdab47d0a4eee39a8ac608f1d46961a3bee96049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b00000000040300000060180a000000000018240a0000000000020100b9ae0b0000000003010100ed4a2af71d062fe5775af30d1cf7c95f5bbeb5e52eae628d2156541000dc3deea29e8c50174aedabefd785965ce68f50e0ec2cabf7f374af35e7c42847a5e70a", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c4ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f3616800000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000df69a1479713d84ed5ee7fc42d2fd153393c9ac36545a5597fa5a07c6f0e4821d97cd1472f4d0e34ff6627de3d9cd02dbef0eb7562ad75d1e73a5424d78e6c0f", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e94ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f361680000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000039dc4823b23751b017ed7c8c96faa501b0f0fd798488256124b08abcdceabb0c59b5ab0533ee291fd65ce49fcf83f44e99e89ac38fc1313bceb7931ad082507", + "57534831010268d0df8405cbd593aeeab34bd2acc91bd4ce820dd9451690fc6b595199c8e3504ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f3616800000000000000000000000000000000000000000000000000000000000000000000000000000001000000bc020000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000d49d0c1de8725756828594a00b2799e45613fd9aaa135b715f2949e4912ff588056b72b6bbb1707d48a46e9dcedd5156cb7585237f7e5ccf21e961eb76562d0f", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f3616800000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000005739c472928347842a61432e6cb1c9150240f68482ce0188bbfc4d9644f661f4b53457d0dc0156b19bc5f4633f26de3ca64f681d3b41adffc8c4797606dc7b07", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ac2aeecf878f098e66681b94385a890fd699376c394bf80af48ff2c0d11f3616800000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709007ae4a2e24101ec9150b14592aac814391b0e711ab57bca8a6f228a7ef60997d72cfd375e15021f72736cbccaf82f48d23c56c018c4c90f579e32b8ddee732105" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 900, + "class": "OnChipCounter" + }, + { + "role": 2, + "share": 700, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 196000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + }, + { + "class": "OnChipCounter", + "figures": 3, + "joules_micro": 661600 + } + ], + "delivery": { + "joules_micro": 664600, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 196000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "phone_estimator", + "kind": "receipt", + "receipt": "5753453101d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6ca7302a3cc1b7c75ae0cc641c59db1d7026732924dfd5324b2c3a4140e6e7662587f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001e1fcd55029855dfccba9a1d5d868e2f98d8aac7580872cc1c597d0cd25c452e703d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6cac04b03000000000001000000c04b0300000000000301f7870c866ead9fa7185f8ce7229194774ed775d745db7ce0841eaf95b4db6f0504d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6cac09121000000000001000000c091210000000000030100030201000000b80b000000000000030200000080dd24000000000004010000008403000000000000fc5a0300000000000301c0912100000000000301010000eced105315d9239bc64b0462ae53d9ec7e0dbdc87cebcb22cce2ffedc3130e75d884a086de37ef434f4e1ac84c50f06db75cc718a2cd10ac99322359deea09", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "575348310103d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6ca7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000007302a3cc1b7c75ae0cc641c59db1d7026732924dfd5324b2c3a4140e6e76625801000000c04b030000000000030103018007000038040000c05d0000080180841e000000000001b004000020bf02000000000003362446665995d0b76db493cd4a9854a7cc2cf19f565cb0e739f9ad267363703352c9804ce6663ff545afef780577774328d62b17ff7c8a20fdda10fca95e6f02", + "575348310104d2333b22335e89e1036ec57e39f251c78e6d4b065e393e6ec273a75cb720d6ca7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000007302a3cc1b7c75ae0cc641c59db1d7026732924dfd5324b2c3a4140e6e76625801000000c091210000000000030100008007000038040000c05d0000080180841e0000000000014c04000080841e000000000002059b040000fc09000060ea00000a039b0000000000000020a107001d402c9251b7ff9630aa4e42ab24d59ec0d7292e6e037dadf86614bcd6bbb58e947cd8dae1f4d35f2f34f1b5f42b15b0728ea3f7a4301050c2a9054f7b231408" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 900, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 216000, + "class": "Estimator" + }, + { + "role": 4, + "share": 2200000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 2, + "joules_micro": 2416000 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 900 + } + ], + "delivery": { + "joules_micro": 219900, + "class": "Estimator", + "coverage": "Whole" + }, + "display": { + "joules_micro": 2200000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "display_unmetered", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f72f320e2ba757bb4fa3c48de2cf7d93a1a70ecd89527e72db2b58c277ea82d9926900000000000000046d8a163d74a2f4fb44289356824033c1965c4888daa91d620f20f950498005df016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002015b87cd16dcfc4efe709fef95ceea9b2036d4685b16ff27abbd0623daaca7a6f7020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001a1641ac097028bfc1ec34164197ead16cbbf0922ad264123c83a2ae7ad8fbba4039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000015ca45f5c542834042c0482c7203cad66b7eef894449c652adc744fc13c81f037049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770000000000000000010000000000000000000000000001020201000000b80b0000000000000402000000a4150a00000000005c210a00000000000201000000000000000000000100e1f9b71cd588c2dd02896b2353b83d1e1b4d18fd16e797ee67758d09205e634fe08211004b03832c4585a7ffe18a7038e02339a3142d7438c85a0b2a4d6c780b", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c2f320e2ba757bb4fa3c48de2cf7d93a1a70ecd89527e72db2b58c277ea82d9926900000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000dce8df0bbcecbea1ce3e49db34cb2382cfcbad434921db25b7bbbab3387ac77d9ea470a2ba53c1337da19125e16cda2385cf7951d5605b5d6b34e7e457440504", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e92f320e2ba757bb4fa3c48de2cf7d93a1a70ecd89527e72db2b58c277ea82d992690000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bd6148eadbc4672dd8c30d38df499493200db5861425108f7bf6b2b6771a4a8d5f9e69c5de090fe47ccecdbdec4f3647288908ab4c287f3820c06a4ee0da8c0a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772f320e2ba757bb4fa3c48de2cf7d93a1a70ecd89527e72db2b58c277ea82d9926900000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000075a9076b05465f87dbe9b64c0559e419c51d1a47bb53851319d526003774c4b94f52e3d3acc62ced84ece4677a6e7ecbbd54bfbae6ccdaaaba61e9a868e7be07", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772f320e2ba757bb4fa3c48de2cf7d93a1a70ecd89527e72db2b58c277ea82d9926900000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7010000000000000000000000000000008007000038040000c05d0000080180841e00000000000002800700003804000060ea00000801620200000000000020a1070067e8cbfa9aacb3498143e8ab3b18d025f85aaf7a8caa6e1070862b2e92a1adc782ebac57af7436bb5baf4357cac6b95312246c821172c127fabcd7dcc275040d" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 2, + "share": 900, + "class": "OnChipCounter" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 0, + "class": "unmetered" + } + ], + "unmetered": 1, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 660900 + } + ], + "delivery": { + "joules_micro": 663900, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 0, + "class": "unmetered", + "coverage": "none" + }, + "panel": { + "verdict": "within", + "above": [] + } + } + }, + { + "name": "above_panel", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a000000000000000325facd06ad21baac37789dbcd0e98143ab5891c5940d02283099ce9488421f15016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c2823000000000000010000002823000000000000020109e0840b3f55582b22c56276ff918295a55ea777c50f473969dfb86b5b2ea477039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001e0aef8afa20bc1cb61396db5a3b4b00658a6e27f0a48c1cf6c4223b7d18b2a38049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997780de8002000000000100000080de8002000000000301000302010000002823000000000000030100000080de800200000000040100000020120a000000000048350a0000000000020180de8002000000000301020db2de8b5d514a07068a96f462dae4bbff9a6be75ef6161264e483b4bc30c93313ee36f8a81114e89f93f20c81973b54c46563ee5a86ddcd59e108543fa54b8f05", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c76ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000000000000000000000000000000000000000000000000000000000000000000001000000282300000000000002010000000f000070080000c05d00000a0280841e000000000000f0d6df5a146bb6776ab2a922f5d679765a4804f1a1b78bf5d44b307f2a1734cdb7dae75e62584057138f3b291548f5cb65c5b36a149bc42a50a05f8280a64a0f", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e848000010101000f000070080000c05d00000a0280841e000000000000010914f2fb22beed8129f12f3cf2d6668035036a46215ee51381a150767dba134916e8668d1d9cc3dc3a56af7e70c40d4c1509971c23f4e3cf027468a6753d0e", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000080de80020000000003010000000f000070080000c05d00000a0280841e0000000000010852000080841e00000000000102800700003804000060ea00000801620200000000000020a107009f9ac7808521518ccd9ec644b9c19c96ceb4a0e017e7f69f7f49f881aa2001464bc6c6df48dc7fb8339e764a9f621655851145f98c9edf2b2406c6725d580502" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 9000, + "class": "ModelBased" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 42000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 9000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 42000000 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 660000 + } + ], + "delivery": { + "joules_micro": 669000, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 42000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "above", + "above": [ + "size", + "depth", + "transfer" + ] + } + } + }, + { + "name": "above_acuity", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70c2baa3845296608e36fd1cde971a6a0c898508216964c9ef00b62f14c23b46e6b0000000000000003fe1bb4011257211c42b8601b4afa01020409b2f5b63ed8e402971acbaaed8157016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b000000000000020119e58691b895f414ad2ede01741847c9c378e537a81027498ed68a5bf5184f9a039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001c9dda62e9951531bb6b9fabfbf5ac66aa25004e9c80a92ca019d41a194566ddc049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997780fe210a000000000100000080fe210a00000000030100030201000000b80b000000000000030100000080fe210a00000000040100000020120a0000000000d81d0a0000000000020180fe210a0000000003010210ea54eb2115d230a3c61ce605469b1447920b51fe567f0bf70e9b7721cb1665013171b9e967413851748a6b39e759f970467fb06096e3964d7783668c4a4de10d", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0c2baa3845296608e36fd1cde971a6a0c898508216964c9ef00b62f14c23b46e6b00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000007cba376506ebcee5e366cdadcfe03cd6a0f4de63db7f7e3830042aa73bda6d0487d778a49252d7af9a1db1dae61901da40c1392c9ae4983a9c893ac1cf9f7e0b", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770c2baa3845296608e36fd1cde971a6a0c898508216964c9ef00b62f14c23b46e6b00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000fced92ee5b7ab3ff1e384e8107e4f38ea564ee843d40d513046b7a9959edd159bebd17173e7d49a2042dc6c57aa635b9489ae778b86a19800ba45f2050810e00", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770c2baa3845296608e36fd1cde971a6a0c898508216964c9ef00b62f14c23b46e6b00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000080fe210a00000000030100008007000038040000c05d0000080180841e000000000001084c010080841e00000000000101000f00007008000060ea00000a0775050000b80b000040420f007c09edc9b9bde054873a7fcd12ac7fdf66ab529a0633f02b1eceef25555f32a89a8d30477d6922683ea3771497f096d0600d89f004818037e723c19d626d0207" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 1, + "share": 3000, + "class": "ModelBased" + }, + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + }, + { + "role": 4, + "share": 170000000, + "class": "Estimator" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + }, + { + "class": "Estimator", + "figures": 1, + "joules_micro": 170000000 + }, + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 660000 + } + ], + "delivery": { + "joules_micro": 663000, + "class": "ModelBased", + "coverage": "Whole" + }, + "display": { + "joules_micro": 170000000, + "class": "Estimator", + "coverage": "Whole" + }, + "panel": { + "verdict": "above", + "above": [ + "acuity" + ] + } + } + }, + { + "name": "decode_only", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f72b5ac8bec776d2af5012909273bd6833956a3eaa403e8c0e5c475d3648eba7986c0000000000000001cad234211f2e14a822ac5b81c5c9847c2f6e7344a1e235afb2166352959a988e039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010001040100000020120a000000000020120a00000000000402000000000000000000000000c2ea2f87a422c656bf8521306b27e1794d78b628f16b15099e20b7f33d95a7734929341c8c220a6873a3a46c884b241bd5041766d0f870e54ceb1ec48eec1e06", + "records": [ + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772b5ac8bec776d2af5012909273bd6833956a3eaa403e8c0e5c475d3648eba7986c00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000b1ba47e2741dabaee4ad3965e66140dd657ec99c6885cb138ba82b0b3a322eda20abb5c426498ff8d2fd116b1c072a52c83065df7239230fb8e665c8a1ab8506" + ], + "outcome": "accept", + "facts": { + "shares": [ + { + "role": 3, + "share": 660000, + "class": "OnChipCounter" + } + ], + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 660000 + } + ], + "delivery": { + "joules_micro": 660000, + "class": "OnChipCounter", + "coverage": "Partial" + }, + "display": { + "joules_micro": 0, + "class": "unmetered", + "coverage": "none" + }, + "panel": { + "verdict": "none", + "above": [] + } + } + }, + { + "name": "termination_hidden", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997772c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100127a00000000006600000000000000670000000000000004000000a29c6278d311b8ca4917a12dd3b8a084be1b9d079f40a069cf22ff6da5e24d5400000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000eeabb125c3a39b0630b7b1effcf7f58bbc2bb35bf40534d2f945688d2c4797ad6a8f7050f0de5b1abd5325f6664b931299f70fb33defe172d565667f88626a03", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997772c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000015bb61fdb866f8d72b51da51c9fb4796e4c84f8b78096775f5508a2a1350557d6039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001e34a4df381a282703e0cd33cd09e2ccd7a85e6e30606880f387316f12eaddace049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100451cca3232d6de7db1411b69e32d9a64f6d588e6b19a0133d16e8dfe44019cb441adc02c6641e7df2a86cb7621a2912fc9f5abe981e720b32a7354b4708f7a08", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997772c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001792ef8d7d39c503a91a9e0197de48794a492899c53929e65f7c178af71bd3948039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001388946062b8cfd3d4c5116b61179cc50608bcd3f66749e58e7dc98dff8be0b13049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100b934ab9f530cacd6b7ff42096c3a8c074dcff62faac82086fe01e9b33f1a93010ba5f2a610217676d992c6c95a87e315150b0dcef3c14e93e7915247f24c8209", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997772c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002017d003dc40b17ef964944942561d641c9cf71a0a98177a77ce110194aa33d247e020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001c58e3667b84b59488d02e902802f433698171eee3c6587619be4914d16ecf69f039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000111d6b7737ec8b77c0e9733f9913a4a6e9c143911e2fb2cb3fa1c22d51032f65e049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101009207defa380a8fa848c58309dba89fedc1ff0f94e6c4d11c84c19040eb20a0b6b88667953da8647f71ae6e4e6151a94db8ba9cb65dc918294ea02b934db7d208", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997772c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000450831e6025a561975013b77b8469b32c502ec59df3d5a946ab0c319218da59b7016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002011592a4256820053032543a3b1bf4fcc120d16aa8bd997af5674fc3540317687a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001c77738ab2a8dbdc2889e82940eb75c896a86812f65dd7ebc2363497d31e0d99e039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c66668990d91a6a1126c4127de671b97d543da4bc2655d8b4935a84ec04ecbb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010020679bd29ab58720feebcf4229949f18bebef7ad043dcf4ffb5b4501fbe7ff794af9810e47d33a1e6895773bb2c6212688e377ad5beb3d29802806bc0612e708" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000214c02343b65b771d06b8264401413f00d779214396c0d56c7fe8f74c15a62fbbb017bd183dacb5a6f4e8fb5f7c710c149e686e635178e3adc5ea02150b31a00", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709004ba6fa8c6b74d960a91cf85cbf7d1db1caa12a090dfc78961c4d4ccb751779de70228cc577449b9afea48ef2ee4e77dd9b403c1a52621e23fb3bd103abb7d106", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c77ca86fe295ab06297e2161126be19d150233f97dcffeb940d892902858cc3cbcdd26b97d54b409d284cac2877fcc1afd70118cf6e6faeadc25092632a61802", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900eebdf683d22ce3df3e6d53ffc68449cf149fedffd8273dd7523316a2991eae0fbf7c74287af34ee350b59303acd00cda630abf1b3f396a7ce41bed020addf40c", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003424ffd4e3656a1e9ef5a3b60c9ee33cfc6386d3e5a60dd25de4fe217affd173eb7eb4d33ebe90aa7af9f1d7f333c3750a919459fb87d8a5c06296085093cc01", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008df1e5a9ce2a680c52266f1e7e5279a339bd37d842ee947560ef60791c4de8360afc365a526384e36639877fb468cffde68479d3b7cf80617d03f2221a18f104", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709005397397ca93a81905ab15db5246597ae410291600c4314cb01b8b5f98a165dbb556ef873067b18f9bdec60bb5885e1f333fc7a355626142ea6107b71e876e501", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000006bf59ac5d44584ae0f823410262b0b82a11a5e2a2cbd31fac1bde606c7696f286d1ff892ae0f3ff013266e22110505dd1dd6226d754f06de74e3cead6f14a30e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bb50a3dae55dc20e988fc3c31750cece8b8702f8474c7e5a33eb60371b7fe30e3d37f431c543853e0d0decf4da2f27ba0fc64ca9da510160da7906107cafb80c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000830f501882300a502ef23248a68e0d281ef61e8264b6e6d8fd47b8e4cfd8c546df0a478f1ff713a1fc825fc44f17e327adeff5be14117830e964784f7518940c", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000072c57b22dc60729036aae74d8dca6f7a8a02e57cf26e5ed9643740be38ad3f5d0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c027090089309ddd7cada05c29a38a6b6e6d901c244d55a123fde36a28c1bae3911493cccd3a024b833e731e052c3457f84d5f98194e4fee52087eb3d0fd774fd9f33b0c" + ], + "outcome": "accept", + "facts": { + "reason": "hidden", + "from_index": 102, + "last_index": 103, + "spent": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ], + "held": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 2, + "joules_micro": 6000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 1800 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 1320000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 2, + "joules_micro": 392000000 + } + ] + } + ] + } + }, + { + "name": "termination_occluded", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0200127a0000000000650000000000000067000000000000000400000051592a0010ac4bee32d2153fc8db5ae15e87353170cf80f2f236b7ffeced182300000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e00000000000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c2300000000089157c438741d14590f24a38c3f4a6ace706a4de04d78ea121f06f080d703948354cc8d9b24fa3987def428b46216a51e4840956d0478d3ef58312b28843c0e", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001e3229303d5d0ca95a51c538ba9c3a6f1542f7c112b1e1bd12adb3fe8934c36d4039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001c6b7a51286750e4c77b76fa6f0be333230e40277480d00b9d866d56c02531525049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101004c7798f19ef54230e701686b05d809ea588ef5995cb29edfd1b65ebf798c7edcc513b25173bab14f358b6d9acd0f2d3b724fd68d7869b965850f28dec7246901", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000179ce0eb7c569d857eafd6a3c21323c4af5fb3a987b0c803b7af895a39dceebde039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000015975e0a6a188ad9b5646f22ac6443fb27f85de6c74e8bc9daed68498ccfbee85049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010004a1edbfeb4d3559f67035fc66561ad77084b0abd11e18041343e0346f3b2846ee795357fac889bf5e37a17ba562a0a4504463ae545d24b629c3770c0d82a806", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002017d003dc40b17ef964944942561d641c9cf71a0a98177a77ce110194aa33d247e020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bedbf130d97bf974c4c34ccf2b63ed2e37115cc9e6a0df27ae968eafc570ad7b039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001bf0389aa262ee8bc2f23a5c91bea1c1029ae7a96e20456ea932fd8775669b89d049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f4cd81a8650113a15f4933b401d9b48214e87027d4b2bae29f8cf3fa5acfb65ccaef59fde8156f94e782fbec4ab7425475a8752d3f0a3909a4f2ae1c24db203", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000450831e6025a561975013b77b8469b32c502ec59df3d5a946ab0c319218da59b7016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002011592a4256820053032543a3b1bf4fcc120d16aa8bd997af5674fc3540317687a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000016190385b162c4583573c5f826e7a377465336739d941fd8dfd98fc14327b60bc039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000013ebff5228c8304080d1072605bb564129581eafe4f16118b9046b4b6c902838a049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101003cdbef5b6e7170b2d72021f35bc051311b72a094d6199297ebd0fc34d9cb33e614329a3fe383491d2df62f3c065c0c039639445f1cd0ab16b8ae854cac42ae05" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000000b9a879836191ff7c7581d518aca92c797a6e9ce02c8f80971fe0d26f3e924eeb7852da2a89829992939ef0f7f7d1ff4522f81ae0db0d49252513b0f476a4d03", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709009a64c49f219fa57b8c0b6d8a448c1ba5d9b78e6da5b59d0f1392851f370f639c08dc1f153cf18bb466741923123fe183c1881462948183e2931647f34873b30d", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008f47b0d70d88a0ca4dd6d91dce2ef33d9c7716f922bcfbc2e3cfa9298aa9f227c5e4991360e89b4e1f7b619a4cc71b5a119b7cff9f4ac1bb851cb1d15488f50d", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900251ba5dd03dd263bfd3ce7848d424fc07681d9f8d0ea8058b26f93c480f3674bf946a76302c9fc708531e4195550c6f9d5eccb4008adf0272e04af4772b3b10f", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003424ffd4e3656a1e9ef5a3b60c9ee33cfc6386d3e5a60dd25de4fe217affd173eb7eb4d33ebe90aa7af9f1d7f333c3750a919459fb87d8a5c06296085093cc01", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000d222651aae84084902cc79754ae8f4847ffe00511c0a19c77c637e9d581181cdde4179651ace302f2b8031d897cec23960fd7f2585e06d6db01a19c62367e601", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900ee63e9f2e96fcef47b3f5e1ead497f28f5ef8b5ee743a4945ae282d0ec2658047978dafdf0fcb5b7964895b74281caad98ba0ba1836f85dc749fd224bb703e05", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000006bf59ac5d44584ae0f823410262b0b82a11a5e2a2cbd31fac1bde606c7696f286d1ff892ae0f3ff013266e22110505dd1dd6226d754f06de74e3cead6f14a30e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bb50a3dae55dc20e988fc3c31750cece8b8702f8474c7e5a33eb60371b7fe30e3d37f431c543853e0d0decf4da2f27ba0fc64ca9da510160da7906107cafb80c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000a123d3ffb840705607b1e5a616b00a53265a79706b86ee36b5862b11f24dd5ed57be39896d42e21f05298c599fefc3f907afbcb189d708b3d3459c8c128dc005", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000177bd50aba804d97691c53b2799aeb05c39e4124382959dfacfb3fe4f4a816a0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709003456ab273d052f7682ea7ba67c52a6dd3a9f89474e1a5474a2c059c4fb1784ffb0fa44d4685953f51b48fac67b45dc4ed9c22b4fbc763378a52413458e385706" + ], + "outcome": "accept", + "facts": { + "reason": "occluded", + "from_index": 101, + "last_index": 103, + "spent": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ], + "held": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 3, + "joules_micro": 9000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 3, + "joules_micro": 2700 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 3, + "joules_micro": 1980000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 3, + "joules_micro": 588000000 + } + ] + } + ] + } + }, + { + "name": "termination_display_off", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130300127a000000000067000000000000006700000000000000040000007ec377c7419bd24717a0cb9a9f403d8f41d407242f5f42a58d16d8caf84a0af700000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e0000000000000000010201000000b80b0000000000000000000001040100000084030000000000000000000001040100000020120a00000000000000000001030100000000b9ae0b000000005d303eaa66624eceb3f1073d54b0e876beea1881eab6beb265b8f8c1dfe7415e15952ec1ee6b0f9d55b278e6449f101e82940d0af61e57874a9d2318a1202b02", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a137f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000018b3f2e4646c7d0e243696dd2a368aaf631a16c213c803c06b579088d1deec640039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001f23bb3636d6913d1be18f9f6e393aa9428142c9a97b1e4d0d1d131ac4f78c7e4049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100e80e4a806dff8d4f5e93e5052827fc9ebac2beb30b85981fa966e39bff380dbadffceb8f3848e31955c5aeb0a13ee6e614ee4dd48c9465f4ba6858f0f60e840d", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a137325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001b11e82563ccc65fcfa06911296dc771b5a97d7f03160da83a365d0516f8d0213039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001c1d077f564b15be9784fb5563e28460d155ddec9954c84b803d1ba4b0dd803eb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100b28c5d5289e77ca49293e1b3aefe85e5296362b8d5e2ed3e2c067b23c5a1e61dfa7a1a99ee40090df4e6b3ef918c97104c2d9e4927f31654dad97b8ac3df3e0a", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a135096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002017d003dc40b17ef964944942561d641c9cf71a0a98177a77ce110194aa33d247e020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001119f0eef9bb8ddde009b58a39d2b26653b2ad4501794d744dd35e3e7142d9815039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000014c757c353754f5562ab5b8110c771f24cb37ef024aede158250007c46bae0356049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101006f7bead63bac51d21d2c1e84b01436ee50adc034633bd41db407d19930732d04578616c373a1fb08029c63aa39005b7bbf41d377fcff8c33f011dc8ae2af3901", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000450831e6025a561975013b77b8469b32c502ec59df3d5a946ab0c319218da59b7016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002011592a4256820053032543a3b1bf4fcc120d16aa8bd997af5674fc3540317687a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000136e8aecfe8252507fcc25b5cd757e2db50ab2230930789eb7a23adc35535052d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000132600020f750ebac65d182128b1c8edb5317fd3748f5bb8e0265a85a1aa376c9049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010086bcd7cf6bee2c33784400f5e5b9b1e7ecadb8ba15c2eac319fff6ab393d887266570d90ba2d5d48a52db29e70783f2ea353bdd3e0eaded0908af782ed42270c" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000003ee272364a58cd244cccf4f7279cc02e9cb430a7cd9fd2c1dd4f83e419795467c697f66dc6bdceebceac0bffef88ca7c097ebeae9d46327b12fd3761c7472408", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900c07d43c24248e0afa70ebb35115bdbd6b2a516dee734c7bf50123c2d1760dba40db3b8048fefee9a482055f3976e701f6a0a8f6ce8f709c26102311a38f1b50a", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000008a94ea1d179cce6e5ac5aa82b2048d004e8cdf36c75b979954508cd58f05f99419edaebb91721a145de0476e72f52225817821cf739fc1efdd5e4ea23f9210a", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900782d6be3812eb9378956929ed681aa612e3e9d5c77fc2dfa54e1503f9b76c37c81ed89b2c3ad182181f32f8a90f66e42652b52d563950a54e3af0e5c27913606", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003424ffd4e3656a1e9ef5a3b60c9ee33cfc6386d3e5a60dd25de4fe217affd173eb7eb4d33ebe90aa7af9f1d7f333c3750a919459fb87d8a5c06296085093cc01", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000007b5432583cdfaed31894055f246b78b35cfc96d51e80a2b88409e4ac0f06853d8bd8faf64b7eefa1a6164b402be9c02b128a673081d7a5f748d52f83dc31b80b", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900be834f1eb86d78342b698cfaeb9705cfc04a7ea1e23f7c0e4704bcdd472aea59086042159eb8651404764687936913f5c7d6e5f97adaaff7b073de4a73dd870f", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000006bf59ac5d44584ae0f823410262b0b82a11a5e2a2cbd31fac1bde606c7696f286d1ff892ae0f3ff013266e22110505dd1dd6226d754f06de74e3cead6f14a30e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bb50a3dae55dc20e988fc3c31750cece8b8702f8474c7e5a33eb60371b7fe30e3d37f431c543853e0d0decf4da2f27ba0fc64ca9da510160da7906107cafb80c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000ec62a955586be7299343aabfff532b7992db52c86234a580572b4e085f6e69055bbd871b5727e3b809a56cc60d1b27629280f3612e363c4128ccc9df2a2e4d01", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000e9a713a2883e3d38c2714f97c4fec53bb9e002d633fa9841d448d8824edb3a130100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900691c28f76bbce072cd52ff371d26edbe95f39e8da2cfb65745b72e8784ad5b93f8d1795ebba896816fd9ca3096151d306957844fa03b7dde04adaeb10b684806" + ], + "outcome": "accept", + "facts": { + "reason": "display-off", + "from_index": 103, + "last_index": 103, + "spent": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ], + "held": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 1, + "joules_micro": 3000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 900 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 1, + "joules_micro": 660000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 1, + "joules_micro": 196000000 + } + ] + } + ] + } + }, + { + "name": "termination_autoplay_off", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80400127a00000000006400000000000000670000000000000004000000536f2f4ac09f3a09156a3d2d7af56ef3a3cc1bd6763e1c2bb913f06b4099c19200000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e0000000000000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e00000000153f596f5235f16c87feda8f9c46ec6b89eb9cdb852d3098c965ea696cbbcb686c1ea3674021bd9849b948ad68f6e1c5a09d99dd394a1fff182d3aed8de8de03", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d87f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000017a1dae0d3d3461a3960c88b3c847fb2120670630d0be8020dc390db1ae7d3084039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001f90721668f3a716c0706282d12d3298cd799aa4b7db394c25fcc3e2e78ec728e049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101007faec5ab59c7dfcffa8132b95d0c1e0d99b4fa910017dd65638b7e21256c956bf6738f18fed89351591266b88704f2bfdb9ae58336a3c2e9b0238ee02605b70f", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d87325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000010cf1e9e3e4dbd4d6f355a5ff1613a3db20f77f815627a2b2116d2c2743222ef8039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000019769086215bc49af7c64fadb39390d41d5ce982618af354b34af511a0e2e8284049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100279acfacdc025fea156b92608822acba89f0a1461315c8bfd58768ebe8ae594c066c02c4477c72548e9f694aa979844e5a82a6c4f29015b247530456eda6d202", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d85096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002017d003dc40b17ef964944942561d641c9cf71a0a98177a77ce110194aa33d247e020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000011adf46aa29f81b83b92473980022c1b58849e02b581a9cf0a7e9037346cf3a4c039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001dfe3df4b725180f03bd96b62c6acfa5ebf8b835cb7e26b8448d0be335da461a4049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100677519e2f6947d47c24e84856b845efb92854d66f378c25bd9f1fd884128f5187d64a967972dee66930e4af11b4f5bc9ecf3b0518bb6accf30c78ebc3a844d06", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000450831e6025a561975013b77b8469b32c502ec59df3d5a946ab0c319218da59b7016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002011592a4256820053032543a3b1bf4fcc120d16aa8bd997af5674fc3540317687a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000018206b2d97d7bbcd8ec4e9c31583e1d8d5f1e9bf29d6a3dfdb59af8250f3d8271039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000014fb68fbd4e97cb2aec2699cd659aefb7b56311df1d0349939e8cede8047d9e2a049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100d309755502b51e06f5dec2eef9035d6b968e2511c4dd17cc8c4ddc4935ca7dfc33d1cddd271b740c6565f10ab18bae60c49a664b234bd495c466d8c5b3d05c06" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000270de2332f79c6ea0545c33b1fb4e96e174e096c7906420fbfb2036d0b4d8dc5b0b925262991f38d67da25b76ac18e79b60b99370dcbc4da9aa3da5a88698d0d", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709000f681982d0b649d9e75b843fd99cd912d8c27570c87354f14fc64e4e1880a0caaa4ae46c78f5532775ae23a1a2ad9be3fe8131a0349325c5e84f906ef036d407", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000004b87eb668eeba7a09288c620569c3bac6b44718ba05998dd38ab84891cc0e358a31b6e62d8611da741010930761a42271b31139d474aef5ddbe75813b6c04e0d", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900072d5c4236f55703bb731ef841c1fb941d903c58efea4cec1551c2455177a3a993820a69fa2cb863a74bca15574d06a641a3f402c1c34d144f4fe52507baa209", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003424ffd4e3656a1e9ef5a3b60c9ee33cfc6386d3e5a60dd25de4fe217affd173eb7eb4d33ebe90aa7af9f1d7f333c3750a919459fb87d8a5c06296085093cc01", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000015251cfdead6fd3494e4bcaaa5fbddaddcdf1f1c7540856223e319c3909bf45047b8320c19decc1774d78bd532909b6357d3dce16a830f2c10d396a0dbb8c209", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006a9f8faf022434e4b471ab5bd6f7adba17a7ad51bb4eb1633f97e1b1bcb144ec7c830e35c1baa0584ae68dd60b482b66342d26e7e0732c7bf498c01f3627620a", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000006bf59ac5d44584ae0f823410262b0b82a11a5e2a2cbd31fac1bde606c7696f286d1ff892ae0f3ff013266e22110505dd1dd6226d754f06de74e3cead6f14a30e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bb50a3dae55dc20e988fc3c31750cece8b8702f8474c7e5a33eb60371b7fe30e3d37f431c543853e0d0decf4da2f27ba0fc64ca9da510160da7906107cafb80c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000091561af36d3f29813bbf1603d0686c68c079851e1b8acc42b0f7a12e66905501b8384882b99fc77eb63ede9c36400498f0d7e5167a0a98bbc776b27305d7e40c", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000002a0cb815f2cb9514b94595502774481a811ec4f71f7f67a1d3c9c17aa7b738d80100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709002555d6c994f2dc384ff9e37e524db4b16cf172cd321db9fddc16229655d4c903dbc205eb722005a4471c099f2058da57c449e314bb96fec5537060f462633f03" + ], + "outcome": "accept", + "facts": { + "reason": "autoplay-off", + "from_index": 100, + "last_index": 103, + "spent": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ], + "held": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ] + } + }, + { + "name": "termination_idle", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180500127a00000000006600000000000000670000000000000004000000a98a71b786e50a09f53c3644315cb9471405326a6ca42242c7d8392b865e091c00000000010204000000e02e00000000000000000000010404000000100e0000000000000000000001040400000080482800000000000000000001030400000000e4ba2e000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000b971bfbe05e8d6223729c83a7a1f29db6f3b09c9312614ab7e983f56d06c38e98fe0ad6e797e769bcd3eb8687c23df8ea4a2247de15a2e5ecbbaf5b52c245b06", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3187f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000004923797be8b61b62d744d7fb8a4bb9005164d63da6b7c4b5612895797204f5715016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ec1d061c4eca40d31d78d1d3ab0eb0f71d535b3e96670971f241b510423dd68c020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001611da80cf13951e4439051f17937a99c0752b16568eed936149ba007443ae10f039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001072f00aec70ae4e3b282416536c0d8d28c7b96fa7af4c9e2d3e6c98c5b97dd66049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101007c26db7ad39d4544609e03ef6ce18cccece84c89f0cd685205576156e7091dca2b76656a646d8e884272d675c5e8e72850af5f567af8988cae052a2c60af780b", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3187325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000004fc56fb8f645e2ea282726031842f3299135a78ba57a819481363b7705fbd83c2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201134a4fc2005063738f6e182fc6fa1fbdeb0fc8bf92da4026adc50e3d45345e32020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001641f1ef3ec55829a621ada35634249f835124a2092b24d29680ae0a336882711039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000013adfbf9c3293fa22a68a344744a640e1aaa2674cf90a7bac1aca9f3ba8020126049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010018f7db068e2e6f8284c1803824267217f022bb524feb559169b4af6f2b4b47f5176ce7a5523605410fa330524539a2c90cf4f9e4c0fb2ee227a47f079164eb0f", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3185096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002017d003dc40b17ef964944942561d641c9cf71a0a98177a77ce110194aa33d247e020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000014c465466ac8075abf180b6b91aea95436bcc362ab25719bfc03e59b65d48db9e039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001b031ec2842b9b05ff1ec5692d3c891b91b32cc83ce355fb1fbab19e36e9a95e0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101008c341aa51c10080dba439cde3652dee691b355bae4174176bae1278de45393ccd121d190596a54301e430f4d731a011284b6213ce041dc53493ae00c7dff5c03", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000000450831e6025a561975013b77b8469b32c502ec59df3d5a946ab0c319218da59b7016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002011592a4256820053032543a3b1bf4fcc120d16aa8bd997af5674fc3540317687a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000014d68e4bb4ef1b81e68b15fab6840ec1d6e77038ab4110171c5b5451614e86cac039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001736baaa2a99f70f5fcc75ce00caf1ebec39377fbf6cf0cf1895ba141b714b259049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100d03a630d5c73cdd13749540803d806fdf7b5ba2df714fd32a650849b95cdeb531a6758acc30fca20be7cb2e649b27e9a08e15a02348b9c213cdcf2d28f42e209" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c6400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000039d0a074d880376ce96ac309997d7bff10c1ad159d775e1f5bbd736dd9945ee649d15906a7c4499f1dd8456c4fd17e57af82930cbecc59e13c07a8440ad4004", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c640000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000006a4e2c9f32c9607998be48a4d35c9648e8023c9fdc6184570242a534e10abc924906ac8968aebc6648ad654e84e0e936dab9578cfc36bdeddfd1fa69e219c705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000097542024ea375c453323b8d99721b40025e0ae6c020307298a319bc2567230385590884a1abb21b5faee90140a5c6f5d0a4b3b69c98a19a2a82cb0205282ed08", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777f0ac7703f650b231462d5bef4539dd91152a179f3e7f358da033f0410ebed5c64000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709004bacb86ea3035815f83fbfa8e131abf1ebbe7bdee2d60a08343b07c71b29b68010fafbd112c1ee4bbae7f71dbdfbac2ac55a558574a145e353d026fe25186300", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c7325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b6500000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008b598469a8a86f0b67abe06c585865ee18bd4d8895c96a68876ba567f0a6b375902ef163e21fd857f2273a7a83003ad59c482c36650b9d0945fb6fc471807106", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e97325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b650000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000e0d0d242cedc95ee56f765b7027295110cc08aeb18cbda8ceaece6d1db5f49c3e7f1e29a2e0916f416d2db9cf80cb5e31d15d1ba5fc297856496b42f7188b007", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008b6dd9291eb0712f8b7e9f3e6b12347e8f9f98f332d82d43bb8af7733c32c3a88ec0cabecdb7362a67f6183daac9760d0091f78821873979c8bc1a6ba3889e02", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999777325ba1b77f1afc1679a9943b2ce0c4565029fce755e8528f20a52277f08db1b65000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900813356a69ad7df4a3bcf1c4b8762bd0af33739e4049671640f84b8b9e3008aa11a1b3e1bf1dab8ec83fdfaa56f20790c78a903e96c86b9527730195d99627001", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003424ffd4e3656a1e9ef5a3b60c9ee33cfc6386d3e5a60dd25de4fe217affd173eb7eb4d33ebe90aa7af9f1d7f333c3750a919459fb87d8a5c06296085093cc01", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000100691597ce983f12ff653d535609085e06ba002d87c55f2ea0517e6b2d072014aa4ef89bc510a60a3e48a074a66da9b7fff8baa9af1cc9e7e0075f87e85e307", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df966000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900ba65e0325949757add473e4962370528aaa3b697ee53fd1e23a290faadaaa204a2c64a152d2c2e6aa9114294fc15d59b8ed9ccadb0a16e1b0d313dca5f29720f", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c0b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad6700000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000006bf59ac5d44584ae0f823410262b0b82a11a5e2a2cbd31fac1bde606c7696f286d1ff892ae0f3ff013266e22110505dd1dd6226d754f06de74e3cead6f14a30e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e90b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad670000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bb50a3dae55dc20e988fc3c31750cece8b8702f8474c7e5a33eb60371b7fe30e3d37f431c543853e0d0decf4da2f27ba0fc64ca9da510160da7906107cafb80c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000d0d3f2b62869da8ea7948eceef7ffb8e4e8e0ae6ea985a3935d9791b16de2bd8c0128826de0facfc5e989d94d520f6ccd83737cc1bd66473fedcccbae727670c", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999770b216ede39bd7267ae682dd851dabf6844687810a414946dffb11a20fea5f2ad67000000000000004ea60de80b98efa7f0be0de311815f16e397584e7a36e2d0c62d78beb745f3180100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c027090079bf142668ce662e4f7fe3ecbb7c4b34ac6cb104668e2c1b64043415ab6979287a807b800a81d65637d73c0e0d0454fdec4cbb759cbbeabeb2c292fe78df0400" + ], + "outcome": "accept", + "facts": { + "reason": "idle", + "from_index": 102, + "last_index": 103, + "spent": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 4, + "joules_micro": 12000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 3600 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 4, + "joules_micro": 2640000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 4, + "joules_micro": 784000000 + } + ] + } + ], + "held": [ + { + "role": 1, + "unmetered": 0, + "totals": [ + { + "class": "ModelBased", + "figures": 2, + "joules_micro": 6000 + } + ] + }, + { + "role": 2, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 1800 + } + ] + }, + { + "role": 3, + "unmetered": 0, + "totals": [ + { + "class": "OnChipCounter", + "figures": 2, + "joules_micro": 1320000 + } + ] + }, + { + "role": 4, + "unmetered": 0, + "totals": [ + { + "class": "Estimator", + "figures": 2, + "joules_micro": 392000000 + } + ] + } + ] + } + }, + { + "name": "record_legacy_class", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f757625fd554a54b1359921577744ffac366c68fca70b35f0a828401d3dc171c38780000000000000004e6ece9dcef1ba2f02477ee7e8ea51ca15bbdf3019e63106af85480da01c710a8016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019ff4c6c7bcfe5c1eaf0481e6c9811c8b56d950aa128355dfd84035000d74e06f020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e900000000000000000100000000000000000000000000a49590aa6566dffbbdd94b555a24b6a019abaf63b310f2c82883792d19381a4f039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000018177c3cc8a16b75270d7b53da5c650323acdc64b549ee8e41bf7e5bec8de8cec049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030101030201000000b80b000000000000030100000000b9ae0b00000000040100000020120a0000000000d81d0a0000000000020200b9ae0b000000000301010015ee023569d084a69d7b471d78bc9ddd4673fb5dd3baf7a1f3b6e00c159be2f8f39bdaf3b1b33c9601a9396113cae16a18dbc67a0897706f485127994e134f0b", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c57625fd554a54b1359921577744ffac366c68fca70b35f0a828401d3dc171c387800000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000658ae7e97f82cc03ba82dc15b865e99ef7b053aedba58e2e0d39492a003be955ee5799abab96ecd2d84bac601b0ad4cccde679de58c460b37282a65c40d33305", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e957625fd554a54b1359921577744ffac366c68fca70b35f0a828401d3dc171c3878000000000000000000000000000000000000000000000000000000000000000000000000000000010000008403000000000000010100008007000038040000c05d0000080180841e0000000000006a56c8f5203d7980acc00f6fe004d8af7fc4c56173b21f650f299c77ebc1b202bb7e5c2e7fd2486e5e27997571963fc4654af2b19f60e3474d7c7af8e225c801", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997757625fd554a54b1359921577744ffac366c68fca70b35f0a828401d3dc171c387800000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000abe4f31f9a6fbc652250d8dc97937d5386998712f7253bff03978e0074f03301d2c3ecc08fefe07316b2c6c0cd40d07f326cbc905ce8cf66ea8cb08ca01c2701", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997757625fd554a54b1359921577744ffac366c68fca70b35f0a828401d3dc171c387800000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709007f77b4c550532fed1806021b11cfb21b91fc582507708c3f58f5c50135aae99f36c56bac215a98e28c097247f3ce21cbb5f996c1f72e5696e6eccd28c0991a0f" + ], + "outcome": "refuse", + "reason": "legacy_class", + "place": "hop/1" + }, + { + "name": "record_class_beside_zero", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7712d9195652c12e0357b071243ef5c73361f5fd97a2d6573737221344a554c437900000000000000049acf5f78f8c30c7f9f658f37e3e43b596e443c395ad404ead922a8efb705a35d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c00000000000000000100000000000000000000000000e5004b5814a5e7be7ce8ea5a3d01d0184d2a2e1eeaa876af69a284eb9af28acc020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001ed6d23779c80f4fa4dfcbea0c263cf0f8440a80f8e3e1f1e13ae900fa6f17e2a039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000193d9d221ea3af335bf2d7e3c1094f4583fcdd13d0dd44509e987eaf70fb46dec049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b0000000003010102030100000000b9ae0b000000000402000000a4150a0000000000a4150a0000000000040200b9ae0b0000000003010100040ae7ce768fc3a2df4064301cd8ba2e5cabaaf8ad2fbcec1562b12b57067aeb5d21387caa20db0e08183088e83a50b708953407d055f511f04b8402fbfe620b", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c712d9195652c12e0357b071243ef5c73361f5fd97a2d6573737221344a554c4379000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000020100008007000038040000c05d0000080180841e0000000000008eb15b6707a5211a485d5239041133082f6107dd2bf873553b41eaf0effc2b962ff6eee5453776b4782c684b500756f11d27c95bbc6c8a86752dfcaf713c840f", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9712d9195652c12e0357b071243ef5c73361f5fd97a2d6573737221344a554c43790000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e00000000000072547ca01353107e9737ab52b61cc5fb234c981906882d81b675f5a5716215fd72a0b3d07aff1303d8a2c83bd0e97b5aff19d4c04570ce900dbc9bed4a5f990b", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977712d9195652c12e0357b071243ef5c73361f5fd97a2d6573737221344a554c437900000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000aaa9318e22cf25174ebd200429fc4c8bb0dfcb0bca1b0bee209acf4db13eaf18e3e8256661135437f4000685cb9c27dc43898582e011612aee903f94a3664508", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977712d9195652c12e0357b071243ef5c73361f5fd97a2d6573737221344a554c437900000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709004f2bec593e67fe6fd609be1ae0127dcd0e58b0bf1bd99cb851262adca43e2b72c763b19210c1013d5fa697e9ec3e9eb6ba4057497163c5092713a999cce76903" + ], + "outcome": "refuse", + "reason": "energy_invalid", + "place": "hop/0" + }, + { + "name": "record_relay_names_a_stream", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7a5e1fd277c9c28c2ad1e442ba95326d035ee5ee64ed906bb27161d0f302b79817a00000000000000049a19bb0015a9f505c6e2bb91f71893bb1e7a8899a9ef889cb77b4bb059cff0f5016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201dd9a9c769ffab563228e81a92f7c10b05c41e19a79d59d0aaca3297d578d7b6a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001e8713a87ec30a842c8145360e464144cf03f549efdecbf7a12f980d79c3db08c039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001b443d45c1fb57510968489375362d48bd5a06236f731ee7f37888404baddbffe049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101005d4ac1ef96e94404b2daf8303b3b69f3a17168ba4eaf04c48f3635e562a4fa9d6e79feba40d632bb6a246372efd09a67b7932d56d50ad09914a6f8cacd881709", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca5e1fd277c9c28c2ad1e442ba95326d035ee5ee64ed906bb27161d0f302b79817a00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000f75c66c248bf806acba6da7ddfd329960081c9af450d51b61871c368136b618f3fe20f7d1e7b400497ce90f7acd8e6811dc356392b39bda0d33d61e68111af09", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a5e1fd277c9c28c2ad1e442ba95326d035ee5ee64ed906bb27161d0f302b79817a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000bd50dcab407c267ad912776dd84f27e974c2afeb5d228db867dac2fca2d77e2bdad8b60d3a09ca5190ccda9c7291445e3da9918aebb8919ccbac3f881f856f0a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a5e1fd277c9c28c2ad1e442ba95326d035ee5ee64ed906bb27161d0f302b79817a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000064ff0a783ea84acd0ad880fa119a8358c693d88888f3da467b1b7111c4b4bdfa8314de702134abbd4340cf1ba20fde565040b9e4536dffca6416053a0f3c9903", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a5e1fd277c9c28c2ad1e442ba95326d035ee5ee64ed906bb27161d0f302b79817a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c027090071036453f10bd16864f48043b20c3cf0889e4d6dff82a583c817d38e1f8b5b4fb359116e5fb6f985f52cf57f16ad710259a18f3d00f6c8cd15f304db78c43b09" + ], + "outcome": "refuse", + "reason": "record_invalid", + "place": "hop/1" + }, + { + "name": "record_estimate_without_basis", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f727a92796515c19084a4fa326ebf316844496ca410db37d81f44e691690b2c7e97b00000000000000047b1a41a0423a35560beaef75b0ba907dfcefb95b38c3dfc9a7471cbfb83892be016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000301675b0db6df0fabcb76fdc37bfff30fce3b415bf5ea42c03b19293773645b914f020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000016409ae9a1326330af1eb35fdc113948f22dfa1fe97b646cd47946af2a416e214039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000117504268bdf66c78459a218577f9fd29f7fe8182976cc26221e6c9005ceda83e049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100020302000000b8c4ae0b000000000402000000a4150a00000000005c210a0000000000030100b9ae0b00000000030101007ee9d27b3cadb881f379f0a3871dbf7b6bb51bbd9bf474a2ec0247172b7c1c480d55a1880f5f7e49a6dfb0c2300e8db525d6177bbe1c9d07449d585cdf0e9207", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c27a92796515c19084a4fa326ebf316844496ca410db37d81f44e691690b2c7e97b00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000030100008007000038040000c05d0000080180841e000000000000039f5e599263b2d8aad87d1237637f54ea9977e4d6ce5f5806ae274c2540e4b0115506360380bcd7fb7059b40d67e59598fb6ff7e9e65aaf43ef7d546fad0807", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e927a92796515c19084a4fa326ebf316844496ca410db37d81f44e691690b2c7e97b0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000a035a6ec58c20e92cd97b9559c15f6cd85378448c8b47394494225b361c9755d2152aa36636c117729dcff8982571175a2de2ff35323205e872b6b4c4a0e8b00", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997727a92796515c19084a4fa326ebf316844496ca410db37d81f44e691690b2c7e97b00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000720ff81a371de0bc04cbd5f3f8363ed851d965a76a6dabe38b0758966e981c6ea0fb44959e0f223f920c9694564fb468f835edfc81c7043b9e487452c9955e09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997727a92796515c19084a4fa326ebf316844496ca410db37d81f44e691690b2c7e97b00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900a417d54b11e32c85352b27596d8b4f7c924cd154bdaa66192669758158f36e4a3d407815f0d1e40902abdcf30ab2210f22f38c74614387ff33915df33bca4507" + ], + "outcome": "refuse", + "reason": "basis_invalid", + "place": "hop/0" + }, + { + "name": "record_display_not_an_estimate", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f74f2e56db10c236a1a4b168706a95a907f29f35e65dd577de9383cc1ef882dcc17c0000000000000004e6b535f66cdf6e572501e028c4554fd6c3422740549de5e85eccefa1b799c057016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002013565813e3810a81fbb248e6751a73981aed7fb155cd5a03821268fa557c442cd020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001322741b256ca2e701a9ab6a4819ab7f1c770b1c5be6a6c2a7afd17ea12124527039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000015d52750a9a80a3441ca0174240edbf429be817a0cdc818924cbef9555367c2d8049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b000000000400009c4000000000001e8480000100020201000000b80b0000000000000403000000a4ceb80b000000005c210a0000000000020100b9ae0b00000000040101007bdb9ce10c3af4f5457933749244cc5f1ea2d0da43cd7730bd65e4e8400c1adba9832913a541e6b4f80abfa396cdc0035080a6f51ebf1e747cda3b9b654e9907", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c4f2e56db10c236a1a4b168706a95a907f29f35e65dd577de9383cc1ef882dcc17c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e00000000000022b273449aa3b377519bdb385e92d4a3be5ba442c1df1fc517edeae6787db0cc095ef1dc97a28fcc20ba8f60082f8a6c171a9ba32c87c5119682f74eb4dbd300", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e94f2e56db10c236a1a4b168706a95a907f29f35e65dd577de9383cc1ef882dcc17c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000000392d5c11166c759b3916567ac0170534f8457e403ca5ece62e9535d2d0bab048a7f417c4f919e8be78e2881356a2347e1050ccd1b885b144afaf16000135a0c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774f2e56db10c236a1a4b168706a95a907f29f35e65dd577de9383cc1ef882dcc17c00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000eb69fea98087413b889599b69271e321abf93e7408af51c95534171748dc6667f58961046e9d62218689ce38a73ae3fc5e0df77b8f7e39b715a366a102511b06", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999774f2e56db10c236a1a4b168706a95a907f29f35e65dd577de9383cc1ef882dcc17c00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e00000000000001000f000070080000c0d401000a0773060000c4090000c0270900f63964f71e035015be3c8714efc2e7c96dbf005f6fa7a467619a872eb95875bf2f0e2a87184f0c9fd29b36eea9f97f22aebac458216c15c1b1821e9ee3766a08" + ], + "outcome": "refuse", + "reason": "basis_invalid", + "place": "hop/3" + }, + { + "name": "record_basis_mismatch", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f72bb16f8725fd3fe994cd7d6dd8dbf78f4a650ba8f6f5e702f42ccf58dcfb1ebc7d00000000000000046438dd0bf76c6a56ef3a3c8c5ee10b252666ee911757d19d7e4d4b933ba4948d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201c37d83420bf49e2a8c88f03943bee417cdf9f559006aa131774f7543c29ebd9b020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000014a3497782bdafc7ab8cee1da23c64a8220c9d128c7d10a0ff0c53972c2d48998039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000137e8ce58980c58ad8430938f54e80c3c52b22d8e84c5191cc377ef19f3674f6d049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997701b9ae0b000000000100000001b9ae0b00000000030100030201000000b80b000000000000030100000001b9ae0b000000000402000000a4150a00000000005c210a0000000000020101b9ae0b00000000030101003e40a15db64489ac0b18d7236f23d53bae6995054c52f339e8c8760194ee92c06408e20e1c08e1b8cf7600bcaa56ac4c63c8e80d2e6d3a84d31315aa6a90010f", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c2bb16f8725fd3fe994cd7d6dd8dbf78f4a650ba8f6f5e702f42ccf58dcfb1ebc7d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e00000000000002d8c63cfd9192c8bd7e1ad3cfefe8d61b764acad5798b80c280f1cb9afc9c8643c6724c82326beec9f2b37e02c27878a1fca578e7b918912eb8d752b22ce403", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e92bb16f8725fd3fe994cd7d6dd8dbf78f4a650ba8f6f5e702f42ccf58dcfb1ebc7d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000003b466c292f4a55823d7e9423f87cce848d027e1cfffd093f19122c27b9f3ea2b9a06de38cb8705df1c453075b59dd08049b6d6bbc164bcea9fe30f4a6f0f5a05", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772bb16f8725fd3fe994cd7d6dd8dbf78f4a650ba8f6f5e702f42ccf58dcfb1ebc7d00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e62dba19be07d46d282c40ed913c8d1697d4dd3f2076b1ede4a7063d27d0ff44e02efb76f08be40612846e9472020a1a850cfb004078395be386fdd912fef009", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999772bb16f8725fd3fe994cd7d6dd8dbf78f4a650ba8f6f5e702f42ccf58dcfb1ebc7d00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000001b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900a6605d5f077000e2d52b5b26959fe6877be77818efb9dcd8d937899de2034da316117ca91e8ff53483d2b2a1546e3c5cd43e7fb744bc9afe78260b1333ee4703" + ], + "outcome": "refuse", + "reason": "basis_mismatch", + "place": "hop/3" + }, + { + "name": "record_counter_outside_profile", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7085d731f19a4db2b09c1d03daecf52e66b231ac2f761705f17dce9097065f8417e00000000000000046e65476ca6a28e816bc5ce4c926118494697d781eb8e80606daed4e50b611f68016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201fbdfaa9c0866ef4ce73c8fb34092c61931f758260a50ec2860a750ba8a216e6a020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000140599b22174ea814b47131311ed19d0f69ab24bfb9e8d0713640547ac533d522039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000126d2bce2d6a72d22977cdda6319377988ac26f8912c4ba981536d221151d2d2d049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000482fa66ed9c35bbc214ef08379b095b249a060888b6294f9183c4da09da95e04ee11fd5d010ee2e82792e3795db95f2d92c786a0f06c52df586414be02ba10c", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c085d731f19a4db2b09c1d03daecf52e66b231ac2f761705f17dce9097065f8417e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000bfee9a2b6591685648882cece75d164afd5c192950c2e756106c85a392914c977414694f97045f0ba645f332affbd82d890bb4444be1d69578803130513e4d08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9085d731f19a4db2b09c1d03daecf52e66b231ac2f761705f17dce9097065f8417e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000149442d2113ef712ca312ebe29baede429697c501ff7aee2e813feec08c9da2a56ff6569fc7dca310d77894fdfbe45144ec9a342cc8aee202e18cbd792415c07", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977085d731f19a4db2b09c1d03daecf52e66b231ac2f761705f17dce9097065f8417e00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000103018007000038040000c05d0000080180841e000000000000387f872c783bc9f5c60c23e6ede366886d620d56fe237116252dd921d15ada47f907f990f5fd6900b420964494f913c686aae6222a651763588f588ad04e6a00", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977085d731f19a4db2b09c1d03daecf52e66b231ac2f761705f17dce9097065f8417e00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709000dc7db4ba8713f9f386506c067a7db2dfb0cbc89649dfb404583613547a482bdb9ee72d6d28033a141c353c28465e4835ac2c54afaef79bea78e65313e7c0700" + ], + "outcome": "refuse", + "reason": "profile_mismatch", + "place": "hop/2" + }, + { + "name": "record_counter_without_profile", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f73bd61f9a3278b13c922f8bd10015ec25c1a573321a29ebd7db57eca797e0d00b7f0000000000000004d01606f15146a3d058f842b5e0a0384d7056720b0c42fe798f88f79b4cf84e12016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b000000000000020131ed1d1964470d97ae2f89790e8807aa263f01fd7c6ef6513f7012a13b8eedec020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001dee236cce35c34a32b45fa91cf796c27b951da76609f307863e3dc7f8f089a78039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001073523f6362adf7d2b6ff73548b19e68cd80343673ad579ada948109948f5f9b049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010007787f29f97e16452335d1cd3959391b09ed2aa9046d33bed77e67bf65f9a9afc93815cbb4b5985a418d28cf154d750faa7a1c1d23b64b2f27e486becb787d03", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c3bd61f9a3278b13c922f8bd10015ec25c1a573321a29ebd7db57eca797e0d00b7f00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000823eef23850571db2de5749aec987ed5432d9293193e4058b96ea66e130a0f719c705269942b26a248db347992d9d706ab94abcf96bb1edcf5e8635114c66b0d", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e93bd61f9a3278b13c922f8bd10015ec25c1a573321a29ebd7db57eca797e0d00b7f0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e00000000000031dd981e2468f0e557984ee1c56502b2bc50e618fa5363ecbc4b558fc01d5a22f08547efd965a276ccad61d701327691669fd572dc258fc00e4d4c57e53e9705", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999773bd61f9a3278b13c922f8bd10015ec25c1a573321a29ebd7db57eca797e0d00b7f00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000100018007000038040000c05d0000080180841e0000000000007f621490a10837750944489a160df6e779af8c22c584debd59dd766aefc591b13895fec02376d319a05c7c57720f01a97825a8642882118096fa72594cf86309", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999773bd61f9a3278b13c922f8bd10015ec25c1a573321a29ebd7db57eca797e0d00b7f00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709000c86a6107257c783920018e01a382ad5e13f00c183fedf407d5b4c3c11390e9ed9a00e5c8993aba7649bde80aee3b462ed8a133714f733718649d4fc88754c0e" + ], + "outcome": "refuse", + "reason": "profile_mismatch", + "place": "hop/2" + }, + { + "name": "record_media_engine_whole", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f73f14104d96418f7ef235278b153c5736b728c86020af6623439ae1401d8066a080000000000000000420e41c41dd3331a398ab8d8faf86caebbb75c578440621e07c04f4c700100aae016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201ebc528f96e3c5446e69730650fdaace3f2948e42f58389cf9f5265ca7326c91b020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001b22bf94b03a626f343e217e6bd3dd2a816323a187d78403b867c1c42588de820039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997790e20000000000000100000090e2000000000000040000cb2000000000001e8480000162e8f5b43f7d02fb687b91b028f40c5109cabbe066f9b33fcae3396c56abfe57049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b00000000040200000014e6000000000000ccf1000000000000020100b9ae0b00000000030101000a6b9a1d54b7aa0a8dbf4bd8ec263b2ffae212a82955a54a72808bd4bba6164ae92732cae3f298360d080f56ba9fe46d76ad098a57f8de259ca16953019de000", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c3f14104d96418f7ef235278b153c5736b728c86020af6623439ae1401d8066a08000000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000811812a4422861c624f3b74291551a011fdbebc64aa3356a64851da83f4e361de83e2c198a3b9d8912881f1b2427be814602a0ab76e9cf703fafa2ae2f0fd01", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e93f14104d96418f7ef235278b153c5736b728c86020af6623439ae1401d8066a0800000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e00000000000098b5afbd4c20514e661d83a59fe7e256543a6a995cad1541b884708101ce020f06d2be4443d8b2671c83b39fb2ebd0b5bb65618eed77360afc9344b27a4b8e0d", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999773f14104d96418f7ef235278b153c5736b728c86020af6623439ae1401d8066a08000000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000090e2000000000000040000cb2000000000001e8480000101058007000038040000c05d0000080180841e00000000000094d254f06035601960ddd404e5f33df5cbaf0dcf470bd751db8926529d71d4769a5539fdda721a754b20e48ed22fb65c6ff82c8af81a0b5b95e410ff0364ea0f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999773f14104d96418f7ef235278b153c5736b728c86020af6623439ae1401d8066a08000000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709003b275588af2c1b79e8b49bc5f3a1828118f09dfcf1dba45e112d87358d91c45d4c19951c32d64e86a10c3a5cb418ae61664ee13b6fc6d29a23f2e7659868cb00" + ], + "outcome": "refuse", + "reason": "bound_overstated", + "place": "hop/2" + }, + { + "name": "record_neural_engine_whole", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7be68561e82381f79e8db05314d7c023b1fd4a0a5365aaa1128e42169657fe92d810000000000000004fca044950a8650126c4e5062a20576f3f2e79366eff483943714a03c7e6197b3016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002014a7726f82512cd9a257ce7682b8cabc6a96475a0ac5da3914f756e2eb085e08b020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e8480000166a7977745497722752e2bc93074761514a99c82f4b83e730dc12693eac5fe67039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000120b800c3d478c858136ec7da36b5f01fbc2389d2e87fd7cf6efe9f49c2d25f59049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101007cbb9ca6d1806240d7a9747a006eb881e533ddcfe48d28b082a80057d977214cdb74626a2da8cf58481b137b974e85e287405665e85cc42061bf621fcd93d80e", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cbe68561e82381f79e8db05314d7c023b1fd4a0a5365aaa1128e42169657fe92d8100000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000008495d7752da5f9ffef42cfea5fd5f7bf3e3e2edeb31dd6fc2c0479bd722be71b3db7c5d261f0d9c304972268f64653d2b46266f6527157da3890df8a49f3870c", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9be68561e82381f79e8db05314d7c023b1fd4a0a5365aaa1128e42169657fe92d810000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000da2c8cba8410167747fbbcf0b0e3a42e42090524ba3a34fe397f904fb34d99544490f93da7450e4e915f3c3d93a409446eb43cb852404c00955bacfce6be3004", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977be68561e82381f79e8db05314d7c023b1fd4a0a5365aaa1128e42169657fe92d8100000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101098007000038040000c05d0000080180841e000000000000143607c156e552d4b96e5e15e5d4314bf2f5f56611470498c56388d5aef9904347af8d529744c66801c8bd15dbb78278e6d5e61a47bafa37fa0580bd8df74402", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977be68561e82381f79e8db05314d7c023b1fd4a0a5365aaa1128e42169657fe92d8100000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900a186ac2fd96d9b98293972c9dfab0ea7dcdd99dcddf54a6f2f06aff5bc9ddbdd1a26df2cc8659f3cff191e235ecf5d183a5f8c846285d975101be65145eb2607" + ], + "outcome": "refuse", + "reason": "bound_overstated", + "place": "hop/2" + }, + { + "name": "receipt_two_decodes", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000005cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001920b0011368ad964a728da1d44c615422a98f53fbdef6bbd814025b12c059072039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700c40900000000000100000000c40900000000000400004a3800000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000403000000a4d91300000000005ce5130000000000020100b9ae0b000000000301010018ecfa40e122c44175fff79fee7854feaa1d840ae19e9aad1fc4c2fd58cad64ee3adc11eb4e893d0464bcb4882cae304cfc4c3afd7d244c65789c76973ae830d", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000c40900000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000b247b2d23d8ff48b5f60bde6ab3b7bce4dd5efc08e91f5254279b3ada22c8bc22767d738ddff2f7e5d649e1345a885d290e2832d51d10035b1761997916f2605" + ], + "outcome": "refuse", + "reason": "receipt_invalid", + "place": "receipt" + }, + { + "name": "receipt_legacy_entry", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000101caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101009f48b94b0b713862d011b6f1e760a8b13a83a59937eecfd826d6567460d7d8606066cda598a6c6d901d690ed342e8d90af136a1f1982a8e042722c243a125a04", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "legacy_class", + "place": "receipt" + }, + { + "name": "receipt_classes_summed", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b0000000004020000005c210a00000000005c210a0000000000020100b9ae0b00000000030101001755eb11f998f74c6faa2d0556b04aabc9a32dcbb3a4edebe8e7712cce45ef7bbb49e7f9b7c3f656449b6a5f3d8a46df109fe8626fa530b6e3ef621a8e3b410a", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "classes_summed", + "place": "energy" + }, + { + "name": "receipt_total_of_no_class", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b0000000003010004000100000000000000000000000201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101003fecc1173fd8515e2c23a4147cbb15b2d45b449491d9374c2dc0f4347ced9837c0410fe375a0310b8a418b764eb4009610fffab03b9a361cc73093c6bbea1d0d", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "classes_summed", + "place": "receipt" + }, + { + "name": "receipt_record_missing", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b8906", + "records": [ + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "record_missing", + "place": "hop/0" + }, + { + "name": "receipt_wrong_segment", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002010e3630fe600e67cf7fb746389ff817b50d37655f4702afcd108eeb844729b55b020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101004013638b598a5ab9ed6657e8267f831cded4e4fa6c96e9ea9b212922da80d9af6d59c59e4edca67ad6cf0ad7bdf5bec1a62327a521b943da921934f610bc2c02", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9e794799dca3debc0a60327c64b321fc8edda47607cfe115f17ffd6e1c1073aae830000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000dfae9d2797d2a2dbc1edec213ec7b36984482058a1ac244486f7b231953bb9b20a030cdaac82d8b0c11124feabc2c8ad44260fa4aebee73b9b4a6aa1c3b8dc07", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "wrong_segment", + "place": "hop/1" + }, + { + "name": "receipt_decode_of_another_stream", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001b23efc846c13cf5a9f403b12125bde01e9ef842649911d9de241d5ffbff266a9039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b000000000301010044df711afadfc044b3c192703d4721af255a71d05109c9cc82ecd0461feb5e9050470622642e8f899da8997cde4c9305147f5263657c7cfd93cd1581be5d5707", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000504ba8ece292ee17a61fe8d018ba2d8aed58311ba4439331717af949bbcc7c5f0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000006d33b6f8881a9d10bcb1142b474029056d1fe15762ae846639595a96e3605afad53eac2f51bfeffca029e35247ae7f3dbc13cd26051ab3dcad96a66a06c8a00f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "wrong_segment", + "place": "hop/2" + }, + { + "name": "receipt_share_restated", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b90b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101002c3cdcf7f5514bee5245f19889bd14f4052a0df9fc25919b778911d493fdfff89eadb5e0f38e928c88e7aa86a40122e47c561d01b8f0e030155593ca12c8450c", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "unit_mismatch", + "place": "hop/0" + }, + { + "name": "receipt_rendition_mismatch", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f7d64fd6e58b5f1cab43aff7057219c17a938f84d41acdda1c7c87dc53ea4ed8ed8400000000000000040731ead9cd33a4769a5ab97d83c27ff415e675a1cd2c779c338bfd253cdc3c7c016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002010d8184493c84e3c1e32cf8d2e11dd53c953cf27857e2eeb374c53b516e48507b020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000012d66a7dcbf1d2b7a6806e61511a64242c111505f82060d983c6dd1de51758dc7039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001bc011f4572f36ba9fbeb490347625caa61128430b40a16cd66afb268d666e57c049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101009e3aaf5e965d721f884b4638c9ab3945dc20c80a49493e357f9aeda2684c3803eaf04e692176e8574fa1be8044260b25bb2098c6a39323db8b0c32bf58d1ab0e", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd64fd6e58b5f1cab43aff7057219c17a938f84d41acdda1c7c87dc53ea4ed8ed8400000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cf4585831b512dbca9ad68aae7aa827f0f36b58bf28f609ba4a79af4de02d14e7a86ed42b0e6e9ff61b5ac82c5087620479103bac19e9c748eaeaaf9c8acd00a", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d64fd6e58b5f1cab43aff7057219c17a938f84d41acdda1c7c87dc53ea4ed8ed840000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e84800001000000050000d0020000c05d0000080180841e0000000000009deb8c2718475acb66ff8e9bcb3cf68e84d9444e5bc2f3a02c30ce92d36d338af89909796138ba3c16998becf06efed54364a57f5b03fb82933aa2b62b93ca0b", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d64fd6e58b5f1cab43aff7057219c17a938f84d41acdda1c7c87dc53ea4ed8ed8400000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000d5431b65da06b43929a9d250aa214aace6a488db5e11e921062ba1da5bf5f9e3692d5222fad237bf53cd1d7efbe65b91583cb780a47a508b82d53fc727936209", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d64fd6e58b5f1cab43aff7057219c17a938f84d41acdda1c7c87dc53ea4ed8ed8400000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900285b36c99c0afc7252a774a42c4b8b782d3a1a1b5f8e7ac82300ba8009a84bd58bb260ac7c7ef11042281fba59c74e08b7e891754ce18a02598cd72e3e4be005" + ], + "outcome": "refuse", + "reason": "rendition_mismatch", + "place": "rendition" + }, + { + "name": "receipt_unmetered_miscounted", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030101030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100cbb8f33aba155a5463ee41254f5a70abeef669424af739038448b6b9b530f83d5e12a1d922248a9e9ff099d4e51673908dcf7a5a8b88ae10781ae0358f954e06", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "unit_mismatch", + "place": "energy" + }, + { + "name": "receipt_partial_sum_stated_whole", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f75096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000004b0d2736fed1ea9a626a703670935b2e2a24d383703b09d33213a8e39ccabee4d016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b000000000000020134139f58cdb15e712bbb4350f3d6e666ea342f91ed8d960568dd665c947302db020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e900000000000000000c00000000000000000000000000438b3d3d5f229bdea7e7ba4e77f1f87105b9ccadcf35ab36b3502a97ffd963df039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016b508d5d4f4d016797538232efb103c575bdab97ccf02b1e240240545f43f170049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030101030201000000b80b000000000000030100000000b9ae0b00000000040100000020120a0000000000d81d0a0000000000020100b9ae0b0000000003010100845f8effd03b4bea9e98d6165c23a85f522d01d97e207b8824845c2af4b9e87143daa4a277e31e64637f684ee8995e186c472643326d56da9615474c1028e901", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c5096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ac145d97a537d1643e052338540af22faf0b91065daf022f3485b76f905d41e7bafb788182d24e4ed3a08402ae846a005301fabf576291c7a9b5c6b8a5c84c0b", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e95096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df9660000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000008007000038040000c05d0000080180841e000000000000be4d6081ed5884613d31bd37f06a4a6a88f52c1166d53f74a9a880257969d1d99efac9c4edbc4fcf407be84e66321f8a7c4dd1668f6f38a0ab7c38eb4d30ff0b", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000f761bb13123a9e1e42907e520c6145ab137d6a2ee101b175c6a6df7e3ed54ce7e33b6de436f32d83187692def798fee3e15deb09aada08424da7d908e0a98403", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b999775096b7bf211ee59bd19b7429e0811f3dd8109c07218ae786c88d0760d9296df96600000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f8d12a2b95dc41085f240fea94bd6669b984957bad9f576cd54841a060110f53fa35c5a22e93115b85e4a2420215002c3fa090fa7fe8ea743c23382d163c3f06" + ], + "outcome": "refuse", + "reason": "sum_mismatch", + "place": "sums" + }, + { + "name": "receipt_sum_at_its_strongest_class", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000040100b9ae0b0000000003010100809ae43ad7e4beae066483e315d6c205dddadc3f8a686f947b9db1e7e3e0c0d4b7e911e7582a5f55e49ae8ea0e3377c995a2f8b2e44ad38d84c1b11b02451103", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "sum_mismatch", + "place": "sums" + }, + { + "name": "receipt_panel_stated_within", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a000000000000000325facd06ad21baac37789dbcd0e98143ab5891c5940d02283099ce9488421f15016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c2823000000000000010000002823000000000000020109e0840b3f55582b22c56276ff918295a55ea777c50f473969dfb86b5b2ea477039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001e0aef8afa20bc1cb61396db5a3b4b00658a6e27f0a48c1cf6c4223b7d18b2a38049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997780de8002000000000100000080de8002000000000301000302010000002823000000000000030100000080de800200000000040100000020120a000000000048350a0000000000020180de800200000000030101004abddf6de27149db3c0f47bdadd8ccffff7faa76c29e9f2ae86da60fde07fa8d04c7e12500cad89c8be1d55af17e44c9b40b0b4dd7ad4f8e72785a8af845f40c", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c76ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000000000000000000000000000000000000000000000000000000000000000000001000000282300000000000002010000000f000070080000c05d00000a0280841e000000000000f0d6df5a146bb6776ab2a922f5d679765a4804f1a1b78bf5d44b307f2a1734cdb7dae75e62584057138f3b291548f5cb65c5b36a149bc42a50a05f8280a64a0f", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e848000010101000f000070080000c05d00000a0280841e000000000000010914f2fb22beed8129f12f3cf2d6668035036a46215ee51381a150767dba134916e8668d1d9cc3dc3a56af7e70c40d4c1509971c23f4e3cf027468a6753d0e", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997776ed0a7004b8e15cb42aaf855125b2642fd05f25c27f43dd35249200db985f766a00000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000080de80020000000003010000000f000070080000c05d00000a0280841e0000000000010852000080841e00000000000102800700003804000060ea00000801620200000000000020a107009f9ac7808521518ccd9ec644b9c19c96ceb4a0e017e7f69f7f49f881aa2001464bc6c6df48dc7fb8339e764a9f621655851145f98c9edf2b2406c6725d580502" + ], + "outcome": "refuse", + "reason": "panel_mismatch", + "place": "panel" + }, + { + "name": "receipt_bad_signature", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b8907", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "bad_signature", + "place": "receipt" + }, + { + "name": "receipt_signed_by_another_key", + "kind": "receipt", + "receipt": "57534531014f53f17618c727a793c63e039abb2aadee2daa3e376e0d0f2436ff6dcea1bd08bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b8906", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "bad_signature", + "place": "receipt" + }, + { + "name": "receipt_truncated", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "truncated", + "place": "receipt" + }, + { + "name": "receipt_wrong_magic", + "kind": "receipt", + "receipt": "57534532019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b8906", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "malformed", + "place": "receipt" + }, + { + "name": "receipt_version_2", + "kind": "receipt", + "receipt": "57534531029884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b8906", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "unknown_version", + "place": "receipt" + }, + { + "name": "receipt_trailing_byte", + "kind": "receipt", + "receipt": "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000004cb7338889595ead1ed8ffb8fe23af974aa513dcce34e254d25bad704a6b6b9ff016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201f244118fbbe946da634f78017897954cad4f8cd99570ae52c4bf75cb409ca141020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001caffd92a579b3661c841762ca65668f4e54e65319bc77ab9454345da4550d891039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000010c15fde42d3db787505cabe2bf9c5ac0e8b563c73dc2e2284ea6e5bfac1363c0049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100db596f01bda9e421d2f4fb29c3938d6a6b72b430a2eb509ae3ef810565ca2446eb462412296939a54388bece01d38333f27bdd530a28f11c719574819e8b890600", + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3c88c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000ae0e810e965f8455d67285190528540c0911605f9d9af314ae1e57894fd90f1a3c0961af414de5d34fcb9aefd2d2624ba9d24441a91a4dac437b3084b2400801", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e988c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd820000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000c8175d6095934210dbf08239493e195fd6a88006a578ab76ddb8f5b8cff233a360c4f38b5d96fc068c952c882d91fab606fd731c5cf9ddfed8c5692df794890c", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000c3bd89f8255a909e20480dcb22e9743a7603a5bb63952bf5ce53cea5332f3004bebf7efbc6c66be0420f89d283e9b18b0bba63eadbe29f90f0926bf99d800606", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997788c2b0fc3264be7204c9eb58e1876b7376b07c7e36c6b59949b5a6f06168e8cd8200000000000000bd8ddb1833255e79ff790c7f90629c3a2fade1b27957cc3ae9dfedeb8ff7b8f70100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c02709006f37261edc96c02a0598397f199f3252281942e595c29d8b5229977a2e9a3b0cc5c2c6777e92976e87cc556f8687826d079e77dcd9685e943963cf0f62202106" + ], + "outcome": "refuse", + "reason": "malformed", + "place": "receipt" + }, + { + "name": "termination_unknown_reason", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd609808d5b00000000008d000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d17000000005df4d2c628852013e7b9046513ac7514da0120b120cdd16ad4fc7bdeef5381bd57a49d84ecdb5734751161a239f6d29adfd876939eff47eb69da7dabb2a0540c", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "termination_invalid", + "place": "termination" + }, + { + "name": "termination_from_after_last", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008f000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d17000000003c88b0afc36210dbdb572c1c74ebc82a80deecca58bedc4d83e0d6e5d3209fad75271304cf6c68fc56cd1e4d60a3ff353259b8dec92fc18326cb54a06b88e10e", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "termination_invalid", + "place": "termination" + }, + { + "name": "termination_receipt_missing", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000a57329de3e6240aac6a8ff6e799f556f42ddcbcdd21afd10fe6d3ec763396a5852509a7199facddae90898f12b9fdc1538eaa58a9bb0330b1e50665412cc710b", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "record_missing", + "place": "termination" + }, + { + "name": "termination_last_index", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d0000000000000095000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000d92d0049d11acb0047affba79e85ed8541244b6bd5cdd8835e6be09adb96882458da63a688905b94f6194e74fc6d638d7989df896edc4eb5a2dff4fe0c0e6c0b", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "index_mismatch", + "place": "termination" + }, + { + "name": "termination_held_restated", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000001725d1700000000bb4e4419e57f8f189b02f8255e1357649ca406d567cf26a4230a10cfeafe16c6a0ae25ccc61b0dc2599b2b00793622859dbacc9056412699ddc3f2104aaf7305", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "unit_mismatch", + "place": "termination" + }, + { + "name": "termination_held_is_all_spent", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c2300000000000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000001721756517c99635bb491415b4f978fa1cc7806757617e96c2eecb523d35b12d87dbeb416a39fde96731e93458379b0d50f6ee8a9397ca41973670621104040a", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "unit_mismatch", + "place": "termination" + }, + { + "name": "termination_receipt_of_another_stream", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d000000000000008e00000000000000030000009144e057f40ecd26c4493f53eff0726d166198d6504590c51ea2058f2b768d42000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000397385d1b16d9c391a23dbcb3916c72d10cb05948ccb4e2584c3adb00dcebcf10c84d57bea006bd3a771a4b008be958128849c68992844fef2dcb9d3204b500d", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977467d9362cee629fd10627e6db656dd0251edd961876801a0090875f04a8df70ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e848000012a8c01e03561f053935a36755aeb9544543707fd16c4e71b7ee13aa078397632039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000015c57e46bad7740ddd2237ca1fb5a007a8ca159ae95171fcbb618ae698d334db5049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100c3da210ff8e58ca5bfd2572be5590f45b475689ea28584a6254e16fcce755dacb2c22ec7c2bad0eb44e6b2fa406a58f979bcdd3905522cc989e0b6c268226602" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000467d9362cee629fd10627e6db656dd0251edd961876801a0090875f04a8df70c0100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000b9249179758be99fd0316f3e5fa3e6d19fd6019ebbdc46b5bff24de310f6c27f2f0242ce4b8f84c67ab7cd95dca6f7bb1b4ea62891a62c4c68cb277f9b74060f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000467d9362cee629fd10627e6db656dd0251edd961876801a0090875f04a8df70c0100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900cd8fa73e97970b027427399c51c3fae5b0e941d906a8f0165ab3addb2a47e4f43f98a9cb6ad61618bb4d671b2682cd769abdf89fd604f73e6b9f1f0f17eb1f00" + ], + "outcome": "refuse", + "reason": "wrong_stream", + "place": "segment/2" + }, + { + "name": "termination_receipts_out_of_order", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008c000000000000008d00000000000000030000004549304870fea839ba00b7a927435658ff8296ed4d07a59b1ef40f6307fdcbe7000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c2300000000000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c230000000078006c9fb46960f29f68953dd7fa480f066a8875e54c63dd08b3b9b631c1d85e7dfb3cfaccb4dd3b51ccf42799f272b18944bedfad2dfa9c8518c8bdfbb6460c", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "termination_invalid", + "place": "segment/2" + }, + { + "name": "termination_bad_signature", + "kind": "termination", + "termination": "57535431019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd601808d5b00000000008d000000000000008e000000000000000300000057cf10f5acf648e9d2058bd65118bc5fe02409fa65c17003b8a4c7820e55602d000000000102030000002823000000000000000000000104030000008c0a0000000000000000000001040300000060361e000000000000000000010303000000002b0c23000000000000000001020200000070170000000000000000000001040200000008070000000000000000000001040200000040241400000000000000000001030200000000725d1700000000a57329de3e6240aac6a8ff6e799f556f42ddcbcdd21afd10fe6d3ec763396a5852509a7199facddae90898f12b9fdc1538eaa58a9bb0330b1e50665412cc710a", + "receipts": [ + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000004c70fb90095d6959d18e412f30f07ab904d9e3bb081fa29c6a5d8b6d9bac3364b016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201e49a70d023258c1099c5700df0b5f07ca8ad8ed97773a37fd611cd3a8864cb96020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001d5bf5cc35f143b696f2ee6f673db12742bafc7bc9d0b15f63ef6dc4071d84e75039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e8480000135769bc369104162e0169190fe7b5d6f4b96abe316ead63bd4f97c54077536c7049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b00000000030101000f034f658be7522f5fa63e2b180e5b8e88c8033af455a87f5868632e05d0e215f44316150e5066a89227e2400f92f4dc4d50780ce844b6d639b1e027a552480c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000004c4db421a1efe5cb94791c9805296ad48713f5f0626a129cfe634c81f9995bfe2016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b00000000000002019d83a53145ed8703c04006108166eab42056c484443e363079b28e428abb8179020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001657d10289d51791563ffe7f4e34d9799795569a2d953e5d2582c4738a35f63d5039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e84800001331cb7ebb6b904b77785c00622e8ef540652c5913eb01e4ae050a863445cca46049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100814d69e5ec2b4a07fc489c7a8efd12e06bdeff704cc9a5c0a73f258a624f2b0b5e42c1f982b951aba2b45f8e9485fd127e0597b0f812fb45ba3c77c906540c0c", + "57534531019884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd6a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000004ddc5ae8b8378e46c8de30d97a74a31d2e0345447612e4e862dc72eaff4814615016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cb80b00000000000001000000b80b0000000000000201b56a8f6a238161044efd7da4905bd537b44dd792c53d3efaa83f34214e928da9020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e984030000000000000100000084030000000000000400009c4000000000001e84800001bdda3d90210786381ea320f022f6443cf75a32f4a704ae1eed1fd3da954a948d039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997720120a00000000000100000020120a00000000000400004a3800000000001e848000016c65298029fb478545ea614a5afd6061898ddcd50369c74c8e9aaff5513a73fb049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b9997700b9ae0b000000000100000000b9ae0b00000000030100030201000000b80b000000000000030100000000b9ae0b000000000402000000a4150a00000000005c210a0000000000020100b9ae0b0000000003010100fb55fefcd98337b00cc610f6f1cd0e628629ac58e054dd8cad10a2233dc5a32b387728b3552b65f58500dbc22f6de9fffd6ba7ad95e2c3ecba472bf239a90f04" + ], + "records": [ + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cd789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000b829f02eb0e2bd30d3b24e6f19b7ba0a73ef24b36fff38cae8d88021e0be8ae8825f3dd843ccd2eccc19b4c58f8c6d142f1a39ee6272efb9f81695e8c6a8b0e", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005e4870653e6975fbe941592ba9630f6e256fd5aac9151c02b1bdd416795310d8c61204a43a3dc61a45e6e8737a732bd8f9d5d8680e9a7a7871c2a4399501cc08", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e000000000000e5b8d0ff45642f7e99b794ca4c96e0076071896bb449c429b42dc961387c87a59141ad513563127c1c840460c669c3100406c63dae25677b448347d9c856e70f", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977d789f20c323c97dc96c7c09f38e354c44a95805f0d72ce054760ae4f525016d98c00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e8653b4adf750e53e93e5cb238ae8ff18dbd7edd0ce5823d7cc74e700eb85d9acbf904e3d754a27682c453066d2dc52c6e8a158bcfcbb9a82011b3046d1f000e", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3cc57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e0000000000000f3d0d78b72be992a463e271a2af529bcd347f180ed7d01b12b77d2fa234daee583e97daab0ea1ca10a1844d8b07293e83c2074c1728a8a826a65c0d1f6dac08", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e0000000000005aa0499b59337c87f18282763f4498445a6b0b331713983252301ce97e6fd790e9db130bfaa8644776d0c49cbc79a7e295b021450cc9237d90ca367605c7250a", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e00000000000002bd60511d7fbf67fa237239f88eb022741ff23fe4ce36210fa343111e0132f45da05f32c37500332af40d6ef6241cf6a64ff197154ba2710667cbedb5f3a603", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977c57b820fb770b2bf564fe3f244116c3aafc4760f0e574573d842765a31c002218d00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900e0672ca6a8486530f629b3d4eff136280d621d641027d5a2283d7413c6672e9f99ff3c7b99a6b90a1c403d0fcf46d7e906a83f1b6ca4900fcde6044d0fdd9304", + "5753483101016695e1791cd9ca368ab707baf66796977db30b339c442bfa6721d78714591c3ca3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000000000000000000000000000000000000000000000000000000000000000000001000000b80b000000000000020100008007000038040000c05d0000080180841e000000000000cd50b4984f5ef902c507f4674932b29634e41ea9d3d5f2d062f859d25d7a94b51d88f49339658affa2ff34aab69b25ec0eaa0bcd3f3868d143dafee8b3329902", + "5753483101020651768747ab121b4ce75eff3281be9d61c1fbf219fbeb49bfcd76df23dd81e9a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e0000000000000000000000000000000000000000000000000000000000000000000000000000000100000084030000000000000400009c4000000000001e8480000100008007000038040000c05d0000080180841e000000000000afac3e92dfb2222842e4e9590787dece457085bd0f48c79eff3a274bfc7d7f0755ee705e48708cccd518e98e56c7923d7f4fa31e75dca0e7b3eecdb72f796603", + "5753483101039884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000020120a00000000000400004a3800000000001e8480000101018007000038040000c05d0000080180841e0000000000008393321f5c501278528a52b6c27f1a8f7eec398ff17e06a0e8ca301051d88b70304c550f4c662abb0bae28bf4f6542d5fe4e047d6aad86076d8e89bfa0eebf09", + "5753483101049884c9aecd4ee20d56fac49194aab40afbea66f96e18aca42a5a40a501b99977a3a650f9dffffbdb07d08be1fd57833dc923234ccd4954c94fb6b2ce953f4e568e00000000000000bd832e47196cc9f11f71b2702b8fbc6713e24b03a79dd0dcd0d5eafacaa95dd60100000000b9ae0b00000000030100008007000038040000c05d0000080180841e000000000001d07e010080841e00000000000101000f000070080000c0d401000a0773060000c4090000c0270900f7cdfe71e55e92f38fae3182407ad2d56cd8628ab09afc73bbce58069637dfd6112779ab0dc9662b9774e7ce6ebb51ef7b4611eb5f429ab53325cc5fa518c806" + ], + "outcome": "refuse", + "reason": "bad_signature", + "place": "termination" + } + ] +} diff --git a/wai/energy-conformance/stream_energy_verify.py b/wai/energy-conformance/stream_energy_verify.py new file mode 100644 index 000000000..9923d2302 --- /dev/null +++ b/wai/energy-conformance/stream_energy_verify.py @@ -0,0 +1,603 @@ +#!/usr/bin/env python3 +"""Independent verifier of the stream-energy corpus (extensions/stream-energy.md). + +Written from the extension's text. It shares no code with wai-rs, which generates the +corpus, and never runs it. It checks Ed25519 signatures with +../claim-conformance/_ed25519.py, WAI's strict rule (SPEC §7 *Signatures*) written from +RFC 8032 with the standard library. Everything else is here, from the texts: + +- the hop figure record (§3): its layout, the class of energy-measurement §2.7, the rules of + §3.6 in their order, the declared-power basis (§3.4), and the sink measurement profiles of + energy-measurement §9.2 that a decode figure's class and coverage are held to; +- the stream-segment receipt (§4) and its verification (§6.1): shares, totals, the + delivery and display sums at their weakest class, and the panel verdict, read with the + display-capability comparison of capability-constraints §6.1 in Python's integers; +- the termination record (§5) and its verification (§6.2). + +For every vector it requires the outcome, the reason and the place the corpus states, and +for an accepted vector every fact; of the corpus, that every reason of §7 refuses a vector +and that §7 lists exactly those reasons. Then it mutates copies of the corpus, one defect +each, and requires every copy to fail. + + python3 stream_energy_verify.py + +Exit status 0 only if every check holds and every mutated copy fails. Python 3.8 or later; +standard library only. +""" + +import copy +import functools +import hashlib +import json +import os +import struct +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +sys.path.insert(0, os.path.join(HERE, "..", "claim-conformance")) +import _ed25519 as ED # noqa: E402 + +REASONS = [ + "legacy_class", "energy_invalid", "record_invalid", "basis_invalid", "basis_mismatch", + "profile_mismatch", "bound_overstated", "receipt_invalid", "classes_summed", + "record_missing", "wrong_segment", "unit_mismatch", "rendition_mismatch", "sum_mismatch", + "panel_mismatch", "termination_invalid", "wrong_stream", "index_mismatch", +] + +# energy-measurement §2: strongest first, by tag. +RANK = {5: 4, 4: 3, 2: 2, 3: 1} +LABEL = {2: "ModelBased", 3: "Estimator", 4: "OnChipCounter", 5: "CalibratedInstrument"} +CPU, GPU, MEDIA, NEURAL = 1, 2, 4, 8 +# energy-measurement §9.2: each profile's counters, as (fabrics, class tag). +PROFILES = { + 1: [(CPU, 4), (GPU, 4)], # macos-task + 2: [(CPU | GPU | MEDIA, 4), (GPU | MEDIA, 4)], # linux-rapl-nvml + 3: [], # android-app + 4: [], # ios-app +} +TAN_ARCMIN = 2908882086 # tan(1') x 10^13, rounded down (capability-constraints §6.1) + + +class Refused(Exception): + def __init__(self, reason): + Exception.__init__(self, reason) + self.reason = reason + + +def sha256(b): + return hashlib.sha256(b).digest() + + +@functools.lru_cache(maxsize=None) +def sig_check(pk, msg, sig): + return ED.verify(pk, msg, sig) + + +class Rd: + def __init__(self, b, p=0): + self.b, self.p = b, p + + def take(self, n): + if self.p + n > len(self.b): + raise Refused("truncated") + s = self.b[self.p:self.p + n] + self.p += n + return s + + def u8(self): + return self.take(1)[0] + + def u32(self): + return struct.unpack("I", self.take(4))[0] + + def be64(self): + return struct.unpack(">Q", self.take(8))[0] + + +def head(b, magic): + if len(b) < 4: + raise Refused("truncated") + if b[:4] != magic: + raise Refused("malformed") + if len(b) < 5: + raise Refused("truncated") + if b[4] != 1: + raise Refused("unknown_version") + + +def read_class(r): + """A class as energy-measurement §2.7 writes it: (tag, evidence) or a deferred + refusal, read past its bytes.""" + tag = r.u8() + if tag == 0: + return (0, None), None + if tag == 1: + return (1, None), "legacy_class" + if tag in (2, 3): + return (tag, None), None + if tag == 4: + ppm, window, filt = r.be32(), r.be64(), r.u8() + bad = ppm == 0 or window == 0 or filt > 2 + return (4, (ppm, window, filt)), "energy_invalid" if bad else None + if tag == 5: + ppm, window, n = r.be32(), r.be64(), r.be32() + if n > 255: + raise Refused("malformed") + ref = r.take(n) + try: + s = ref.decode("utf-8") + blank = s.strip() == "" + except UnicodeDecodeError: + blank = True + return (5, (ppm, window, ref)), "energy_invalid" if (ppm == 0 or window == 0 or blank) else None + return (tag, None), "energy_invalid" + + +def energy_rule(joules, cls, cov): + tag, ev = cls + if tag == 0: + return joules == 0 and cov == 0 + if joules == 0 or cov not in (1, 2): + return False + if tag in (4, 5): + return joules * ev[0] >= 288676 + return True + + +def decl_ok_display(d): + w, h, hz, depth, tfs, diag, dist = d + if w == 0 or h == 0 or hz == 0 or depth == 0 or depth > 16: + return False + if tfs == 0 or tfs & ~0b111: + return False + if dist != 0 and diag == 0: + return False + return True + + +def decl_ok_rendition(x): + w, h, rate, depth, tf = x + return w and h and rate and 1 <= depth <= 16 and tf in (1, 2, 3) + + +def above_bits(d, x): + """capability-constraints §6.1: size 1, rate 2, depth 4, transfer 8, acuity 16.""" + W, H, hz, depth, tfs, diag, dist = d + w, h, rate, rdepth, tf = x + bits = 0 + if max(w, h) > max(W, H) or min(w, h) > min(W, H): + bits |= 1 + if rate > hz: + bits |= 2 + if rdepth > depth: + bits |= 4 + if not (tfs >> (tf - 1)) & 1: + bits |= 8 + if dist and diag: + s, lines = min(W, H), min(w, h) + if lines * lines * dist * dist * TAN_ARCMIN * TAN_ARCMIN * (W * W + H * H) > diag * diag * s * s * 10 ** 26: + bits |= 16 + return bits + + +def above_terms(bits): + return [t for b, t in ((1, "size"), (2, "rate"), (4, "depth"), (8, "transfer"), (16, "acuity")) if bits & b] + + +def basis_joules(power_mw, time_us): + return (power_mw * time_us + 500) // 1000 + + +def parse_record(b): + """§3.1 read and §3.6's rules in their order, then the signature (§3.2).""" + head(b, b"WSH1") + r = Rd(b, 5) + rec = {"role": r.u8(), "hop": r.take(32), "segment": r.take(32), "index": r.u64(), "stream": r.take(32), + "deliveries": r.u32(), "joules": r.u64()} + rec["class"], fault = read_class(r) + rec["coverage"], rec["profile"], rec["fabrics"] = r.u8(), r.u8(), r.u8() + rec["rendition"] = (r.u32(), r.u32(), r.u32(), r.u8(), r.u8()) + rec["duration_us"] = r.u64() + kind = r.u8() + if kind == 0: + rec["basis"] = None + elif kind == 1: + rec["basis"] = (r.u32(), r.u64(), r.u8()) + else: + raise Refused("malformed") + rec["panel"] = None + if rec["role"] == 4: + pc = r.u8() + w, h, hz = r.u32(), r.u32(), r.u32() + depth, tfs = r.u8(), r.u8() + diag, dist, bright = r.u32(), r.u32(), r.u32() + rec["panel"] = (pc, (w, h, hz, depth, tfs, diag, dist), bright) + sig = r.take(64) + if r.p != len(b): + raise Refused("malformed") + if fault == "legacy_class": + raise Refused("legacy_class") + if fault or not energy_rule(rec["joules"], rec["class"], rec["coverage"]): + raise Refused("energy_invalid") + role, tag = rec["role"], rec["class"][0] + sink = role in (3, 4) + zero = rec["stream"] == bytes(32) + invalid = ( + role not in (1, 2, 3, 4) + or zero == sink + or rec["deliveries"] == 0 + or (sink and rec["deliveries"] != 1) + or rec["profile"] > 4 + or (role != 3 and (rec["profile"] or rec["fabrics"])) + or (role == 3 and (rec["fabrics"] == 0 or rec["fabrics"] & ~0b1111)) + or not decl_ok_rendition(rec["rendition"]) + or (rec["panel"] is not None and (rec["panel"][0] not in range(1, 8) or not decl_ok_display(rec["panel"][1]))) + or rec["duration_us"] == 0 + or (rec["basis"] is not None and rec["basis"][2] not in (1, 2, 3)) + ) + if invalid: + raise Refused("record_invalid") + hardware = tag in (4, 5) + if ((tag == 3 and rec["basis"] is None) or (hardware and rec["basis"] is not None) + or (tag == 0 and rec["basis"] is not None) or (role == 4 and tag not in (0, 3))): + raise Refused("basis_invalid") + if rec["basis"] is not None and basis_joules(rec["basis"][0], rec["basis"][1]) != rec["joules"]: + raise Refused("basis_mismatch") + if role == 3 and hardware: + if tag == 5 and rec["profile"] != 0: + raise Refused("profile_mismatch") + if tag == 4: + counters = PROFILES.get(rec["profile"]) + if not counters or not any(t == 4 for _, t in counters): + raise Refused("profile_mismatch") + metered = 0 + for f, _ in counters: + metered |= f + if rec["coverage"] == 1 and rec["fabrics"] & ~metered: + raise Refused("bound_overstated") + v = sig_check(rec["hop"], b"wai:stream-hop\x01" + b[:-64], sig) + if v: + raise Refused(v) + rec["share"] = rec["joules"] // rec["deliveries"] + return rec + + +def parse_receipt(b): + """§4.1 read and §4.2's rules, then the signature.""" + head(b, b"WSE1") + r = Rd(b, 5) + rc = {"signer": r.take(32), "stream": r.take(32), "segment": r.take(32), "index": r.u64()} + n = r.u8() + hops, fault = [], None + for _ in range(n): + e = {"record": r.take(32), "role": r.u8(), "hop": r.take(32), "joules": r.u64(), "deliveries": r.u32(), "share": r.u64()} + e["class"], f = read_class(r) + e["coverage"] = r.u8() + if f and fault is None: + fault = f + hops.append(e) + rc["hops"] = hops + rc["unmetered"] = r.u8() + rc["totals"] = [(r.u8(), r.u32(), r.u64()) for _ in range(r.u8())] + rc["delivery"] = (r.u64(), r.u8(), r.u8()) + rc["display"] = (r.u64(), r.u8(), r.u8()) + rc["panel"] = (r.u8(), r.u8()) + sig = r.take(64) + if r.p != len(b): + raise Refused("malformed") + if fault: + raise Refused(fault) + for e in hops: + if not energy_rule(e["joules"], e["class"], e["coverage"]): + raise Refused("energy_invalid") + if any(t[0] <= 1 for t in rc["totals"]): + raise Refused("classes_summed") + roles = [e["role"] for e in hops] + + def sum_ok(s): + j, c, cov = s + return c in (0, 2, 3, 4, 5) and cov <= 2 and (c == 0) == (cov == 0) and (c != 0 or j == 0) + + keys = [(e["role"], e["record"]) for e in hops] + invalid = ( + not 1 <= n <= 16 + or any(keys[i] >= keys[i + 1] for i in range(len(keys) - 1)) + or any(e["role"] not in (1, 2, 3, 4) or e["deliveries"] == 0 or (e["role"] >= 3 and e["deliveries"] != 1) for e in hops) + or roles.count(1) > 1 or roles.count(3) > 1 or roles.count(4) > 1 + or any(rc["totals"][i][0] >= rc["totals"][i + 1][0] for i in range(len(rc["totals"]) - 1)) + or any(t[1] == 0 for t in rc["totals"]) + or not sum_ok(rc["delivery"]) or not sum_ok(rc["display"]) + or rc["panel"][0] > 2 or (rc["panel"][0] != 2 and rc["panel"][1] != 0) or rc["panel"][1] & ~0b11111 + ) + if invalid: + raise Refused("receipt_invalid") + v = sig_check(rc["signer"], b"wai:stream-segment\x01" + b[:-64], sig) + if v: + raise Refused(v) + rc["digest"] = sha256(b[:-64]) + return rc + + +def totals(entries): + unmetered, by = 0, {} + for e in entries: + t = e["class"][0] + if t == 0: + unmetered += 1 + else: + f, j = by.get(t, (0, 0)) + by[t] = (f + 1, j + e["share"]) + return unmetered, by + + +def sums(entries): + part = [e for e in entries if e["role"] <= 3] + metered = [e for e in part if e["class"][0] != 0] + if metered: + j = sum(e["share"] for e in metered) + c = min((e["class"][0] for e in metered), key=lambda t: RANK[t]) + whole = (any(e["role"] == 1 for e in part) and any(e["role"] == 3 for e in part) + and all(e["class"][0] != 0 and e["coverage"] == 1 for e in part)) + delivery = (j, c, 1 if whole else 2) + else: + delivery = (0, 0, 0) + disp = [e for e in entries if e["role"] == 4 and e["class"][0] != 0] + display = (disp[0]["share"], disp[0]["class"][0], disp[0]["coverage"]) if disp else (0, 0, 0) + return delivery, display + + +def verify_receipt(b, records): + """§6.1: (facts) or raises (place, reason).""" + try: + rc = parse_receipt(b) + except Refused as e: + raise Refused(("receipt", e.reason)) + read = [] + for i, e in enumerate(rc["hops"]): + at = "hop/%d" % i + rb = records.get(e["record"]) + if rb is None or sha256(rb[:-64]) != e["record"]: + raise Refused((at, "record_missing")) + try: + rec = parse_record(rb) + except Refused as x: + raise Refused((at, x.reason)) + if rec["segment"] != rc["segment"] or rec["index"] != rc["index"] or (rec["role"] >= 3 and rec["stream"] != rc["stream"]): + raise Refused((at, "wrong_segment")) + same = all(rec[k] == e[k] for k in ("role", "hop", "joules", "deliveries", "class", "coverage", "share")) + if not same: + raise Refused((at, "unit_mismatch")) + read.append(rec) + if any(read[i]["rendition"] != read[i + 1]["rendition"] for i in range(len(read) - 1)): + raise Refused(("rendition", "rendition_mismatch")) + unmetered, by = totals(rc["hops"]) + if unmetered != rc["unmetered"]: + raise Refused(("energy", "unit_mismatch")) + for tag, figures, joules in rc["totals"]: + if tag not in by: + raise Refused(("energy", "unit_mismatch")) + own = by[tag][1] + if joules != own: + others = [v[1] for k, v in by.items() if k != tag] + summed = any(own + sum(o for i, o in enumerate(others) if m >> i & 1) == joules for m in range(1, 1 << len(others))) + raise Refused(("energy", "classes_summed" if summed else "unit_mismatch")) + if figures != by[tag][0]: + raise Refused(("energy", "unit_mismatch")) + if len(rc["totals"]) != len(by): + raise Refused(("energy", "unit_mismatch")) + delivery, display = sums(rc["hops"]) + if delivery != rc["delivery"] or display != rc["display"]: + raise Refused(("sums", "sum_mismatch")) + dec = [x for x in read if x["role"] == 3] + dsp = [x for x in read if x["role"] == 4] + if dec and dsp: + bits = above_bits(dsp[0]["panel"][1], dec[0]["rendition"]) + panel = (1, 0) if bits == 0 else (2, bits) + else: + panel = (0, 0) + if panel != rc["panel"]: + raise Refused(("panel", "panel_mismatch")) + cov = ["none", "Whole", "Partial"] + verdict = ["none", "within", "above"] + + def sumj(s): + return {"joules_micro": s[0], "class": LABEL.get(s[1], "unmetered"), "coverage": cov[s[2]]} + + facts = { + "shares": [{"role": e["role"], "share": e["share"], "class": LABEL.get(e["class"][0], "unmetered")} for e in rc["hops"]], + "unmetered": unmetered, + "totals": [{"class": LABEL[t], "figures": by[t][0], "joules_micro": by[t][1]} for t in sorted(by)], + "delivery": sumj(delivery), + "display": sumj(display), + "panel": {"verdict": verdict[panel[0]], "above": above_terms(panel[1])}, + } + return rc, facts + + +def read_spent(r): + out = [] + for _ in range(4): + u = r.u32() + out.append((u, [(r.u8(), r.u32(), r.u64()) for _ in range(r.u8())])) + return out + + +def spent_of(receipts): + unmetered, by = [0] * 4, [dict() for _ in range(4)] + for rc in receipts: + for e in rc["hops"]: + i, t = e["role"] - 1, e["class"][0] + if t == 0: + unmetered[i] += 1 + else: + f, j = by[i].get(t, (0, 0)) + by[i][t] = (f + 1, j + e["share"]) + return [(unmetered[i], [(t, by[i][t][0], by[i][t][1]) for t in sorted(by[i])]) for i in range(4)] + + +WHY = {1: "hidden", 2: "occluded", 3: "display-off", 4: "autoplay-off", 5: "idle"} + + +def verify_termination(b, receipts, records): + try: + head(b, b"WST1") + r = Rd(b, 5) + t = {"sink": r.take(32), "stream": r.take(32), "reason": r.u8(), "at_us": r.u64(), "from": r.u64(), "last": r.u64(), + "n": r.u32(), "list": r.take(32)} + t["spent"], t["held"] = read_spent(r), read_spent(r) + sig = r.take(64) + if r.p != len(b): + raise Refused("malformed") + + def classes_ok(s): + return all(all(2 <= c[0] <= 5 and c[1] > 0 for c in cl) and all(cl[i][0] < cl[i + 1][0] for i in range(len(cl) - 1)) for _, cl in s) + + if t["reason"] not in WHY or t["from"] > t["last"] or t["n"] == 0 or not classes_ok(t["spent"]) or not classes_ok(t["held"]): + raise Refused("termination_invalid") + v = sig_check(t["sink"], b"wai:stream-termination\x01" + b[:-64], sig) + if v: + raise Refused(v) + except Refused as e: + raise Refused(("termination", e.reason)) + if len(receipts) != t["n"] or sha256(b"".join(sha256(x[:-64]) for x in receipts)) != t["list"]: + raise Refused(("termination", "record_missing")) + acc = [] + for i, rb in enumerate(receipts): + try: + rc, _ = verify_receipt(rb, records) + except Refused as e: + raise Refused(("segment/%d" % i, e.reason[1])) + if rc["stream"] != t["stream"] or rc["signer"] != t["sink"]: + raise Refused(("segment/%d" % i, "wrong_stream")) + if acc and rc["index"] <= acc[-1]["index"]: + raise Refused(("segment/%d" % i, "termination_invalid")) + acc.append(rc) + if acc[-1]["index"] != t["last"] or t["from"] < acc[0]["index"]: + raise Refused(("termination", "index_mismatch")) + if spent_of(acc) != t["spent"] or spent_of([x for x in acc if x["index"] >= t["from"]]) != t["held"]: + raise Refused(("termination", "unit_mismatch")) + + def sj(s): + return [{"role": i + 1, "unmetered": u, "totals": [{"class": LABEL[c], "figures": f, "joules_micro": j} for c, f, j in cl]} + for i, (u, cl) in enumerate(s)] + + return {"reason": WHY[t["reason"]], "from_index": t["from"], "last_index": t["last"], "spent": sj(t["spent"]), "held": sj(t["held"])} + + +def outcome(v): + records = {} + for h in v.get("records", []): + rb = bytes.fromhex(h) + records[sha256(rb[:-64])] = rb + try: + if v["kind"] == "receipt": + _, facts = verify_receipt(bytes.fromhex(v["receipt"]), records) + else: + facts = verify_termination(bytes.fromhex(v["termination"]), [bytes.fromhex(x) for x in v["receipts"]], records) + return ("accept", facts) + except Refused as e: + return ("refuse", e.reason) + + +def check(doc, quiet=False): + fails = [] + seen = set() + for v in doc["vectors"]: + try: + got = outcome(v) + except Exception as e: # a corpus that cannot be read is a failure, not a crash + got = ("error", repr(e)) + if v["outcome"] == "accept": + ok = got == ("accept", v["facts"]) + else: + ok = got == ("refuse", (v["place"], v["reason"])) + seen.add(v["reason"]) + if not ok: + fails.append("%s: got %r" % (v["name"], got)) + for r in REASONS: + if r not in seen: + fails.append("nothing in the corpus is refused %s" % r) + if not quiet: + for f in fails: + print("FAIL " + f) + return fails + + +def reasons_listed(): + with open(os.path.join(HERE, "..", "extensions", "stream-energy.md"), encoding="utf-8") as f: + text = f.read() + at_ = text.index("\n## 7. Reasons") + end = text.find("\n## ", at_ + 1) + return [line.split("`")[1] for line in text[at_:end].splitlines() if line.startswith("| `")] + + +def flip(h, at_, bit=0x01): + b = bytearray(bytes.fromhex(h)) + b[at_] ^= bit + return b.hex() + + +def mutations(doc): + out = [] + + def mutate(name, f): + d = copy.deepcopy(doc) + f(d) + out.append((name, d)) + + def vec(d, n): + return next(v for v in d["vectors"] if v["name"] == n) + + mutate("an accepted receipt's signature", lambda d: vec(d, "four_hops_metered").update(receipt=flip(vec(d, "four_hops_metered")["receipt"], -1))) + mutate("an accepted delivery class", lambda d: vec(d, "four_hops_metered")["facts"]["delivery"].update({"class": "OnChipCounter"})) + mutate("a lower bound read as whole", lambda d: vec(d, "media_engine_lower_bound")["facts"]["delivery"].update(coverage="Whole")) + mutate("an unmetered relay read as zero", lambda d: vec(d, "relay_unmetered")["facts"].update(unmetered=0)) + mutate("a share", lambda d: vec(d, "origin_shared")["facts"]["shares"][0].update(share=5000000)) + mutate("a panel verdict", lambda d: vec(d, "above_panel")["facts"]["panel"].update(verdict="within")) + mutate("an acuity bit", lambda d: vec(d, "above_acuity")["facts"]["panel"].update(above=[])) + mutate("a held figure", lambda d: vec(d, "termination_hidden")["facts"]["held"][3]["totals"][0].update(joules_micro=1)) + mutate("a termination reason", lambda d: vec(d, "termination_idle")["facts"].update(reason="hidden")) + mutate("a missing record", lambda d: vec(d, "four_hops_metered")["records"].pop()) + mutate("a refusal's reason", lambda d: vec(d, "record_media_engine_whole").update(reason="profile_mismatch")) + mutate("a refusal's place", lambda d: vec(d, "record_legacy_class").update(place="receipt")) + mutate("a record's figure byte", lambda d: vec(d, "phone_estimator")["records"].__setitem__(2, flip(vec(d, "phone_estimator")["records"][2], 140))) + mutate("a dropped vector of its reason", lambda d: d["vectors"].remove(vec(d, "receipt_panel_stated_within"))) + return out + + +def main(corpus_dir): + with open(os.path.join(corpus_dir, "vectors.json"), encoding="utf-8") as f: + doc = json.load(f) + fail = 0 + st = ED._self_test() + print("%s Ed25519 strict rule self-test" % ("PASS" if not st else "FAIL")) + fail += bool(st) + fails = check(doc) + print("%s %d vectors verify from the text" % ("PASS" if not fails else "FAIL", len(doc["vectors"]))) + fail += bool(fails) + ok = reasons_listed() == REASONS + print("%s §7 lists exactly the reasons this verifier raises" % ("PASS" if ok else "FAIL")) + fail += not ok + caught = 0 + muts = mutations(doc) + for name, d in muts: + if check(d, quiet=True): + caught += 1 + else: + print("FAIL the mutation '%s' goes unnoticed" % name) + fail += 1 + print("%s %d of %d mutated copies of the corpus fail" % ("PASS" if caught == len(muts) else "FAIL", caught, len(muts))) + return 1 if fail else 0 + + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("usage: stream_energy_verify.py ", file=sys.stderr) + sys.exit(2) + sys.exit(main(sys.argv[1])) diff --git a/wai/extensions/capability-constraints.md b/wai/extensions/capability-constraints.md index 46e70e83c..6c07fabf9 100644 --- a/wai/extensions/capability-constraints.md +++ b/wai/extensions/capability-constraints.md @@ -4,7 +4,11 @@ > check** rather than a binary claim, by ingesting the constraint-set grammar and > register pattern the broadcast-IP world already ratified. No transport, no > registry service, no negotiation protocol — it evaluates values WAI already -> carries. +> carries. §6 adds the first WAI-authored register entries, for the panel a sink +> presents on, so that a sink selects no rendition above its panel when one within it +> is offered. Reference implementation: `wai::display_caps`; corpus +> [`constraints-conformance/display/`](../constraints-conformance/display/), second +> implementation `constraints-conformance/display_verify.py`. > Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174. ## 1. The problem: support is not binary @@ -73,8 +77,9 @@ author itself**, and until it does, those capabilities remain unconstrained unde mechanisms in the tree for one job. - It is **not** a transport concern. Constraint evaluation reads values the object already declares. -- It is **not** an energy mechanism. A constraint says what a sink can decode, - never what it should spend. +- It is **not** an energy mechanism. A constraint says what a sink can decode and + show, never what it should spend. §6 keeps a sink from receiving bits its panel cannot + show; the energy those bits cost is [stream-energy](stream-energy.md)'s to state. ## 5. Framing @@ -82,3 +87,106 @@ The grammar is thin — close to a JSON-Schema subset — and that is fine. The is not expressiveness; it is that a ratified, register-backed way of saying "supported, to here" already exists, and WAI's dispatch, which has only "supported", gains a range by adopting it. + +## 6. Display capability + +A sink decodes for a panel, and a rendition the panel cannot show costs every hop its +bytes and the sink its decode for nothing it can present. A sink states its panel in the +register entries below, and a rendition states what it carries in the same terms; a sink +then selects no rendition above its panel when one within it is offered (§6.3). + +### 6.1 The register entries + +The parameters are WAI-authored, namespaced `wai-display:` for a panel and `wai-video:` +for a rendition (§3): + +| parameter | meaning | +|---|---| +| `wai-display:width`, `wai-display:height` | the panel's pixels, in the orientation the sink presents in | +| `wai-display:refresh-mhz` | its highest refresh rate, in millihertz | +| `wai-display:bit-depth` | the bits per component it shows | +| `wai-display:transfers` | the transfer functions it shows: a set of SDR, PQ and HLG | +| `wai-display:diagonal-mm` | its diagonal in millimetres, where the sink declares it | +| `wai-display:distance-mm` | the viewer's distance from it in millimetres, where the sink declares it | +| `wai-video:width`, `wai-video:height` | a rendition's pixels | +| `wai-video:frame-rate-mhz` | its frame rate, in millihertz | +| `wai-video:bit-depth` | its bits per component | +| `wai-video:transfer` | its transfer function: SDR, PQ or HLG | + +A rendition is **above** a panel in each of these respects, independently, and **within** +it when it is above it in none: + +| respect | the rendition is above the panel when | +|---|---| +| `size` | its longer side is longer than the panel's longer side, or its shorter side longer than the panel's shorter side: the sides are compared in the orientation that fits, so a landscape rendition is within a portrait panel turned | +| `rate` | its frame rate is above the panel's refresh rate | +| `depth` | its bit depth is above the panel's | +| `transfer` | the panel does not show its transfer function | +| `acuity` | the sink declares both a diagonal and a distance, and the rendition's shorter side holds more lines than a viewer at that distance resolves across the panel's shorter side, at one arc-minute a line | + +The acuity respect is the criterion behind ITU-R BT.1845-1's optimal viewing distance, +which that Recommendation defines as the distance at which two adjacent pixels of the +picture subtend one arc-minute at the viewer's eye; it puts a 1080-line picture's at 3.2 +picture heights and a 2160-line picture's at 1.6. With the panel's sides `W` +and `H` in pixels, `S` the shorter, `G` its diagonal and `D` the distance in millimetres, +the panel's shorter side is `G·S/√(W² + H²)` millimetres for square pixels, and a viewer +at `D` resolves `S_mm / (D · tan 1′)` lines across it. A rendition whose shorter side has +`n` lines is above in acuity exactly when + + n² · D² · T² · (W² + H²) > G² · S² · 10²⁶ + +with `T = 2 908 882 086`, tan 1′ × 10¹³ rounded down, so that the rule never calls a +rendition above that the exact value would not. Every term is an integer and the +comparison is exact. One arc-minute is the acuity the criterion assumes, not a limit of +every viewer's eye, which is why the respect applies only where the sink declares the +distance: a sink that does not declare one constrains nothing by acuity. + +### 6.2 Declarations + +A panel declaration is refused `display_malformed` when a side, the refresh rate or the +bit depth is 0 or the bit depth is above 16; `display_transfer` when it shows no transfer +function or names one other than SDR, PQ and HLG; and `display_distance_alone` when it +declares a distance without a diagonal. A rendition declaration is refused +`display_malformed` when a side, the frame rate or the bit depth is 0 or the bit depth is +above 16, and `display_transfer` when its transfer function is none of the three. A sink +**MUST NOT** evaluate §6.3 over a refused declaration. + +### 6.3 Selection + +Among the renditions a sink can otherwise pick (SPEC §7.1 step 2), in the order its +deployer's policy gives them, a sink that has declared its panel **MUST** select the first +that is within the panel. Where none it can pick is within, it selects the first it can +pick and records that it is above the panel and in which respects; a sink never refuses to +present for this reason alone. A rendition that declares none of the `wai-video:` +parameters is within every panel, since nothing it declares exceeds one. The same rule +applies to the variants of an HTTP streaming ladder, whose playlists declare the same +properties (HLS `RESOLUTION`, `FRAME-RATE` and `VIDEO-RANGE`; DASH `@width`, `@height` and +`@frameRate`). + +Selection by the panel is a restriction of the entries a sink considers, which SPEC §7.1 +permits a deployer policy; this section makes it the sink's own rule wherever the sink +knows its panel. A stream-segment receipt states whether the rendition was within the panel +([stream-energy](stream-energy.md) §4.5). + +### 6.4 What this does not do + +- It does not read a panel. A sink declares its panel from what its platform reports (the + screen's pixels, refresh rate and colour capabilities, and the size where it is known); + nothing here verifies a declaration. +- It does not choose between renditions within the panel; the deployer's order does. +- It does not weigh energy. A rendition within the panel can still cost more than another + within it, and §6.3 still selects the first of them. + +### 6.5 Conformance + +[`constraints-conformance/display/`](../constraints-conformance/display/) holds the corpus, +`vectors.json`, written by `wai_display_vectors gen`: panels of common devices (televisions +near and far, monitors, a laptop, a phone with and without a declared distance, a tablet +that shows HLG and not PQ) against a ladder from 2160p60 HDR to 360p, with each rung's +respects above the panel and the selection; a panel offered only renditions above it; a +120 fps rendition on a 60 Hz panel; and a ladder with nothing pickable; and each refusal +of §6.2. `wai_display_vectors verify` and `tests/display_caps.rs` check that the file +regenerates byte for byte and that `wai-rs` gives every vector its outcome; +`constraints-conformance/display_verify.py`, written from this text and sharing no code +with `wai-rs`, recomputes every respect and selection and requires every mutated copy of +the corpus to fail. The panels and ladders are examples, not measurements. diff --git a/wai/extensions/energy-measurement.md b/wai/extensions/energy-measurement.md index 1a11b7f46..0852fcd35 100644 --- a/wai/extensions/energy-measurement.md +++ b/wai/extensions/energy-measurement.md @@ -6,8 +6,10 @@ > encoding (§2, §2.7–§2.8), an acquisition protocol with a liveness rule for the > power reader (§3, §3.1), a quality rule (§4), and a reporting contract (§6) > whose values are published in a signed report that names the receipt it -> describes and leaves that receipt's bytes unchanged. A receipt that carries -> none of these additions keeps exactly the bytes it had. +> describes and leaves that receipt's bytes unchanged. It fixes, per operating +> system, which counters a sink can read and when its figure is only a lower +> bound (§9). A receipt that carries none of these additions keeps exactly the +> bytes it had. > Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174. ## 1. Why an acquisition protocol @@ -520,6 +522,11 @@ Receipts sealed before this revision carry `HwShunt`. Its meaning is fixed as - `HwShunt` carries no evidence fields. A receipt pairing `HwShunt` with a declared uncertainty, a filtering state or a calibration reference is ambiguous and **MUST** be rejected. +- No sink measurement profile (§9) names `HwShunt`, and no record defined after + this revision accepts it: a [stream-energy](stream-energy.md) record or receipt + that carries it is refused `legacy_class`, before any other rule. The declared + uncertainty of §2.3 and its resolution floor are what a hardware figure must + now carry, and `HwShunt` carries neither. ### 2.7 Signed encoding @@ -1058,7 +1065,9 @@ and its rail cannot be attributed, the span has no fabric record: the producer meters it otherwise (§3's bracket, over the whole figure), or seals it unmetered. So does a span that ran a step on a fabric with no live counter: on the reference hosts (macOS 27 on arm64) the media engine and the neural engine -have none an unprivileged process can read. +have none an unprivileged process can read. Such a span's figure can still be +sealed without a fabric record, with coverage `Partial`, as a lower bound +(§9.3). The record says where the work ran and what each fabric drew; it changes nothing a figure's verifier checks of the figure itself (§6.2). Which fabric @@ -1127,3 +1136,210 @@ prevent. A measurement report (§6) publishes, signed, the build profile, the toolchain and target, the power reader and the bracket with its liveness facts, in cleartext: the measuring machine's power levels and build environment are visible to whoever holds the report. + +## 9. Sink measurement profiles + +The figure a sink spends decoding is the one a stream's receipt can least do without +([stream-energy](stream-energy.md) §3) and the hardest to obtain: a browser gives a page +no energy reading, and each operating system gives the process that decodes a different +counter, or none. A **sink measurement profile** fixes, for one operating system, which +counters an unprivileged sink process can read, the class a figure from each is sealed +under, the fabrics (§6.3) each covers, what reading it takes, and which fabrics none +covers. A sink decode figure names its profile by code (stream-energy §3.1). + +### 9.1 What a profile fixes + +- A figure under a hardware class is read from a counter of its profile, under that + counter's rule: the bracket of §3 for a rail other work shares, the sole-user rule of + §6.3 for a GPU rail, and the span protocol of §9.4 for a counter scoped to the work's + own process. +- `ModelBased` and `Estimator` figures fit every profile. An estimate states the declared + basis it is computed from (stream-energy §3.4), never a bare constant. +- A `CalibratedInstrument` figure is read from an instrument outside the device, which no + operating system profiles; it names no profile. +- No profile names `HwShunt` (§2.6). + +### 9.2 The profiles + +| code | profile | counters a sink reads, and their class | not metered | +|---|---|---|---| +| 1 | `macos-task` | CPU: the task counter, `OnChipCounter`, attribution `task`, no privilege. GPU: IOReport's `GPU Energy` rail, `OnChipCounter`, under §6.3's sole-user rule, no privilege | the media engine, the neural engine | +| 2 | `linux-rapl-nvml` | CPU, with an integrated GPU and media engine in the package: RAPL, `OnChipCounter`, a rail, **readable only by root since Linux 5.10**. GPU board, with its video engines: NVML, `OnChipCounter`, a rail, no privilege documented | a neural engine; a fabric no counter's device holds | +| 3 | `android-app` | none per segment; `Estimator` with a declared basis, or `ModelBased` | every fabric, per segment | +| 4 | `ios-app` | none measured; `Estimator` with a declared basis, or `ModelBased` | every fabric | + +**`macos-task`** (macOS on Apple silicon; the reference hosts run macOS 27.0.1): + +- The **task counter** is `proc_pid_rusage(RUSAGE_INFO_V6).ri_energy_nj`, the kernel's + account of a task's CPU energy (equal to `task_info(TASK_POWER_INFO_V2).task_energy`). + xnu accumulates it per thread from the CPU's own energy counters as the power manager + samples them: "CPU energy in nanojoules, when available", "sampled out-of-band by + ApplePMGR through CLPC" (`osfmk/kern/recount.h`), compiled where the CPU has the + digital power estimator counters it reads (`HAS_CPU_DPE_COUNTER`, + `osfmk/kern/recount.c`). It is the measured silicon's report about itself, as IOReport's + is (§2.9), attributed by the kernel to the task, so other work on the host does not + enter it: `OnChipCounter`, filtering `Unknown` (no unprivileged reader can see whether + the counter filters its output, §2.4). Beside it the kernel keeps `ri_billed_energy`, + the energy it bills to the task for work other processes did on its behalf (the task's + `energy_billed_to_me` ledger, in nanojoules, `osfmk/kern/task.c`): VideoToolbox decodes + in a service of its own (`VTDecoderXPCService`), and the kernel bills that service's work + for a client to the client. A process reads both for itself, and for a child before it + reaps it. +- The **GPU** is read as §6.3 reads it: IOReport's `GPU Energy` rail, attributed only + where the work held at least 99 % of every client's GPU time, which the IORegistry's + per-client `accumulatedGPUTime` shows. +- **Not metered.** IOReport's "Energy Model" channels for the CPU and the neural engine + read zero or stop updating on macOS 27 without a private entitlement, and there is no + channel for the video decoder at all; `powermetrics` refuses to run without root. So the + media engine and the neural engine are unmetered, and the reference meters of §3, which + read the CPU through IOReport, seal unmetered on these hosts. + +**`linux-rapl-nvml`**: + +- **RAPL** (`/sys/class/powercap/intel-rapl*/energy_uj`) has been **readable only by + root since Linux 5.10** (December 2020, commit `949dd0104c49`, the response to + CVE-2020-8694, INTEL-SA-00389), and perf's RAPL events are system-wide and need + `CAP_PERFMON` or a `perf_event_paranoid` the distribution does not ship. An unprivileged + sink on Linux therefore has no CPU counter. Only the host's owner opens one (a + group-readable `energy_uj`, a capability granted to the sink), and what it opens is a + package rail that other work shares: a per-segment figure from it is §3's bracket + marginal, never `task`, and its filtering state is `Unknown` unless the reader can read + `IA32_MISC_PACKAGE_CTLS` (§2.4), which takes root. +- **NVML** (`nvmlDeviceGetTotalEnergyConsumption`, millijoules since the driver loaded, + Volta and later) reads the whole board, its video decode engines included, and is not + documented to need root; a figure from it follows §6.3's sole-user rule, the driver's + per-process accounting naming the board's users. amdgpu's `power1_average` (a power + reader, §3.1) and an Intel discrete GPU's `energy1_input` are world-readable. + +**`android-app`**: + +- The Power Stats HAL (`android.hardware.power.stats`) serves the system, not apps. Since + Android 15 (API level 35) an app can read its readings through + `SystemHealthManager.getPowerMonitorReadings`: on-device power-rail monitors (ODPM, + `POWER_MONITOR_TYPE_MEASUREMENT`) and energy consumers that "may be a direct + pass-through power rail measurement, or modeled" (`POWER_MONITOR_TYPE_CONSUMER`), in + microwatt-seconds since boot (`PowerMonitorReadings.getConsumedEnergy`). Three things + keep a per-segment figure from them: the service refreshes the readings at most every + 30 s (`MAX_POWER_MONITOR_AGE_MILLIS = 30_000`), it returns each with deliberate noise of + up to 10 J (`MAX_RANDOM_NOISE_UWS = 10_000_000`, `PowerStatsService`), and rail names + are device-specific ("No assumptions should be made about the names and exact purpose + of ODPM rails across different device models", `PowerMonitor`). +- So in this revision an Android sink seals a decode figure as `Estimator` from a declared + basis, its decode's CPU time at a declared power per busy core (stream-energy §3.4), or + as `ModelBased` where it calibrated that power on the device. A rail figure over a span + of 30 s or more is the route to a hardware class, `OnChipCounter` with filtering `On` + (the noise is deliberate, §2.4) and a declared uncertainty that includes the noise; this + profile admits none until a reference sink maps its rails to fabrics. + +**`ios-app`**: + +- No public energy interface is documented for apps. The iOS SDK declares `task_energy` + in `task_info(TASK_POWER_INFO_V2)` on arm64 (`mach/task_info.h`, iPhoneOS 27.1 SDK), the + account macOS reports as `ri_energy_nj`; whether it advances on iOS has not been + measured, since no iOS device is a reference sink. Until it is, an iOS sink seals + `Estimator` from a declared basis, or `ModelBased`. + +### 9.3 A lower bound + +- A figure over work that ran in part on a fabric its profile's counters do not meter + covers only the metered fabrics. It **MUST** be sealed with coverage `Partial` + ([energy-binding](energy-binding.md) §4), and it is a **lower bound** on the work's + energy. +- A reader **MUST** present a lower bound as one ("at least"), **MUST NOT** present it as + the work's energy, and **MUST NOT** compare it with a `Whole` figure as though the two + covered the same work. +- On macOS 27 a hardware decode through VideoToolbox is such a figure: the task counter + covers the client's CPU energy and what the kernel bills to it of the decoder service's, + and no counter covers the media engine. So is a decode that runs a network on the neural + engine. +- A figure sealed `Whole` over work on an unmetered fabric overstates its bound and is + refused (stream-energy §3.6, `bound_overstated`). Work no counter covered at all has no + hardware figure: it is unmetered, or an estimate from a declared basis. + +### 9.4 The span protocol for a task counter + +A task counter is scoped to the work's process, so no idle bracket is needed: other work +on the host does not enter it, and changes it only through contention, as the cores the +scheduler places the work on and their clocks. A figure from it is read over spans of +whole completions: + +1. A span opens with a read of the counter and runs `k` completions on threads started + after that read. It closes after those threads have finished and a **settle wait** of + at least 200 ms has passed. A span over a child process closes after the child has + exited and before it is reaped. The counter read is the task's own energy and the + energy the kernel billed to it (`ri_energy_nj + ri_billed_energy`). A service's energy + is counted only as the kernel bills it: a service that started during the span may + serve another client on a shared host, so its whole energy is never attributed to the + work, and the part of it the kernel bills to no one is not counted at all. +2. The counter is read during the span, at most 50 ms apart, and each span is live under + §3.1: at least five reads advanced, four of every five, two in a row, over at least + 300 ms. +3. 100 ms after the closing read the counter is read again. The largest increase any span + showed over that wait, `d`, bounds what a closing read can have missed (a credit that + arrives late) or added (the reader's own wakes), and is declared as a systematic term, + which more spans do not reduce. +4. There are `R` spans, at least 5 and at most 64, of the same `k`; each span's increase + `eᵢ` is in nanojoules, non-zero, and at most 2⁵³ − 1. + +With `S1 = Σ eᵢ` and `S2 = Σ eᵢ²`, the figure is the mean per completion rounded to the +nearest microjoule, a half rounding up, and the least declaration it supports is the least +integer `p` for which `p²·K ≥ P`: + +``` +F = ⌊(2·S1 + 1000·R·k) / (2000·R·k)⌋ µJ +K = 6·R²·(R−1)·k²·F² +P = 10⁶·( 6·(R·S2 − S1²) + 2·d²·R²·(R−1) + R·(R−1) + 500 000·R²·(R−1)·k² ) +``` + +The four terms of `P` are, carried in nanojoules over the per-completion figure, the +standard uncertainty of the spans' mean (`s² / R`, with `s` the spans' sample standard +deviation), the settle bound taken as rectangular over ±`d` (`d²/3`), each span's two +nanojoule readings (`1/√6` nJ, §2.3), and the rounding of the figure to a microjoule +(`0.5/√3` µJ). The least `p` always meets the resolution floor of §2.3. The figure is +sealed `OnChipCounter` with filtering `Unknown`, `relative_ppm = p` and `window_us` the +shortest span's duration, which is the window the spans' scatter describes. A set of spans +that breaks rule 2 or 4, or whose figure rounds to zero, or whose `p` exceeds 2³² − 1, +gives no figure under a hardware class. A `measurement` claim about such a figure carries +a `null` bracket and names the counter as its `power_reader` +([jwp-receipts](jwp-receipts.md) §2.4.8); this revision has no member for the spans, so a +producer publishes them beside the figure, as the reference figures of §9.5 are. + +Measured on the build host (macOS 27.0.1, M3 Ultra, 2026-10-22, one-minute load average +50 to 110 from other work): the task counter advanced in each of 100 successive reads +2 ms, 10 ms and 50 ms apart while one thread ran; after the thread was joined, the process +counter rose by a further 75 to 227 µJ over the next second, most of it within the first +200 ms, while its only thread slept between reads. The reference implementation is +`wai::sink_energy` (the arithmetic, every reader's) and its macOS reader +`wai::sink_energy::macos` (feature `sink_meter`); `wai_sink_meter` meters a decode under +this protocol. + +### 9.5 Energy budgets of learned capabilities + +[platform-decode](platform-decode.md) §5 reads a learned entry's **energy budget** to let it +rank with power-efficient classical decode, and leaves how a budget is carried and checked +to this extension. A budget is: + +- an `OnChipCounter` figure, coverage `Whole`, of the decode of a learned capability + (platform-decode §4.1) with **one parameter set**, on a reference sink, obtained under + §9.4, expressed per unit of output: `picture`, `frame` or `second`. The per-unit figure is + the per-decode figure divided by the units one decode outputs, rounded to the nearest + microjoule, a half rounding up; where the division is not whole, its declared + uncertainty adds that rounding's `0.5/√3` µJ in quadrature, so that + `12·F²·p'² ≥ 12·F²·p² + 10¹²` holds for the per-unit `F` and `p'`, with `p` the + per-decode declaration. Its `relative_ppm` and `window_us` are those, and its + `reference_sink` names the sink, the profile and the date; +- **bound to its parameter set.** A network's draw depends on its weights' shapes and on + the stream as much as on its capability: a figure measured with one parameter set says + nothing about another. A budget names its set as a pin does (SPEC §3.1): the SHA-256 of + the set's `wai.prior.set` listing and, for a set of one file, that file's SHA-256. A + sink applies a budget only to an entry whose pin names that set; an entry with no pin + names no set and has no budget; +- **carried in the registry and checked against its spans.** The budgets of this revision + are `wai::codecs::energy_budget` (`budget_for` gives one in the form platform-decode §5 + reads), and the spans each is computed from are published in the repository's research + notes ([wai-sink-energy](../../docs/research/wai-sink-energy.md)); a reader recomputes the + figure from the spans by §9.4, and the set's digests from the set. + +A budget measured on a vector's parameter set states what that set costs on that sink at +the load the notes record. It is a figure under a class, not a ceiling: platform-decode §5 +lets a deployer set a ceiling, and the order reads the budget only to rank. diff --git a/wai/extensions/stream-energy.md b/wai/extensions/stream-energy.md new file mode 100644 index 000000000..537b9f5c5 --- /dev/null +++ b/wai/extensions/stream-energy.md @@ -0,0 +1,478 @@ +# WAI Extension: Stream Energy + +> Status: Draft. Registers the record `wai.stream.energy`: what one segment of a stream +> cost at each hop that carried it, from the origin and the relays to the sink's decode +> and its display. Each hop signs a **hop figure record**, `WSH1`, for the segment: its +> figure in microjoules with the acquisition class of +> [energy-measurement](energy-measurement.md) §2, its coverage, and, for an estimate, the +> declared basis the figure is computed from. A display figure is always an `Estimator`, +> computed from the panel's declared on-mode power and the time the segment was presented. +> The sink signs a **stream-segment receipt**, `WSE1`, naming the records: each hop's +> figure and the share of it this stream carries, a total per class and never one across +> classes, and two sums a reader may show, **delivery** (origin, relays, decode) and +> **display**, each labelled with the weakest class among its parts and marked as a lower +> bound wherever a part is one or is unmetered. The receipt also states whether the +> rendition was above the panel ([capability-constraints](capability-constraints.md) §6). +> The sink signs a **termination record**, `WST1`, when it stops a stream nobody is +> watching (the page hidden, the player occluded, the display off, an autoplayed stream +> the viewer's setting does not continue, or no activity), with the reason and the joules +> spent, in all and while the condition held. A verifier recomputes every number from the +> records. No new transport. The reference implementation is the `stream_energy` module +> of `wai-rs` (feature `stream_energy`); the corpus is +> [`energy-conformance/stream/`](../energy-conformance/stream/), and its second +> implementation is `energy-conformance/stream_energy_verify.py`. +> Keywords **MUST**, **MUST NOT**, **SHOULD**, **MAY** are RFC 2119/8174. + +## 1. Scope + +In scope: the hop figure record and its rules (§3), the declared-power basis that every +estimate in these records rests on (§3.4), the stream-segment receipt (§4), the +termination record (§5), verification (§6), reasons (§7) and conformance (§8). + +Out of scope: + +- **How a hop measures.** [energy-measurement](energy-measurement.md) governs that; its + §9 fixes which counters a sink can read on each operating system and when a sink's + figure is a lower bound. +- **The network between the hops.** The access network, the core and a radio link carry + the segment between the hops, and no party on the path can meter them per stream. A + receipt states no figure for them, and its delivery sum is over the hops that state + one. A reader **MUST NOT** present a delivery sum as the energy of delivering the + segment end to end. +- **Who may sign for a hop.** A verifier here checks each record's signature and the + arithmetic, and reports the keys. Where a hop's key is in an origin's key log, that + log's `energy/` authorities say which classes it states (jwp-receipts §7.5); this + revision does not check them for these records. + +Relationship to the core spec: `wai.stream.energy` is a **record** ([SPEC](../SPEC.md) +§5): a signed record a WAI tool emits and verifies. It names no payload format and is +not dispatchable. + +## 2. Terms + +- **Segment**: one object of a stream's track, named by its content hash + ([jwp-receipts](jwp-receipts.md) §2.1) and its **index**, the segment's place in its + track as the hop counts it. +- **Stream**: one presentation of a title at one sink, named by a **stream id**: 32 bytes + the sink draws at random for the stream, derived from nothing that identifies a person, + a device or an account. +- **Hop** and **role**: a party that spent energy on the segment and signs a record of + it, named by its Ed25519 key (RFC 8032). Its role is 1 **origin** (it made or stored + the segment and served it), 2 **relay** (it forwarded the segment), 3 **sink decode** + (it decoded the segment for this stream) or 4 **display** (it presented the decoded + pictures for this stream). A sink signs its own decode and display records. +- **Coverage**: 1 `Whole` or 2 `Partial` (energy-binding §4). A `Partial` figure covers + only part of the hop's work, so it is a **lower bound** on it (energy-measurement §9.3). +- **Unmetered marker**: a zero figure with class tag 0 (energy-measurement §2), never a + figure of zero joules. +- **Class rank**: the order of energy-measurement §2, strongest first: + `CalibratedInstrument` (tag 5), `OnChipCounter` (4), `ModelBased` (2), `Estimator` + (3). The **weakest class** of a set of figures is the last of theirs in that order. +- *u64*, *u32*, *u8*: little-endian unsigned integers of that many bits; a class's + evidence is written as energy-measurement §2.7 writes it (big-endian). A **digest** is + SHA-256 (FIPS 180-4), 32 bytes. + +## 3. The hop figure record + +### 3.1 Layout + +A hop signs one record for one segment, `WSH1`: + +| field | size | meaning | +|---|---|---| +| `magic` | 4 | `WSH1` (ASCII) | +| `version` | 1 | 1 in this revision | +| `role` | 1 | 1 origin, 2 relay, 3 sink decode, 4 display | +| `hop` | 32 | the hop's key, which signs the record | +| `segment` | 32 | the segment's content hash | +| `index` | 8 | u64: the segment's index | +| `stream` | 32 | for roles 3 and 4, the stream id; for roles 1 and 2, 32 zero bytes | +| `deliveries` | 4 | u32: the deliveries of the segment the figure covers, at least 1 (§3.3); 1 for roles 3 and 4 | +| `joules` | 8 | u64: the hop's figure for the segment, in microjoules; 0 is the unmetered marker | +| `class` | 1 + … | its acquisition class: energy-measurement §2.7's tag byte, then that tag's evidence | +| `coverage` | 1 | 0 for the unmetered marker; otherwise 1 `Whole` or 2 `Partial` | +| `profile` | 1 | for role 3, the sink measurement profile the figure was read under (energy-measurement §9.2), or 0 for none; otherwise 0 | +| `fabrics` | 1 | for role 3, the fabrics the decode ran on: bit 1 CPU, 2 GPU, 4 media engine, 8 neural engine; otherwise 0 | +| `rendition` | 14 | the segment's rendition as the hop states it: `width` u32, `height` u32, `frame_rate_mhz` u32 (millihertz), `bit_depth` u8, `transfer` u8 (1 SDR, 2 PQ, 3 HLG); capability-constraints §6.1 | +| `duration_us` | 8 | u64: the segment's media duration | +| `basis` | 1 + … | 0 for none; or 1, then the declared-power basis (§3.4): `power_mw` u32, `time_us` u64, `source` u8 | +| `panel` | 27 | role 4 only: the panel as the sink declares it (§3.5); absent for every other role | +| `sig` | 64 | §3.2 | + +### 3.2 Digest and signature + +The **digest** of a record is SHA-256 over its bytes before `sig`. Its **signature** is +Ed25519 by `hop` over the 15 bytes `wai:stream-hop` (ASCII) and 0x01, followed by the +bytes the digest covers, verified strictly as [SPEC](../SPEC.md) §7 *Signatures* +requires: a key that fails step 1 or 2 is `bad_key`, and a signature that fails a later +step is `bad_signature`. + +### 3.3 Deliveries and the share + +An origin or a relay spends energy on a segment once for many streams: an origin that +packages it once and serves it to every viewer, a relay that forwards it to each of its +sessions. Its record states how many deliveries its figure covers, as the hop counted +them over the span it reports, and a stream's receipt carries the **share** ⌊`joules` / +`deliveries`⌋ (§4.3). A share is an allocation of a hop's figure, not a measurement of +this stream's use, and keeps the figure's class and coverage. A sink's own records cover +one stream, and their share is their figure. + +### 3.4 The declared-power basis + +An estimate in these records is never a bare number. A figure classed `Estimator` **MUST** +carry a basis, and a figure classed `ModelBased` **MAY**; a figure under a hardware class +**MUST NOT**. The one basis of this revision is a **declared power**: a power in +milliwatts the hop declares for the work, the time it applied over in microseconds, and +the declaration's `source`: + +| `source` | the power is | +|---|---| +| 1 | the on-mode power of the panel's EU energy label (Commission Delegated Regulation (EU) 2019/2013), for the dynamic range presented | +| 2 | a manufacturer's declaration for the device at the setting it ran at | +| 3 | the hop's own declaration | + +The figure is the energy the declaration gives, rounded to the nearest microjoule with a +half rounding up: + + joules = ⌊(power_mw × time_us + 500) / 1000⌋ + +A milliwatt over a microsecond is a nanojoule, so the arithmetic is exact. A declared +power is a constant nobody calibrated on that device for that content, so its figure is +`Estimator` (energy-measurement §2), whatever the source; a hop that calibrated the power +on itself may seal `ModelBased` instead. The source says where the constant came from, +not how good it is. + +On a sink whose profile meters no counter per segment (energy-measurement §9.2, the +`android-app` and `ios-app` profiles), the sink decode figure is such an estimate: the +decode's CPU time as `time_us` and a declared power per busy core as `power_mw`. + +### 3.5 The display figure and the panel + +A display record (role 4) states the panel the stream was presented on: + +| field | size | meaning | +|---|---|---| +| `panel_class` | 1 | 1 television, 2 monitor, 3 laptop, 4 tablet, 5 phone, 6 headset, 7 other | +| `width`, `height` | 4 each | u32: the panel's pixels | +| `refresh_mhz` | 4 | u32: its highest refresh rate, in millihertz | +| `bit_depth` | 1 | the bits per component it shows | +| `transfers` | 1 | the transfer functions it shows: bit 1 SDR, 2 PQ, 4 HLG | +| `diagonal_mm` | 4 | u32: its diagonal in millimetres, 0 when not declared | +| `distance_mm` | 4 | u32: the viewer's distance from it in millimetres, 0 when not declared | +| `brightness_ppm` | 4 | u32: the brightness setting the declared power describes, as a fraction of the panel's maximum in parts per million; 0 when not known | + +Its figure is an `Estimator` from the declared-power basis, with `power_mw` the panel's +declared on-mode power at that setting and for the dynamic range presented, and +`time_us` the time the segment's pictures were presented. Its coverage is `Whole`: it +estimates the panel's whole draw while it showed the segment, which the stream is the +reason for. A sink that holds no declared power for its panel seals the display record +unmetered, never with a typical value it has no declaration for. + +The estimate does not scale a power by the brightness setting: a panel's power is not +proportional to its brightness, so a power is declared for the setting it describes, and +`brightness_ppm` says which setting that is. A label's on-mode power is the one measured +in the panel's normal configuration. + +### 3.6 Reading and rules + +A reader reads exactly the bytes it is given as one record. It reads `magic` (`malformed` +when it is not `WSH1`), `version` (`unknown_version` when it is not 1) and every field in +§3.1's order, a short record being `truncated` and bytes after `sig` `malformed`; the +class's evidence as energy-measurement §2.7 writes it, a tag 5 reference longer than 255 +bytes being `malformed`; and a `basis` kind other than 0 and 1, whose length this revision +does not define, is `malformed` too. It then refuses, in this order: + +1. as `legacy_class`, a class tag of 1 (`HwShunt`): no record of this extension carries + the legacy class (energy-measurement §2.6); +2. as `energy_invalid`, a record where the tag is 0 and `joules` is not, or `joules` is 0 + and the tag is not; where `coverage` is 0 and the tag is not, or the tag is 0 and + `coverage` is not; a `coverage` above 2; a tag other than 0, 2, 3, 4 and 5; and, for + tags 4 and 5, a `relative_ppm` or `window_us` of 0, a figure below the resolution floor + (`joules × relative_ppm ≥ 288 676`, energy-measurement §2.3), tag 4's filtering byte + above 2, or tag 5's reference not UTF-8 or only white space; +3. as `record_invalid`, a record whose `role` is not 1 to 4; whose `stream` is zero for + role 3 or 4, or not zero for role 1 or 2; whose `deliveries` is 0, or not 1 for role 3 + or 4; whose `profile` is above 4, or not 0 outside role 3; whose `fabrics` is 0 or has + a bit above 8 for role 3, or is not 0 outside it; whose `rendition` or `panel` breaks + capability-constraints §6.2, or whose `panel_class` is not 1 to 7; whose + `duration_us` is 0; or whose basis `source` is not 1 to 3; +4. as `basis_invalid`, a record whose class is `Estimator` and that carries no basis; + whose class is a hardware class and that carries one; that is unmetered and carries + one; or whose role is 4 and whose class is neither `Estimator` nor the unmetered + marker; +5. as `basis_mismatch`, a record that carries a basis and whose `joules` is not the + figure §3.4 gives; +6. for role 3 with a hardware class: as `profile_mismatch`, an `OnChipCounter` figure + whose profile is 0, or whose profile has no counter of its class, and a + `CalibratedInstrument` figure whose profile is not 0 (an external instrument is no + counter of the operating system); and as `bound_overstated`, a `Whole` figure whose + `fabrics` include one its profile does not meter (energy-measurement §9.3). + +A record that passes is **read**. + +## 4. The stream-segment receipt + +### 4.1 Layout + +The sink signs one receipt for each segment of its stream it presented, `WSE1`: + +| field | size | meaning | +|---|---|---| +| `magic` | 4 | `WSE1` (ASCII) | +| `version` | 1 | 1 in this revision | +| `signer` | 32 | the sink's key, which signs the receipt | +| `stream` | 32 | the stream id | +| `segment` | 32 | the segment's content hash | +| `index` | 8 | u64: the segment's index | +| `hops` | 1 + … | a u8 count *n*, 1 to 16, then each hop entry: `record` (32, the record's digest), `role` (u8), `hop` (32), `joules` (u64), `deliveries` (u32), `share` (u64), `class` (1 + …) and `coverage` (u8); in strictly ascending order of (`role`, `record`) | +| `unmetered` | 1 | u8: the entries whose figure is the unmetered marker | +| `totals` | 1 + 13 × *m* | a u8 count *m*, then for each class among the metered entries: `tag` (u8), `figures` (u32) and `joules` (u64, the sum of their shares), in strictly ascending order of `tag` | +| `delivery` | 10 | the delivery sum (§4.4): `joules` (u64), `class` (u8, a tag as a class name) and `coverage` (u8) | +| `display` | 10 | the display sum (§4.4), the same three fields | +| `panel` | 2 | the panel verdict (§4.5): `verdict` (u8: 0 none, 1 within, 2 above) and `above` (u8, capability-constraints §6.1's bits) | +| `sig` | 64 | Ed25519 by `signer` over the 19 bytes `wai:stream-segment` (ASCII) and 0x01, followed by the bytes before `sig` | + +The **digest** of a receipt is SHA-256 over its bytes before `sig`, verified strictly as +§3.2 verifies a record's. + +### 4.2 Reading and rules + +A reader reads the receipt as §3.6 reads a record, with `WSE1` for `WSH1`, and refuses as +§3.6's rules 1 and 2 refuse an entry's class and coverage (`legacy_class`, +`energy_invalid`), and as `classes_summed` a receipt whose `totals` names tag 0 or 1. It +refuses as `receipt_invalid` a receipt that breaks any of these: + +- `hops` holds 1 to 16 entries, in strictly ascending order of (`role`, `record`), each + `role` 1 to 4, at most one of role 1, one of role 3 and one of role 4, any number of + relays; +- each entry's `deliveries` is at least 1, and 1 for roles 3 and 4; +- `totals` is in strictly ascending order of `tag`, each `figures` above 0; +- the `class` of `delivery` and of `display` is 0, 2, 3, 4 or 5, and 0 exactly when its + `coverage` is 0 and its `joules` is 0; each `coverage` is at most 2; +- the panel's `verdict` is at most 2, and `above` is 0 unless the verdict is 2, and has + no bit above 16. + +### 4.3 Entries and shares + +Each entry restates its record's `role`, `hop`, `joules`, `deliveries`, `class` and +`coverage`, and states the share the stream carries, ⌊`joules` / `deliveries`⌋ (§3.3). +The remainder of the division is attributed to no stream. A reader **MUST NOT** present +an unmetered entry as zero joules; its share is 0 only as the unmetered marker is. + +### 4.4 Totals and sums + +The **totals** are one per class: for each tag among the metered entries, the number of +entries of that tag and the sum of their shares. Nothing in `totals` sums two classes, and +a receipt whose total for a class is the sum of that class's shares and of at least one +other class's, while not the sum of its own, is refused `classes_summed`, as +live-metering §4.5 refuses one. + +The two **sums** are what a reader may show as one number, each read as +energy-measurement §2.8 reads a total over parts of several classes: + +- **delivery**: over the entries of roles 1 to 3. `joules` is the sum of the metered + entries' shares; `class` is the tag of the weakest class among them, as a class name + only, with no declared uncertainty; `coverage` is 1 `Whole` when there is an origin + entry and a sink decode entry and every entry of roles 1 to 3 is metered and `Whole`, + 2 `Partial` when at least one is metered and the sum is not `Whole`, and 0 when none is + metered (then `joules` and `class` are 0 too); +- **display**: the display entry's share, class and coverage, or three zeros when there + is no display entry or it is unmetered. + +A `Partial` sum is a lower bound and **MUST** be presented as one. A sum's class says how +strong its weakest part is, not that every part is of that class: a delivery sum of an +`OnChipCounter` decode and an `Estimator` origin is labelled `Estimator`, and reads no +better. The display sum is kept apart from the delivery sum, so that the panel's estimate, +the largest figure of a streamed hour on most screens, never lowers the class of the +delivery figures, and the delivery figures never lend the estimate a class it does not +have. A reader that shows the two together shows them as two figures, each with its +class. + +### 4.5 The panel verdict + +Where the receipt has both a sink decode entry and a display entry, the **panel verdict** +is capability-constraints §6.1's comparison of the decode record's `rendition` with the +display record's `panel` (its sides, refresh, bit depth, transfers, diagonal and +distance): 1 **within** when the rendition is within the panel in every respect, and +otherwise 2 **above**, with `above` holding the bits of each respect it is above in. With +either entry missing, the verdict is 0 and `above` is 0. A verdict of above says that the +segment carried bits the panel could not show, which is waste capability-constraints §6.3 +exists to avoid; it does not say why the sink selected that rendition. + +## 5. The termination record + +### 5.1 Layout + +A sink that stops a stream because nobody is watching it signs a termination record, +`WST1`: + +| field | size | meaning | +|---|---|---| +| `magic` | 4 | `WST1` (ASCII) | +| `version` | 1 | 1 in this revision | +| `sink` | 32 | the sink's key, which signs the record and every receipt it names | +| `stream` | 32 | the stream id | +| `reason` | 1 | §5.2: 1 `hidden`, 2 `occluded`, 3 `display-off`, 4 `autoplay-off`, 5 `idle` | +| `at_us` | 8 | u64: microseconds from the presentation of the stream's first segment to the termination | +| `from_index` | 8 | u64: the first segment the sink presented while the condition held | +| `last_index` | 8 | u64: the last segment it presented | +| `receipts` | 4 + 32 | u32: the stream-segment receipts the record accounts for, at least 1; then their **list digest**, SHA-256 over their digests in the order of their `index`, concatenated | +| `spent` | 4 × (4 + 1 + 13 × *m*) | for each role 1 to 4, in that order: `unmetered` (u32, the receipts' entries of that role whose figure is the unmetered marker), then a u8 count *m* and, for each class among the role's metered entries, `tag` (u8), `figures` (u32) and `joules` (u64, the sum of their shares), in strictly ascending order of `tag` | +| `held` | as `spent` | the same over the receipts whose `index` is at least `from_index` | +| `sig` | 64 | Ed25519 by `sink` over the 23 bytes `wai:stream-termination` (ASCII) and 0x01, followed by the bytes before `sig` | + +### 5.2 Reasons for terminating + +| `reason` | the condition, as the sink observed it | +|---|---| +| 1 `hidden` | the page or the application presenting the stream was hidden: in a browser, the document's `visibilityState` was `"hidden"` (W3C Page Visibility); natively, the application was in the background | +| 2 `occluded` | the player was not visible although its page or application was: its element outside the viewport, or its window covered | +| 3 `display-off` | the display the stream was presented on was off or asleep | +| 4 `autoplay-off` | the stream began without the viewer's activation (an autoplayed preview or next item), and the viewer's setting does not continue autoplay | +| 5 `idle` | no activation by the viewer for the period the sink declares as idle, and no answer to the sink's prompt | + +`from_index` is the first segment presented while the condition held, so the `held` +figures are the joules spent on segments nobody was watching: the waste the termination +ended. A sink **SHOULD** stop fetching segments when it terminates a stream, and a stream +it resumes is a new stream with a new id. A termination record says what the sink +observed and did; it is not evidence about a person. + +### 5.3 Reading and rules + +A reader reads the record as §3.6 reads a record, with `WST1` for `WSH1`, and refuses as +`termination_invalid` a record whose `reason` is not 1 to 5, whose `from_index` is above +its `last_index`, whose `receipts` is 0, or whose `spent` or `held` names a tag other than +2 to 5, or names tags out of strictly ascending order within a role, or a class with no +figures. + +## 6. Verification + +### 6.1 A stream-segment receipt + +A verifier is given the receipt and the hop records it names. It runs these steps and +stops at the first refusal, which it reports with the reason and where: + +1. **The receipt** (§4.1, §4.2), at `receipt`: `truncated`, `malformed`, + `unknown_version`, `legacy_class`, `energy_invalid`, `classes_summed`, + `receipt_invalid`; `bad_key`, `bad_signature`. +2. **Each hop entry**, in order, at `hop` and the entry's index: + 1. a record whose digest is the entry's `record` is given: otherwise + `record_missing`. (The digest of given bytes is SHA-256 over all but their last 64.) + 2. It reads (§3.6, each of that section's reasons) and its signature verifies + (`bad_key`, `bad_signature`). + 3. Its `segment` and `index` are the receipt's, and for roles 3 and 4 its `stream` is + the receipt's: otherwise `wrong_segment`. + 4. The entry's `role`, `hop`, `joules`, `deliveries`, `class` and `coverage` are the + record's, and its `share` is the record's figure over its deliveries (§4.3): + otherwise `unit_mismatch`. +3. **The rendition**, at `rendition`: every record states the same `rendition`, and the + display record's is the decode record's: otherwise `rendition_mismatch`. +4. **The totals** (§4.4), at `energy`: `unmetered` is the number of unmetered entries, and + each stated total names a class among the entries' and states that class's number of + figures and sum of shares, or else is `classes_summed` when the sum it states is one + §4.4 describes and `unit_mismatch` otherwise; and the totals name every class of the + metered entries. Otherwise `unit_mismatch`. +5. **The sums** (§4.4), at `sums`: `delivery` and `display` are the ones the entries + give: otherwise `sum_mismatch`. +6. **The panel** (§4.5), at `panel`: the verdict and its bits are the ones the decode and + display records give: otherwise `panel_mismatch`. + +A receipt that passes is **accepted**: every entry, share, total and sum, and the panel +verdict, is what the records it names give. + +### 6.2 A termination record + +A verifier is given the record, the receipts it accounts for and the hop records they +name. In order: + +1. **The record** (§5.1, §5.3), at `termination`: `truncated`, `malformed`, + `unknown_version`, `termination_invalid`; `bad_key`, `bad_signature`. +2. **The receipts**, at `termination`: as many are given as `receipts` states, and the + digest over their digests in the order of their `index` is the list digest: otherwise + `record_missing`. +3. **Each receipt**, in that order, at `segment` and its index: it verifies under §6.1, + with that section's reasons; its `stream` is the record's and its `signer` is the + record's `sink` (`wrong_stream`); and its `index` is above the previous receipt's + (`termination_invalid`). +4. **The span**, at `termination`: the last receipt's `index` is `last_index`, and + `from_index` is at least the first receipt's `index`: otherwise `index_mismatch`. +5. **The joules**, at `termination`: `spent` and `held` are the ones the receipts' + entries give, role by role and class by class: otherwise `unit_mismatch`. + +A record that passes is **accepted**: the receipts it names are the stream's, by its sink, +up to the segment it ended on, and the joules it states, by role and class, are theirs. + +## 7. Reasons + +The codes this extension adds, each with where it is raised: + +| reason | raised at | +|---|---| +| `legacy_class` | §3.6, §4.2 | +| `energy_invalid` | §3.6, §4.2 | +| `record_invalid` | §3.6 | +| `basis_invalid` | §3.6 | +| `basis_mismatch` | §3.6 | +| `profile_mismatch` | §3.6 | +| `bound_overstated` | §3.6 | +| `receipt_invalid` | §4.2 | +| `classes_summed` | §4.2, §6.1 step 4 | +| `record_missing` | §6.1 step 2, §6.2 step 2 | +| `wrong_segment` | §6.1 step 2 | +| `unit_mismatch` | §6.1 steps 2 and 4, §6.2 step 5 | +| `rendition_mismatch` | §6.1 step 3 | +| `sum_mismatch` | §6.1 step 5 | +| `panel_mismatch` | §6.1 step 6 | +| `termination_invalid` | §5.3, §6.2 step 3 | +| `wrong_stream` | §6.2 step 3 | +| `index_mismatch` | §6.2 step 4 | + +A verifier of this extension also raises `truncated`, `malformed` and `unknown_version` +for a record or a receipt that does not read, and `bad_key` and `bad_signature` for their +signatures. + +## 8. Conformance + +[`energy-conformance/stream/`](../energy-conformance/stream/) holds the corpus, in one +file, `vectors.json`, written from fixed seeds by `wai_stream_energy_vectors gen`. Its +figures are synthetic, chosen to exercise the rules, and claim nothing about any device. +It has **vectors**, each a receipt or a termination record with what it names and the +outcome §6 gives it: + +- **Accepted**: a segment whose four hops are metered, the decode an `OnChipCounter` + figure under the `macos-task` profile, and whose delivery sum is `Whole` and labelled + with its weakest class; a hardware decode on the media engine, sealed `Partial` (a lower + bound), which makes the delivery sum `Partial`; a relay that signs with the unmetered + marker, counted in `unmetered` and in no total; an origin shared by many deliveries, + whose share is its figure over them; a phone sink whose decode figure is an `Estimator` + from its CPU time and a declared power; a display with no declared power, unmetered; a + rendition above the panel; and a termination record for each reason of §5.2, with its + joules held. +- **Refused**: each reason of §7 at least once, each vector a control of one defect, and + the codes a record or a receipt raises when it does not read or verify. + +A conforming verifier gives every vector the outcome, the reason and the place the corpus +states. `wai_stream_energy_vectors verify` and the test `tests/stream_energy.rs` check +that the file regenerates byte for byte, that `wai-rs` gives every vector its outcome, that +every reason of §7 refuses a vector, and that §7 lists exactly the reference's codes. +`energy-conformance/stream_energy_verify.py` is the second implementation, written from +this text: it shares no code with `wai-rs`, verifies signatures with WAI's strict rule +written from RFC 8032 (`claim-conformance/_ed25519.py`), recomputes every share, total, +sum and verdict, gives every vector the same outcome, and requires every mutated copy of +the corpus to fail. + +## 9. Security and privacy considerations + +- Every figure rests on its hop's signature, and its class says how it was obtained + (energy-measurement §5): the receipt makes the figures attributable and their sums + recomputable, not true. A share is an allocation by deliveries and says so. +- An estimate states its basis, so a reader can see the constant it rests on and who + declared it; a reader **MUST NOT** present a display figure as a measurement. +- A display record names a panel class, a size and a viewing distance, which describe a + device. A sink holds its records and receipts and shares them only with whom it chooses; + a stream id is fresh per stream, so two streams of one sink do not link through it. A + sink **MAY** declare a diagonal and a distance rounded to the nearest 10 mm, which the + acuity rule reads as declared. +- A termination record states when the sink observed the condition, not why. A + deployment that collects termination records **MUST NOT** use them to infer anything + about a viewer beyond the stream they describe. diff --git a/wai/oer-conformance/README.md b/wai/oer-conformance/README.md index 14b73aa18..ddcea8935 100644 --- a/wai/oer-conformance/README.md +++ b/wai/oer-conformance/README.md @@ -14,7 +14,8 @@ the reference verifier here, the portable C kernel in [`settle/`](settle/) that | file | vectors | what it is | |---|---|---| | `vectors.json` | 9 | OER/2 (draft 0.1, as the extension profiles it): the last 150 decision receipts of one simulated day of Settlement World's gatewayless corridor, signed with the Ed25519 ledger key published in the file, an hourly bundle with its provenance root, an Iridium anchor, and seven tampered twins | -| `firmware_vectors.json` | 1 | 400 receipts written by the C kernel with its own SHA-256 and Ed25519 — pinned, and regenerated byte-for-byte in CI | +| `firmware_vectors.json` | 1 | 400 receipts written by the C kernel with its own SHA-256 and Ed25519 — pinned, and regenerated byte-for-byte in CI. Their meter is a model, yet each names the method `hardware_meter` and the grade `measured`, which [oer-receipts](../extensions/oer-receipts.md) §2 does not support for a modelled figure; they are kept byte for byte as the receipts the kernel issued (below) | +| `firmware_vectors_modelled.json` | 1 | the same 400 decisions with the meter graded as what it is: method `model_estimated`, grade `projected` (its weakest input's) | | `edge_vectors.json` | 99 | one case for each behaviour the upstream nine never exercise — see below | | `unreadable/` | 11 documents | one for each way the extension refuses a document whole — a number whose nearest binary64 is infinite (the midpoint above the largest, as a float and as an integer, and far past it), `NaN`, `Infinity`, `-Infinity`, an unpaired surrogate, a repeated member name (plain, and a second `joules_total` inside a sealed receipt), nesting 65 deep, and nesting 5000 deep | | `sw_export.json` | — | the Settlement World export `generate_vectors.py` builds `vectors.json` from | @@ -104,8 +105,23 @@ python3 oer2_verify.py --unreadable unreadable # every document there must be # the C kernel: rebuild and regenerate its vectors; the output is deterministic make -C settle && ./settle/settle_host /tmp/fw.json 400 && cmp /tmp/fw.json firmware_vectors.json +./settle/settle_host /tmp/fwm.json 400 modelled && cmp /tmp/fwm.json firmware_vectors_modelled.json +python3 oer2_verify.py firmware_vectors_modelled.json ``` +**The kernel's grade is its meter's.** The kernel used to write `"how":"measured"` and +`"device":"hardware"` into every receipt, whatever its meter was, and the host harness's +meter is a model: a cycle count times the kernel's projected cycle energy, and constant +idle and shared powers nobody measured on the host. Those receipts graded a modelled +figure `measured`. The kernel now writes the grade and the device its meter states, and +refuses to grade a figure `measured` unless the meter names an instrument +(`hardware_meter`), so a meter that models its figures cannot be signed as one that read +them. The harness's `modelled` mode grades its meter as a model; its default mode, +`issued`, recreates the pinned corpus byte for byte, which CI compares, and is the only +path that still writes those receipts. They stay because the corpus pins every receipt the +kernel issued; the grade they state is not one oer-receipts §2 supports. The `modelled` +run also checks that the kernel refuses a modelled meter graded `measured`. + Every run prints the fixture check first. The vectors cannot check the canonical form themselves: `generate_vectors.py` imports this verifier's canonicaliser, so a defect in the field order is baked into every receipt id and diff --git a/wai/oer-conformance/firmware_vectors_modelled.json b/wai/oer-conformance/firmware_vectors_modelled.json new file mode 100644 index 000000000..b206b2349 --- /dev/null +++ b/wai/oer-conformance/firmware_vectors_modelled.json @@ -0,0 +1 @@ +{"oer":"2.0","draft":"0.1","source":"settle kernel host harness, 400 events, modelled meter graded as a model","keys":{"ed25519:bench-node-01":"755c4cb9256ca7cdc4acfdc6cfeeda849017e5b9f9514e99191bd67e0b0d4276"},"vectors":[{"name":"v10 firmware chain from the C kernel, modelled meter","receipts":[{"oer":"2.0","receipt_id":"sha256:ad406e6ec9d0cfedf57e6135d037ae7096bdcab6974e24f7c2fff0b93cddb92e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5ea2a39f565cf2588f19cb5c05ffdb4e6e04155dd041eeea4651d60de5cc156e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.483598270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.233770e-02","shared_alloc_j":"2.411257e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5ea2a39f565cf2588f19cb5c05ffdb4e6e04155dd041eeea4651d60de5cc156e","served_from_record":false,"record_id":"r1","record_hash":"sha256:d6977fad9dc0b59a864f97c077ec0f08cc4fb309b34b3926961dea1290b1cf3e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86440},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822948e+01"},"chain":{"prev_hash":"sha256:0000000000000000000000000000000000000000000000000000000000000000","receipt_hash":"sha256:309394b0795f0e480590cd158e3a29bd8566150f1216366651c9441069034dfd","signer":"ed25519:bench-node-01","signature":"a4a05464a1281c83959a399687bb9f77f28e87a17b19011ff375aad2922253e4fb0db53b6638a58885d4e593e0eb856ef99c10f62d1a0a6fca66232798222008"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4675ea4ad5863ae88d2b731e86245cddbcdfc0686906ca6447e8b277d2207040","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.336309080588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.804781e-02","shared_alloc_j":"2.268260e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":false,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820293e+01"},"chain":{"prev_hash":"sha256:309394b0795f0e480590cd158e3a29bd8566150f1216366651c9441069034dfd","receipt_hash":"sha256:6e9a7d2e0290e935fc77a24d36306667c018b26d83f2c19d337e7a3651a76801","signer":"ed25519:bench-node-01","signature":"22adbd54ff01486655bed4d21dd467f806608ecde2234ae5ba1cf0118183f3050cb85a3496dda7a26e8f6ec3f267a1aea9eed30a95cf9a38054af959d226570f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6c2776c6ac756d172c4b1b65b72f694c5fec7aff4c8f27cb31a1411b8993ea4f","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5d66d7e7446bb1cf9266702755e05743ab3805b0a13146038d40f354832fe6a1","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.447362070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.004085e-01","shared_alloc_j":"3.346950e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5d66d7e7446bb1cf9266702755e05743ab3805b0a13146038d40f354832fe6a1","served_from_record":false,"record_id":"r3","record_hash":"sha256:7bda35bf414431c9352b02f46600798bd137b25e0d035e028b4f360bba6d2d86","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86533},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837189e+01"},"chain":{"prev_hash":"sha256:6e9a7d2e0290e935fc77a24d36306667c018b26d83f2c19d337e7a3651a76801","receipt_hash":"sha256:08369675e9deeefe1f9b031b4576d2359f729945d9952e9b0033a8c030707eeb","signer":"ed25519:bench-node-01","signature":"5b3ca7cf1ddb30777b7d5f6b90afdaad51414c82a65fc9c975839fd0e8e94639660a7bb93eec883da1a3f14a1cfd614dfd3299ef3b0b4109fca553b69e556d0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d557a4112b218b7df326e85555ba3164731b1a22e75e41c066b3230c0269f445","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:000992060ac23f9a6b54bc2803d93971b95cb85a38feeb4e9d3559b2ffba116e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.153472570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.792273e-01","shared_alloc_j":"5.974244e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:000992060ac23f9a6b54bc2803d93971b95cb85a38feeb4e9d3559b2ffba116e","served_from_record":false,"record_id":"r4","record_hash":"sha256:075ab1ff59393c60da8559722711e3fa3b2c44a93c170ee6a918f85a4efabe5f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86633},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862352e+01"},"chain":{"prev_hash":"sha256:08369675e9deeefe1f9b031b4576d2359f729945d9952e9b0033a8c030707eeb","receipt_hash":"sha256:5cca5a00afa5a2494e4ac17a90026b17dea8f1fc1b8a068896db9a2a79a0a730","signer":"ed25519:bench-node-01","signature":"7b8005ddbd8349234ee5b9ccc9947b53da7d0d917a1d7ad3535625fcfe595c28a6824f53a26b2645eb7b47b53f2c91ac1a0e44d592b269bcb49ea5528f23b406"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e599ba7818ba6939c855ffb1b4dca9f46d3c2e6855debc8dd055831085e8b5f2","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:2b6cc99222f33d8a6ffd1cf22eee3fcfe52da5b3b9a2d9a735a73f65e5681507","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.410053370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.284481e-01","shared_alloc_j":"4.281604e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2b6cc99222f33d8a6ffd1cf22eee3fcfe52da5b3b9a2d9a735a73f65e5681507","served_from_record":false,"record_id":"r5","record_hash":"sha256:41c01d66b16234412c1fb58f3d033a7845b26bf4cb1994c3393a850130827581","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86704},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847884e+01"},"chain":{"prev_hash":"sha256:5cca5a00afa5a2494e4ac17a90026b17dea8f1fc1b8a068896db9a2a79a0a730","receipt_hash":"sha256:45996c32da4e81929c4c627e95542053b87442ba25800dc9aa9201afb71dad71","signer":"ed25519:bench-node-01","signature":"d335421cee20ed6acd462366e80f0cb106185c5ba8881297f5f85fd43ca95dc56cebeb8db450334ac409b29055439227b7fe09770f50931ca8267fcc753b5a0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5750b20086790aa5c02190baa151bb3f9faf8f4607275c4a7855ceb039f7e174","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:373ee59b311333a4d8f4d4bc7c250e0ba6a4ad0e9dfd8983a4eca3ed32f1bca1","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.684671580588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.906801e-02","shared_alloc_j":"1.635600e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:373ee59b311333a4d8f4d4bc7c250e0ba6a4ad0e9dfd8983a4eca3ed32f1bca1","served_from_record":false,"record_id":"r6","record_hash":"sha256:ee5673b905a5f97c8fe89450dd3585c17e3f42d25310c21c2ec178fe0b0aff25","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86731},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.806092e+01"},"chain":{"prev_hash":"sha256:45996c32da4e81929c4c627e95542053b87442ba25800dc9aa9201afb71dad71","receipt_hash":"sha256:854bfb495dca62deeec31c1a51b16efae26da1bcd4a3c571ad727ad11f685424","signer":"ed25519:bench-node-01","signature":"f12e6171865bab02b25b64e2d9e6a9ca6c6c2324bbeed31272740a83a698c5e1acac93e02b8f03e5db6c9227184f39e859f6fec11d8a7de60142ddb357f9ad0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:46bf2ee6dc372aeda1db629f7b61c39f9aca588b26de515bee5851d72ce0b59e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:94d79b3b10abf3b32bc3605e889a76f62d12e9b856a159e6889a8170369dfc6d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.807003270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.691360e-01","shared_alloc_j":"5.637866e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:94d79b3b10abf3b32bc3605e889a76f62d12e9b856a159e6889a8170369dfc6d","served_from_record":false,"record_id":"r7","record_hash":"sha256:781e5562d76a8d14d316897ae18b4fd0e03f6e448e395a5a8562b43febb6786f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86825},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859835e+01"},"chain":{"prev_hash":"sha256:854bfb495dca62deeec31c1a51b16efae26da1bcd4a3c571ad727ad11f685424","receipt_hash":"sha256:fcb159bfcf302552b98f9c8d0f4aee69cce55415803de58e05e10ff58e49f547","signer":"ed25519:bench-node-01","signature":"727d7e880e60202ae227b08a8b0fc02a9b48fa383e60bff1d916bda34d4ab07df407dd12f96e406a209c91422834240e6faae1a37a123fae3c2a41ecbf7a9804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3bc976ea0529410fd15e8c3da48782de5eb748f280b35670d91df90962b84f84","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.128474650588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.199438e-02","shared_alloc_j":"2.066479e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","served_from_record":false,"record_id":"r8","record_hash":"sha256:ae42ca1dddafc073a12617d3f2c47a5ae0d14b088c0d45326c5afe31fbd99357","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86860},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816247e+01"},"chain":{"prev_hash":"sha256:fcb159bfcf302552b98f9c8d0f4aee69cce55415803de58e05e10ff58e49f547","receipt_hash":"sha256:126cf9ddbe9cb286ed3425987f9a64accc6ec7421869509dda7e857c0953b2b5","signer":"ed25519:bench-node-01","signature":"0b317aa0c6c14fec19e780df4774282d518273c4de29d3802b94e9720f0b35d845b378fb2587d900d919453c4bc5287fb97921003d4d87fe1165310293835302"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8bddfe885280dc5634b849f4e5f42116a5c87748eabb792120322027f42f05be","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.898794770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.718095e-01","shared_alloc_j":"5.726984e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":false,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860516e+01"},"chain":{"prev_hash":"sha256:126cf9ddbe9cb286ed3425987f9a64accc6ec7421869509dda7e857c0953b2b5","receipt_hash":"sha256:2a406812c3a999c718d957a527adf93b5d6710a74419589fa0e3fbad932bc2a3","signer":"ed25519:bench-node-01","signature":"1662d1b0f78a5364c4150daa78b5bdfa27bcf1b15f279d6b3af64bada8b8e2230142a741eb8d10a86820943ae46fed6425f925c437d85ba5326300624897080f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b2ee0172c1b2d6ea8f27ed9c3543d359dbb9573a19af888b217faa6c455dd52e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.336529070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.554328e-01","shared_alloc_j":"5.181095e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856166e+01"},"chain":{"prev_hash":"sha256:2a406812c3a999c718d957a527adf93b5d6710a74419589fa0e3fbad932bc2a3","receipt_hash":"sha256:ca5737e7c54da4204d05eb6a80939fce84ffef21609de8f98a605ce1306d80fb","signer":"ed25519:bench-node-01","signature":"decdc42ba1a59df210392d249b36be576d9803dd990bb40990406f9ed5f1fa7d40f82bfa147605da8f2834b3ceb282eedaee909d72bdf99eb1815740b627a20e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9b75bc43114ae925e83bdf6a9edd243197ca8cf6a44f05da9281553194dc2819","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ebfae6bebcb2216decc8a5f5248c809294a8c5e1a542d328eee0999e102630d0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.347019820588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"3.923355e-02","shared_alloc_j":"1.307785e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ebfae6bebcb2216decc8a5f5248c809294a8c5e1a542d328eee0999e102630d0","served_from_record":false,"record_id":"r10","record_hash":"sha256:928cde2a1820a04cc5cc97df8139b399f07faceab9496c37f6f9b2a0265ede1a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87063},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.796377e+01"},"chain":{"prev_hash":"sha256:ca5737e7c54da4204d05eb6a80939fce84ffef21609de8f98a605ce1306d80fb","receipt_hash":"sha256:d45bac5068dd312ad05210578217a6de523498aaaa2777d51b964f966e955248","signer":"ed25519:bench-node-01","signature":"42a4101ce85087bd122ce1780007dd96bcde16f1b3301f53f0453f1c7153c2cf0c75701fe3cff1e1def79f42ccfbdce59a9bf4df05693a72c561e47f67144404"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b6b296c3bd5ddb1a77abadf17b1f9e423485bf3e25a918e5b527f8e35e47f58b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:83e3ecffea2fc1d618c8e6a2b3989bbf71e691b703b087230e7c8df1a5eb2142","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.415323070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.577278e-01","shared_alloc_j":"5.257594e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:83e3ecffea2fc1d618c8e6a2b3989bbf71e691b703b087230e7c8df1a5eb2142","served_from_record":false,"record_id":"r11","record_hash":"sha256:6b20a68c63f066ea3b3730f453a658b9fedb04fdd68d05e5b26ebcb6db3b5af8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87151},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856802e+01"},"chain":{"prev_hash":"sha256:d45bac5068dd312ad05210578217a6de523498aaaa2777d51b964f966e955248","receipt_hash":"sha256:94e04e791534c43527db04f4cf04ebfaef1ed0405d06ec60590e1a79050c21c7","signer":"ed25519:bench-node-01","signature":"64ed13053a84a1be4d860dc1142f7cf07209d27d5922fd3a41f5eb60266b1ed9eca2e5ceb8f30466eddab9f30c9854b267d9684f25061656f5758d9d5ed8b00a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:43b47665a2e8a2130418b35700db5e1ad35f90960f67570ece4d03fcc99bb443","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:bb697fd6f8f128e857820859facf75e9f5686504c1ac81b8de52367d1ca1d83c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.131488870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.203346e-01","shared_alloc_j":"4.011153e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:bb697fd6f8f128e857820859facf75e9f5686504c1ac81b8de52367d1ca1d83c","served_from_record":false,"record_id":"r12","record_hash":"sha256:ab217fccaef6ef754ced70fbf224f661169fe7f7af2a3119a7e8009e8aac0e51","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87218},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845051e+01"},"chain":{"prev_hash":"sha256:94e04e791534c43527db04f4cf04ebfaef1ed0405d06ec60590e1a79050c21c7","receipt_hash":"sha256:7a02805a365074c7708a61857ada2128519d328b9bcf5cf91bb0bc640760b7ce","signer":"ed25519:bench-node-01","signature":"ac68763bc288efbd7fda072f1840b1ffe327d6b7e151a4a46c9253d3e7f71a49940e2150e4f81b83649609fd06299ceb9297572edb4e03138028936c7472380e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f75a29c3bda8a67977d0a1e993d424137624fc020eb788dd961509c5f6679c9b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:a8e321822bb7a103eee73415fa73a912b90c5f863fbec7633f2cb269013e7c16","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.788849270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.394810e-01","shared_alloc_j":"4.649367e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a8e321822bb7a103eee73415fa73a912b90c5f863fbec7633f2cb269013e7c16","served_from_record":false,"record_id":"r13","record_hash":"sha256:2b6453fee78877e034de88726e8e50ed7892dc1bc50372ca02e5bf255acd0ac5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87295},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851463e+01"},"chain":{"prev_hash":"sha256:7a02805a365074c7708a61857ada2128519d328b9bcf5cf91bb0bc640760b7ce","receipt_hash":"sha256:7f7403098561b86780411871efd456a4f4c44d9ac1844d885eed64671b94a23a","signer":"ed25519:bench-node-01","signature":"c30fe9b72cb795389bae58262149c47419c153b21ca2c41d620706f794429dba76b4177fcb713de54c8e75f1bc772e7c3940ee1a674d7b3274ec0bb212155203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bd4d30e68d8fd454f2c98695b4a7c5db1277cdc1ca6e670b44af7e29a4eb0c11","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:87fbc23294c2ec468634d4d2a29b0784ae6d1e65ac331af477e07c957fe523f0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.720151970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.010140e-02","shared_alloc_j":"1.670047e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:87fbc23294c2ec468634d4d2a29b0784ae6d1e65ac331af477e07c957fe523f0","served_from_record":false,"record_id":"r14","record_hash":"sha256:48bea2997a832f667907939cfa9908442a2f5ff3f43b4094978534a0c6825f0e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87323},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.806997e+01"},"chain":{"prev_hash":"sha256:7f7403098561b86780411871efd456a4f4c44d9ac1844d885eed64671b94a23a","receipt_hash":"sha256:c8ef634757b00f9a208836304d7e307bf8d2504bf8a8cf1f0460cac96287a2e5","signer":"ed25519:bench-node-01","signature":"7b4fad94f57721cc1b5f880e9d393129b55498f47755ea9334c2a6d56fe089756054e305d15a3b2efca0d526fa48f7332e282252cb92479ed5cadecc6c2c640b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:65be72ac5ce69851ee4045d22eee21f2c591e112e31b9a5ea917b4575ae3ccbe","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cac3ec97ccbcc9911415dd1c3364a4e1be2862326ead2359d76fa0d81c5c2e41","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.863894430588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.428816e-02","shared_alloc_j":"1.809605e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cac3ec97ccbcc9911415dd1c3364a4e1be2862326ead2359d76fa0d81c5c2e41","served_from_record":false,"record_id":"r15","record_hash":"sha256:7ec6c4fc3832e69520a2be2769278ad36c6d32a8f6002ef431fe4b98142af0b6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87353},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810482e+01"},"chain":{"prev_hash":"sha256:c8ef634757b00f9a208836304d7e307bf8d2504bf8a8cf1f0460cac96287a2e5","receipt_hash":"sha256:5e8673b0ff53b6eec4e3400f0537b19c10ef72ff2d71e642fcd18ab9ece807f5","signer":"ed25519:bench-node-01","signature":"e8c44bfb171a7215d0181599f89152cdb0d5d8ecb42e2d1a52d24413cd46d329c6d306cdab4b07ea199203614213e3affc36510ebff77ba14896225e93e6cc04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:51c5b9403390196f8cc04b84b4661b844a6b19172255c116dc758eb52b1b676c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.214160970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.518687e-01","shared_alloc_j":"5.062291e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","served_from_record":false,"record_id":"r16","record_hash":"sha256:3227d5f5cdb47b0c636c60fce42fed733f0e84ce2c21552a8ea3164c96c9d710","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87438},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855158e+01"},"chain":{"prev_hash":"sha256:5e8673b0ff53b6eec4e3400f0537b19c10ef72ff2d71e642fcd18ab9ece807f5","receipt_hash":"sha256:9182fd269b9cfd0c0f1b4202cd3b496a400f3e584c817865d384127bcc4c7843","signer":"ed25519:bench-node-01","signature":"660e81013ce20548dcf5c740515a9a25bbd51a4bf044dac8636d1455bc7642f269453a7b2dcde859ddf33b52218091edd20aeb2ca319d863f1db5655c3dc4e0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:14b590159c2c5e38d5be29e9306b7f584e674bfd9d332157b1005e5efa18c29d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:e496bb563eed03c5e50e65c2be033983e2af2129a553cc99debae35f3260187a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.581065130588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.517656e-02","shared_alloc_j":"2.505885e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e496bb563eed03c5e50e65c2be033983e2af2129a553cc99debae35f3260187a","served_from_record":false,"record_id":"r17","record_hash":"sha256:604c5863e2fa80431ff93bacbba273f238b81bbd89439c9049af8248095cb968","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87480},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.824620e+01"},"chain":{"prev_hash":"sha256:9182fd269b9cfd0c0f1b4202cd3b496a400f3e584c817865d384127bcc4c7843","receipt_hash":"sha256:14ecd477e68f40a1d9f8babec0d89be57e57995dc06916694f8349a6636caea1","signer":"ed25519:bench-node-01","signature":"447f1402fdbc175ed4a2693a7c6756e44e52188a005eb8b4e0d75c20c26aeb55f89d98961eb701c0f8526743ef8aa4b7ca73967be9660fdfabea260e5a1e6200"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4a01d5457c3bb502128587b980e2fcfac2eff99e66f1e9660ee7e594ff450a7c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:543b0438d15cea081a05c8bc2a7c7bab836d901528216ef19b14045909d3f014","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.887140700588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.409143e-02","shared_alloc_j":"2.803048e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:543b0438d15cea081a05c8bc2a7c7bab836d901528216ef19b14045909d3f014","served_from_record":false,"record_id":"r18","record_hash":"sha256:f9e30653053e655f209019f00250ef72005c3130e28ee7ef20aae8f6decd898f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87526},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829487e+01"},"chain":{"prev_hash":"sha256:14ecd477e68f40a1d9f8babec0d89be57e57995dc06916694f8349a6636caea1","receipt_hash":"sha256:36449ca0a7f9bf2cdd4610aab81af521a77c242c621e4062f91f7d63f3aa7b2b","signer":"ed25519:bench-node-01","signature":"278006af05df704d69d102b36af76277d466f1f40aab1fc33374433021111d84cfb6d7a2ecf34782549b5ff688c0aaf0b02519a26966b922ad59e386b280cc01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7688626998e95a6267f5527b764386043aac203fa00fa8a9a9bc30d98873ef05","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:37707e34da5b534c649a60fc1296acd8d8c186353bae88e9ebb88424890d7407","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.188702870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.374860e-02","shared_alloc_j":"2.124953e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:37707e34da5b534c649a60fc1296acd8d8c186353bae88e9ebb88424890d7407","served_from_record":false,"record_id":"r19","record_hash":"sha256:ceaddc848f74519f3ddcb0c7bdbaa3918285688fa67a526f304a1cd23cc6c39e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87562},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817459e+01"},"chain":{"prev_hash":"sha256:36449ca0a7f9bf2cdd4610aab81af521a77c242c621e4062f91f7d63f3aa7b2b","receipt_hash":"sha256:915ed5c2dc17b018ef26842f70a0d68050ebe93e3a0ffb879b9c824ffb809422","signer":"ed25519:bench-node-01","signature":"29c38dcaba457faa4d274beb23dcec68a4fc799758d4c9c762d8721d7572a178164f43178a5f0738579440bdabe208b057d8b5cad9537abd7bf50613630bf704"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:56a6a1486410deb5fd50f96faf4f370fc770cdea210e86221577d53283a012cd","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:63943a4226d8fb42655215a97d92b7b39c4d83792db09fef2b659595697f2813","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.900554640588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.448207e-02","shared_alloc_j":"2.816069e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:63943a4226d8fb42655215a97d92b7b39c4d83792db09fef2b659595697f2813","served_from_record":false,"record_id":"r20","record_hash":"sha256:ebb83c4e09bb79ba1d2aebf3fadda6505898f02ee3617fa696cd7e86ea11763d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87609},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829688e+01"},"chain":{"prev_hash":"sha256:915ed5c2dc17b018ef26842f70a0d68050ebe93e3a0ffb879b9c824ffb809422","receipt_hash":"sha256:482c54dfffcc220f5377dd875c61a56e50a7181c633044787c6953a7aa33f0c1","signer":"ed25519:bench-node-01","signature":"a2a955d04b224ec6e9c91f7b46b8394a2a48486769160f03f8433d13a6db0cd4043e90526830f4ecf5f9814e20655e9b7a0895bfa6aeba3b1398e2169154670a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:73637d5b1cda4ca8259088f4543011d1f3e0d2d823148ce143c5a9cde95ee9aa","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:678fe08a78a0cb3c662513b15302b138ce1354a79c85cb3644891a472d1730f3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.080976270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.771157e-01","shared_alloc_j":"5.903857e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:678fe08a78a0cb3c662513b15302b138ce1354a79c85cb3644891a472d1730f3","served_from_record":false,"record_id":"r21","record_hash":"sha256:079084a75b13903374430dbb22d3fb5c7d868e6b54c3fedf3534634e1cdc0d28","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87707},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861837e+01"},"chain":{"prev_hash":"sha256:482c54dfffcc220f5377dd875c61a56e50a7181c633044787c6953a7aa33f0c1","receipt_hash":"sha256:62b0d85c347f3f9fc6158fca95580b0e97213e53f67ffa78a5c24a428adcf2ea","signer":"ed25519:bench-node-01","signature":"4eef8f2b72b674c0cc0bf92161ba75e62712700b005edf82551aed07759960cfe3083fa1a258c1f42c505c459c8cbb9878841304b0700f098f04a136f795c10a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c0f539aa63d3a2eb3ec2ca2329febe8be68fa5d99a0410b645a0127461c813ed","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:af6e3f5337fa8c7c3e8c821840fa70047138fe84957d62d954f2d8aca1470b96","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.219555070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.520258e-01","shared_alloc_j":"5.067528e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:af6e3f5337fa8c7c3e8c821840fa70047138fe84957d62d954f2d8aca1470b96","served_from_record":false,"record_id":"r22","record_hash":"sha256:9063a9e7dc76b63ae3948bf18dbf7af9865ae1e78fa877c530e45e0bea3e1be3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87791},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855203e+01"},"chain":{"prev_hash":"sha256:62b0d85c347f3f9fc6158fca95580b0e97213e53f67ffa78a5c24a428adcf2ea","receipt_hash":"sha256:fdc56d8e0005be22cf8b5f6326f2783fd04ad1f6b872a74daedcc43b48a00e1f","signer":"ed25519:bench-node-01","signature":"6e24f895e1478da845417aaec203613fa0f409e3557a33cbb1d1b241b8cbbdcacbacc52921caaac396c7f1b7c17a82eec89b019946ea898723c07f4d8c919c09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b449ee863a7391f422bc48559dd34a92bc533a748404c1a6bbec2108de4df421","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:843d0ffb6136b8cb2bc9712d4d55ae5f149fd4716d6773cd5f2b57114afa7b5c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.752153270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.015970e-02","shared_alloc_j":"2.671990e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:843d0ffb6136b8cb2bc9712d4d55ae5f149fd4716d6773cd5f2b57114afa7b5c","served_from_record":false,"record_id":"r23","record_hash":"sha256:da71aa5188ea791e9566dc90cb37b6f2888b0d974936587c4654b082719822a9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87836},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.827407e+01"},"chain":{"prev_hash":"sha256:fdc56d8e0005be22cf8b5f6326f2783fd04ad1f6b872a74daedcc43b48a00e1f","receipt_hash":"sha256:25e046e7db7194d6e164a41316ff84976ed509d26ef4fc315e9bc7e8f8764acb","signer":"ed25519:bench-node-01","signature":"43e9487b9b8dbe8b448740375a81c3552b97ac659936ff2cc5739a44a57455dfc6fc88bd588d891aefe1e6be3c1cf33f5a96166a7d20d3f88c812ed77242d20c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:77007a40f5d7a6dfbd3752c206c60b6895fafe649df3c3df909762bd0d562a70","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:441d343ae7ce5bc22fef8578d70d16d57a6e30008eba1a33565b6e8c73e5f4c1","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.816303510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.290194e-02","shared_alloc_j":"1.763398e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:441d343ae7ce5bc22fef8578d70d16d57a6e30008eba1a33565b6e8c73e5f4c1","served_from_record":false,"record_id":"r24","record_hash":"sha256:6a8a2b74fa3a07b4c1a3efe2be1167e8fa9ad6f2a88cd3ca3775ccdffd3aa998","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87865},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.809359e+01"},"chain":{"prev_hash":"sha256:25e046e7db7194d6e164a41316ff84976ed509d26ef4fc315e9bc7e8f8764acb","receipt_hash":"sha256:6e2ad19f36945cf6bd7232453d2ba014a6d3698870b9b0e5943897ebf0226446","signer":"ed25519:bench-node-01","signature":"b3f1b957af97887cf4abe961e99df101d224a5f5308a22457fd54fac1d23d80a9ede0b205ce612fac354ba65814987d8bf813425e97d90639affd63765b4a806"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cbfe59c3e32fbd2226e46529c46ef8d363adc123819681cff4f35356d44f2ddf","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.686044970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.364867e-01","shared_alloc_j":"4.549557e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":false,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850521e+01"},"chain":{"prev_hash":"sha256:6e2ad19f36945cf6bd7232453d2ba014a6d3698870b9b0e5943897ebf0226446","receipt_hash":"sha256:f11fbb6ec27697e8053c32d0e242dec4bae00b97a4974a060933e193a4a54eb9","signer":"ed25519:bench-node-01","signature":"8c60e924d3ce37ca46bc1cbaae75f4dbafa19019da0cf76357ccaa52d54b6ddebc1dd32390f5c2bc19f0862834772bebe2974619a19b3c243ecc1914cd0a4f06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:056eb9cefae08e0a195231fc51ea7b58b09ecfdf63a8bea39da9822c48880e51","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f1070bc76733cc042f615c8c46f0da8964f7b072195de00defc3becd95ac9c58","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.359775550588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.873128e-02","shared_alloc_j":"2.291043e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f1070bc76733cc042f615c8c46f0da8964f7b072195de00defc3becd95ac9c58","served_from_record":false,"record_id":"r26","record_hash":"sha256:6201b83c8fa51bdd9d68fab6860e3a0ac914bf9cbb10d6524751271fc0ec524a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":87979},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820727e+01"},"chain":{"prev_hash":"sha256:f11fbb6ec27697e8053c32d0e242dec4bae00b97a4974a060933e193a4a54eb9","receipt_hash":"sha256:f7261a05bf02e6c4e5edb2808816bee4c6422232c6ba453090c3d4fb6f278e6e","signer":"ed25519:bench-node-01","signature":"9c0b22b56931ae20c6a5b104176c41cb989f7e3d57e4d0bbb7850a3fd7fb5dc4b22cc78b27f6720faa47b01fa90dd534634dc5dbdd0c81057d76e7ad44c19505"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5f416240abbd5902e0d8666009ad5a4ffcb96e42edd3ca7c99c4031b60058508","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:272c9d86aaf700789284bb8372a2da11c6d2899016b0aea1b9b930ae8725b372","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.275048470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.536422e-01","shared_alloc_j":"5.121405e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:272c9d86aaf700789284bb8372a2da11c6d2899016b0aea1b9b930ae8725b372","served_from_record":false,"record_id":"r27","record_hash":"sha256:c220d6e1378778daf5891a7e6b02c98189dfc2bdcfaa5148d9ee4272c2661772","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88065},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855663e+01"},"chain":{"prev_hash":"sha256:f7261a05bf02e6c4e5edb2808816bee4c6422232c6ba453090c3d4fb6f278e6e","receipt_hash":"sha256:bef1156ea682b358f4ac2964ba3c5a5eb55451505111e05a0ac5e931f90f49fd","signer":"ed25519:bench-node-01","signature":"9635e021bbc575a13fe4023d84de48c8f17955152c6fd270e23a55d3db50ff136e191b847e377bf7c9da5dc80aea08665827797b90316f1cfe5ff3328eb2fa0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b3ac9c873c1bd19d0e8da4585e4d8f85abb8a2914258480d09a4b7d4092a5af7","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:63943a4226d8fb42655215a97d92b7b39c4d83792db09fef2b659595697f2813","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.221714820588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.383625e-02","shared_alloc_j":"3.127875e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:63943a4226d8fb42655215a97d92b7b39c4d83792db09fef2b659595697f2813","served_from_record":true,"record_id":"r20","record_hash":"sha256:ebb83c4e09bb79ba1d2aebf3fadda6505898f02ee3617fa696cd7e86ea11763d","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87609},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834249e+01"},"chain":{"prev_hash":"sha256:bef1156ea682b358f4ac2964ba3c5a5eb55451505111e05a0ac5e931f90f49fd","receipt_hash":"sha256:61ddcf29b04151882bc32635050a7b384b05bb87ac55b1766bb010e4dcbfe38f","signer":"ed25519:bench-node-01","signature":"1f320f529e60295400570eda5e61f034709c250260f121928563f6bf1a999249408394809f73f4ff6019e96865cf1f08a0786a51c3c81bb69cbd8156b31c820d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e9b168f75d64b234fde8118221768916245729233a55f97c7e004e947ad321bd","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:fe80b86dc90e86386ead4fb1e13dbea22c6bf076ee82b9ab7e59aa014dfac56a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.904837370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.137331e-01","shared_alloc_j":"3.791103e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fe80b86dc90e86386ead4fb1e13dbea22c6bf076ee82b9ab7e59aa014dfac56a","served_from_record":false,"record_id":"r28","record_hash":"sha256:165421441a750052156752c398c9e7e400c47d11957d7d5f3cba0767a0ec567b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88180},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842600e+01"},"chain":{"prev_hash":"sha256:61ddcf29b04151882bc32635050a7b384b05bb87ac55b1766bb010e4dcbfe38f","receipt_hash":"sha256:57bbac19be2cc437b6fe6415c781222bdaec9a947a3f0493fd3fad83c3c69de1","signer":"ed25519:bench-node-01","signature":"8ca97b898c6ec529570c88eb200fba7973d2311fe56a311d68dfc44df39c020c1c14c1dbd9e271bc92542ac24b2aa8c7f89e4ac38f6335048d3fd0190ae93d04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6d7fffcc669b62cbe1df51da94e99db060a4b7677cf5fc99dd1a139a1b15a2b4","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c05b2f88954eaf469ac8bbfcd4547bc6e74c41180cce4195cef4e40ecfc1095f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.341960890588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.733862e-02","shared_alloc_j":"3.244621e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c05b2f88954eaf469ac8bbfcd4547bc6e74c41180cce4195cef4e40ecfc1095f","served_from_record":false,"record_id":"r29","record_hash":"sha256:51530ece39ff4c2fc78ba1a6fab22f1e347ae5edeb5a985a31f2bd5bd10d6694","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88234},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835840e+01"},"chain":{"prev_hash":"sha256:57bbac19be2cc437b6fe6415c781222bdaec9a947a3f0493fd3fad83c3c69de1","receipt_hash":"sha256:63a6a7e747833be2d084585cadb7c61868710d2d62c27bb32f87dfc774cd40ac","signer":"ed25519:bench-node-01","signature":"62be302942453096abf0ed25e3130ca7425012f95d51b3da2c9fe2bd079bebb83738c313a01adcde0f44bb3ae62b16152a5a1e84374189ab9e31542656239403"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1f1ec4bbfd7efa67ede3db37752e1a004d3561daa82b2e52e45246ea2ecedc52","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:9ca88fa2ca1389cdb90b09bc8a2e8c6a5f0e5c9345cf31bef0e590680aa21c13","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.461151270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.255770e-02","shared_alloc_j":"1.418590e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9ca88fa2ca1389cdb90b09bc8a2e8c6a5f0e5c9345cf31bef0e590680aa21c13","served_from_record":false,"record_id":"r30","record_hash":"sha256:b5afc08bf4813bf683141ccecdea0708bececadd5028c162adfb5247d7fd01e4","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88258},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.799910e+01"},"chain":{"prev_hash":"sha256:63a6a7e747833be2d084585cadb7c61868710d2d62c27bb32f87dfc774cd40ac","receipt_hash":"sha256:9dbed053a6c733630819866474b5b44c105d273b72037aef5450fb6f5fc4e84e","signer":"ed25519:bench-node-01","signature":"6436a66c9a8006ebb8fec17e7ca2007e05ad753c3fa93425a2058d3cdeeec4ac0eb98b2746a2aaaf4c3bbbc2bf055304f0fb5f921ab5c9e7c7358746f085e00d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b6c3a481aca2b6daa8a4b8f02034f0d476305eec9c22d1fb15cf45d24d844283","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.074848570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.769373e-01","shared_alloc_j":"5.897910e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861794e+01"},"chain":{"prev_hash":"sha256:9dbed053a6c733630819866474b5b44c105d273b72037aef5450fb6f5fc4e84e","receipt_hash":"sha256:8821664302fce02c424653c2ed261365a343fb084278fbcbcbd6b1d535e50fd2","signer":"ed25519:bench-node-01","signature":"f73a9f82468a0be7d9ca859fbad4b5042fa15c03d8a1cc01ae0a16f3c6e952fb3f599edb673d4ecc2df110fa8abffab46c6fe6fcfc5806d59c4f31426dc2080f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1b2955cebafbc2267e7ff496b77a68c889750601f1a2fb3ee51af446cdaf8dbf","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:b77ef8ce17572e60cd55a9745834934f154c1d52d767075c574f18f1d3d4d748","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.147329240588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.166967e-02","shared_alloc_j":"3.055656e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b77ef8ce17572e60cd55a9745834934f154c1d52d767075c574f18f1d3d4d748","served_from_record":false,"record_id":"r31","record_hash":"sha256:e17a4ccd8ba7177439ad54533820146198f394f78399d13767e88e53a70a5c46","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88407},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833234e+01"},"chain":{"prev_hash":"sha256:8821664302fce02c424653c2ed261365a343fb084278fbcbcbd6b1d535e50fd2","receipt_hash":"sha256:120dcce97d96bcd6079d8d560a6bc731cd09a4c95b8eb0ce3def29bb994c2f6f","signer":"ed25519:bench-node-01","signature":"de7c0855b30746642ea97b2512dcf2477884b11d32f3ce30177c1524be554732c7e457e6798532bd7aa0b2138de62df059c82bd96f1b857acbb430d86078650c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:49408cfc82ae402b2561f56e3c6b0a770d8f94c734aa511a6f15d7938f353567","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.393715770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.570985e-01","shared_alloc_j":"5.236616e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856629e+01"},"chain":{"prev_hash":"sha256:120dcce97d96bcd6079d8d560a6bc731cd09a4c95b8eb0ce3def29bb994c2f6f","receipt_hash":"sha256:458622d234d2c77dfa94f9044b42df9e60cf116db7b3c2c4c0ad62061f050fb0","signer":"ed25519:bench-node-01","signature":"5a8b0fab94feb12b08e3de59cdb37d77c6b3c10c0181ad7879f6b4dc4e0ea5682c41b6ea219664cebe934c4f4458e71f10d70d77e62477cf69bff5e2e74a9c01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a9d76b1c7a77a0f6af05c6d78a5969689d9203b80453d813c416b3c91c06628f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.798445360588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.150809e-02","shared_alloc_j":"2.716936e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","served_from_record":false,"record_id":"r32","record_hash":"sha256:15137fb9bb5c928e449c8d3e6b50b9ef1791b583f2bd04555aaf3a153e617bc5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88540},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828132e+01"},"chain":{"prev_hash":"sha256:458622d234d2c77dfa94f9044b42df9e60cf116db7b3c2c4c0ad62061f050fb0","receipt_hash":"sha256:6b59f086c020b0f016ae15c83e4dbcd98bfba60f001ee961ac409b165bc4a51f","signer":"ed25519:bench-node-01","signature":"8d55871b34dddef18a46d50435c5a3650269583f8b328ccd80924698dea713a8acb1883c0ba0b43d13de5415e56bd2d79eeb5b36f8a46c4a533070050b1c4f06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fbb7f35ba150f0fe3758f2316da2da1a9308a3bc6b6b28c04a3852207b3f8e5d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:38918dd8f55312dd4ef01adad024a47d010d9a3649ba108cc31f5e515e45f804","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.232700810588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.415624e-02","shared_alloc_j":"3.138541e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:38918dd8f55312dd4ef01adad024a47d010d9a3649ba108cc31f5e515e45f804","served_from_record":false,"record_id":"r33","record_hash":"sha256:c777d7f20123d1bd0cc3b9354425416201f01d95b67fa78468e09e0fc80d4d77","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88592},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834397e+01"},"chain":{"prev_hash":"sha256:6b59f086c020b0f016ae15c83e4dbcd98bfba60f001ee961ac409b165bc4a51f","receipt_hash":"sha256:d3d74e416e3a718bfdd07db723fa5d85eb50ecbdec7b706363f2e10d08494702","signer":"ed25519:bench-node-01","signature":"0c1bf77c6c875d3d689fbe482f1e32180dde7fc82c62c5e7cca0b3e2e7706d5c6e286156d567c616aadde31ebc6b86d2db6e06f32ae2c2e84cb481ec7117d305"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1a5282e93e2b6adc864f1cacb25bf5234267ffe291a90a34bddf4e9bfec3b325","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.048873370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.880210e-02","shared_alloc_j":"2.960070e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","served_from_record":true,"record_id":"r8","record_hash":"sha256:ae42ca1dddafc073a12617d3f2c47a5ae0d14b088c0d45326c5afe31fbd99357","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86860},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.831854e+01"},"chain":{"prev_hash":"sha256:d3d74e416e3a718bfdd07db723fa5d85eb50ecbdec7b706363f2e10d08494702","receipt_hash":"sha256:5938665691be5672cce925f0d7546ec5dbaae6dfea1601cf9c319ca5279bae3c","signer":"ed25519:bench-node-01","signature":"a4c53c082fa44d7ba0273bd02244cc6b8da5a972285e36efd767f77b2d7c4d87ce4d5d7865391a79af73891c23024007b207d01c4055bf5cb52746d067202804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1469f4b8e62f7d2232d41ea53076252386e20a07ba77c9ed20eabd76863227df","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:a5c65c1251df6b52b6e4a628d9d24fb1484cbf31edba89ca1f021a79d978cf37","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.170202470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.214622e-01","shared_alloc_j":"4.048739e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a5c65c1251df6b52b6e4a628d9d24fb1484cbf31edba89ca1f021a79d978cf37","served_from_record":false,"record_id":"r34","record_hash":"sha256:b5c7b68160c68bf409610e2b484bfa8d201823445b4f59c2037819d4f78ea6d9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88709},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845456e+01"},"chain":{"prev_hash":"sha256:5938665691be5672cce925f0d7546ec5dbaae6dfea1601cf9c319ca5279bae3c","receipt_hash":"sha256:e745b58c338e0af2f7d8d4744d46f69d6463c1c37db619122ab2c34313631590","signer":"ed25519:bench-node-01","signature":"cf13da982f4efa17fc0eda1b05f61ba643a0d09748400b1237d3a9a6fb34868f9d5640f63e69b200a1126e27107ec8dfcaceaca3037afe37c69377a2fad11a06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3cbe474d0ceb0922c9800852bf1abfabea01f867e6ba7f9d0e4ca80b7e392fea","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:995c74d71caf5d717ec1b1db854037a328e7922345dc61b3437aba12ed2a8eb3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.219992870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.229123e-01","shared_alloc_j":"4.097077e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:995c74d71caf5d717ec1b1db854037a328e7922345dc61b3437aba12ed2a8eb3","served_from_record":false,"record_id":"r35","record_hash":"sha256:cd15947d6e762274d30dce74db45517a670782a8e86371490bea5359d521155d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88777},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845971e+01"},"chain":{"prev_hash":"sha256:e745b58c338e0af2f7d8d4744d46f69d6463c1c37db619122ab2c34313631590","receipt_hash":"sha256:8a06ce53c58f4dac11b1263ed4285bf5186bfa0d0f29ce0fc6dc91ad10ce7d62","signer":"ed25519:bench-node-01","signature":"5156b6573a7af4ac1247c95fb10137a963ceaf7bf8b37cd37cacb1784de5a21d2789ce1dcec999d77a820f724c19c6de20c5eaa58fe4962bb84ea67397f05305"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7caf808bed4687d04087da882eee885f76ea762d8b704e454f8359d788ed1a2f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.304182570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.623830e-02","shared_alloc_j":"3.207943e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","served_from_record":false,"record_id":"r36","record_hash":"sha256:55a2b8e716a8eb9fda50c9c4ad876cf5d024f9ae99c0be4799b8f2121d94a546","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88830},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835346e+01"},"chain":{"prev_hash":"sha256:8a06ce53c58f4dac11b1263ed4285bf5186bfa0d0f29ce0fc6dc91ad10ce7d62","receipt_hash":"sha256:232b7822ff090012afdb75e64bbd6dd7d6214c9fe6f8f4409b561ee7b157fe26","signer":"ed25519:bench-node-01","signature":"f7d1ab7455058e30138c486608eb29c8c6854c84e625a9119987082bcb2cccc35eea4de8fb524d9d3f4023928af1c6ef8aa5f4aea227185ed83a2d95819dcd0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:91f3998b2dadd3bb5937546bb62faf7d4726ade976e7f47ec5699d1634a4b5f8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:6a28d2adaac95bc3a2ea8c61107a5d0963c4e4bdcbd5093ef245a58cc8ad327f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.788573470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.685992e-01","shared_alloc_j":"5.619973e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6a28d2adaac95bc3a2ea8c61107a5d0963c4e4bdcbd5093ef245a58cc8ad327f","served_from_record":false,"record_id":"r37","record_hash":"sha256:4848c4434249834c11300558709c4263839533269cdc31662f67a1062cd0586a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":88924},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859697e+01"},"chain":{"prev_hash":"sha256:232b7822ff090012afdb75e64bbd6dd7d6214c9fe6f8f4409b561ee7b157fe26","receipt_hash":"sha256:b6638cc634099c00a20a429fa4a0e2d3b3641224f885a565265700c7a717a090","signer":"ed25519:bench-node-01","signature":"3253b9fabbe6f704eced83ac243a4ef8bfc9b789e53b59666b3f9df0c814e8e7a9517bae1da71f0fc55a470e0d7df51f58ca903ce660c82917c0ceff75863c08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9acfc40789a6b11aaeb223a1faf5fea9a9ff52edb1528eb7c84a35ab62c00078","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:57d222a9b6821d1beda2ff0e08a18cffbef322c999e07cd13ed996e871aa136d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.808464070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.691785e-01","shared_alloc_j":"5.639282e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:57d222a9b6821d1beda2ff0e08a18cffbef322c999e07cd13ed996e871aa136d","served_from_record":false,"record_id":"r38","record_hash":"sha256:1af4ef5e3434b2a6ddc82b973a279d3791e488a6d302bf5ba8fc10a9079a16c2","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89018},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859846e+01"},"chain":{"prev_hash":"sha256:b6638cc634099c00a20a429fa4a0e2d3b3641224f885a565265700c7a717a090","receipt_hash":"sha256:0a0a2031169b35d633feedbe65daa69df1cee419b3657ef31245089ce6127dd3","signer":"ed25519:bench-node-01","signature":"4db2ca907db9e9d94e7c8a3ca67238770e005024e15f0b4e16952cae8c393a149aa6f85e5d5fa64ce540d3ef779f83877c3b42155f73530fde527be6eaec5a04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:577198f570b0675ed09a477e50f1a7f03962ecaeca81a8fb196734770ac1f926","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9db2aac2012a48a242f2d34c7522134a296e612ec7ee0f355b4dd16eebff0f00","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.910973070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.139118e-01","shared_alloc_j":"3.797060e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9db2aac2012a48a242f2d34c7522134a296e612ec7ee0f355b4dd16eebff0f00","served_from_record":false,"record_id":"r39","record_hash":"sha256:cb164f9a8676b00635d914d154fc2daf17c61247b49ae2591fe859efff750556","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89081},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842668e+01"},"chain":{"prev_hash":"sha256:0a0a2031169b35d633feedbe65daa69df1cee419b3657ef31245089ce6127dd3","receipt_hash":"sha256:03806c2c9b6603a99abe5fbe61874ee2da6f81f4318e66dbc16da530763c728a","signer":"ed25519:bench-node-01","signature":"53bea5da17174d6f3dc22add8b2c8364abb1c39ea2a3a9394b3b8ce5593359c8a204fafbd25ace46838fa25d3e55cfbc1d6d878a163423a274111179c7a3be04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1c81d8f062a5eb5329f023d2fb7469982f148db07eb4ab3ada18a84fcb5b4264","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:b38cd1f33a130455853b4e6fce41ca504f4173d34ad1f99470b37673b5f8daad","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.080722670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.771084e-01","shared_alloc_j":"5.903613e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b38cd1f33a130455853b4e6fce41ca504f4173d34ad1f99470b37673b5f8daad","served_from_record":false,"record_id":"r40","record_hash":"sha256:51291ee97ebadde6d89c8d4fa2e638e63df1dad7d9b4204cf60a7cc2731225b7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89180},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861836e+01"},"chain":{"prev_hash":"sha256:03806c2c9b6603a99abe5fbe61874ee2da6f81f4318e66dbc16da530763c728a","receipt_hash":"sha256:5cc50b3cdeba8009fe45742a96fd3ad6ee60ef69d1896465da80d482edb043a9","signer":"ed25519:bench-node-01","signature":"cc4f52374f689182b0cfbc0b922358049e05629d93760337ee38fca62f514a0a8859e95eef6ade5754cb9c9aa70e3ed1773e8020f8d4619826909ba828047202"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:49d6b3b829bce2e4a594d9468bce68ff50f411b88ad27fcf7c3d0f3f784f206d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:b4e6cd21c0ba051d04aab9042e5e115c3bbe352ada582acaab628fc22dc8fd67","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.762752760588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.046849e-02","shared_alloc_j":"2.682283e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b4e6cd21c0ba051d04aab9042e5e115c3bbe352ada582acaab628fc22dc8fd67","served_from_record":false,"record_id":"r41","record_hash":"sha256:ec08e4e68798e0e921a233c9482a51b113bef41676e1d4170b7d18e1126a11ed","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89225},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.827574e+01"},"chain":{"prev_hash":"sha256:5cc50b3cdeba8009fe45742a96fd3ad6ee60ef69d1896465da80d482edb043a9","receipt_hash":"sha256:2b819fa12e4817ac63d1646f97a728b10879398805e37ea40b117f96d60dd2bf","signer":"ed25519:bench-node-01","signature":"522a535c4cfe2516005687ffceb53a363373886a5ce1de543717e898b9430a28a0d79532036ec192c30fad1cc04e958fa32bced3069a433e5509c9919e48250c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f594ab4ef20528334449845c0333b11825ee29706cfe78a96b3909c44b1bb3a7","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:9c89b9128168c614899065585aa1af0e9fde30a0cf82a9f112d769711fea702f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.481688430588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.315586e-02","shared_alloc_j":"1.438529e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9c89b9128168c614899065585aa1af0e9fde30a0cf82a9f112d769711fea702f","served_from_record":false,"record_id":"r42","record_hash":"sha256:3d102fb60f2f9058c08b27c0d67046777852bbbc14385558627d5b8d74b5d902","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89248},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.800516e+01"},"chain":{"prev_hash":"sha256:2b819fa12e4817ac63d1646f97a728b10879398805e37ea40b117f96d60dd2bf","receipt_hash":"sha256:07e0b67071965b8a4956d409c747a5caa618c5a34a9ed1868bcd112437b914f8","signer":"ed25519:bench-node-01","signature":"dae5dae27078235111e7528788fe026b7e5412ba9c5294aba082a2420f75274465ed8a2097a58e0b92d4de822df86e8dc891086063517f02d898152348ddc708"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:03f9b0274cf9020629dba1ba9b3b46244f5761faf9506ade83a520d81b9e06ef","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.024818170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.463539e-01","shared_alloc_j":"4.878463e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853552e+01"},"chain":{"prev_hash":"sha256:07e0b67071965b8a4956d409c747a5caa618c5a34a9ed1868bcd112437b914f8","receipt_hash":"sha256:5fc114cf390e77e2aac769219f41b277ff725d6495e30dfa07845cd9f067decd","signer":"ed25519:bench-node-01","signature":"6e0da583ecc07d103a6c8b2d9e9996ecfcb11a114e8dc6078638e272a5d5c896977c7126bd3e1e6fa0119dffd14619e06ff7762c7c69c91f3b0d7e32a4a17206"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d1a7a8926549bd9fe3eaf9e58d25d110edc8efd1743f7c6c6befdc733d87d0e6","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c07152cef374396b314cee5827193f70093e1aae2bc94f82384fea2c01b4f7d3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.082154170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.188976e-01","shared_alloc_j":"3.963253e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c07152cef374396b314cee5827193f70093e1aae2bc94f82384fea2c01b4f7d3","served_from_record":false,"record_id":"r43","record_hash":"sha256:ac347ee6d3e4ced19327ade920c78afd451bbdea6aad77145a03f74588ae7411","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89396},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844529e+01"},"chain":{"prev_hash":"sha256:5fc114cf390e77e2aac769219f41b277ff725d6495e30dfa07845cd9f067decd","receipt_hash":"sha256:02c02b7ad6930521957271e1b3d0efcd27b856b7a5c0068a77a9a21816eecd15","signer":"ed25519:bench-node-01","signature":"df455d009287a673648f5749bc4ddb84bc06d6e9d637c2a8581f49b630e48b707d4580d4f94c5e243f64c6947ba7c565adf54ccd8e93269b89e0656a7b5c1d08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d67c1cc2f92759c5eb99c912b7bfdb504dcd7175b14f1acbad8dfa6b98a0fbd8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.538357370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.321851e-01","shared_alloc_j":"4.406171e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","served_from_record":true,"record_id":"r8","record_hash":"sha256:ae42ca1dddafc073a12617d3f2c47a5ae0d14b088c0d45326c5afe31fbd99357","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":86860},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849130e+01"},"chain":{"prev_hash":"sha256:02c02b7ad6930521957271e1b3d0efcd27b856b7a5c0068a77a9a21816eecd15","receipt_hash":"sha256:5512f8d5b13d9c9cf510c98f7daa09b4ef593b831b8e4722f9a86341e5315054","signer":"ed25519:bench-node-01","signature":"ef808105417e067344169bb2a74f9e1d8ca80fac5e79be18f2c76d4d3847d1a0884bc4e7923759b23f7caf54c0e840c0215d5681481c3c335cd5ae0b99bebe00"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d2031f5552e29de6846742f78edd4708327cfdcf338c40e35cdfaac2658bd709","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.801191770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.398405e-01","shared_alloc_j":"4.661350e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851575e+01"},"chain":{"prev_hash":"sha256:5512f8d5b13d9c9cf510c98f7daa09b4ef593b831b8e4722f9a86341e5315054","receipt_hash":"sha256:40c5cdf552efbd06f3e2134dab02ad30375b0b63212f0f833776e6d208603b71","signer":"ed25519:bench-node-01","signature":"648a26078c5968bab28553b1ef542705312fc3a3f7faf0dbda0fdb7b69240e35698b8454bdaef68beb9a27fb705badd52809745e05cc6529140c5d3188934b09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5e92419115c31ca2aed47da37433023e40830d11e63152923667bd54672b0da6","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:0267ad62d64134b8622d4fb07cdbe888137deaca0fdee61e6b66d8bcb9076eaa","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.411046470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.576032e-01","shared_alloc_j":"5.253442e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0267ad62d64134b8622d4fb07cdbe888137deaca0fdee61e6b66d8bcb9076eaa","served_from_record":false,"record_id":"r44","record_hash":"sha256:2dc81090fa0017c427246a792fbc24bb499645f650fefb1ca4f4c43edfcfc62c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89635},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856768e+01"},"chain":{"prev_hash":"sha256:40c5cdf552efbd06f3e2134dab02ad30375b0b63212f0f833776e6d208603b71","receipt_hash":"sha256:2462d1bab0a301cb948ba71829b9e6cf221275dac1816ad21249884df5dcb9d0","signer":"ed25519:bench-node-01","signature":"608f4831a32cade3f76e99393c4e21e6273fa167cf7e1cf514bd7ed0b25acef659cd7e0bf4098f8198462e762600ad3fc7d02ba27796c732e63d852b69e59d05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2e0074e2aeb335edf77d259860397504307629052db42a07a36f9d9a13ad8aa1","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:88e8063dab93d7c54c198faae564d37a45fdc05bf72a71091e28d81cdae5a7c3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.887696370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.423601e-01","shared_alloc_j":"4.745335e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:88e8063dab93d7c54c198faae564d37a45fdc05bf72a71091e28d81cdae5a7c3","served_from_record":false,"record_id":"r45","record_hash":"sha256:d92dd71fd24148fddada680ad1a17cf6468deccd43b4462625b8ea52c3e1b974","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89714},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852350e+01"},"chain":{"prev_hash":"sha256:2462d1bab0a301cb948ba71829b9e6cf221275dac1816ad21249884df5dcb9d0","receipt_hash":"sha256:35793b3b2e819ced83a0f369632662b7949255e977c10dc4d450c8235a6190c9","signer":"ed25519:bench-node-01","signature":"529916407e9913af7946f5ecd7d29c84db90469a07e13ba774341eba86ec02addeef7f3264bab0f797b7fb788d73b63d336faaa41ec01ce250acff60984ea508"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:86b45f5970ea4e0d3aa5f707cdc8b72697fe0f78ac78bf513eef57f086be64cc","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f30367cfef088d228eabb3c5ceba77659575040308761d05e591230a30803269","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.094973770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.775235e-01","shared_alloc_j":"5.917449e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f30367cfef088d228eabb3c5ceba77659575040308761d05e591230a30803269","served_from_record":false,"record_id":"r46","record_hash":"sha256:fe6835e89c8ab26581c38a4ee550689c1b113deb9b880a2f1d1ffc162dce4242","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89812},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861937e+01"},"chain":{"prev_hash":"sha256:35793b3b2e819ced83a0f369632662b7949255e977c10dc4d450c8235a6190c9","receipt_hash":"sha256:626fb1e18c015803353c4e72e16eb4045859873a4eb07c1b9258a783c188c966","signer":"ed25519:bench-node-01","signature":"989dff0a3e81a1979c5bacc961166928d08ab6a3da034d5f9c71c72a2b81acb6f073509a9fb563fbd93c73b0f5f1adaa85847d249365b6d7d263aecad1d16d08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f908e53cfabd9c8d3c04936d03058211e8bde3d1781fe1d736ced1713adb4a95","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:315c14e61b89addfef08fbfe1205125c8472164f9cdf669f157fc7fc338e586e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.505852000588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.385973e-02","shared_alloc_j":"1.461991e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:315c14e61b89addfef08fbfe1205125c8472164f9cdf669f157fc7fc338e586e","served_from_record":false,"record_id":"r47","record_hash":"sha256:0fd550875b4b6b51c231682f03b3c2c48dc7a447dd1adb4f3e7a8216e2d7428a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89837},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.801218e+01"},"chain":{"prev_hash":"sha256:626fb1e18c015803353c4e72e16eb4045859873a4eb07c1b9258a783c188c966","receipt_hash":"sha256:be5af9114f728c49bb27d29439ba3487a625f6e817fd3fe05347656a981da1c2","signer":"ed25519:bench-node-01","signature":"09ac2f33190591466c0ee18dbb540a5d343533ec1cea722814cbdd28707ba5e8d1e8e4d3d4ec32c7743a95eb0d603e77ce5f2474168f3095c158cb4ef0501c09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d85076735b58dfca830fb352bfa431a6a215f26b954671e5ed2a1431fa5b0ace","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.469655950588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.193168e-02","shared_alloc_j":"2.397723e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822704e+01"},"chain":{"prev_hash":"sha256:be5af9114f728c49bb27d29439ba3487a625f6e817fd3fe05347656a981da1c2","receipt_hash":"sha256:7c3a8d1c56aefbca2786a921931bcf3e590cb86e34b4614e5734fabd92de81a1","signer":"ed25519:bench-node-01","signature":"5072e41e7cf6ef99fdd0747887fcc66c0c9821ec77092cab67544c390e3be24e159704e1f653d154421d8d4f942b2abbe6df933a30e92c1b71aabd41e1abc701"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1e912159d3c0fd10e98b3094adf53fc9030df2203688d18addaaba41c96f3811","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.885786870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.714306e-01","shared_alloc_j":"5.714355e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","served_from_record":false,"record_id":"r48","record_hash":"sha256:758e76b23b821b7b7abe8ab30701ecd786d85e29d1f10de3aa4cbaab51519c59","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":89972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860420e+01"},"chain":{"prev_hash":"sha256:7c3a8d1c56aefbca2786a921931bcf3e590cb86e34b4614e5734fabd92de81a1","receipt_hash":"sha256:8c371ca212801412517a2cf79adb006460d7aee90a913de3d0c90610c34cf6d2","signer":"ed25519:bench-node-01","signature":"63499492fc5139639e500b79f5a4c273c85f5e00cbf4b41a51095d0a109242c582b084cdc05057f4adb3efde096448ca044f14aafc824dac34dc04cfafc27908"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a7a4f360382f0c0b29cc9d776d0b84099ba8d5ee1d8f50aedc02e0e8014630a9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.080251570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.188423e-01","shared_alloc_j":"3.961408e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844509e+01"},"chain":{"prev_hash":"sha256:8c371ca212801412517a2cf79adb006460d7aee90a913de3d0c90610c34cf6d2","receipt_hash":"sha256:7fa68bf11c373d72e400b693c1b088cd83607e40a0f6ee90b5268229a76193b8","signer":"ed25519:bench-node-01","signature":"c0a24b0c370856645a1bf6a7249aab6bcdf6fd0934db7a3bba01f542e721b31e307ed411ec276edf124d366b090d1d09a7974c8e51a13fb96aaf69f90874f409"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:90cd3b52f41c8636c37651961ab50de3035c33a7ccd11990330bd6292ed2c527","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.250726600588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.468133e-02","shared_alloc_j":"3.156044e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":6,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834638e+01"},"chain":{"prev_hash":"sha256:7fa68bf11c373d72e400b693c1b088cd83607e40a0f6ee90b5268229a76193b8","receipt_hash":"sha256:79aeae1517b34cd5fe0d59481d860e14690419271777314f212544c484b39157","signer":"ed25519:bench-node-01","signature":"2dfa9476e242e0d50c5fd84c23285da5f938d9321f26df3d454df495065c7ced83f91b9a2d2932a3b9c4bbef170d2ad7f4f6844afa5e56353ffca90f53508203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:90561ee5c1df4b2cb18e788b7fa0017e30e0ca34b8f4f84502ec890b840c2193","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:502158ddf55d90f0209666a2eb46153da936a272f75fa05532df59430c6bd719","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.930763300588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.623573e-02","shared_alloc_j":"1.874524e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:502158ddf55d90f0209666a2eb46153da936a272f75fa05532df59430c6bd719","served_from_record":false,"record_id":"r49","record_hash":"sha256:ca841ede8e002214c87afbf6deb073630c765097e8be069acec71ab82213f50b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90122},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.812013e+01"},"chain":{"prev_hash":"sha256:79aeae1517b34cd5fe0d59481d860e14690419271777314f212544c484b39157","receipt_hash":"sha256:c47b7c09e768b24cafcdb8c20000c325bacd06a087bf9b8e6498c64607005699","signer":"ed25519:bench-node-01","signature":"a46d7fabab1b1b6b6b1aefa06e717d4274d0bc001787fa8a9ed59c80167cb19ac7747109febb9c758b984d81b269bc501530924b3a98fe6437c72f600538100c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8fa95f54340391b094501c8d09e47ad8b9fba3ad556b65aeed2c699b1ece46c7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:c05b2f88954eaf469ac8bbfcd4547bc6e74c41180cce4195cef4e40ecfc1095f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.632449520588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.667325e-02","shared_alloc_j":"2.555775e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c05b2f88954eaf469ac8bbfcd4547bc6e74c41180cce4195cef4e40ecfc1095f","served_from_record":true,"record_id":"r29","record_hash":"sha256:51530ece39ff4c2fc78ba1a6fab22f1e347ae5edeb5a985a31f2bd5bd10d6694","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":88234},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.825476e+01"},"chain":{"prev_hash":"sha256:c47b7c09e768b24cafcdb8c20000c325bacd06a087bf9b8e6498c64607005699","receipt_hash":"sha256:3917bb0d8581e46630dd4eecf3b076320250f1e6643c9ee0ebde2cf4946e313d","signer":"ed25519:bench-node-01","signature":"48036035d3c86f14404f38e071f76a7175ca44a79660b3f1338a7c520e4b54c10bfae30f4ed55e7eaceb0874ded7b01968b9e7963c6925c0fe6793418bd0c702"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bb0fd19dfd4b244eb52c400ea5df723f79f407d0179fd837f0967956d2fe889c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:6d5f6fefa14e96e9b333c9e2ca60b7b266ea9b478a3eea4101c6e5373b59c55f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.055458770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.763725e-01","shared_alloc_j":"5.879085e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6d5f6fefa14e96e9b333c9e2ca60b7b266ea9b478a3eea4101c6e5373b59c55f","served_from_record":false,"record_id":"r50","record_hash":"sha256:d65dc3a09f420051437a5a3451432378064e8b77fbcfe056620e935184cfe8b1","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90262},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861655e+01"},"chain":{"prev_hash":"sha256:3917bb0d8581e46630dd4eecf3b076320250f1e6643c9ee0ebde2cf4946e313d","receipt_hash":"sha256:60d904d5e6307f4d098e3edcfb6ae0ecd0691a5e715fe21f47699346bfde2a04","signer":"ed25519:bench-node-01","signature":"5e7819f8ec4bb05618717096dcd82f243e612ca347c9fb1546ae69dc04ed3c09e72bb9c744ee380f2625acfeaf6cad333dfba98498152621161a115eaae88000"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:63d37bb667c3b9204b383c41150038e52c87bc74fe609a8538d65aae986225d3","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.022647510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.803824e-02","shared_alloc_j":"2.934608e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":false,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.831479e+01"},"chain":{"prev_hash":"sha256:60d904d5e6307f4d098e3edcfb6ae0ecd0691a5e715fe21f47699346bfde2a04","receipt_hash":"sha256:9db6d65e8a093950824237a001fd3e0afe9b4f137e840facc3190eb18dfcfe01","signer":"ed25519:bench-node-01","signature":"25853caa9843fbf1cee30ea4816eb0c7d90f66d3821626c01b753c92aaa7330faef7174276c1e6f49724dd0230cdd53481066f075ea45eb18b09725b9dbbfd05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ecbe38b87ff1fbbd26ef054c9ae7e51f044e8a3ec8055697ef4a42421dbc8d8d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.762256970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.678327e-01","shared_alloc_j":"5.594423e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","served_from_record":false,"record_id":"r52","record_hash":"sha256:4b407241ed751d5065cf8c5d85ecd7c9cceb59ec65630b16476cef31225da9a5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90404},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859499e+01"},"chain":{"prev_hash":"sha256:9db6d65e8a093950824237a001fd3e0afe9b4f137e840facc3190eb18dfcfe01","receipt_hash":"sha256:31971b5b334ef9ac1c02181d6518b63e22f9a0671fdf670deb0c6e5a409f1560","signer":"ed25519:bench-node-01","signature":"919ee26aae22569097b7b89933609d7d434c68b920098ce139dffafb3465d2eb418bddc0cb13ff7350bfd217718a3a5f51d64a927983b7b71bf0f9caf090890d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0a341737d09315331d24d50465a501a5cf5408f4e7d5738f66273c25923af752","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:d4a6fb71a5a16c3ef8c4d405f5dba86c1f33c8d257865ae3f9d2bfe82f80bc8f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.476021770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.303695e-01","shared_alloc_j":"4.345651e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d4a6fb71a5a16c3ef8c4d405f5dba86c1f33c8d257865ae3f9d2bfe82f80bc8f","served_from_record":false,"record_id":"r53","record_hash":"sha256:129bc9adf2a45a6134151e76c45bd187f663f8b23d4a86fed40cf9949fe55abe","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848529e+01"},"chain":{"prev_hash":"sha256:31971b5b334ef9ac1c02181d6518b63e22f9a0671fdf670deb0c6e5a409f1560","receipt_hash":"sha256:0b1bc0f8de00767e7ca340307d91b47a01efe917b7df5a27fa1db3bc466ed9ea","signer":"ed25519:bench-node-01","signature":"baa791ba058ae230d204c7738187a8b21a1297bbfa1ed19b436a1565510700ad1d0818551c8ffc9e4a5272a5319595ae4489d6ef137b45c439bd4dc6536f5d05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e98d66043b673cbaa2125b2bcf4c44784af6fd333bcb1aa87315ebcfc094b3f1","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:fd4c1d8eeb1ba609a09e31334f8a9013c10158c6b9aefd227c5fd0e0dd2fa168","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.607928540588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.595897e-02","shared_alloc_j":"2.531966e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fd4c1d8eeb1ba609a09e31334f8a9013c10158c6b9aefd227c5fd0e0dd2fa168","served_from_record":false,"record_id":"r54","record_hash":"sha256:196c6d6a7abca2f5690d27b6af82392ec0d369a920c5643be69eed9816bf53af","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90519},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.825070e+01"},"chain":{"prev_hash":"sha256:0b1bc0f8de00767e7ca340307d91b47a01efe917b7df5a27fa1db3bc466ed9ea","receipt_hash":"sha256:143cec12d1993f3e83d4bfc0f33bf34bd55267f93a9b74602e339dd6e7c183e6","signer":"ed25519:bench-node-01","signature":"9e463527f158b4d1ba3a37cbc2d5a13f7f5d337bf6039fc77a08bee9c9adc8169d9bc9ffd0c4951ad310c150e18ce358fa09cf9515e8d33b31b4dcf83eefba0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cd4c29e2e73abfb0708ec3515ee385e01784f910ca7dbb2943f379649bf6d116","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:0dc01ed37cced0f5820acbc15b5de7dc270ea65e7930a4cf889bdfa792199326","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.746504300588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.086903e-02","shared_alloc_j":"1.695634e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0dc01ed37cced0f5820acbc15b5de7dc270ea65e7930a4cf889bdfa792199326","served_from_record":false,"record_id":"r55","record_hash":"sha256:0bed3b60ade7437d367b332fdf54153cf19459ba204d432afdfdaf93acacebc7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90547},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.807657e+01"},"chain":{"prev_hash":"sha256:143cec12d1993f3e83d4bfc0f33bf34bd55267f93a9b74602e339dd6e7c183e6","receipt_hash":"sha256:b74d7fdb0104b1f25ab06fd1fd6a4d28131ef80f46924acc5b67c2f31baf3b60","signer":"ed25519:bench-node-01","signature":"fd7116d0ce13eac524e47ecedf946589d255b44a3c21e510741612a7c64a24698c24c2c47c4e0bb857da84c39e9df7fd31940a81081bbd7d839aeb5d4a2ea408"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5b2ca13440676ba8a824846a560c5431998606f3b241615ddf9e5e0f3111e738","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:bab919bbfb3527533a2cad88cbd913bdaae65b411f59deffed79daa5ef8b9230","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.084238870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.480846e-01","shared_alloc_j":"4.936153e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:bab919bbfb3527533a2cad88cbd913bdaae65b411f59deffed79daa5ef8b9230","served_from_record":false,"record_id":"r56","record_hash":"sha256:2765ca317d2b162b4e5da0ac01e42a8e09673842b1223adbd71993f12fdaa814","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90630},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.854063e+01"},"chain":{"prev_hash":"sha256:b74d7fdb0104b1f25ab06fd1fd6a4d28131ef80f46924acc5b67c2f31baf3b60","receipt_hash":"sha256:ca3ff8a00e2d37b7bcf4641e036fd35f9f5ad3bee32d9ea85012ccabb0a2bd7f","signer":"ed25519:bench-node-01","signature":"210fd0a4fa8d54bbe0f2287f40b098d923ab4b89f9f32b126ecbb4a4ef2b5d4c2823c6a3195a289a7c07865b29570579d1ddcccf73bd7a48708f9f6d97eb9203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:aa5c87d38122858ea13e8905bff44005865c863c85f78db7ad53f4a86f6bb990","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:fbad157ba34331794cf5050bfec542d16e1f3924470fc53d5b8557ce96983c6d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.677950800588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.799853e-02","shared_alloc_j":"2.599951e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fbad157ba34331794cf5050bfec542d16e1f3924470fc53d5b8557ce96983c6d","served_from_record":false,"record_id":"r57","record_hash":"sha256:1431070f5ce2f957766ef5980bd5e7867760c31429a7aea428065e30871ff619","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90673},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826220e+01"},"chain":{"prev_hash":"sha256:ca3ff8a00e2d37b7bcf4641e036fd35f9f5ad3bee32d9ea85012ccabb0a2bd7f","receipt_hash":"sha256:2b2aac7474aeb0066c8dd43b86cb9dd0d71492e4627224336e8c11e08fe44da0","signer":"ed25519:bench-node-01","signature":"5efdf84c7b147419561cbe0dea1b5bbc253a4e1d9ce6ad29d47d6f2a2b9e9dbf77dd9bc9f1490d6854b0d3dae64f6926e25ea46a481377b99a75940c4f628a06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2035f8c17dd61ca87ea82e832d7376b07de8994c982ebbd3df02ad8112a8295f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:d4342c517cddd41c899d7b9a10713f0f335f15631294442b857cdb687d622a72","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.987144440588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.700417e-02","shared_alloc_j":"2.900139e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d4342c517cddd41c899d7b9a10713f0f335f15631294442b857cdb687d622a72","served_from_record":false,"record_id":"r58","record_hash":"sha256:1aea47eae375fe83228afb27f5082c4cf6f582b26c73c733558ffbd7ce1bf9ac","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90721},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830966e+01"},"chain":{"prev_hash":"sha256:2b2aac7474aeb0066c8dd43b86cb9dd0d71492e4627224336e8c11e08fe44da0","receipt_hash":"sha256:ad30ee1fb65a6df9bf09380ec72d844aa2252f92f166ba29fcf8154d652d5cad","signer":"ed25519:bench-node-01","signature":"51f39939c551cf60c225d4845d75724a641d1bcdb4e61ff9d750a50a074f1ce5752bc2fb6b8d92fb5262eee65d22d019bb492213e18df1ecff766acc52da790c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4222d4f5385af180758bf151ba5a4f8224e319417d85f6d3d82ff97785fa9fcf","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.961991270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.445240e-01","shared_alloc_j":"4.817466e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853006e+01"},"chain":{"prev_hash":"sha256:ad30ee1fb65a6df9bf09380ec72d844aa2252f92f166ba29fcf8154d652d5cad","receipt_hash":"sha256:9ef37fc18d33df889e94c361d9d9b413938db5a658d8d79f83832af351a328f3","signer":"ed25519:bench-node-01","signature":"f86e035497b494389d0fa76f7304c10ea06a44594fafacaa8dbc46a86bbd1f4a9f3ce34af7cf038b0e9dc822d1db126b3a3543749139ff999a536abb69265a0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ea5e806859987a65b4c78d2b1a202ae9c9fc166ddc3e633283621f0236d0e7da","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:363a7aa5dce960db4334d9fb150b8e9170c93243393c0a7b73ac9e6d18693522","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.204946570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.516003e-01","shared_alloc_j":"5.053345e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:363a7aa5dce960db4334d9fb150b8e9170c93243393c0a7b73ac9e6d18693522","served_from_record":false,"record_id":"r59","record_hash":"sha256:a75b4228cd9bb81eefaf1ec78bf49d5712e456c32729771e7a0587af56df9938","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90886},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855082e+01"},"chain":{"prev_hash":"sha256:9ef37fc18d33df889e94c361d9d9b413938db5a658d8d79f83832af351a328f3","receipt_hash":"sha256:3573115722cf8b2cc107f67dd128e7622b4ae631448a9a6a8724ed2dcde657e9","signer":"ed25519:bench-node-01","signature":"4f9ef95dbec9e24e0fb889c88b00a5b4a6c9576c9bd26e4d26e13bddf482a860c32971885b65f68a07ad4e6d0fe9784db832e58ceae79c7060a4b89c2137eb00"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:da14b2bbdb1dbae414bfaba9bcacbbec8012e84b12a37db1a5d9323c20d66025","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:591bc02284e17c26a2b0835a79b31dd08d54443ff09ee36d35b60f30ddea70d0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.591416270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.628567e-01","shared_alloc_j":"5.428556e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:591bc02284e17c26a2b0835a79b31dd08d54443ff09ee36d35b60f30ddea70d0","served_from_record":false,"record_id":"r60","record_hash":"sha256:463547178c71dfc22ed6f6250b032d1a2cf446795536f7cb017e86cd968a315d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":90976},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858192e+01"},"chain":{"prev_hash":"sha256:3573115722cf8b2cc107f67dd128e7622b4ae631448a9a6a8724ed2dcde657e9","receipt_hash":"sha256:b2b06c39d4a758383b6e4ce3fa058451718334e185741e2e6a2bd6fefab72dbc","signer":"ed25519:bench-node-01","signature":"14112ff51f9590d28a8db467b236a9eaa21518387f28525511cb358b01f5b923f201019be1e29f886f51c4281a5bdc2a7879ecb314676013a5ea73f8791a4c05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d02ffbd3465d9235a76e65c775953e90c09421c2fb241a5589308e7ee2bdfde8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.789236370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.103661e-01","shared_alloc_j":"3.678869e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":7,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.841295e+01"},"chain":{"prev_hash":"sha256:b2b06c39d4a758383b6e4ce3fa058451718334e185741e2e6a2bd6fefab72dbc","receipt_hash":"sha256:ef1f8c7571c3bbb8af78b951600c4f8a213203e1618ed88a338d417889e59e3a","signer":"ed25519:bench-node-01","signature":"b01fe045919001f0876f431dca007e42ba51cd1711ef7db7ef89137f88c8c03dcf2737cfaf7d17d927b1607af5c7002a3a26f5abb48c861f5aac53bf94e20909"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2ecf6ed9d35b0a64eefdb8b715ec678208cdd10e94aaee4fa84378ab011dc445","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:661120dc456ec83861c110b710ff9ad71298352ce119f83ebb44589c06a502cd","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.398546260588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.898669e-02","shared_alloc_j":"3.299556e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:661120dc456ec83861c110b710ff9ad71298352ce119f83ebb44589c06a502cd","served_from_record":false,"record_id":"r61","record_hash":"sha256:872f8a99185cfa59e5b58b9f282fccfd91c114d1fd86b8e1a3fee1b183ae74c5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91093},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836569e+01"},"chain":{"prev_hash":"sha256:ef1f8c7571c3bbb8af78b951600c4f8a213203e1618ed88a338d417889e59e3a","receipt_hash":"sha256:20afe43aec17273d7d9b445be2ca172c49f0b5fe37881cf6ea2c708ef6523a11","signer":"ed25519:bench-node-01","signature":"b46550726d304efc1498998cb12562a0b64c5f216d3a3e7a8e013834b35e2750acf42e78bd3067f6d90bbab51bab2fbf034a454c5bf2a11f976dac9a3e1cd303"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:716ece76fbb1fd0006657e0d9ec4805cca2a79a343d607dc0c3f231689b9814a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:b90bb86248e2952a0051e38c0fbaf3d6cbe1aaa4e1f830b4cb7d07b505c1d7aa","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.360968300588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.876603e-02","shared_alloc_j":"2.292201e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b90bb86248e2952a0051e38c0fbaf3d6cbe1aaa4e1f830b4cb7d07b505c1d7aa","served_from_record":false,"record_id":"r62","record_hash":"sha256:3a24ab302a720f69d345b7e6fa2cea2ef83ee0f23200fdd2299187b40d3ee87a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91131},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820749e+01"},"chain":{"prev_hash":"sha256:20afe43aec17273d7d9b445be2ca172c49f0b5fe37881cf6ea2c708ef6523a11","receipt_hash":"sha256:ab59efa6f212aa8568b7b89d1c4d095f4fd1d0e0061adb7a0c8ac7f4d70e03bc","signer":"ed25519:bench-node-01","signature":"b7c1f86c921a754e11dc4f4fdf87c213fa0540ae926163b64fd37f79956b2f6f0800002ec6bc96821d82388417238cce147891bb2a9fce3c595c589ea700760b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:be6585dee5cf93493706bf4131cbfcdea1c335cf7786686186d2a13fccede15d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.551524870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.325686e-01","shared_alloc_j":"4.418955e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":8,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849256e+01"},"chain":{"prev_hash":"sha256:ab59efa6f212aa8568b7b89d1c4d095f4fd1d0e0061adb7a0c8ac7f4d70e03bc","receipt_hash":"sha256:441001b450daa1216c9afaf7e93e13346813c3e5863c42a417d6cd5ce432fa75","signer":"ed25519:bench-node-01","signature":"d424f1d7c19e6df7bc08d4b1d038cd256992d5c5cd9fb6d2bfff9a1f2275bf4b8c449c5235a197c132cd90dd811e36809fb546532abfe5dc916dbf1750f38003"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ee24340afaa7e542571aa9cfede88526406f06324f30b161dbf459d7655adabd","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:0bea6cd650d108797f6adf95ce6eb98edb25d3145e447dbbe59044cdc1405e79","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.706580870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.079586e-01","shared_alloc_j":"3.598621e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0bea6cd650d108797f6adf95ce6eb98edb25d3145e447dbbe59044cdc1405e79","served_from_record":false,"record_id":"r63","record_hash":"sha256:5dd200f3ecd7d048283f28d812d78087bc75818e7bff5f5016a6a27a524cb1ef","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91264},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.840337e+01"},"chain":{"prev_hash":"sha256:441001b450daa1216c9afaf7e93e13346813c3e5863c42a417d6cd5ce432fa75","receipt_hash":"sha256:d5cc21f9e20423f9967dcc1e8b9867849265e7ea6b387b9b9b8f23ce00391f3e","signer":"ed25519:bench-node-01","signature":"d76badcbe7cdf316905ac438283ae18de6406216ca5fb5c9b3457c8724efbdc3de66b66e9651ce3888f5a21566f5138b072e0df299bed5f2e16a619378a3e505"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:aa1c42494eff56d03afdc29047988a048d9f555992b70d52284391153d9c5ea9","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:12e1d500f4d5e2048a2cdfdedbab64ccfa35e492a4f9b1b1ac37e4dc345e25ab","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.952247040588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.686147e-02","shared_alloc_j":"1.895382e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:12e1d500f4d5e2048a2cdfdedbab64ccfa35e492a4f9b1b1ac37e4dc345e25ab","served_from_record":false,"record_id":"r64","record_hash":"sha256:e9736f295439f929d9571f2971626aef642c48fea5bf0e865ad97750f1766f5d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91296},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.812493e+01"},"chain":{"prev_hash":"sha256:d5cc21f9e20423f9967dcc1e8b9867849265e7ea6b387b9b9b8f23ce00391f3e","receipt_hash":"sha256:4434f2ccc0d3e403644b12b87f9b7132977485072832323f0a55064b76bf5ec9","signer":"ed25519:bench-node-01","signature":"965c569ba5462205866a6dc455379664b930dab817dd94b309dead9ba25ccbc374f429f5065ed36aa8f70979310eeae2d217ecf3daec4b920c23a58fca804400"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4d4c5caa4b51aaf82f78df481b78b82f54a4b2d3a4281a33c9f4e5b13c5c511b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.020463570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.753533e-01","shared_alloc_j":"5.845109e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":9,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861403e+01"},"chain":{"prev_hash":"sha256:4434f2ccc0d3e403644b12b87f9b7132977485072832323f0a55064b76bf5ec9","receipt_hash":"sha256:4b5d620c5cbc39fc618c2338ebaf686fbdde012f421ce82792ec8388d17dcbb4","signer":"ed25519:bench-node-01","signature":"e47b3d0c32f1b7da578a573313a0ade82f2729a2ef99e27c6158deed19302a399b55cd25685ffc748b6dfc79f1f22dd62ee1a98577a495ed4df7082ee395e203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fac1b7e95ec56e5b9d93c75ff600a53fe8f1c473e59b6ad832c58f09e13298ae","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:b0387795c262bc1dc0024657e5c1142edf822e3c40aac8830124fa0b5b3be2bd","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.342859870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.823860e-02","shared_alloc_j":"2.274620e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b0387795c262bc1dc0024657e5c1142edf822e3c40aac8830124fa0b5b3be2bd","served_from_record":false,"record_id":"r65","record_hash":"sha256:889a7942bf27bd46a168b5aa4950578502099654dc4c41814fdcd5eae68fd01a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91431},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820415e+01"},"chain":{"prev_hash":"sha256:4b5d620c5cbc39fc618c2338ebaf686fbdde012f421ce82792ec8388d17dcbb4","receipt_hash":"sha256:a4ba8fd64d914d638197249a294640fdf9575d36db6135362840fefad2f57f07","signer":"ed25519:bench-node-01","signature":"61b58b7526c7e91e29e92cfc946dad8b2462b32df7b64dce22abf9f6d05bcc72b8e353f166195a2ae9997b03476bf4a650d5ee651a2f6566a6f323baab6b2f00"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6ba891107be14dd7c20c82bc63d930ff34e94f08a36c40b540d1895562e9cb7b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.555321770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.618055e-01","shared_alloc_j":"5.393515e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":10,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857911e+01"},"chain":{"prev_hash":"sha256:a4ba8fd64d914d638197249a294640fdf9575d36db6135362840fefad2f57f07","receipt_hash":"sha256:c543e24cd1cb75199e9114e9bcd65fe0bcbc54d63b21b9304e22bc5b7b366159","signer":"ed25519:bench-node-01","signature":"fb5ee105c39a8639f4824a730fa6ea60a48c1f714a14bb0f86f89aa4e6af6107010b302ccd9cb2d6b0264457d58b81c148cfc23eefd3b2639aed40216b4a5b07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:eb40be641176b4625699183d76d38a947857a5dea9fa69bc121f464ffd8b5b84","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:e794aeed80344416c0eea1f5479ecab56e92778ba0a1c0ad094b45481313cd95","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.596417470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.338762e-01","shared_alloc_j":"4.462540e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e794aeed80344416c0eea1f5479ecab56e92778ba0a1c0ad094b45481313cd95","served_from_record":false,"record_id":"r66","record_hash":"sha256:4a7445a0dd5e1f0e63f6753a999ae0815081d2b460fe1e9cb4f40874dc5fdf5b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91596},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849682e+01"},"chain":{"prev_hash":"sha256:c543e24cd1cb75199e9114e9bcd65fe0bcbc54d63b21b9304e22bc5b7b366159","receipt_hash":"sha256:6cfa1c8758c09aca1228524e5866d65255b711d5a0b993325ecace69fe984833","signer":"ed25519:bench-node-01","signature":"5864fcd31a3400c47908078ed5d447cd690c972025b044422ed1d9c6f11f0d7faaff04750dffba4aa30600112f3f14e808683b4d4932bd8fa854e48da25cb801"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:290f262db7064d495737ce9593ba9dcce944c6ba8fbda53cdd69994b20fade84","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:434c21a52f0ec696ed9ace53a471ae38f5ade0437b95c87c88db4fdb7b5e41ba","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.084150070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.189558e-01","shared_alloc_j":"3.965193e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:434c21a52f0ec696ed9ace53a471ae38f5ade0437b95c87c88db4fdb7b5e41ba","served_from_record":false,"record_id":"r67","record_hash":"sha256:23efb9145121ff13e6bc533cec9c6f85c7a20b651f5ea4726d7cae63f5299534","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91662},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844550e+01"},"chain":{"prev_hash":"sha256:6cfa1c8758c09aca1228524e5866d65255b711d5a0b993325ecace69fe984833","receipt_hash":"sha256:0b8a6f4b1e283c50261f113205722250c3e03a55d9488032e8434fb5bb9c6882","signer":"ed25519:bench-node-01","signature":"4693a400c4324815d4fb9b6cb8c3bd1cc8d7c86850ca649d7be5d961238f1a0cdadebe33e83d4b7cc3a482dbed2f43bc7492a60ba769ac7191686676f13e8205"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:391f5359922aae941547646c86d9bfbe4cdc0d365649b57c78e9939139fd5a9e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ce77866203f612a22e6657ca52065c2bca49b5c704e7cbe7bdbafc508469eb4c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.978070570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.449923e-01","shared_alloc_j":"4.833077e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ce77866203f612a22e6657ca52065c2bca49b5c704e7cbe7bdbafc508469eb4c","served_from_record":false,"record_id":"r68","record_hash":"sha256:0d5bff476d58de9e80883a299e1b4aa6d7b853a633916d6d74df6885e00c5534","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91742},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853146e+01"},"chain":{"prev_hash":"sha256:0b8a6f4b1e283c50261f113205722250c3e03a55d9488032e8434fb5bb9c6882","receipt_hash":"sha256:b0816f485e02f7cffae20b20d89168a6de55913325c5ea70cb1686e5da30b9a1","signer":"ed25519:bench-node-01","signature":"b2700fc5f6f9396b751b47e532117939b6bc5a8520edb447d56170b8b134d42b99faa24caf68a26c44633f3b2332a3970982606cda6c45fd8f6f49af2e01960d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:35dcf8061e542b6ecc8457c0e891a33aaa6a458c09d2a80038fb338a27500930","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:2b6cc99222f33d8a6ffd1cf22eee3fcfe52da5b3b9a2d9a735a73f65e5681507","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.413520950588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.029668e-02","shared_alloc_j":"2.343223e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2b6cc99222f33d8a6ffd1cf22eee3fcfe52da5b3b9a2d9a735a73f65e5681507","served_from_record":true,"record_id":"r5","record_hash":"sha256:41c01d66b16234412c1fb58f3d033a7845b26bf4cb1994c3393a850130827581","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86704},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821705e+01"},"chain":{"prev_hash":"sha256:b0816f485e02f7cffae20b20d89168a6de55913325c5ea70cb1686e5da30b9a1","receipt_hash":"sha256:1ae51ba06fae6d9a9633589a1f1cedb86be6fb9ecfcc8ee73a904c9250d9ba08","signer":"ed25519:bench-node-01","signature":"b4ecf8c88e2312858f6d1c9f562cad826ada6047aa132b2b847ff026b68b01d925f9be96e3beb9dfdd7b829558491d56808307251c6dcfb7729a8a45a66ba807"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cddb6c873c48e3b3933c3448ae20d88b5a752035f7bca3661efc45091ea0d0d3","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:f668b77f7f3629e1f6d16f8bcb2557fc93c50eff52cb1fe95b97faaa24e0e33f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.425684480588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.065091e-02","shared_alloc_j":"2.355030e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f668b77f7f3629e1f6d16f8bcb2557fc93c50eff52cb1fe95b97faaa24e0e33f","served_from_record":false,"record_id":"r69","record_hash":"sha256:4737f3cc94256274d0b12806b1ce485af87c89aca5c283031f546c111a344cca","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91820},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821923e+01"},"chain":{"prev_hash":"sha256:1ae51ba06fae6d9a9633589a1f1cedb86be6fb9ecfcc8ee73a904c9250d9ba08","receipt_hash":"sha256:757e6388d93cdec7f797107f438fc115050f337fbad9d35bf3bc18470d92bcac","signer":"ed25519:bench-node-01","signature":"91b2a0d12060fb7565af64560d9153070f8677ab857a559f81ebbc09b41f49e5125da3af05353ddecbcfe678b1fd862044351eceab996a68ea35d9f20169780e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0b19a8d7490020b2d776353b861d734645fc51c132666e6bc711aa08b76b4283","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:b4e6cd21c0ba051d04aab9042e5e115c3bbe352ada582acaab628fc22dc8fd67","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.922806290588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.600402e-02","shared_alloc_j":"1.866801e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b4e6cd21c0ba051d04aab9042e5e115c3bbe352ada582acaab628fc22dc8fd67","served_from_record":true,"record_id":"r41","record_hash":"sha256:ec08e4e68798e0e921a233c9482a51b113bef41676e1d4170b7d18e1126a11ed","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":89225},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.811834e+01"},"chain":{"prev_hash":"sha256:757e6388d93cdec7f797107f438fc115050f337fbad9d35bf3bc18470d92bcac","receipt_hash":"sha256:a71ee27051133302bfb87f29bcc35790277b74d15f8acd5b7bf066fa697d3b81","signer":"ed25519:bench-node-01","signature":"0d8965e9f13915d7f802d002e7c9150e66cae2d1bf4bbb5eb0b6595b8d2b05847db6d5e5008c49cfa31dddc27dd29704fc374137aec4b495df1fe6fc54f43c06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c41440c1bd897e6cf732d3c16a5a82f1538585643440180667389a0a478e8a88","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:da6c1c4573865ce511b7df4d41f5f959ab68783b07b6c0639a8a8c91d5c45886","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.357319260588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.865969e-02","shared_alloc_j":"2.288656e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:da6c1c4573865ce511b7df4d41f5f959ab68783b07b6c0639a8a8c91d5c45886","served_from_record":false,"record_id":"r70","record_hash":"sha256:cf9d27990b76e11ecf153a289490c37c752d1c033890b980325feb314f51a1e6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91890},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820682e+01"},"chain":{"prev_hash":"sha256:a71ee27051133302bfb87f29bcc35790277b74d15f8acd5b7bf066fa697d3b81","receipt_hash":"sha256:1972daf0a35238724bc1b4c07e77ff28c51bdaa7b9b133d8a02c1a62870123d0","signer":"ed25519:bench-node-01","signature":"17646b7506460514b00a00a5c24cad5fae20289334c749173bd98c971aca927d75d7f40a82a88246a2bc5c14b6fba84850693cca508ae45203246b30b8ef570e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:774d0ff0dd7930b3713d4304999cb560015dbadb25ca9f6fbd393d5d29fe4509","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:efbb8d25a730016e7141c8a4385a30cc196c5b7f9d238b06f6213360fb3a4888","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.266697170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.533989e-01","shared_alloc_j":"5.113297e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:efbb8d25a730016e7141c8a4385a30cc196c5b7f9d238b06f6213360fb3a4888","served_from_record":false,"record_id":"r71","record_hash":"sha256:e6cede6feea99f953bb7617c1b457e0bd9cfe84fdff8b68ed36394aa9e7fc6a0","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":91975},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855594e+01"},"chain":{"prev_hash":"sha256:1972daf0a35238724bc1b4c07e77ff28c51bdaa7b9b133d8a02c1a62870123d0","receipt_hash":"sha256:23dc078fcf0678652ba7ce90a4ffacbb217842b9108aa0a8d6c64ea2c3f3f4b0","signer":"ed25519:bench-node-01","signature":"1eeb1ecb156fadf7f32813d8aa226457405425f27df24e9cf2586843fac162433b3b86ec9b0d8c18eeae65eff8497cac2c54fa434ffd61bfd6c546a179bba70c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f7f6347ae6f39f812b2edb7ab04a3bf9fb15f79b5a64be4a06cc70172ab80e01","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:240fa5c9d924503df218a3b93037f774d98422886228c19146631e7a15c762f2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.381218560588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.848199e-02","shared_alloc_j":"3.282733e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:240fa5c9d924503df218a3b93037f774d98422886228c19146631e7a15c762f2","served_from_record":false,"record_id":"r72","record_hash":"sha256:1c0491bd8f3c600a0e6820c686b289036359762203e255ca5155c7746149dd8a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92030},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836347e+01"},"chain":{"prev_hash":"sha256:23dc078fcf0678652ba7ce90a4ffacbb217842b9108aa0a8d6c64ea2c3f3f4b0","receipt_hash":"sha256:26d8e36c9b730ee3751fc68be48e5db324d777c90cea7eb7900b8d52e7eaf6fc","signer":"ed25519:bench-node-01","signature":"af023d2db93b10af29ccf77d88a4fd205edf983113c70d1f7674f11a43c5d7cbfe3d3061369176207214b765cdb1473508eb34c4222b5fa4dd612ffc8f065c08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c28b607f6e17846e0d9ad474571375ace5af76eadf27c4b87330278e5fba2559","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5aefa7348d80e639ad964174db0ac09ade23590bd0c9e27355a39fcf0342719b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.394042470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.571079e-01","shared_alloc_j":"5.236931e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5aefa7348d80e639ad964174db0ac09ade23590bd0c9e27355a39fcf0342719b","served_from_record":false,"record_id":"r73","record_hash":"sha256:e37a1496933f6eaf96da8faeac74a85811b847f9d3999c2033cfd5ab4181b858","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92117},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856631e+01"},"chain":{"prev_hash":"sha256:26d8e36c9b730ee3751fc68be48e5db324d777c90cea7eb7900b8d52e7eaf6fc","receipt_hash":"sha256:cc96520a6370de30d5f47e0a26379b36d0dfff5603a3616ca28bd4b970f50c1b","signer":"ed25519:bench-node-01","signature":"9d779e020a162b21c055b61008251684f13c5f6d24e582fd82b088aff905bd3b464a11c025fc16852752c892d8c26bb746c5095045820c5b69ac4004c1afbb02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2cac04620cea02463074fc1a872567ab423ac40c58ca6802e1319064cbf7f02c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:300656a7d76a43a3659b5e523db3771511c201965d9f67c1a12732317c102177","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.166283270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.213480e-01","shared_alloc_j":"4.044934e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:300656a7d76a43a3659b5e523db3771511c201965d9f67c1a12732317c102177","served_from_record":false,"record_id":"r74","record_hash":"sha256:dd658335054ecb3f36bd7f2f6709e3a1ef958ea7aa8c944fa78fe328bd5fc514","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92184},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845415e+01"},"chain":{"prev_hash":"sha256:cc96520a6370de30d5f47e0a26379b36d0dfff5603a3616ca28bd4b970f50c1b","receipt_hash":"sha256:19c500495ea9623a23daacc99ebd570ddf8cb2a295e0bc8a4eaac56167c2a992","signer":"ed25519:bench-node-01","signature":"dbdf61db51480011ad5a42b38e426db26633ee79000afd114dd4766cdd7e1707c122156651cc4ffad4d2e988b0de03b84bf1780368502e4c38444a2bcd21b70b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fea5ffa6920d0b8b120e70af5a525ff7d2d548bc8c1f7eebe9fffcd803a96c0e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:759f9c148dbf8a7b035d1e93268b749afb1424af4fd1bbde4111057eade1779b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.697515900588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.856833e-02","shared_alloc_j":"2.618944e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:759f9c148dbf8a7b035d1e93268b749afb1424af4fd1bbde4111057eade1779b","served_from_record":false,"record_id":"r75","record_hash":"sha256:161fa68204d05ef88a53bb41d76f3c41877cfd04958985d50501bcb437f50720","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92228},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826536e+01"},"chain":{"prev_hash":"sha256:19c500495ea9623a23daacc99ebd570ddf8cb2a295e0bc8a4eaac56167c2a992","receipt_hash":"sha256:e83a28ed11c65b1acc981bf18bb04a1dfca66c1ce99f9fe29786451437794cc5","signer":"ed25519:bench-node-01","signature":"ce3fb2d68ced981de947e54e5cb0fba4f07b4fdf83568caba02150873fcd751a8074102c67c6ee0a456230acefab5de5a8d90b080125af1c59a856fa9976260a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:78cae3a42f94c742b8755c32964e530fb8bf0480a849bd6d8e88575e64c73ade","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:07d0f7781bd69b6ac635e1588d83110921621d8756204fc2c7b3c233b482507b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.008959470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.458919e-01","shared_alloc_j":"4.863064e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:07d0f7781bd69b6ac635e1588d83110921621d8756204fc2c7b3c233b482507b","served_from_record":false,"record_id":"r76","record_hash":"sha256:3df84591717511ae8a017a9c9978292887c3bb7132e581683a991ccf699295cf","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92309},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853415e+01"},"chain":{"prev_hash":"sha256:e83a28ed11c65b1acc981bf18bb04a1dfca66c1ce99f9fe29786451437794cc5","receipt_hash":"sha256:95c2d414b3cdff5669ab5baa6447792ae0c198862de5a39188ae4116cde1f208","signer":"ed25519:bench-node-01","signature":"c5a9155fb993b88594b7ea25a590a7ec5ad820c63bd15aba904016fee4546fa99a6fe3fd251359678ec8546792efb8e28bfe566ce7cbc55c25383dc93334ee06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:31bec1f53b33cd73c751e77965c4e6f6043c04b1f96e82f7976f9c6a9642ad2c","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:bcc91a4f025c63a02ead5e74a517af4b3d4f4d33b42c58e454808d418e1dca17","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.145077440588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.247787e-02","shared_alloc_j":"2.082596e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:bcc91a4f025c63a02ead5e74a517af4b3d4f4d33b42c58e454808d418e1dca17","served_from_record":false,"record_id":"r77","record_hash":"sha256:2d7abaabe1f61b7e178b1c4172edd84e057041061cdfd7ed3bce43f549854e5d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92344},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816584e+01"},"chain":{"prev_hash":"sha256:95c2d414b3cdff5669ab5baa6447792ae0c198862de5a39188ae4116cde1f208","receipt_hash":"sha256:bc4488fc3573201de4b76bc2d1a020cbebed17e3441a3abd467feeb4d695cfb5","signer":"ed25519:bench-node-01","signature":"92d4672d7b06aeb6d24717af0f1b36e5d455f4270bc2b6a82b8250a9e266666f3241176b7d6466f46bb2caf5bc9bc4bb42d76d74235c8dbbf34e50be08d81206"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:574c8fcea0be02a40d14709ca3b1385fe35163edfe92299bb74a834872edbd2d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f2d32adb3d6e01e7630860c636aab70ca928ed102a1cdf5fa6bb132eea96bb57","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.790521170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.686559e-01","shared_alloc_j":"5.621864e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f2d32adb3d6e01e7630860c636aab70ca928ed102a1cdf5fa6bb132eea96bb57","served_from_record":false,"record_id":"r78","record_hash":"sha256:cf2050c41d2d7d6e6e5c6ff019fe8027b184f84a42c71bf7285da24ca5d7c416","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92437},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859712e+01"},"chain":{"prev_hash":"sha256:bc4488fc3573201de4b76bc2d1a020cbebed17e3441a3abd467feeb4d695cfb5","receipt_hash":"sha256:fe283d9a42681211b5b59197e502df01ea7f9883b015cc1119a4c0ac88ceb6d1","signer":"ed25519:bench-node-01","signature":"628e13e44cce625225f0163cea49f0a1d1cf304c19c19e05c8df4dcf942682242fa81eeb7d67580d27bdcadf184626142ae7ed745c0e83f80c2d9e90b11f2b0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e3d14e66b382ea6959482848c455fb6cdd0e53af2decb5c6b44b068618016f6e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.480347150588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.311688e-02","shared_alloc_j":"1.437229e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","served_from_record":false,"record_id":"r79","record_hash":"sha256:bc09a0b7aa34a4163a95cc14cba017fc4631050085f0f7aabbba0fffe37d0c86","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92461},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.800476e+01"},"chain":{"prev_hash":"sha256:fe283d9a42681211b5b59197e502df01ea7f9883b015cc1119a4c0ac88ceb6d1","receipt_hash":"sha256:b7f8fa5edfd468b5d53f4e1ea231c577d204e49531a9ebe4c575106ebd1e7e99","signer":"ed25519:bench-node-01","signature":"11a9a606b6632517492d4a4e440a9a79f02b5cb36c0fd9f8572e1c29d1ce4b23094123d5e0ae985b5fb55b6f927abdaac11b96b6efb4e7e6357c27b543371906"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5f8cc3c17c74ddae90219a9890d15e12db9c07151b43c06ac146a4fb5dacce11","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:cfde747273a49efebd1335b7e318d6df510579a1af73818d9b0ccab8649bd5da","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.654524370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.646948e-01","shared_alloc_j":"5.489826e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cfde747273a49efebd1335b7e318d6df510579a1af73818d9b0ccab8649bd5da","served_from_record":false,"record_id":"r80","record_hash":"sha256:294a59fd6d83b5e352c393f18ce47c70f770d620978e092a24efdcec58049da9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92553},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858680e+01"},"chain":{"prev_hash":"sha256:b7f8fa5edfd468b5d53f4e1ea231c577d204e49531a9ebe4c575106ebd1e7e99","receipt_hash":"sha256:debe8c7ea27c805ff1c52ae1954f8ea7cbbb62850fb6c0387083d61865631ebe","signer":"ed25519:bench-node-01","signature":"e0e1d5458b881b0f0c64e454d76fb4f180ed1d5293250ce2f1fbddf4de095010ea0979bda1c7503fec5307f562f907fb9e7ca08f1b1a93fc1231eb8dbd709d0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6942b47e4720088cbe384ffa5dceeb5cfcbde7c9b03c272c7b0cc3953d1cc4f8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.688294880588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.917361e-02","shared_alloc_j":"1.639120e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.806185e+01"},"chain":{"prev_hash":"sha256:debe8c7ea27c805ff1c52ae1954f8ea7cbbb62850fb6c0387083d61865631ebe","receipt_hash":"sha256:ca960ba75a06894a6c7cda7ad993070cdb12ba5ed28e5d074ad2c3fb99aa3974","signer":"ed25519:bench-node-01","signature":"f5415f2bdf50f2961fb4ece378cac60003178b68b3d9eb98cee71542157e35b15df87864f21fd63f6dc4b9772741c8fd8a113ba4cd26e3ad236d007bc8a2f301"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:94db92e9796e3af1eace4918b7dc9c034a73b457ef4441a4428bf5dc6d224014","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:310326ba6b9b9dbb0acacf16a065d18f85dff7a810d371e34f2a5949282c8060","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.515868980588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.327771e-02","shared_alloc_j":"2.442590e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:310326ba6b9b9dbb0acacf16a065d18f85dff7a810d371e34f2a5949282c8060","served_from_record":false,"record_id":"r81","record_hash":"sha256:2cd71ea7383e7c9a5450b5f889b9dd2e0fbe3f759d233eeb99d639b726aead5c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92621},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.823509e+01"},"chain":{"prev_hash":"sha256:ca960ba75a06894a6c7cda7ad993070cdb12ba5ed28e5d074ad2c3fb99aa3974","receipt_hash":"sha256:9bcf76f15cc38ee62a5e84243860089c1140b94dcc948861df5b543a41715caa","signer":"ed25519:bench-node-01","signature":"3cd121e7e5537062fff15fbce7f099f2e5b649cfff9b89541f1df331a18c548b6d4e7f6d5c100011875014f40d5393cdaf742fbf7fb2ab53568be71a206cac08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6e312d3b8407ba85c9ca60a97ce70bfefc4c8b032e688c4a6884cfa480289feb","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.537503890588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.478162e-02","shared_alloc_j":"1.492721e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":false,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.802122e+01"},"chain":{"prev_hash":"sha256:9bcf76f15cc38ee62a5e84243860089c1140b94dcc948861df5b543a41715caa","receipt_hash":"sha256:0171dc1080c6b801ea2ae713d8d262a6a39e12cdfa9278b5a693511d53dbc881","signer":"ed25519:bench-node-01","signature":"f3e3d6d3cf047954607e40ede8ed3d039b5417d01af8cc5ffac20dd115fedaf10da68a68da35354fc8ed206bd47e22c7f26f4eb807ebf156a31985fac9c18503"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cfb7a2c64a888a469960df4383002c05e5d9c83515e06c5c460fa5c311c16511","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.414569510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.032724e-02","shared_alloc_j":"2.344241e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":true,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821724e+01"},"chain":{"prev_hash":"sha256:0171dc1080c6b801ea2ae713d8d262a6a39e12cdfa9278b5a693511d53dbc881","receipt_hash":"sha256:ccb584646700519fd3470a1a341f817e8f98f1b4a4076d6f6f54ac8b4d0b7fb9","signer":"ed25519:bench-node-01","signature":"cd30b8a1d630595b69a8fc5b075d5d1e5d7051e99801058013d02f367b00bc719d8621839ed237d496b8e84cc77a3e7fb29531a42b918f7f58a842450b327706"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5ee5c591babd1bad129107c85082a908910c0a03ae72d1310085061fc36f59b2","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9c1ce546fd54a646e92397cdc5cf76c148f6186271155222ca123a7bdf8a1d26","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.156316790588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.193152e-02","shared_alloc_j":"3.064384e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9c1ce546fd54a646e92397cdc5cf76c148f6186271155222ca123a7bdf8a1d26","served_from_record":false,"record_id":"r83","record_hash":"sha256:330f6b390437308cf0919f8ef416bea8cae083616a13df679075c5f487499f7c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92736},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833358e+01"},"chain":{"prev_hash":"sha256:ccb584646700519fd3470a1a341f817e8f98f1b4a4076d6f6f54ac8b4d0b7fb9","receipt_hash":"sha256:2696b1879166754bd76ecd84e3665ef1e8c3bf93b07964a7519495ddf887c329","signer":"ed25519:bench-node-01","signature":"d3277712c59bb7f58e821a35dd98439b8d4101c1c75578cc5973e15de990f53a17eefc8f3fd61aba8e54b78ce529baa75c6760b5b9ec18de5eed73e179bb2d0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1109f262295e0aa1dab7625dd9f4790263a1933c94ee9b506df4c87a1ffad40d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c7244af0135d986ac61fd14065b4dbf9cfe82021f3ab953ef526e57c3d5dc13c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.424703890588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.974862e-02","shared_alloc_j":"3.324954e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7244af0135d986ac61fd14065b4dbf9cfe82021f3ab953ef526e57c3d5dc13c","served_from_record":false,"record_id":"r84","record_hash":"sha256:edffb575f2f440e1a650390567b95dc2fb1fa951fa2131a54d6af59ffb0fafb2","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92791},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836902e+01"},"chain":{"prev_hash":"sha256:2696b1879166754bd76ecd84e3665ef1e8c3bf93b07964a7519495ddf887c329","receipt_hash":"sha256:b37947ac5a7f26f4c4c741ad167687db8e63018c23b9fad51055b48c3fdc70a6","signer":"ed25519:bench-node-01","signature":"27cd92234a2a0ff9069c05349aac09b6523e7ac7473ce320dc48a0bb7a75019c25c23e252f03056e44e39dbdca77b0d41c0d764e2b9227108a0a335861a7aa0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0d3a84a70cbae34429aad2bafba2410c654f922646db994a41d5c9a246e112f4","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4a83686302e8d2fa143a1640bef23180d38f6901a3483339dc56731a5ec0dd8b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.205822740588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.424717e-02","shared_alloc_j":"2.141572e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4a83686302e8d2fa143a1640bef23180d38f6901a3483339dc56731a5ec0dd8b","served_from_record":false,"record_id":"r85","record_hash":"sha256:c9793af69285f2eacdc92f59a34d7f225536f3da9a60fb88d6bb4c441b2730ff","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92827},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817797e+01"},"chain":{"prev_hash":"sha256:b37947ac5a7f26f4c4c741ad167687db8e63018c23b9fad51055b48c3fdc70a6","receipt_hash":"sha256:838d6629b8bcd4fe0f6d17e0edf8ac0eec7a6402612e8e35775671f89cbe928d","signer":"ed25519:bench-node-01","signature":"7d81bc8a7fa45621da70bb640801a6cbd0b64edfe04f232f1def547287ac20e9a3f7f02897675cfc8b8d5dee57579daba1c64270b577b89d567a7ebe46182f07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:74bde31d8c8f0abe572a495ecfcdcab9c96b57014fc87574cb6cb9952e3d0087","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.504373570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.311953e-01","shared_alloc_j":"4.373177e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","served_from_record":true,"record_id":"r36","record_hash":"sha256:55a2b8e716a8eb9fda50c9c4ad876cf5d024f9ae99c0be4799b8f2121d94a546","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":88830},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848803e+01"},"chain":{"prev_hash":"sha256:838d6629b8bcd4fe0f6d17e0edf8ac0eec7a6402612e8e35775671f89cbe928d","receipt_hash":"sha256:afad150f42c1adf041af4ab13924718cc939e8380542bba1d86d0a65e172ec69","signer":"ed25519:bench-node-01","signature":"7c70a2dc3c91f3cc88c4b5ed95ede3b9efc6b91d0d8b24b3f50c168efbebe2b2b7df2615ecf67777c148c4a08bece7300788c5cdd3153342deedcc322b23c002"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c82f556ad818c75d4fb5a528af39f965d3636e5f50d82a9878323d919e943dbf","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.135314060588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.131979e-02","shared_alloc_j":"3.043993e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","served_from_record":false,"record_id":"r86","record_hash":"sha256:f4c7f1ad01d2d813ad75c00cc45d65ed4551e2d7454324699de36187f53cf52d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92951},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833068e+01"},"chain":{"prev_hash":"sha256:afad150f42c1adf041af4ab13924718cc939e8380542bba1d86d0a65e172ec69","receipt_hash":"sha256:3496060b6f94451b2188c60c696adbd3660961d634b8fb1a5ae2fe073e8a1ecc","signer":"ed25519:bench-node-01","signature":"033cc10879217646ec42d39fae5661df3880448258c46e59e5a55b4f226b6125056ab3f769db046334f30bbcf80e711e613e1d6647a9d39b1d981f09b7759509"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7613752c90e31358eb3d359a15c67ff45919f759dcf1b1cb95267025a3bf3630","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:09fbec421a34061a20a3276b975bb72b854374ca4aca4b207ae8812da3d2f0bb","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.577765790588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.508052e-02","shared_alloc_j":"2.502684e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:09fbec421a34061a20a3276b975bb72b854374ca4aca4b207ae8812da3d2f0bb","served_from_record":false,"record_id":"r87","record_hash":"sha256:aa9718ebd78c6b8a8b47ae94fe1ce09edfaacd1dcea8b6e31c0e5d13626ac2be","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":92992},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.824564e+01"},"chain":{"prev_hash":"sha256:3496060b6f94451b2188c60c696adbd3660961d634b8fb1a5ae2fe073e8a1ecc","receipt_hash":"sha256:fa1f4612959a60090105d8f45bad429aefc55f2d31bd3b19ff406e3f586ed92b","signer":"ed25519:bench-node-01","signature":"0ad66e813763c5c595b9666aaaed7b952960d7eb435355ebf69ea311af0cd16ef2747753d22415659d5ccf74577c938cfccc01bf8203c8c1b857873cc73eef02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cf0b77a5cc432b1baf1afcf7a33e9e2afa86a8da07f4b573dac458a32a8d575f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c4ec9682783effc085e9f772f3940379db07512d64795c0772c75dbfe45a2979","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.510416570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.313713e-01","shared_alloc_j":"4.379044e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c4ec9682783effc085e9f772f3940379db07512d64795c0772c75dbfe45a2979","served_from_record":false,"record_id":"r88","record_hash":"sha256:50f50674757fce66a6fd0cec5aec9517fca0922ad89d07963fb314068230323f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93065},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848862e+01"},"chain":{"prev_hash":"sha256:fa1f4612959a60090105d8f45bad429aefc55f2d31bd3b19ff406e3f586ed92b","receipt_hash":"sha256:3329719acb9b63caa7bfcfefd114f50e23738fab230d723f8ff3ff971ac557b1","signer":"ed25519:bench-node-01","signature":"ecb10fd4f1bfdd0290d9a27bfc58e640d98c61d5069ef6e9a51f11803b76c77adf78f5e667584763da8173236d2672f82265c99775ded52fa7f2ef8f6e8bf70b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d5fef0e314ffb8125b4e35a86c30db9fbaa4aaef61f97fa82bf8227e31f0d06e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:386c444bb8e68696b4deb7cee60d731f03a2706029e7d8dcae158d7d4a6222e0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.945342130588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.578656e-02","shared_alloc_j":"2.859552e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:386c444bb8e68696b4deb7cee60d731f03a2706029e7d8dcae158d7d4a6222e0","served_from_record":false,"record_id":"r89","record_hash":"sha256:89f4fd912a74245bed7adf41ae615b229d03b28a6bec94788cab2374837aa102","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93113},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830354e+01"},"chain":{"prev_hash":"sha256:3329719acb9b63caa7bfcfefd114f50e23738fab230d723f8ff3ff971ac557b1","receipt_hash":"sha256:59b66294c405fd6f5cdd780faed48a51e5645058e68594a153db4b5f0a8a2d18","signer":"ed25519:bench-node-01","signature":"c9d2887570e19b7640afb6204f45d97043b0545e64083bb281087c33ce5f6c863fec229d1b3b06024972f8d70faef6140cf036d8df1cde808e4f93714996fb02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5f47ef91b5243d760626faaed0d5c64443994a6081a27c34b97703b54b81c02c","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.947371470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.149719e-01","shared_alloc_j":"3.832396e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","served_from_record":false,"record_id":"r90","record_hash":"sha256:fbfb7b2e0c35a608c84403c695970a425790cfac9e71c7f2b3ab9eecb37cfc58","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93177},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843071e+01"},"chain":{"prev_hash":"sha256:59b66294c405fd6f5cdd780faed48a51e5645058e68594a153db4b5f0a8a2d18","receipt_hash":"sha256:5fd47a779b60d2f1d88599b2e57445cde0d4b3e51803f961fdb596c8c639b3ea","signer":"ed25519:bench-node-01","signature":"de2559d85b3b24c80aeae78e6346ea41eef76d57feac1d421f43c0bf1ea7bcc393cc0ef234abe11439beccf1f6ed54ee37b2b6cc0bcf4a21e95c7e15f0b41e0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c9b9ac080ffddf373679efb990ea0b6c0481682697ef6248285d920b69b40da0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f98f8602394386ea5ab5f4f9c08208c54148d551cb84dca8d4c60da7a903bf68","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.739314470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.380382e-01","shared_alloc_j":"4.601275e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f98f8602394386ea5ab5f4f9c08208c54148d551cb84dca8d4c60da7a903bf68","served_from_record":false,"record_id":"r91","record_hash":"sha256:152f5c145aaa9babbf205a0bbf11f61185427adda91aee0f43747b1c278636ab","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93254},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851012e+01"},"chain":{"prev_hash":"sha256:5fd47a779b60d2f1d88599b2e57445cde0d4b3e51803f961fdb596c8c639b3ea","receipt_hash":"sha256:82cfc0058bf3714ace73f46a1f6a37a9db12d280b0e6a3b9f15f7548c85d9fe0","signer":"ed25519:bench-node-01","signature":"cde02ff867fd2235f226376137b62712a195cf1e6d868dab0810a6f19d9fdbe296c58bd1096dde0cff0699e356d6d503ddcea3e005c316d7ccd6aee31f60c60b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3f73771062ee70bb3dbe3144c9c113d3c24a56db6758aa3bdde393d16c7b1b67","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:5a7550a0055d59ccb3c4f9f1776480c59246751bc365995dd7e18001152fdb9a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.042322970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.468637e-01","shared_alloc_j":"4.895458e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5a7550a0055d59ccb3c4f9f1776480c59246751bc365995dd7e18001152fdb9a","served_from_record":false,"record_id":"r92","record_hash":"sha256:5425320317c148e50fd49b10f21d774508c9318918a524d77c244c49c4c8c85e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93335},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853703e+01"},"chain":{"prev_hash":"sha256:82cfc0058bf3714ace73f46a1f6a37a9db12d280b0e6a3b9f15f7548c85d9fe0","receipt_hash":"sha256:ecc6244f51e2c2a21944c9f52118d8115d1b0b93f90eb94bf50fd4645484445f","signer":"ed25519:bench-node-01","signature":"468686af98e5ecbad8549c98177dfa5d2553ce6ba5bbd94513d15525b88f102a12e46e727edb7e1f2929abec8fa62b24c3134fc4a22381a2751a8ed3ecd50c08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b3c6b38ebbb59360e6b1a6e8acadbfbd02df90b32d9625d01c1c5780d7c57567","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:8369c6ce22f5309b9167dbe73ed40554e89b1ea5b99ec31727e74624db510167","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.864239710588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.429814e-02","shared_alloc_j":"1.809938e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8369c6ce22f5309b9167dbe73ed40554e89b1ea5b99ec31727e74624db510167","served_from_record":false,"record_id":"r93","record_hash":"sha256:e8e9e5f6ed2d6b5f451405bb6a3e684250d79eb0cd120268cfead714d60e296d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93365},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810490e+01"},"chain":{"prev_hash":"sha256:ecc6244f51e2c2a21944c9f52118d8115d1b0b93f90eb94bf50fd4645484445f","receipt_hash":"sha256:a2250eee42aca11b06c066008feda1f07949be11caa00a0a2de814c7431b1848","signer":"ed25519:bench-node-01","signature":"7a3bee00cc34417a70b801f921a54e37f1a2b7dc164b07dd068ed62f26e18a79dd18f6295c036d40f8ef43daace25fc1186dea8ecc0ddba4506c78ac02fb7508"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7440a7fcfb26784a64efc6a90d56b5598b5abf34b5c8f4dae2b09c14f882cd14","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:e8d588c15f3a6ba2d18014a87cafd908d20d54409c84a8304cad13dcfeabcffc","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.764584570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.096480e-01","shared_alloc_j":"3.654933e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e8d588c15f3a6ba2d18014a87cafd908d20d54409c84a8304cad13dcfeabcffc","served_from_record":false,"record_id":"r94","record_hash":"sha256:01182ed57e39dc1234fe4b98ee374af539ed38996ae1fc493b068801f4458c83","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93426},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.841012e+01"},"chain":{"prev_hash":"sha256:a2250eee42aca11b06c066008feda1f07949be11caa00a0a2de814c7431b1848","receipt_hash":"sha256:a6d0d4cd523d87038baf432f5241eb006c2912d029e7960392ae3bd2f9d08148","signer":"ed25519:bench-node-01","signature":"f15493c360024d93faa83a7e98479b8121a93e91843520313175a5d1b9e4b5b12454bc6a2988db417c0c4290bc3dead0b7676b19a1da336cbd6c626936c0aa0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2c823356557e2c115dceb5511da1a060d4163778c46845744ea2590dd09d35e1","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:2a1252ad9738cc7eaaaed1b70f61b805d45ec8615340f3472862343d3faf5552","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.435364180588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.180661e-02","shared_alloc_j":"1.393554e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2a1252ad9738cc7eaaaed1b70f61b805d45ec8615340f3472862343d3faf5552","served_from_record":false,"record_id":"r95","record_hash":"sha256:b9a3125948a2d9513c0e4b5fc000f3182fa351375359f307f3c0a06d8a1cc3c8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93450},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.799136e+01"},"chain":{"prev_hash":"sha256:a6d0d4cd523d87038baf432f5241eb006c2912d029e7960392ae3bd2f9d08148","receipt_hash":"sha256:c8f8520a631cea03d682b4effd946fd4c85f7a9f0405a99b950e3b63abc92eb8","signer":"ed25519:bench-node-01","signature":"96721a1e9d0742e5605d0aed4b4db9d56a1651395cdcb4dce1308084ede8d9ddd274b32c44bd4b92bfb56561c376cd6feff619f876a7e969bf77c1162cd2f005"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ed061bfdf0bf3270856f27baa10b905e445a5c326f9b9c70fdd3c7b87a55ab41","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:0dc01ed37cced0f5820acbc15b5de7dc270ea65e7930a4cf889bdfa792199326","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.992760010588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.716774e-02","shared_alloc_j":"2.905591e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0dc01ed37cced0f5820acbc15b5de7dc270ea65e7930a4cf889bdfa792199326","served_from_record":true,"record_id":"r55","record_hash":"sha256:0bed3b60ade7437d367b332fdf54153cf19459ba204d432afdfdaf93acacebc7","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":90547},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.831047e+01"},"chain":{"prev_hash":"sha256:c8f8520a631cea03d682b4effd946fd4c85f7a9f0405a99b950e3b63abc92eb8","receipt_hash":"sha256:0142124bfbf5665a49515be94d0d63d2f7ee738257af5dc8876a8f5cb3ea36d0","signer":"ed25519:bench-node-01","signature":"45d2e06d7b03fb3c5731e9fd01c92b353b3cbb4a0853bb5032b117f1de2d6a7c51bc4a228ab6ddfa8b9ee21bbfa2d52d5a5eb805043023a3c09d9c77a15f6502"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:751f89724f29f457a77e1c4c006233abdb1fe3389f0343141484a081505bf44b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:2576d606f7686868001e756e697c1c0bd80ff210c28f9626a40a0206f8740c7c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.339872470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.555302e-01","shared_alloc_j":"5.184341e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2576d606f7686868001e756e697c1c0bd80ff210c28f9626a40a0206f8740c7c","served_from_record":false,"record_id":"r96","record_hash":"sha256:f00aabe082500c634f45bf066ce0068f4071b8e5e1dd87aa9215ff18846a0c09","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93584},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856193e+01"},"chain":{"prev_hash":"sha256:0142124bfbf5665a49515be94d0d63d2f7ee738257af5dc8876a8f5cb3ea36d0","receipt_hash":"sha256:14ab050a178218f6eace7e2d0a4be3d4c94bb09e61c358523e6d53af77d5aeba","signer":"ed25519:bench-node-01","signature":"ec07eef67fac4af0f7abdac63819ceb5650c65e88ebe3fe45bb9d790ee75b6911a65445d8d4088782d218225b90ba0eedf6d8a0310f5e28bcf4fc56ce7d85a05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:54b726f2629e115631d5199722cc99e4603580189843a1caac3e7aa7b7f1f40a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c6a5bde2c8cef5728623cc3d7d230d795042fe75b0bfcffd30613b27e1962cb8","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.557704370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.618748e-01","shared_alloc_j":"5.395826e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c6a5bde2c8cef5728623cc3d7d230d795042fe75b0bfcffd30613b27e1962cb8","served_from_record":false,"record_id":"r97","record_hash":"sha256:a60e24cabeff5c8fab82f98d83aab2a3dcd5519aa4324118de29747edbe02593","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93674},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857930e+01"},"chain":{"prev_hash":"sha256:14ab050a178218f6eace7e2d0a4be3d4c94bb09e61c358523e6d53af77d5aeba","receipt_hash":"sha256:5ced42706e514b43faa6496ae465b232a8689668022ad104c2620773319f5ad6","signer":"ed25519:bench-node-01","signature":"5aa37d43525e2500562fc5c1bede1b39e9391958a73351b34f1bac450ca52775e84f81529f42e777799ab9f9bf5307dfc0edea8291676780655a274917065706"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8b51e1a82fc7c5b3443e76acac82f0a5c8ea2c3913e6a7c083d6854f0898ef84","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.018734320588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.879805e-02","shared_alloc_j":"1.959935e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.813948e+01"},"chain":{"prev_hash":"sha256:5ced42706e514b43faa6496ae465b232a8689668022ad104c2620773319f5ad6","receipt_hash":"sha256:2792becb6dc8acf7bf9f2faea37d39d45d6927191cb13bb27612a1d7a41c7abb","signer":"ed25519:bench-node-01","signature":"c7e89ca15b0c52db84d6572bbdc0b79989f0c93e8444c0fd29ecf505e54cf3fee559c828ca96eec617eedecebf9e6941f019a71fe0a5ea3ed0e46761d6f1c308"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a749fef89c2b7fb9acbf1bd2a1f6467134f132f07a749f28fa5567aad0656070","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:f4f9852d4bb1ab8da33c1e53245115c7b7c35eeb04727089cfabb53b3bde5bc9","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.580811970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.042954e-01","shared_alloc_j":"3.476513e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f4f9852d4bb1ab8da33c1e53245115c7b7c35eeb04727089cfabb53b3bde5bc9","served_from_record":false,"record_id":"r98","record_hash":"sha256:1232c9646d1f56ec6c40694a4c36eff1bf0a8e1db0ef50e45b5ad0f73d8913bb","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93765},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.838838e+01"},"chain":{"prev_hash":"sha256:2792becb6dc8acf7bf9f2faea37d39d45d6927191cb13bb27612a1d7a41c7abb","receipt_hash":"sha256:e4997d513d315dc0fbcbed5771c6866416f5ff96a6ab6f61fbc78bc689ba49d2","signer":"ed25519:bench-node-01","signature":"7de30cce1bee411cac9daf5df4a28c5892900e5102b36ae10fbea6582b468ff48d0789bffa016e6843ad4e08e54ba9f67f03ffb08035e0420d85dc6bdabe5207"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a9df0640528d7c51513d74ae4a4f1136bc7462a8cfba613b7a423bb496cbb0d1","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:aef4bb6b5fe9ccb4e86032a47f27b234eace63aa374802947a1767a90c0a8464","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.288974620588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.579535e-02","shared_alloc_j":"3.193178e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aef4bb6b5fe9ccb4e86032a47f27b234eace63aa374802947a1767a90c0a8464","served_from_record":false,"record_id":"r99","record_hash":"sha256:34c9f3f3e1e23a57db0a1c6a6a7ac46879665e16a919134e270f9bc17f8e0537","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93818},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835146e+01"},"chain":{"prev_hash":"sha256:e4997d513d315dc0fbcbed5771c6866416f5ff96a6ab6f61fbc78bc689ba49d2","receipt_hash":"sha256:987de8d5de4ea6b51ad95cb2c4f8b61783083588bbf51c54198e2811808ca52a","signer":"ed25519:bench-node-01","signature":"6068badb4c873e8420ac9dda1042618f5a80789d15253579cae5688d1146e80a826ee0ed03ad55ac78b816d1f069ff986b1b0f1657126b6e37d5e73b33feb609"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:dec818dd86a6dd496b13effc7be226882d66147f13be8e92fb4ec3c683910498","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.014017370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.169131e-01","shared_alloc_j":"3.897103e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843798e+01"},"chain":{"prev_hash":"sha256:987de8d5de4ea6b51ad95cb2c4f8b61783083588bbf51c54198e2811808ca52a","receipt_hash":"sha256:5bb64c12a85feeec59634ae8aed2057a5cc6110394f8579f1f351328791c4c74","signer":"ed25519:bench-node-01","signature":"82c29ab3528997e28706135d72d08fe28750ca5be3f2a14a0bdaa03ac319c46b945fc2d88ef8bfa56ca69ec7350622813c682acd4d4c288bc156341369d34304"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b5ca8aa8092d234fd02289f5d2c3a2efd79218c0c78ba0a025e2d3dea8079c94","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:5c82a1e4bc712b34adb3610a3c1262f5e1d97d2d2ca195911dae28d81ed6322d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.170713100588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.235083e-02","shared_alloc_j":"3.078361e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5c82a1e4bc712b34adb3610a3c1262f5e1d97d2d2ca195911dae28d81ed6322d","served_from_record":false,"record_id":"r100","record_hash":"sha256:8359486ce6d26a37515b19330316a6d640dfcc0fc6ba21a93cd33cc763f289fd","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93934},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833556e+01"},"chain":{"prev_hash":"sha256:5bb64c12a85feeec59634ae8aed2057a5cc6110394f8579f1f351328791c4c74","receipt_hash":"sha256:1d03309677cfa12bee25ba2f3000835f05e0e0923732b8db29e34e86d0423a97","signer":"ed25519:bench-node-01","signature":"dd5a4752b02dcaccbde61b3748734a52fcc73e34fc1a83a45b413b3289d5b173fc3f2cb6fe79866bca21f9d56fd5e8e9bf830a3490cc9b4d7447869592bc0c0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bd99a92db137700a262a2cabdab61a03fe08c1b5fc6f8836083ab9eff3a7d173","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.347213680588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.836541e-02","shared_alloc_j":"2.278847e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","served_from_record":false,"record_id":"r101","record_hash":"sha256:423f6097e57e4c77557b0caed44714a3b731fb972ea1da097ee6162150ae2cb3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":93972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820495e+01"},"chain":{"prev_hash":"sha256:1d03309677cfa12bee25ba2f3000835f05e0e0923732b8db29e34e86d0423a97","receipt_hash":"sha256:44c08fa64c5a1a7272d955e6b07905cf4b0ebdf634bf672b84004a4f27f95213","signer":"ed25519:bench-node-01","signature":"c59ff7c57fd61f7f4e9e6d75a591f5d11d1dbe89d3fa1cf4574bafa78f6f078cc2c8fe0bb00852a488d9f9ce46f347c222fc59c52b2df5bd340fcc03027b4107"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8c35216610eef97f2ed9d6c248923ef04e7959822a755a94d0f17d8f39b207e7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.063028270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.765930e-01","shared_alloc_j":"5.886434e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":11,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861709e+01"},"chain":{"prev_hash":"sha256:44c08fa64c5a1a7272d955e6b07905cf4b0ebdf634bf672b84004a4f27f95213","receipt_hash":"sha256:c215b165ecaf556233ed9e52b62e53304eb3a65e79a5e749f79402a27f1185c4","signer":"ed25519:bench-node-01","signature":"6eb72a3126accabbaf5d6e30a7c857c678e41dcce292832ca7af46dda74c42ca54f2201e06c8e1ae50d38df0cc9a91fc081177b72662793fb0eb940cb96abc01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:72f00ff53482ad8abec731e140531eabc12987133e484962ed7fb0620a81f36a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:84dd48defb81097cfb6618f709c9a08f3583cb3227ad2e905c32c5666eecb9b5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.731265070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.378038e-01","shared_alloc_j":"4.593460e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:84dd48defb81097cfb6618f709c9a08f3583cb3227ad2e905c32c5666eecb9b5","served_from_record":false,"record_id":"r102","record_hash":"sha256:591b07b7a6fc7ce0d358910e7e12565dd727646abc7f9044524cc47ed119d025","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94147},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850938e+01"},"chain":{"prev_hash":"sha256:c215b165ecaf556233ed9e52b62e53304eb3a65e79a5e749f79402a27f1185c4","receipt_hash":"sha256:2c6c01c55a79533a07aea235c41cd11c17acd3ff9f3004aa33d353d3d9fb1f32","signer":"ed25519:bench-node-01","signature":"cce89462d508eaebd4fbcbe3087bbb810a608844e636b385801bb9d371b53a68d132b514a0df9fe523369d96f4c9071a1c11d092e31212625f01ce483f15ad0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b4514ca39f8ebf97a3d2c18e7db69e85e3ba7e1b1a7cccb8762cf206e210c873","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.985000170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.160679e-01","shared_alloc_j":"3.868931e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":true,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843483e+01"},"chain":{"prev_hash":"sha256:2c6c01c55a79533a07aea235c41cd11c17acd3ff9f3004aa33d353d3d9fb1f32","receipt_hash":"sha256:4077b94c52806737092582b015e219f10f8a30520aeb5b797d78c0be2fb3ddd8","signer":"ed25519:bench-node-01","signature":"b5ee9b13276ed6730c9f8643388e827364d99204a9d261c2af1bb5fd74a4b14451417771754679e3c404a91367a02d9956efa373c14af33051c7af7ab52b3f0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:32184b24949887e3a1bd3f900dbe22298361bf605eb79254f07882376c7d35ad","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:e22d08cd71e4fe85157a117945884be41615af88796c53f606b47fa038bac18e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.239081870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.525946e-01","shared_alloc_j":"5.086486e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e22d08cd71e4fe85157a117945884be41615af88796c53f606b47fa038bac18e","served_from_record":false,"record_id":"r103","record_hash":"sha256:aef96891cde1778fd48eb935528ed4cc34cca76b6c77efba9276f1cf503d5bb9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94296},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855366e+01"},"chain":{"prev_hash":"sha256:4077b94c52806737092582b015e219f10f8a30520aeb5b797d78c0be2fb3ddd8","receipt_hash":"sha256:16d6433cb38f59145e980337d34b5caa333562894fd391ef34e8b2298e1e4090","signer":"ed25519:bench-node-01","signature":"5796883f6f1e937ae511229347be9bf589108b2b8757855356b9e940abc5304150437eea3d9f533c1d5c9b8404886398779c64b4e7b021e10e4c976f28b3b105"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:164ad8f32fb0112b5bab177c585531d93106f90808ae2ee6899a54bd538878f4","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:d72b56294d3317cd83e6e9ac76160ce7967610be483d2d4fec03730eae111c3f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.623812570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.638003e-01","shared_alloc_j":"5.460011e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d72b56294d3317cd83e6e9ac76160ce7967610be483d2d4fec03730eae111c3f","served_from_record":false,"record_id":"r104","record_hash":"sha256:294704c43530a35c5198aa215dc9b2be748cd6edafae3871155ee7b466c762d6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94387},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858443e+01"},"chain":{"prev_hash":"sha256:16d6433cb38f59145e980337d34b5caa333562894fd391ef34e8b2298e1e4090","receipt_hash":"sha256:7ae7869c5b7a575add276479ad7b22d22b62b4a83427f0b1bd6d78ddf308c096","signer":"ed25519:bench-node-01","signature":"9509e8b65d07c99bc817c1015e5463910c9eac14b70808abc295d9efa4eb7e0b81813ea7a5aaaa0b2018713b7b9fcfd0441821c776d6c6d25e35154fd1b08500"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7a376aaef74955dba0cb1fa6a039b2b7d2d31d62b57e718520869008005ca8af","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.686308230588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.824196e-02","shared_alloc_j":"2.608065e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826356e+01"},"chain":{"prev_hash":"sha256:7ae7869c5b7a575add276479ad7b22d22b62b4a83427f0b1bd6d78ddf308c096","receipt_hash":"sha256:c94eed1bae3ba1d1ef2d8c7dece673e79bb9ec54adc5fb140ae80033c3066737","signer":"ed25519:bench-node-01","signature":"a10f15b0a6adb22a4cd0ba41e008e41d0a3c296e2855d165acaf1a8ed817caa5e610bae25c9d83819236b10d19aa4488604d3182a789e58a2992209d4b516a06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4eccc079b8554a50ede44ec5713f78a4892ddf451b18dc209f1427a1186b0d0b","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5169b6649ebf570c3dba87c73d16a22ab32c9b6bfadf7e3a2fd90d625b3ea944","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.975768110588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.754654e-02","shared_alloc_j":"1.918218e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5169b6649ebf570c3dba87c73d16a22ab32c9b6bfadf7e3a2fd90d625b3ea944","served_from_record":false,"record_id":"r105","record_hash":"sha256:a1240b56cbe7689f7a82efdf882a2748cef483c64cc181a4eafb1e21b91629f3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94463},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.813014e+01"},"chain":{"prev_hash":"sha256:c94eed1bae3ba1d1ef2d8c7dece673e79bb9ec54adc5fb140ae80033c3066737","receipt_hash":"sha256:ef489fb7755bc303ad2f18de1865cc53cfea0b3e9365827337b3fda93686acd9","signer":"ed25519:bench-node-01","signature":"3949a5339dcf2c38b72c15f5e4ebf77d8af402ff528a83640e8456ba562aa22b43baafcda42c0b5348632f157c07c040f168d3092359fdf5b79b01dc464eae0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c58be4d0a8c59c36aba27a80ecb3cbc79d4d467b13ea42a987a939609e300250","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:b01775f414fc8750ffb46d8e96e6535418e94e18e8042f473efeffc9b9317a0f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.214223160588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.449189e-02","shared_alloc_j":"2.149730e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b01775f414fc8750ffb46d8e96e6535418e94e18e8042f473efeffc9b9317a0f","served_from_record":false,"record_id":"r106","record_hash":"sha256:75e7961711cc95ab64084e8912e2fba65461ae4e408cb06df20ce54312bf169f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94499},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817962e+01"},"chain":{"prev_hash":"sha256:ef489fb7755bc303ad2f18de1865cc53cfea0b3e9365827337b3fda93686acd9","receipt_hash":"sha256:a8c4f7d978219d5c575da5618fd38fb0d3a39c8cd42d79b5b26b8eb813689d83","signer":"ed25519:bench-node-01","signature":"de15d0824a75d46f76ff69e9bc8a84b47e7e6c8d35095bed914a02e57934e143c22849ba0a0a27667862372a6f61189c62e6a901a54eeabe8e343b576a174b0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c3c089dab6c7bce6702f196a837859bfefdabfe551c5786f06230f6d1f77dc48","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.433390070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.291278e-01","shared_alloc_j":"4.304261e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":12,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848114e+01"},"chain":{"prev_hash":"sha256:a8c4f7d978219d5c575da5618fd38fb0d3a39c8cd42d79b5b26b8eb813689d83","receipt_hash":"sha256:b1a7ebc3e869f5f2be3f17d0e14ef8994b4052f40d1fd62128f356717fc359cf","signer":"ed25519:bench-node-01","signature":"b8fbf67030ab79347b0bebcf5ad876a2a61c132e7d504a74bf9f8d0ba594819e36daedb67fafc8f2ba10d270540bd4759f6beae72b782333d8acbdcced099505"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:674913b05197372ce6dcaa50c02ec69ab01250baab1b4be0e9ebec7250bfc68b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ee758a6881e98d0ade331c7e8dfde55cc7269a431806803d356bcc6eb9d5ab8c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.477326150588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.302888e-02","shared_alloc_j":"1.434296e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ee758a6881e98d0ade331c7e8dfde55cc7269a431806803d356bcc6eb9d5ab8c","served_from_record":false,"record_id":"r107","record_hash":"sha256:77571ea5c92a30d88122fbb2a87c2cf33b1c2b8e801ba35a330138d80bbee952","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94594},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.800388e+01"},"chain":{"prev_hash":"sha256:b1a7ebc3e869f5f2be3f17d0e14ef8994b4052f40d1fd62128f356717fc359cf","receipt_hash":"sha256:4c532cf6bae01366c0ed329f5ec0b22005a020480a99dc87d550afac531f5ee3","signer":"ed25519:bench-node-01","signature":"5bab89fa01a55d8bc3b22b4ad3b537f18cd872190ef4e1947af34f4a02f73a90bece18142050d48b38d52aaf11cc874ce1b9c231cb1120de6ef0b2488c5c8601"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:390545f5d05e63199230e036c3d2b8844c21182e539464ba83cb034cb525556b","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:89d945088318077d9adfa27011c408370594902bdc04f815e39284b8a7e08d5e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.467522670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.592481e-01","shared_alloc_j":"5.308271e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:89d945088318077d9adfa27011c408370594902bdc04f815e39284b8a7e08d5e","served_from_record":false,"record_id":"r108","record_hash":"sha256:a9cfe644d0d2a4924809b9af0c0380774cb575f7c619ddc01d32c4551c7047fa","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94683},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857219e+01"},"chain":{"prev_hash":"sha256:4c532cf6bae01366c0ed329f5ec0b22005a020480a99dc87d550afac531f5ee3","receipt_hash":"sha256:64d46de0d449d710a8d3b101aec7f628b690c4e7136f67ce6873f730e60b9515","signer":"ed25519:bench-node-01","signature":"35e246c860639fdde49bbc5a9913c34a6025189ac69dca9367caafebd029d27c1bc119988696e66bd7e3e68e3b05fb705ede9e0af245aa226746f353362e8f0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a23dbf7828cf90c09adf0adb4435de6091081722189f6e20f2c1d5db6f81f14a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:aecc00f40acfd5e31b4c34fab60b8afce96daadbfa7765a3a8bde8aaa6bc8981","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.145881770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.790062e-01","shared_alloc_j":"5.966872e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aecc00f40acfd5e31b4c34fab60b8afce96daadbfa7765a3a8bde8aaa6bc8981","served_from_record":false,"record_id":"r109","record_hash":"sha256:b8f1a5ec110373dd7284ed864c4a7369da6faed9b4e69e92383014b23de4455c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94782},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862298e+01"},"chain":{"prev_hash":"sha256:64d46de0d449d710a8d3b101aec7f628b690c4e7136f67ce6873f730e60b9515","receipt_hash":"sha256:26a0a6dfdf64099449fe22fedce9729b1359397e388367b6ddca3191b761afa9","signer":"ed25519:bench-node-01","signature":"042de42540844e13fa0daf865f64fadea50114fc8ad5e7da7a64230192560f086f0e15523fe56b783b07ba90d39ddf83935ad3b6bf27e8e7cc4dc402c695e200"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:51bbe87a781660b3d5ee2b40fca24f3a417625d4f3aca753450a13342d941228","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.286307710588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.659144e-02","shared_alloc_j":"2.219715e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","served_from_record":false,"record_id":"r110","record_hash":"sha256:f6dd6a74403115e1c6321158ee0e6cc71d2baddb71cdaf06b97875ebcdd7c920","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94819},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.819353e+01"},"chain":{"prev_hash":"sha256:26a0a6dfdf64099449fe22fedce9729b1359397e388367b6ddca3191b761afa9","receipt_hash":"sha256:a40c3f7328edacf64078532212cb91b9aa8a39d5979342b12dc3471d68135692","signer":"ed25519:bench-node-01","signature":"0c7705b8eb55d83583d1b356a7266e6b54a78f4e1a7e122fd41f1e7c1665678e6015e198a45b1311f5b191fa5a987fa3a0838b7fa592366b0303dd20cba7f30f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:237da859f664fd526d8a70c00cc1634c5332b830497773d66ce7bb4bd910719d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4989e6fd9d5b4a543eca9f0afbdce0f6043a8a567826de22f9d1d6cdf9c96ba3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.810268960588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.185239e-02","shared_alloc_j":"2.728413e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4989e6fd9d5b4a543eca9f0afbdce0f6043a8a567826de22f9d1d6cdf9c96ba3","served_from_record":false,"record_id":"r111","record_hash":"sha256:d8bfa89db54a7cb2b693911af839302ff4d4df5f5af9fe8701008caf6fab5fbb","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94865},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828315e+01"},"chain":{"prev_hash":"sha256:a40c3f7328edacf64078532212cb91b9aa8a39d5979342b12dc3471d68135692","receipt_hash":"sha256:51ac37bcc87cdfd116c9e2e356d257becad5cae4998936d16dc6023a7dfa5d82","signer":"ed25519:bench-node-01","signature":"d50b61c7a6fc580e1d0f76aff3b8a6a3219ea49f009bae0e9d9bea4c2e72edce967e291588936abc2e437d75cbc9a2d4bebdc5ea5a3f857b99317fbd9f116701"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f3cce024c277715e0599d99b7ebc662038c209bd00bfc7bf012ebd4bcb8ce0af","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:6b4490d57878c284cca57315f4304f2b4835d387d5d5db8a92ab2484c9fa0431","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.124572870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.492593e-01","shared_alloc_j":"4.975310e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6b4490d57878c284cca57315f4304f2b4835d387d5d5db8a92ab2484c9fa0431","served_from_record":false,"record_id":"r112","record_hash":"sha256:cd4491456bb360c3a6922f8481ca63bb66a8a69256e11f24857c42c8ad8a6c9e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94948},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.854406e+01"},"chain":{"prev_hash":"sha256:51ac37bcc87cdfd116c9e2e356d257becad5cae4998936d16dc6023a7dfa5d82","receipt_hash":"sha256:e8800d54b5e63e91ffc69746451266c84212ba31274eae9ad567e59603f5fa54","signer":"ed25519:bench-node-01","signature":"57cf3c746852d52969e3a5a793cf49357ab831b3337dae25ad56dca638f922997c4c60c249097f0d03774d00a65dfb252d7d432fa0d1ce4f16d27244ce3dbc0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bf259a2610429451836f16890cf98b53d62f33edb2dfb4b508f8c9dea0c824c4","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.068597080588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.937651e-02","shared_alloc_j":"2.979217e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":false,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.832134e+01"},"chain":{"prev_hash":"sha256:e8800d54b5e63e91ffc69746451266c84212ba31274eae9ad567e59603f5fa54","receipt_hash":"sha256:5a6d16d790c6bc4319ca9f73874a6b028935bfc6726b0a1f043fc455a73361a0","signer":"ed25519:bench-node-01","signature":"35baa969fe419839ac54d2684278d22926582d2e213344f54a508ef9e271c05fcc991c37504c674ba935debba5eac00f34834f4afc128d7cf594fb485d14a602"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:273c15fe849d7f6dce28548e1b86264f86c45c060989d29c1fdbd430790e6210","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.587734770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.627495e-01","shared_alloc_j":"5.424984e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","served_from_record":false,"record_id":"r114","record_hash":"sha256:11b74bcd9d0099b86cba50d647a39fde7bbd69fff8ab977726c7de08af14d90d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95088},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858164e+01"},"chain":{"prev_hash":"sha256:5a6d16d790c6bc4319ca9f73874a6b028935bfc6726b0a1f043fc455a73361a0","receipt_hash":"sha256:1da33e66497619ede9844346cdf6e0ab87e4671126c476cc8687885ff668667a","signer":"ed25519:bench-node-01","signature":"367bd7b7e059c63f9b392504610ec98e183fb99783b79f9ab5aaef505ef4d19036647662b8f824443b651514e841c7ffde57b2807b091a77995a329d979e7008"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:adf49f4e9ee07c038ef1a48a8ae95cd87bca4cf6e81ce5dbe6442b0466cfa39e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cdac90b356105bbfc2ec1d2b6f50d290b09c8a4ff2cd746ce6c64fa30a02d707","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.704321470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.661452e-01","shared_alloc_j":"5.538175e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cdac90b356105bbfc2ec1d2b6f50d290b09c8a4ff2cd746ce6c64fa30a02d707","served_from_record":false,"record_id":"r115","record_hash":"sha256:c62537567e03c8a763bc87285d422000262f517b16685c29b27681c136f63680","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95180},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859060e+01"},"chain":{"prev_hash":"sha256:1da33e66497619ede9844346cdf6e0ab87e4671126c476cc8687885ff668667a","receipt_hash":"sha256:6990f91662d37c273389b6c536e2a6086ea55b3347a80349d2618f76795e9434","signer":"ed25519:bench-node-01","signature":"c33eccb95d066ffc0c7908b265ad991eea904c40228f3f78377292ad0e107fe12103f75f22ede124e4753f9535833f24b55bc747b8f9dac98c77fdefff417605"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5fb77ee4c50fe6d99ed79368bd2ee862cf624155fd1598d086f5d463cce3c9ac","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9840140a39c47ebfcdda27e664a72009daffa1d975d005450a100350849daa10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.877794270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.469300e-02","shared_alloc_j":"1.823100e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9840140a39c47ebfcdda27e664a72009daffa1d975d005450a100350849daa10","served_from_record":false,"record_id":"r116","record_hash":"sha256:cae152c7d4ea4f178ff00a0ff86fd15535bff763a0dee1b34393c0e8844e4431","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95210},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810805e+01"},"chain":{"prev_hash":"sha256:6990f91662d37c273389b6c536e2a6086ea55b3347a80349d2618f76795e9434","receipt_hash":"sha256:2bcfeff9f986e9d20e4f2b73cbd210142a9d89f15d5f0f35ca3d4564a2bde1e4","signer":"ed25519:bench-node-01","signature":"8e194ec448b59dc493fdfbea970bd32c0942f8fbfb8fd45e9ac05cf719fe4de7f36186c83124b97eb1530fb1a91be6c179537c97600d027f3da72d028e8c2c07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8554dc86166bb57ed8b685ede1662dd3540aecb9c510e799db421e57abae857a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.177974380588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.343611e-02","shared_alloc_j":"2.114537e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","served_from_record":true,"record_id":"r110","record_hash":"sha256:f6dd6a74403115e1c6321158ee0e6cc71d2baddb71cdaf06b97875ebcdd7c920","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":94819},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817245e+01"},"chain":{"prev_hash":"sha256:2bcfeff9f986e9d20e4f2b73cbd210142a9d89f15d5f0f35ca3d4564a2bde1e4","receipt_hash":"sha256:3467788b271162c140ca1ea575f46c231b2c49613093538db5660283e5749515","signer":"ed25519:bench-node-01","signature":"57a4fcd58dda6cf659c4bf08e712b99db661d537358645a76f9c2357d1590466e7f203017f39817b5f3f350de6bde24b7e58457b8079a2826441e822a2045c0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ad58f67d16638553ac808b924a534dca0bdee514e7939baf1f5aa83f42156c85","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4bacccbd030089bf80d971373b0c6e1988aa64c65713385608eff33f6b6c3fa1","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.161324470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.794559e-01","shared_alloc_j":"5.981865e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4bacccbd030089bf80d971373b0c6e1988aa64c65713385608eff33f6b6c3fa1","served_from_record":false,"record_id":"r117","record_hash":"sha256:a2a58e4fc14af72c8ba522771efd92b053cef9f2c23c65d6ace3e833c366ba0f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95345},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862407e+01"},"chain":{"prev_hash":"sha256:3467788b271162c140ca1ea575f46c231b2c49613093538db5660283e5749515","receipt_hash":"sha256:ba2a3429c6ca8ab802c8d8fcf9d9b86d0407a7a907e29c30a7afae3309c10b09","signer":"ed25519:bench-node-01","signature":"3022a678ae929f35c7750c06425358761559cc5295d9906ec5d599dc9ca2f20ebdd68539931c50cae0288de9eb43381e1dbbe75eeaec9421605cbd2a78ccf704"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:406c4632a56edb219e655f7363ed974e9ebb82cc2e54dbd64134e1862b4c3ff8","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:6b9150cfbd8233226dad54e0c15876c5b819e8d9aff9a0c429350e52edb80cd5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.743164250588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.077168e-02","shared_alloc_j":"1.692389e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6b9150cfbd8233226dad54e0c15876c5b819e8d9aff9a0c429350e52edb80cd5","served_from_record":false,"record_id":"r118","record_hash":"sha256:2c020a77fe4fc20b037e754251c6e89ad9270b5fc37be61f416f735022799a4c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95373},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.807574e+01"},"chain":{"prev_hash":"sha256:ba2a3429c6ca8ab802c8d8fcf9d9b86d0407a7a907e29c30a7afae3309c10b09","receipt_hash":"sha256:12620c90298341345b973369cff9304c1a6ae10466b2eb0f62db4743f80e989b","signer":"ed25519:bench-node-01","signature":"1ffd522eb0715181eed7149517abdbef6ec10ec1da942518f89cd9e1c818a670a28a3988077ce716fd57319807fd4e1e7b366a3f45b27c7e9a813fca77a5a30d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6d0636e05e6870a58903e387e4d9f9ec857046f546073bf0f2e6bf0b24bfb8d9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c5acc45aa021fd76b694dadbc084a3aa9a1107f5957329ada1989fd9a13fd849","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.870503920588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.448065e-02","shared_alloc_j":"1.816022e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c5acc45aa021fd76b694dadbc084a3aa9a1107f5957329ada1989fd9a13fd849","served_from_record":false,"record_id":"r119","record_hash":"sha256:6b7084145defec11a27bbed72264c0f691eb1c3a8766ba9ffc91fdae40296056","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95404},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810636e+01"},"chain":{"prev_hash":"sha256:12620c90298341345b973369cff9304c1a6ae10466b2eb0f62db4743f80e989b","receipt_hash":"sha256:dd2f9d7f76e7bb2d0e1875d7a2ffa6102ce6c355b8881bae7ebe9d30414c3242","signer":"ed25519:bench-node-01","signature":"35b2c59b49394e85ada93d6bc0ab1cc21ab0983c6a6777c8c19edefa07683f03f597f5077cd196988c335321342b22a5602d425a557ff0e5b9e760ce47ce8a02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c07b0bde0fd49cacd9c41e73818c89e17d55f3f88fba4c6d4f598985ef6dbcf9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.433089370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.291191e-01","shared_alloc_j":"4.303969e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","served_from_record":true,"record_id":"r36","record_hash":"sha256:55a2b8e716a8eb9fda50c9c4ad876cf5d024f9ae99c0be4799b8f2121d94a546","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":88830},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848111e+01"},"chain":{"prev_hash":"sha256:dd2f9d7f76e7bb2d0e1875d7a2ffa6102ce6c355b8881bae7ebe9d30414c3242","receipt_hash":"sha256:596311cb4ae36b37af208f64b35018071c1e892045b8db20edc1f0c337d51d39","signer":"ed25519:bench-node-01","signature":"7f5757b0a8f8d6e098d114671110fbc354eb83e66208b05a69e0303a604f173dfea49dab4b42acba66cccb081baface8b25ea61cf19fac8247d0c47d45bbb40d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:658da35dd0ebb01eeb0a97679119f1e17ef53bba55c9cbe446cee887aeccf8e1","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5f91097cca77d5e974cab038a9e8b2caca452bee5ee33d9a3521ac39eff904a5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.506501150588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.387858e-02","shared_alloc_j":"1.462619e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5f91097cca77d5e974cab038a9e8b2caca452bee5ee33d9a3521ac39eff904a5","served_from_record":false,"record_id":"r120","record_hash":"sha256:26334d4bf554a3017e915c24887f5ae1279d450f9c1db25a77d7ac4bafb3ab64","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95500},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.801237e+01"},"chain":{"prev_hash":"sha256:596311cb4ae36b37af208f64b35018071c1e892045b8db20edc1f0c337d51d39","receipt_hash":"sha256:800481eed63de20213682defa2e18cfade2c2cce1d18d8779d758d7aba209768","signer":"ed25519:bench-node-01","signature":"b2d163c52b965a7355ceb6b02ae6622df7bc652eeaa2cdffd86d9c5803b14f031774ac081f7acbb0ea2431b15148bb308f0075dda74f790d3ff73289a91e9d0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c8e52e968ab7195d63420f24239b457543d9ee4531454b38d4f39cc4d1fd0f36","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.374695580588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.829201e-02","shared_alloc_j":"3.276400e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","served_from_record":true,"record_id":"r90","record_hash":"sha256:fbfb7b2e0c35a608c84403c695970a425790cfac9e71c7f2b3ab9eecb37cfc58","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":93177},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836263e+01"},"chain":{"prev_hash":"sha256:800481eed63de20213682defa2e18cfade2c2cce1d18d8779d758d7aba209768","receipt_hash":"sha256:fa21235a5209430ca7ad03b2ce7c184a3d8a9e97b08784e49117c03be2c3c634","signer":"ed25519:bench-node-01","signature":"ee0ecf11ab0d8b76c5052e9281c1818afd78fcc346b362b8ea8ecf028d401f84f39845e66fb01eb0a9a625e9cf03cefca384a2a7ff8b4f9b5eaae22f41ae5c0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8e1878cbaf98d0b0439087958f08f7a235123feb2bbd289406ccdd434c386cdb","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.993129970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.163047e-01","shared_alloc_j":"3.876824e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","served_from_record":false,"record_id":"r121","record_hash":"sha256:68c00c9152f36db8ef49fff21c928ac679e7a92a748171b7d820e16b09fa9a05","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95619},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843571e+01"},"chain":{"prev_hash":"sha256:fa21235a5209430ca7ad03b2ce7c184a3d8a9e97b08784e49117c03be2c3c634","receipt_hash":"sha256:8868b36c6f1727d887fe0d14354816e461eb00b5b59f0eeb05d93d1b6362d978","signer":"ed25519:bench-node-01","signature":"ff06aa3e339ab3f46b1cfc0f1cfa8261926472ec38831f9c9a762ec5e37752352c5171b492081381e45f986be52eabc6cb1d169c717786da19d88c62317c3c08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2df62acf86413b4bfd52b2572561b909514424b791a213b33c46796e97986299","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.542265580588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.492031e-02","shared_alloc_j":"1.497344e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":13,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.802256e+01"},"chain":{"prev_hash":"sha256:8868b36c6f1727d887fe0d14354816e461eb00b5b59f0eeb05d93d1b6362d978","receipt_hash":"sha256:c1b8f383d483abd66abf44c5881323b2b7f4e3ebafadab164777465c45fd36c7","signer":"ed25519:bench-node-01","signature":"c2acf2e6bba13c53cc96e4c5abf8a9dcde7bf5be60618000f5761234d1d1064b0afd2e4467e3dec5bf899f12101499522d38a64fc56bc4c1a606eb3746cc7105"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:752d382e4093496c5d9c7de58ef1f36f18c97fa4d8353e3460e5ccf2de430bf5","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:302c7be4003ea0a217fb6534c49ada5bd8b011724c713672aaf7c5e4bdb42d69","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.060985770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.765335e-01","shared_alloc_j":"5.884451e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:302c7be4003ea0a217fb6534c49ada5bd8b011724c713672aaf7c5e4bdb42d69","served_from_record":false,"record_id":"r122","record_hash":"sha256:9ac3a5bfa31bc2d23bd91ee39dce78613d4d0c9378a264c1c2db444a00d60f04","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95742},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861694e+01"},"chain":{"prev_hash":"sha256:c1b8f383d483abd66abf44c5881323b2b7f4e3ebafadab164777465c45fd36c7","receipt_hash":"sha256:1e14d446c1fc6baa2897c7be09442d17bc1284624d4e6970a352d5b7056058ef","signer":"ed25519:bench-node-01","signature":"d4ec0f0073d2384da608733134625bf31e9ea3122ff148e5ad83819ff049991a7f778147386ac8341d8aa4847d4c4fa1a1ab8f12b47a3ba56c0bdf7954ad9102"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e90e1aaa0040f5ca3437a14be130528aa2e08c4a0b73f93dd04d418b15c32aa7","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:e0b57d9c257ac8c9907ed3e56a0c407357f932bf26e1660d0d88a96cc06b6aa5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.066074070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.475555e-01","shared_alloc_j":"4.918515e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e0b57d9c257ac8c9907ed3e56a0c407357f932bf26e1660d0d88a96cc06b6aa5","served_from_record":false,"record_id":"r123","record_hash":"sha256:a3ac743663700a41fae36cf62c8a17ebc0f28a4b8d5ec23c4f7061f777ba7db6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95824},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853907e+01"},"chain":{"prev_hash":"sha256:1e14d446c1fc6baa2897c7be09442d17bc1284624d4e6970a352d5b7056058ef","receipt_hash":"sha256:d0d4852477991a7558be5ec995685e22a2ff9d28540039cfd75aad67751ba6b6","signer":"ed25519:bench-node-01","signature":"e7dcb1e02b8174e01d39b4e663ab12c14ea37108767c171d7d399729e789bdfd840ba8ea607e50bbfd6e1481a1b2f60e273be04e6d03d33ed6b6737455c52106"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:75b6b7906aa39b13cddbe766c74389310ef9e27634aac12e32baf1c0c0e0f573","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:88c439bb9d426fb9727a854109492c31b2cbe45e6061fb213c1131f86d0a5280","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.868486150588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.442188e-02","shared_alloc_j":"1.814063e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:88c439bb9d426fb9727a854109492c31b2cbe45e6061fb213c1131f86d0a5280","served_from_record":false,"record_id":"r124","record_hash":"sha256:8810d4c5f141497c4aba7d3a9b00ca77492003fe0e235e6d347a73b851966316","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":95854},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810589e+01"},"chain":{"prev_hash":"sha256:d0d4852477991a7558be5ec995685e22a2ff9d28540039cfd75aad67751ba6b6","receipt_hash":"sha256:be0087585634dc5488bc8345734bc85066849398d0d7c4b440da201e85216e2c","signer":"ed25519:bench-node-01","signature":"81671cce066f0e6a8a6c37dadc52ba383409e7c8aeddd3e052d89f21c144dd2af6935353c284e6ccf90da4b93d5c8d1c5c68fcfd527c5dc55de735ed8f24c504"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:93228c4815984c61809035ac92052e2b98ceb7e96ac5e4fac8f06f8e557c93df","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.637015970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.350587e-01","shared_alloc_j":"4.501956e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850064e+01"},"chain":{"prev_hash":"sha256:be0087585634dc5488bc8345734bc85066849398d0d7c4b440da201e85216e2c","receipt_hash":"sha256:be83e23eb57c701ddf276ec173bc4256d809cc235a5408b437b922e930956cf5","signer":"ed25519:bench-node-01","signature":"2ae798a7ca5438d45bc1db8fcaf3dbadba25032c64a081774e90a000e3b1152971e8103f7dcccbdc49b467bbf5b626c656a5332bcd5b88352364868eaeb97203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:56a9785c4c3b2ce296c366786165e9dfcbb38b27142e392d62379c1db7bc9a83","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:0267ad62d64134b8622d4fb07cdbe888137deaca0fdee61e6b66d8bcb9076eaa","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.260250170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.240849e-01","shared_alloc_j":"4.136164e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0267ad62d64134b8622d4fb07cdbe888137deaca0fdee61e6b66d8bcb9076eaa","served_from_record":true,"record_id":"r44","record_hash":"sha256:2dc81090fa0017c427246a792fbc24bb499645f650fefb1ca4f4c43edfcfc62c","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":89635},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846383e+01"},"chain":{"prev_hash":"sha256:be83e23eb57c701ddf276ec173bc4256d809cc235a5408b437b922e930956cf5","receipt_hash":"sha256:9d49a9f74b60341ec3888d7db64365c46aaf0756d091dda3da0f48eb21ad885e","signer":"ed25519:bench-node-01","signature":"5388a8abdd7d411616179b60ffc0bacd145552b5f901e98f5579c433d578e01f7eb43a3e988175c55df9a3dc322ad5799113e363a9005d7e7951c778e6fb520e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e4c6b7337fd146c1127373fd6dffa8eafc22551a7997303b79006f13eba91e7e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.780741570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.683710e-01","shared_alloc_j":"5.612367e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","served_from_record":true,"record_id":"r90","record_hash":"sha256:fbfb7b2e0c35a608c84403c695970a425790cfac9e71c7f2b3ab9eecb37cfc58","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":93177},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859638e+01"},"chain":{"prev_hash":"sha256:9d49a9f74b60341ec3888d7db64365c46aaf0756d091dda3da0f48eb21ad885e","receipt_hash":"sha256:d111ae13fec5dfe1e7d0d4cacb911f502eb5b8a0fd09816c0ad2cfb1c8aa95de","signer":"ed25519:bench-node-01","signature":"2e3e9cd20492920c614c2094e8fba4881b9954e771c02a028d16dfc33a1913d7695e8b6c29898e25901a28b774638c4844815f7f282afc8ad495280746d31402"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9dffb216c667064dc727dbce895c26040102f5fd643ae691a3e396082021a51d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:f1070bc76733cc042f615c8c46f0da8964f7b072195de00defc3becd95ac9c58","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.609363370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.051271e-01","shared_alloc_j":"3.504235e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f1070bc76733cc042f615c8c46f0da8964f7b072195de00defc3becd95ac9c58","served_from_record":true,"record_id":"r26","record_hash":"sha256:6201b83c8fa51bdd9d68fab6860e3a0ac914bf9cbb10d6524751271fc0ec524a","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87979},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839183e+01"},"chain":{"prev_hash":"sha256:d111ae13fec5dfe1e7d0d4cacb911f502eb5b8a0fd09816c0ad2cfb1c8aa95de","receipt_hash":"sha256:b19b29185d3af63201580cc75cd2a56da140fdeca467426c47d22c20097b4bc4","signer":"ed25519:bench-node-01","signature":"a943c51362f012c06321be821771c20f68922aefd70169ca2da20b66404e8021269d5170013cd3a3d9ff87547edcc1c93cbb69295432284f26972d9e4e5c630a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:50f8dd86fc392d7049c84c58bb5a8b05e9f3bb4439167400d85e39dce3c08c51","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.294868470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.250932e-01","shared_alloc_j":"4.169774e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","served_from_record":true,"record_id":"r121","record_hash":"sha256:68c00c9152f36db8ef49fff21c928ac679e7a92a748171b7d820e16b09fa9a05","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":95619},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846735e+01"},"chain":{"prev_hash":"sha256:b19b29185d3af63201580cc75cd2a56da140fdeca467426c47d22c20097b4bc4","receipt_hash":"sha256:d4465b5f08410f316499797034c848c696294d023443dd016a3637250a9a2986","signer":"ed25519:bench-node-01","signature":"2dde26fbbf5fba96f08449a446315616be1f489998abcfa7735f0f3c1fa139bdd1bf8800a12a797a314e7d12c913ae890c1fe6237e1cf1fd882837736505bb0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7297cd51eee2273b562d008344b47a8e16c959d40f76c2d994874a54a2f3190a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:344d3310dbfdbc5554f4e978fbb9c3cab5e5c766c52065d101623da328d5d32f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.069670570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.476603e-01","shared_alloc_j":"4.922009e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:344d3310dbfdbc5554f4e978fbb9c3cab5e5c766c52065d101623da328d5d32f","served_from_record":false,"record_id":"r125","record_hash":"sha256:73f33501edac9805401499a023668668b69810bb94a2b4a0edfb58c0848c0a13","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96302},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853938e+01"},"chain":{"prev_hash":"sha256:d4465b5f08410f316499797034c848c696294d023443dd016a3637250a9a2986","receipt_hash":"sha256:ec0556e64c0d2aa3167426cac0068a9ad45f1d5d8be5febcad4f36748e4abe21","signer":"ed25519:bench-node-01","signature":"1830739748b5f6449e792007522ddfb3bff1e93f31bb6bd53b3d0196842dfc990d897f7d358948b8ac5d98075fb7b343813baa6c518ff025a19992f3693f9f07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:40c5ae744ad086e360ea68e64251bf9dcbac4a5f44d5a9da704443f929aed9b3","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9014e65fe138b28393ccb3d8d284ed537952a969e7a21268271f523fa7af84ed","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.944221670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.440064e-01","shared_alloc_j":"4.800214e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9014e65fe138b28393ccb3d8d284ed537952a969e7a21268271f523fa7af84ed","served_from_record":false,"record_id":"r126","record_hash":"sha256:21c082b273e8dd3bf225ba9f6c5875d948da0df81a2224d3b8400cf7a1969a41","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96382},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852850e+01"},"chain":{"prev_hash":"sha256:ec0556e64c0d2aa3167426cac0068a9ad45f1d5d8be5febcad4f36748e4abe21","receipt_hash":"sha256:01a21d68e7c736c73f982ce854e27d7d99a9556d1806744470e63ad89d9594b9","signer":"ed25519:bench-node-01","signature":"a84f77f0f167b6eb551f220b52f19642c2e29489aefa661b32624c7081fa871ac6ae5b4e72974911458f30fe194bbc7a192a5a9cf8e7cea43a4c769c320a930c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:029d636c816ba86a602cea157cf2402c84c8c124e02b5ea874c7fc59378fab6f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.690199970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.366077e-01","shared_alloc_j":"4.553591e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","served_from_record":true,"record_id":"r48","record_hash":"sha256:758e76b23b821b7b7abe8ab30701ecd786d85e29d1f10de3aa4cbaab51519c59","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":89972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850559e+01"},"chain":{"prev_hash":"sha256:01a21d68e7c736c73f982ce854e27d7d99a9556d1806744470e63ad89d9594b9","receipt_hash":"sha256:4c431390c8b48ba74b7dcf21997b68e76a25fa63a2704a03d16b7b391d1baf5c","signer":"ed25519:bench-node-01","signature":"dcb0c0617105260c6512ce058d40a18585c4308405afbc51a76e83bd6d14ef64c315daf2e6b10399342db9294748469eb19cbfd63e7fb8b982d4cabfa453af0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fbe19d4a9ef478a41e005c6fadb21ea0b1c009dafcc6ed9aa6c0094084681afc","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:000992060ac23f9a6b54bc2803d93971b95cb85a38feeb4e9d3559b2ffba116e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.119823670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.174240e-02","shared_alloc_j":"2.058080e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:000992060ac23f9a6b54bc2803d93971b95cb85a38feeb4e9d3559b2ffba116e","served_from_record":true,"record_id":"r4","record_hash":"sha256:075ab1ff59393c60da8559722711e3fa3b2c44a93c170ee6a918f85a4efabe5f","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86633},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816070e+01"},"chain":{"prev_hash":"sha256:4c431390c8b48ba74b7dcf21997b68e76a25fa63a2704a03d16b7b391d1baf5c","receipt_hash":"sha256:3afd94172f4c547d76bcc1c68ec3e2b9a0bfa4203d775d9d701ef66a46d89c40","signer":"ed25519:bench-node-01","signature":"0a5a702497ef100c57fd03e12b229ad7abb1d1487f33c4df6782c4e880f1c8de8d57268867c407624f2edaa210cde01cd588d50bd572cdf4b8822420ef7e790e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:13a5596ba855b250fdc101912abc5411705ce85b2bbdd8f2283c785036cfb241","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.933153900588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.543163e-02","shared_alloc_j":"2.847721e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","served_from_record":true,"record_id":"r48","record_hash":"sha256:758e76b23b821b7b7abe8ab30701ecd786d85e29d1f10de3aa4cbaab51519c59","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":89972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830173e+01"},"chain":{"prev_hash":"sha256:3afd94172f4c547d76bcc1c68ec3e2b9a0bfa4203d775d9d701ef66a46d89c40","receipt_hash":"sha256:7f88d740a58b0ab2e58d797e35b16a5c5b6ad95b784411b0e0cb8b80fb319017","signer":"ed25519:bench-node-01","signature":"5dee4877b87a845be716f6a8ff9dfd3e681354182a75ba7b39b60424a2ebbf743a3a3ffae5073ce8555c6c5a8b209eaf70c9bed818e21f051d947220cb55cb0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:79f353a26f1e32c0d071cab98894947992e5a35f77f6269973451c51c23773e9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:05f17fd121a463594b61b4cdcf207aaa369bbb2761e582ce36c12da3375fc3c3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.957449770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.152655e-01","shared_alloc_j":"3.842183e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:05f17fd121a463594b61b4cdcf207aaa369bbb2761e582ce36c12da3375fc3c3","served_from_record":false,"record_id":"r127","record_hash":"sha256:1e50dbf0ebd87cb9ea72df72adda520521f02f0b407b8a6eda9651b7dc8ee1ed","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96603},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843182e+01"},"chain":{"prev_hash":"sha256:7f88d740a58b0ab2e58d797e35b16a5c5b6ad95b784411b0e0cb8b80fb319017","receipt_hash":"sha256:fd115f45d2f59ebd10cbb5e9d4e09f7548ec0db509cef5222791276af4eb97e9","signer":"ed25519:bench-node-01","signature":"4fd96e0da1a5eee41e1c07daf5bb7cd57404f73cda4c602088e3ab478874837a487274e94fe05c67aed4bfdbc0aff3ded9ca3566df022430357259886bc48907"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0a0edd702e056340af97f7bd9d07488e7d262bed205ad7f5f2c49b85d32d6475","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:22d862b92bd310f94f74a536a6cc12299c62e5300c99188e9a681064fa11c842","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.774582770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.099392e-01","shared_alloc_j":"3.664640e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:22d862b92bd310f94f74a536a6cc12299c62e5300c99188e9a681064fa11c842","served_from_record":false,"record_id":"r128","record_hash":"sha256:eaa58fea9504d48a0ac9926993328ee3c5c080598ba54964f458828e629429b8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96664},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.841127e+01"},"chain":{"prev_hash":"sha256:fd115f45d2f59ebd10cbb5e9d4e09f7548ec0db509cef5222791276af4eb97e9","receipt_hash":"sha256:675011b31292efb6270854c0071206c4813c09e797346abb1139b2e377eae95c","signer":"ed25519:bench-node-01","signature":"3e3d6664705843c661782af4c5742fc995bcb8188e67f0c915199d42affb82923e7a064e93fdb78d7359b48c9768b752226916410c0ccc7da4a3365dce86490c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ba0623ccf946b7cd6736c8807112a8ccc3d3efad4588ba795be2dd4e9afa04c2","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.181214970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.265670e-02","shared_alloc_j":"3.088557e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833699e+01"},"chain":{"prev_hash":"sha256:675011b31292efb6270854c0071206c4813c09e797346abb1139b2e377eae95c","receipt_hash":"sha256:aef2ca023d1fabc41945ab1126161f037ae2506aba9c73e9ed2a052203ae8abf","signer":"ed25519:bench-node-01","signature":"e48b5dc5df0fe3b3bf842cfc0b7a1de714b028b32bbe5db75eabaa08653b73b610b0cee396ab098c33f51b512eba58454f0d661a655219f78379eb99387f0b02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5dfa7b3b531c902d8f00b81921048fc7104e017286258608d392109e443a07d6","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:027206174fe3afe55662ff7e197cef4bcc261b706aae20ce6b70fce316d50652","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.341953480588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.821221e-02","shared_alloc_j":"2.273740e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:027206174fe3afe55662ff7e197cef4bcc261b706aae20ce6b70fce316d50652","served_from_record":false,"record_id":"r129","record_hash":"sha256:3973d0d461d9700f87560bc96f89beeed15a78eb890105429322b237a1944a31","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96754},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820398e+01"},"chain":{"prev_hash":"sha256:aef2ca023d1fabc41945ab1126161f037ae2506aba9c73e9ed2a052203ae8abf","receipt_hash":"sha256:60242afc5598c555d86b0f7a2408543ccaf094475cfc8e2f1ba80836874ecb00","signer":"ed25519:bench-node-01","signature":"326d93aa919497bec93e7b26343628cd6f0046d68570d4397036af39058060484b826cfad11bb5d9cb0e0d606c18dc118d02f6f6bb567ab8486be4d0844cba04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:be1771e29785ee42f1541c1d2f5c29cf16e9e85f869ad03113e619ea467ffa13","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:86bfaf5eec3f3155eb596fba26eb284381cc8e76ceb08cf882275e1d5f13b293","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.056331390588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.989312e-02","shared_alloc_j":"1.996437e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:86bfaf5eec3f3155eb596fba26eb284381cc8e76ceb08cf882275e1d5f13b293","served_from_record":false,"record_id":"r130","record_hash":"sha256:37fe0768c1cc09003bcfc277835e7b0bc6d2bd6cf7d43f51e2861794774b36cf","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96787},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.814749e+01"},"chain":{"prev_hash":"sha256:60242afc5598c555d86b0f7a2408543ccaf094475cfc8e2f1ba80836874ecb00","receipt_hash":"sha256:cd8641a92dc7a6b5378b694776a8c90bf4d9b1bf78d23f282786b0f9854f9411","signer":"ed25519:bench-node-01","signature":"7ed92b3695362ea1b1c73a43bb56523379c44846f9ac66ba09306ba81e6d1d41bd0dd99f689f0a1ac996ec626a1b5085ebd1fae46638f257d137638a02ffbf04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c5e1b5d0563c5712e7d81bbd5e7972e35f325e373a57b3dbd165af756ab59595","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:681cb2a577ff523b7cd6ddb96943d8e946678ec479213c4ae937a17caab6ab20","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.256311470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.239702e-01","shared_alloc_j":"4.132340e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:681cb2a577ff523b7cd6ddb96943d8e946678ec479213c4ae937a17caab6ab20","served_from_record":false,"record_id":"r131","record_hash":"sha256:453ac78ed3d5d6197b0a142bdb15bb4dcefc6b07f068f596579c173fea5425ad","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96856},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846343e+01"},"chain":{"prev_hash":"sha256:cd8641a92dc7a6b5378b694776a8c90bf4d9b1bf78d23f282786b0f9854f9411","receipt_hash":"sha256:6dccfbc9b808c671097ea7a57f8c0355cff3057ce2e7c0e9db430fafaa072375","signer":"ed25519:bench-node-01","signature":"22bbb44a0ba24a72b0db7d18da44742e68faaceadb47718cdd498722e013c94bd7f032d75341cf6c2641f55b31e77a9c9153db0a57fbfa379570e86202475a0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b7adf331a3dadc41436042ca7d0587195ac6e4b2b0e2a0b48a864cfc5944a890","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cad30f2c6d0d2fedf44ec59d6ee99ebbbcde9e90ccbdaeccb878fdb153546be7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.223698370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.389410e-02","shared_alloc_j":"3.129803e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cad30f2c6d0d2fedf44ec59d6ee99ebbbcde9e90ccbdaeccb878fdb153546be7","served_from_record":false,"record_id":"r132","record_hash":"sha256:089786c3138124ce2fc63d613bb7ef2f34abbd2827adc8dbc87070b5d46e38f4","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96908},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834275e+01"},"chain":{"prev_hash":"sha256:6dccfbc9b808c671097ea7a57f8c0355cff3057ce2e7c0e9db430fafaa072375","receipt_hash":"sha256:a2bfe85ecf3df0979310cb8b53f59d9ee1fa7017f66fbb820ecb533dc1eb6302","signer":"ed25519:bench-node-01","signature":"b29044d712761bfd248c2e32fcd7fd04b5df109733035846bce49552baa94bbcee28d52a4882d25f87ac38e231f30516d362f7967cd4d9008e548bc45ef05a02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9792e18924155d147da2b3d26d2b54a654a8bfd6c8bfa6aef84d79df878ef129","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:04e5a26940894add6708ef236b673662643062f46a51261d7761552a16d9d3f3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.431442970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.081870e-02","shared_alloc_j":"2.360623e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:04e5a26940894add6708ef236b673662643062f46a51261d7761552a16d9d3f3","served_from_record":false,"record_id":"r133","record_hash":"sha256:a9389697697389d73dad1887641596c51077b6e1c7d3f0a261ab71de4aa95e88","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":96947},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822026e+01"},"chain":{"prev_hash":"sha256:a2bfe85ecf3df0979310cb8b53f59d9ee1fa7017f66fbb820ecb533dc1eb6302","receipt_hash":"sha256:b463ed5af7969611f852cfea19389f6f77460f5b976b4ad2fa7495b105f4368a","signer":"ed25519:bench-node-01","signature":"c46e24c1beb8a93c37017831f7cc21887226e2d3914548379206345a4e22133821ed4fd0a720a1bd3ae61796a5fa63631d96af2b977eb885481c1a318174360f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:07264ec275af4ff89334f8a89bf7f61dfd4aa88cf19d48df6a5bf62357e232a5","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.272358200588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"3.705893e-02","shared_alloc_j":"1.235298e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":14,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.793901e+01"},"chain":{"prev_hash":"sha256:b463ed5af7969611f852cfea19389f6f77460f5b976b4ad2fa7495b105f4368a","receipt_hash":"sha256:798076044915c440549a13b87ab959d324ea965b0e7be575f160141839b5ee5a","signer":"ed25519:bench-node-01","signature":"8883c2aa4ec9cff355bdc938f4a94e26545a012b4a86871a7f61d686b7e3f13cd541725e92a4792e948fee1188bda287c2de1dd91f4bb75504a306e5cc1fab03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f2c65810a65c18c804685ebf244322e5e153263473bb3d5b996d06a4c352113c","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:03edf452ec745a0b3af013d4ab01c43d27b32aa4bc66d762434da2276860728b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.835831970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.408494e-01","shared_alloc_j":"4.694979e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:03edf452ec745a0b3af013d4ab01c43d27b32aa4bc66d762434da2276860728b","served_from_record":false,"record_id":"r134","record_hash":"sha256:1eaf869c648c717dbe12a425c2b4c4f73b3164632d0832f313965d75c85131a2","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97046},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851887e+01"},"chain":{"prev_hash":"sha256:798076044915c440549a13b87ab959d324ea965b0e7be575f160141839b5ee5a","receipt_hash":"sha256:e7ef2956e2ef998824ad2ab323bc05d1187784424f2309d2ba3c13b2c66d327f","signer":"ed25519:bench-node-01","signature":"9f620edb331a3feb2ccbd2b900c8b841d38717c81cb16b557a9bc87dfc873198a43a69048c5819599b8975fc7f31c94b15d06f8a80c29a36e6f2ffcd6f141401"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:573c092542e346cb61b7fa809eb8070b5ca28b9af559484d9cb4fef843cf772a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:cdcf8e35c696111fe372178b7a84c92bcc0a341f50b1b9945d5272081b4a00a3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.797145370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.688488e-01","shared_alloc_j":"5.628293e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cdcf8e35c696111fe372178b7a84c92bcc0a341f50b1b9945d5272081b4a00a3","served_from_record":false,"record_id":"r135","record_hash":"sha256:85cf70bde7b030469e1b64d167e864ff94e5633a81fb5aff67ce6dc9ac3de15f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97140},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859761e+01"},"chain":{"prev_hash":"sha256:e7ef2956e2ef998824ad2ab323bc05d1187784424f2309d2ba3c13b2c66d327f","receipt_hash":"sha256:fc93da9ec3d31b438bd22cdca4db404bac5bf8f18647bfe46d38eff0c28fb7ac","signer":"ed25519:bench-node-01","signature":"b4ef953da1cea1413d03867d08ed0ea634ab6d8e7dde4dadf3b15fb9f3ffc4de9cff7e2f4cc95f957360ed43f2a10d25a509b41ac610aedce5d80d1640ba0d04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e11b0d88f8631ab3c95b8f9690eb7cbb6d1ffd23813e063a582e24ea9d6c3fa0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.401590470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.994920e-02","shared_alloc_j":"2.331640e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","served_from_record":true,"record_id":"r16","record_hash":"sha256:3227d5f5cdb47b0c636c60fce42fed733f0e84ce2c21552a8ea3164c96c9d710","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87438},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821490e+01"},"chain":{"prev_hash":"sha256:fc93da9ec3d31b438bd22cdca4db404bac5bf8f18647bfe46d38eff0c28fb7ac","receipt_hash":"sha256:c3262011b63bfeae9a6733eb487a7571402a2c2e66b4e371fcab92def2deaf8f","signer":"ed25519:bench-node-01","signature":"d959fac6ca9d88aff4dae1edbabf8253a57a1076239074ea1ffbb201364c45945af069c610cf1bb4b3cd9440baf71f71098ee42fd9aee76060dc5f937c4f4203"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:854e9fe3cb4466516d8f2f9e597715bd4b275e423dcaa352a684da56cdb23b23","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.876957900588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.466863e-02","shared_alloc_j":"1.822288e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","served_from_record":true,"record_id":"r114","record_hash":"sha256:11b74bcd9d0099b86cba50d647a39fde7bbd69fff8ab977726c7de08af14d90d","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":95088},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810785e+01"},"chain":{"prev_hash":"sha256:c3262011b63bfeae9a6733eb487a7571402a2c2e66b4e371fcab92def2deaf8f","receipt_hash":"sha256:b0f727fead50541999adafc9670c7e6fed605c13439cfd6946e2a4857bb99983","signer":"ed25519:bench-node-01","signature":"1ae526d8fb4bee8d11ac843f2433abce254a1af814a87407b27d1f4d5df426e19c309328ffbbcc680360f2b9eb0e46371ff5f7a26680d13f853502847701b809"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:15dcb26aea8df07ae7e5a787618636c7cd803985a3fa6635d1a0511a9f83a340","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:56f31403b6c262597065ff99fdabb3aa51f06ce20ce0c64fd757c16c6e472db8","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.465685770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.009422e-01","shared_alloc_j":"3.364740e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:56f31403b6c262597065ff99fdabb3aa51f06ce20ce0c64fd757c16c6e472db8","served_from_record":false,"record_id":"r136","record_hash":"sha256:0318622c533e421c87be0377c00731d4271381f35987fd09e34cd5b39d2e5820","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97265},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837419e+01"},"chain":{"prev_hash":"sha256:b0f727fead50541999adafc9670c7e6fed605c13439cfd6946e2a4857bb99983","receipt_hash":"sha256:3c712bc9d843d1fa412e01da426838b7e7942ac1b6759686ad3ae30c1d493573","signer":"ed25519:bench-node-01","signature":"033854ebc4aceee86b9b462131d681ca92c8013072eb88d1cfb4aab3458d552b66a16c2a961e9b7816c39ba0da0f600bf0539b2104fe38723da843452a247206"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:88424a04404ddf090a0540f93ee572655ee404e3aae9ca2454cf609d0e00bd40","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:6325a64e3e9f740e0d177e5e9f7b218e54860498e001b826bb4e3639a52aaaa5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.867156680588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.438311e-02","shared_alloc_j":"1.812770e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6325a64e3e9f740e0d177e5e9f7b218e54860498e001b826bb4e3639a52aaaa5","served_from_record":false,"record_id":"r137","record_hash":"sha256:e55df1f2bfa366faf645c4ab431709a7e106a7dc746b0c10e77cee9e554ba116","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97296},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810558e+01"},"chain":{"prev_hash":"sha256:3c712bc9d843d1fa412e01da426838b7e7942ac1b6759686ad3ae30c1d493573","receipt_hash":"sha256:cd258fae272d2c2c85fb67bdd83c899a3f97a5b4557e2d2e64e3614655795b51","signer":"ed25519:bench-node-01","signature":"3b500be4d82ced1bf8a0cca41132baa9ee81ce7de6d0024afb85979672766b67d0ca7c0f45fee4b65f67bfe56c686dc0a998bcccd8bc6c80e7498f402663be04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f5ceff65636e2a0c49947044d56c611f9236083448612936c7f1e6779beb248b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:142b07d7db8dea0bfc67c9f5eba2082dd565d65695dc5376e1da98af2000ce32","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.744887070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.673268e-01","shared_alloc_j":"5.577559e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:142b07d7db8dea0bfc67c9f5eba2082dd565d65695dc5376e1da98af2000ce32","served_from_record":false,"record_id":"r138","record_hash":"sha256:b8568107518bc92108538b5ebd929fe1e56291edc5730e993dcfd7e8e1d3bc7d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97389},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859368e+01"},"chain":{"prev_hash":"sha256:cd258fae272d2c2c85fb67bdd83c899a3f97a5b4557e2d2e64e3614655795b51","receipt_hash":"sha256:47ffac009405d369af672e3f7b42a32ae153cde56a0e7f72122865db02f920cb","signer":"ed25519:bench-node-01","signature":"6d38fad588c615da5204ee8fdcdea418fec67591cc9f37fc167ddaebad74b437ebe7ef797bd9c9b8d545154e5879f861cb1d7376f6ed98d8c60f4b6264d15a0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2abeb0aec78a8b9b4ddebb52c0332d23b9f5540ff05f9c12e9cdce783abffe76","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:6f37d45f68c8e63262b6f5238005c8e712494dcf15281951ed02eb9edcbdd749","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.536379970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.612537e-01","shared_alloc_j":"5.375125e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6f37d45f68c8e63262b6f5238005c8e712494dcf15281951ed02eb9edcbdd749","served_from_record":false,"record_id":"r139","record_hash":"sha256:454ce54f131e6c17e307228a92563feae01df8d8774033129589310b7a521a49","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97478},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857763e+01"},"chain":{"prev_hash":"sha256:47ffac009405d369af672e3f7b42a32ae153cde56a0e7f72122865db02f920cb","receipt_hash":"sha256:9a568ae1d6ab6f3c5728747571fe8ea83dac5c7dfcb80031091d4efb2d812254","signer":"ed25519:bench-node-01","signature":"6b14b51a61c63b76ca6ad1e7f78f27d4772ad47dabe96cf5d0e7a80aacce1426e1734fc9610df7b79f7a32e6356e73cc9ffe832c20126cf9ac9981745dd71b03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:728bb77f762e98aec67bea3fc39e380e7225c1661330609d6f38af71d3b2a95c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.626844970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.638887e-01","shared_alloc_j":"5.462955e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","served_from_record":false,"record_id":"r140","record_hash":"sha256:9f4054b5d15ac16ce0b79b780e5d8bf8b428262e4fd2a332ec366dce24f89c41","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97569},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858466e+01"},"chain":{"prev_hash":"sha256:9a568ae1d6ab6f3c5728747571fe8ea83dac5c7dfcb80031091d4efb2d812254","receipt_hash":"sha256:ba45123b276ebba899b80b68e4389065ee12d3fcd3160e5a54086c3119d17698","signer":"ed25519:bench-node-01","signature":"e9d537e2f1a468a3a5926fc9896c1dcf11321b975fb50ef4b091f91dfa7a349c1139c006ead49204eee04d511f37295180bba688ea5cfef99025028c6bcff300"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5742ad34ae49a242fef643270db8e46d9482cd563dada4090771e7d52091286e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:d3980a53696b36e807ddd7a77cf4eea828b8b43bd22c99f8d5ccb8925f32d248","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.910994970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.139124e-01","shared_alloc_j":"3.797079e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d3980a53696b36e807ddd7a77cf4eea828b8b43bd22c99f8d5ccb8925f32d248","served_from_record":false,"record_id":"r141","record_hash":"sha256:d249e71c0217b0b5db7e4d57b641b81686c1268b36bc8427cb39c3cba8fdfe50","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97633},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842669e+01"},"chain":{"prev_hash":"sha256:ba45123b276ebba899b80b68e4389065ee12d3fcd3160e5a54086c3119d17698","receipt_hash":"sha256:afe0cb41b7dcf0f76a7745cae63dbbce862f6e1a8938ff5b3664179016f501ad","signer":"ed25519:bench-node-01","signature":"6711cd310ab44cd6ef465b7f236887b0f0786d97496238481892364a06153183621fc728585258e8b3d953313259be46fcbe53adb00f2d7c420b1434a39e650e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7e9a027dd28ea5207aedca994f0d8599b95b2c54965f260ec57120b808e6c635","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.501481920588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.285865e-02","shared_alloc_j":"2.428622e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":15,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.823260e+01"},"chain":{"prev_hash":"sha256:afe0cb41b7dcf0f76a7745cae63dbbce862f6e1a8938ff5b3664179016f501ad","receipt_hash":"sha256:145af2c5e1a332345f463c954f15b78e8e3f60bea8d3faf77fb9afc3b86065e3","signer":"ed25519:bench-node-01","signature":"7131d53bdbec22369f52cca358a052efd4c2a2a942faad09ceb6532700122f56d5c35543b2d90e77b3eb044edffa0306da79b0c7bbf826f382235f73c911e009"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c571d742b5d81e41b912b3a2bdce0504901757970bde05d0741b9a4a267ad672","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.087835670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.481894e-01","shared_alloc_j":"4.939645e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":16,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.854093e+01"},"chain":{"prev_hash":"sha256:145af2c5e1a332345f463c954f15b78e8e3f60bea8d3faf77fb9afc3b86065e3","receipt_hash":"sha256:a22af29bd48a59ef0e702ae8c0966abbb659caf9c3b2e0c3bea844d4267220cb","signer":"ed25519:bench-node-01","signature":"b5cc4098093988bb3c3825da7eb82733dcfefd1a2b79f44b06939615a77bbb1a97cd7e4c4c96ecf16233c54f8cb7d2fc528b99d258e0d1542ac1bd712e9e8306"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6395c2af95609c907cffa0f5603a641d0cec98a2d417d336e4665cff0e850391","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:76aa44f7b0b3b872eb243bcd0ed8bc9038d6779900791ddcf365d5805e743a5f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.413599670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.285514e-01","shared_alloc_j":"4.285047e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:76aa44f7b0b3b872eb243bcd0ed8bc9038d6779900791ddcf365d5805e743a5f","served_from_record":false,"record_id":"r142","record_hash":"sha256:dba5353f14cbe283a3df3bc0429b4d0da6169a5533118250370697129a4c0c9f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97827},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847919e+01"},"chain":{"prev_hash":"sha256:a22af29bd48a59ef0e702ae8c0966abbb659caf9c3b2e0c3bea844d4267220cb","receipt_hash":"sha256:b475270ea0e0d1830f8b175cba4b010575424bd2ab773b4cc6699b3641b487d6","signer":"ed25519:bench-node-01","signature":"dee2d1eb86a46ff636ef786d3961c69efd1f3aee27bc70838a59911c5479ff0fc59c0198bff02f36d2e1c7163b8ac9bf85d009440e26a3cc7f2992b9218c340c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2dae72b236c596473740224087be611284735ffcd60c1d73d26f187204fc2af8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ba80a0c5a96893e7ef50727233d32223b0c47e4bb8ba733fa50ffc6d22ca525e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.259629370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.531931e-01","shared_alloc_j":"5.106435e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ba80a0c5a96893e7ef50727233d32223b0c47e4bb8ba733fa50ffc6d22ca525e","served_from_record":false,"record_id":"r143","record_hash":"sha256:bb5d62f458af5184d4385803ff272ef274caf2d58506c1d9705af4a8e8e7a6cf","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97912},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855535e+01"},"chain":{"prev_hash":"sha256:b475270ea0e0d1830f8b175cba4b010575424bd2ab773b4cc6699b3641b487d6","receipt_hash":"sha256:2029838819d8d888a4ef2bb531c560d0b13ecb359f7571504a92a792e717e882","signer":"ed25519:bench-node-01","signature":"ceb6257cefb62f5ce6b81b0153efc29fc6f9deedb2317344468f29a5a014487ef65d8e1ee6f601f101cde7c2d27c90afe0acca7bb950a7a3704589cb5a3d510a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9dc1586f5240ea2e3c3a8fd828d5e2730537e36d90ed5b4d7df6f73086ca2d86","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:37e980e4882227a96e675fb441e1820f1abf8da0fd3d4073eefc5fa35288e5c0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.933263570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.145610e-01","shared_alloc_j":"3.818699e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:37e980e4882227a96e675fb441e1820f1abf8da0fd3d4073eefc5fa35288e5c0","served_from_record":false,"record_id":"r144","record_hash":"sha256:4ad8fcdd7c640b807dcf3b6cd1b1c4e1b0089f8da66acb84a15e3d1f937e755d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":97976},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842915e+01"},"chain":{"prev_hash":"sha256:2029838819d8d888a4ef2bb531c560d0b13ecb359f7571504a92a792e717e882","receipt_hash":"sha256:deef8bd08c4fc0681abb956f6cc2f630d349712e4f9fbf6be5d8b97a6e6e1d15","signer":"ed25519:bench-node-01","signature":"9cb965c2789d5945e918ae0dc2fa0a8de877908a214cf958caf861aaba35f01f538273c1d61371b472fdbbddfcaf999cc8c107aabf2f85fa2630699279abdd0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:192784e1332666912870a3c6b207e2beae52ae6a1b672f56c2318dacc71f6946","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:aee17b375980a589f30f158391737b2322f308485b57b59896ead820ac93fcac","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.355661570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.559900e-01","shared_alloc_j":"5.199668e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aee17b375980a589f30f158391737b2322f308485b57b59896ead820ac93fcac","served_from_record":false,"record_id":"r145","record_hash":"sha256:5dc901d65611b741e61f91ed0c13cd82936b5458adcd335f9fe4223bea9abb0e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98062},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856321e+01"},"chain":{"prev_hash":"sha256:deef8bd08c4fc0681abb956f6cc2f630d349712e4f9fbf6be5d8b97a6e6e1d15","receipt_hash":"sha256:ce391ed7822e01726cf6eaf93626c02e71ba6479c8872a83a0f6cf7b9a13a0ea","signer":"ed25519:bench-node-01","signature":"b38da5d9fb8e827892de0e2ad2065e2fc0ccb5bb2331598bd7cde57a603899fd04315df990d6d279d41e42a927ae14878138e918a246b462abfcee4494b2e909"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5fa722713a5d2a48ced8941676e1e1be8c3ed7ff7435a26d9fd226940c94c85b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:6fb90bf22cf47ebb829244b6eb2a2c3c6103a367b5355ca78f592dd35b9c656b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.964765070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.446048e-01","shared_alloc_j":"4.820159e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6fb90bf22cf47ebb829244b6eb2a2c3c6103a367b5355ca78f592dd35b9c656b","served_from_record":false,"record_id":"r146","record_hash":"sha256:5c886813efb4150f34d433b2651ae9e8a0582f095c8f30364f1b2e063418957a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98143},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.853030e+01"},"chain":{"prev_hash":"sha256:ce391ed7822e01726cf6eaf93626c02e71ba6479c8872a83a0f6cf7b9a13a0ea","receipt_hash":"sha256:308f7ca43fa8d6d85d00976daf4a437c84a6ee8110826f27c7e443fd3d9cde12","signer":"ed25519:bench-node-01","signature":"08f2fd29fadb136c698603d8d5f420d5d1fbf4407684bd2991191ca5bd22156e55b205bb612564d7fdda71f9181ff510eb98b30bda7b4e79977c07e447aa540e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:455681328066c4a19b0917290f102d7303f46f043dc143f11dbfd8826eda3436","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:ce77866203f612a22e6657ca52065c2bca49b5c704e7cbe7bdbafc508469eb4c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.658697270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.065640e-01","shared_alloc_j":"3.552132e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ce77866203f612a22e6657ca52065c2bca49b5c704e7cbe7bdbafc508469eb4c","served_from_record":true,"record_id":"r68","record_hash":"sha256:0d5bff476d58de9e80883a299e1b4aa6d7b853a633916d6d74df6885e00c5534","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":91742},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839773e+01"},"chain":{"prev_hash":"sha256:308f7ca43fa8d6d85d00976daf4a437c84a6ee8110826f27c7e443fd3d9cde12","receipt_hash":"sha256:7451e24bc46a6320879760be98abb3a61feeae70bfbb21dccd459e90486a9e38","signer":"ed25519:bench-node-01","signature":"16d02569e118746488dfd76ead774779fe589f8da196c5aa47a8d8185b0a0dee4a842f566a75878f17a7eea0e5195a1c342dce761fff88cdc2a61054a3fbf008"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9a0a25493fd0e1e9953151a1c4803ec0640944841e3885feaaf12dc010584cff","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4dcde1b30c97bc371abad9179f7d079831c59c3860d7df8b175517cfcde56244","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.540643810588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.399924e-02","shared_alloc_j":"2.466641e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4dcde1b30c97bc371abad9179f7d079831c59c3860d7df8b175517cfcde56244","served_from_record":false,"record_id":"r147","record_hash":"sha256:9be1d3ba2c48c0b1a0e413c83fbf5d2439b4ad805429ccab8cdec9ac45f26389","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98243},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.823934e+01"},"chain":{"prev_hash":"sha256:7451e24bc46a6320879760be98abb3a61feeae70bfbb21dccd459e90486a9e38","receipt_hash":"sha256:f20f8482932753cfdd9fdc06f156579cc3b060f0c2e3f207684b575e1c7cba1d","signer":"ed25519:bench-node-01","signature":"52f9beb78dafe88f1e75ca1de1d87cb7ba1aae47f79297b6785a71fccbc80b268be18ca26648d005d7e9b355aacd396f2aaeec1a9ab3d4838d9577e43ab72008"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9f11b9dcaec2bcc5f8315bc2662352b1dff34c1df60fc98299eab337d23f12ab","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:516b5691b6e66826019f65c73831fd8628d3333ec153968bae02509709ddcf3e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.006231390588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.843382e-02","shared_alloc_j":"1.947794e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:516b5691b6e66826019f65c73831fd8628d3333ec153968bae02509709ddcf3e","served_from_record":false,"record_id":"r148","record_hash":"sha256:446e2b9c1246d98af321b2f2043129b3e339731bcda7e9648d7a8f577370cbd8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98275},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.813678e+01"},"chain":{"prev_hash":"sha256:f20f8482932753cfdd9fdc06f156579cc3b060f0c2e3f207684b575e1c7cba1d","receipt_hash":"sha256:d1cfd19356562cf2cf3ed6d6e05dbef3b8de7eadd0161f6a039c6e9ef1ba7c7f","signer":"ed25519:bench-node-01","signature":"524671ad16f0f0696d81b100fb38d6db720a63ed66ab12d30b48cd1c20fb58767c293483672d09867dba02a57ceee6e814128f6595df05dd68581e9ef4c9f002"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:330e8e4540c44f511f9fc77094c6ccb7d7cb5da0922ae0fc2f1ea67fd0d15f24","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.862983270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.125140e-01","shared_alloc_j":"3.750468e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","served_from_record":false,"record_id":"r149","record_hash":"sha256:5766de1b0954020a4a5f70be2b1e114504615839e2365bda98f7b248fac792b6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98338},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842132e+01"},"chain":{"prev_hash":"sha256:d1cfd19356562cf2cf3ed6d6e05dbef3b8de7eadd0161f6a039c6e9ef1ba7c7f","receipt_hash":"sha256:b3de611b34c52f9292e13da11f88eab7b2e8397aa1e857a98092d1a131679467","signer":"ed25519:bench-node-01","signature":"a8d75c4e0ba5e56f66c11ceaf5c9bd20082e8923a4b8955f619e7e60b40fc40213559b226ee09e3efc4da4416d41ccfca6ed9ce093702b79a342525cc63b8109"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bef535139ca9a64112136712c205d0f187f2e20770279fdc6d45ff1abf1ba1f7","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:01b2122aa76c492f0e26f4d0d8113e3058a9c0a42add4d988081cc48760f2f78","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.833080140588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.339057e-02","shared_alloc_j":"1.779686e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:01b2122aa76c492f0e26f4d0d8113e3058a9c0a42add4d988081cc48760f2f78","served_from_record":false,"record_id":"r150","record_hash":"sha256:ae74bf005f5c035d71c5d30e1da593c8b9d94e1ed5d6aed3a574303d1e62002a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98367},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.809758e+01"},"chain":{"prev_hash":"sha256:b3de611b34c52f9292e13da11f88eab7b2e8397aa1e857a98092d1a131679467","receipt_hash":"sha256:008f1d175f351e32aa759908f9b177bcad864faf7e24fc4d40ac9a11f15adf06","signer":"ed25519:bench-node-01","signature":"62e8559f5fa5cc2f3b3271ff2969f6deaa144140dda70f659a20d51738d8726caf43cd56fda21a8c34a1ed63e2761eb626b48030b367b3de229ae87b55563b0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:30a5dad76929953868e6ebd66604701b3a07b32c94602fb3729d859ae0298f62","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:6fb90bf22cf47ebb829244b6eb2a2c3c6103a367b5355ca78f592dd35b9c656b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.501810770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.019945e-01","shared_alloc_j":"3.399815e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6fb90bf22cf47ebb829244b6eb2a2c3c6103a367b5355ca78f592dd35b9c656b","served_from_record":true,"record_id":"r146","record_hash":"sha256:5c886813efb4150f34d433b2651ae9e8a0582f095c8f30364f1b2e063418957a","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":98143},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837869e+01"},"chain":{"prev_hash":"sha256:008f1d175f351e32aa759908f9b177bcad864faf7e24fc4d40ac9a11f15adf06","receipt_hash":"sha256:51f9ece1362f6df8443e80f22a008052ce90fc59ade1bfb60d80e9806300186d","signer":"ed25519:bench-node-01","signature":"48a209496b250485b3e89639ae1f92e0f63be8b8f9093bd76ccc58e398ea11829d67ffc7780eff203d0a95c7a384bed0b7fc941ca16b14935d634b99d8158f0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:756ca29490ad34f8df83089b7984623ec86bc1e8fe132bbfbc7c3c4a967621b2","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:ba80a0c5a96893e7ef50727233d32223b0c47e4bb8ba733fa50ffc6d22ca525e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.884411670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.422644e-01","shared_alloc_j":"4.742146e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ba80a0c5a96893e7ef50727233d32223b0c47e4bb8ba733fa50ffc6d22ca525e","served_from_record":true,"record_id":"r143","record_hash":"sha256:bb5d62f458af5184d4385803ff272ef274caf2d58506c1d9705af4a8e8e7a6cf","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":97912},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852321e+01"},"chain":{"prev_hash":"sha256:51f9ece1362f6df8443e80f22a008052ce90fc59ade1bfb60d80e9806300186d","receipt_hash":"sha256:cd31cac3dd1c61e540ae75857db714894618b79202425020c456a772b9750b34","signer":"ed25519:bench-node-01","signature":"ef3a5d69c1fa6fe7a0298e8dd8a2643a3d57ceb177da7cb24dbda8caa7218646810d2ac223d26626e396c53d4dfd43364ab74e7d3c9f615f92c022dafaa9a10b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0f375f41dad4e5b62a8ac442bc4a633c1b95bebe4f73c69d6d61d68e349037c9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c91460ada6ccfa92b02cddd2a5dc938fbfd3c5aedf6140e6d4f383451527fa10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.455850070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.006558e-01","shared_alloc_j":"3.355193e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c91460ada6ccfa92b02cddd2a5dc938fbfd3c5aedf6140e6d4f383451527fa10","served_from_record":false,"record_id":"r151","record_hash":"sha256:117e876cb526fd957b88e6c2010c855d7752e302ab52168495f179b43c694ddd","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98559},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837295e+01"},"chain":{"prev_hash":"sha256:cd31cac3dd1c61e540ae75857db714894618b79202425020c456a772b9750b34","receipt_hash":"sha256:f445ff6f801f37a4040ca04ae67ab95349d8c5b606c30c5a1bd633a08850e1ef","signer":"ed25519:bench-node-01","signature":"379dd6899264f4d4e50be562c43520f585eb58bdc9cc4261521cdbe751230041af15956e1fe41dea03fbff7888a63f1013a319b54623c6273f85b85538b44808"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e9ff1a5231db328f571c5d22bd3b4200c0c02e84284e56c7f4f12e5f78503ae1","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f19bc2892427342b6a94dc67637059edcc9e4ffdbe0f27bbec3ee1262358377a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.899879740588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.446247e-02","shared_alloc_j":"2.815416e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f19bc2892427342b6a94dc67637059edcc9e4ffdbe0f27bbec3ee1262358377a","served_from_record":false,"record_id":"r152","record_hash":"sha256:bb475a21de25accc6e85b3a0ed7d33a3c188194e19601341d92c525474ef9e59","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98606},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829678e+01"},"chain":{"prev_hash":"sha256:f445ff6f801f37a4040ca04ae67ab95349d8c5b606c30c5a1bd633a08850e1ef","receipt_hash":"sha256:f6a14d9de6a42e0644b72a18b7d61962fecc10f1ab6a35edc8272e741419124f","signer":"ed25519:bench-node-01","signature":"7613dbf62b85b90d94b985ad5717dfef49a3bdb3ca466ba6b1530649667416b27c745547ae8a876272ad7fec6c159d2376bd746237e267d21849e122f668d90d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:80029cfc5722b00a51117f2daa3be95671b4b37d1343ffcb7926ebae2e358dde","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fbad157ba34331794cf5050bfec542d16e1f3924470fc53d5b8557ce96983c6d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.930168970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.534470e-02","shared_alloc_j":"2.844823e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fbad157ba34331794cf5050bfec542d16e1f3924470fc53d5b8557ce96983c6d","served_from_record":true,"record_id":"r57","record_hash":"sha256:1431070f5ce2f957766ef5980bd5e7867760c31429a7aea428065e30871ff619","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":90673},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830129e+01"},"chain":{"prev_hash":"sha256:f6a14d9de6a42e0644b72a18b7d61962fecc10f1ab6a35edc8272e741419124f","receipt_hash":"sha256:2010912fb159231de8c65f16ee1f0c66118d01821b0b08d554aca0ff87bf1106","signer":"ed25519:bench-node-01","signature":"29c06541156d0a81e8bbbda1729b71950142c75be3d263b55f68bca2282c00bd620b29ed82e6c5225ae9751f2dbb7ffb95a2d8efb21b242458d27c189cec9a06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6a1063e9dc009c4f630de420997625c1cb40880b2de44ec18a4050418f1cc0be","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:4eca99b1aa9b7cc02d93253fcbd8b042a8f2a308065e37f5971da74e7223ddae","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.638265570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.642213e-01","shared_alloc_j":"5.474043e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4eca99b1aa9b7cc02d93253fcbd8b042a8f2a308065e37f5971da74e7223ddae","served_from_record":false,"record_id":"r153","record_hash":"sha256:2613989d0144d77d40c7ec837263f215cd6d6e55f78b5e67fc05f5fe9aad9c1f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98745},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858555e+01"},"chain":{"prev_hash":"sha256:2010912fb159231de8c65f16ee1f0c66118d01821b0b08d554aca0ff87bf1106","receipt_hash":"sha256:d23217cc488e3d32abe17900444fff86f1ecacf7b1d3665141b98fb238fbe40b","signer":"ed25519:bench-node-01","signature":"e7aff9391d4664363b965e50564ffdbaebea65d24e93ba07296c62790c704bac52b6c4cecf8b2063f446125c7cf3d50f9cadc90e2da8bde3caf79fc2d4a68402"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3ba416d735a0715dd8c806a008428cd142cca63724df45dae1e72d0a2ac90ffd","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:50c404d36b19c3fdef88459eb0d2411aea6815b2d9ae84aea272390b347ccc47","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.856612970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.123284e-01","shared_alloc_j":"3.744281e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:50c404d36b19c3fdef88459eb0d2411aea6815b2d9ae84aea272390b347ccc47","served_from_record":false,"record_id":"r154","record_hash":"sha256:0d807272575aebacc8110755f47ff2419f15a4b779f8b181661addfc68f0e0cd","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98807},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842061e+01"},"chain":{"prev_hash":"sha256:d23217cc488e3d32abe17900444fff86f1ecacf7b1d3665141b98fb238fbe40b","receipt_hash":"sha256:82b002d687145ed0520b8505f9d88af40af71b1debcaafb919b5cf9da07b1e76","signer":"ed25519:bench-node-01","signature":"39c3e20b340bbcbff2b50f08e3daf6d17aad412a71297f54a42f13203dc8cd95dfa6400b4f976f4b7eb262a284300090ef638b3096c02463edb00f5fe7662d07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:be08611e8efd8027b090c7782602815c95a9ce5306bce1f6787a3eedec170e26","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5f670babc0d5143c2f85eeafc483373c44b95de221f254f409287881280efd20","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.878564570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.420940e-01","shared_alloc_j":"4.736467e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5f670babc0d5143c2f85eeafc483373c44b95de221f254f409287881280efd20","served_from_record":false,"record_id":"r155","record_hash":"sha256:825dd5461528372aef6cc6608a77dd47ae331db510e0c2729b3f5a6080765a28","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98886},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852269e+01"},"chain":{"prev_hash":"sha256:82b002d687145ed0520b8505f9d88af40af71b1debcaafb919b5cf9da07b1e76","receipt_hash":"sha256:2961a849f24aaccc783dbd1220777784f8e703ac485d6844573e702e7900e71d","signer":"ed25519:bench-node-01","signature":"9f391459e80489f3151bda28d8ebb7823ca50ee6d2ec34e898018b92b1e488781c69933e5b8bebf355ea539b300ee1d38b82bd5ce421024ccd7916e0a7590804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9376d27e08f1e527e0f242da26c3c8510cb6ec6f7d7909cd3bad4566dbe47882","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.173731010588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.331244e-02","shared_alloc_j":"2.110415e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817161e+01"},"chain":{"prev_hash":"sha256:2961a849f24aaccc783dbd1220777784f8e703ac485d6844573e702e7900e71d","receipt_hash":"sha256:e933999e2df6808ac19fb68c8c1a7a74a1825d3c0c6dea811c8b135db724f267","signer":"ed25519:bench-node-01","signature":"e75b9566a75df3438c42cd4f3f1b9c59dde515445f6a9283c5e716394c9e13a96788c627427c3ab5ccd4e33408109b148c213cb582a3e1df745fa08fd1314508"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2e03cc2d27f0ce4f43423b36ec07bf2682d1c09ae518d5f6080584305f3b53ac","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:f70b4758637322ee4d79b8a5f7b81ae70da5a6c8a9c3a9e8023f55d285f1b3d9","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.266768040588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.514847e-02","shared_alloc_j":"3.171616e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f70b4758637322ee4d79b8a5f7b81ae70da5a6c8a9c3a9e8023f55d285f1b3d9","served_from_record":false,"record_id":"r156","record_hash":"sha256:1a770e35eb1b8f8b37420bbfced6c945727df460cd8325620308562bddc169bb","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":98974},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834852e+01"},"chain":{"prev_hash":"sha256:e933999e2df6808ac19fb68c8c1a7a74a1825d3c0c6dea811c8b135db724f267","receipt_hash":"sha256:9d698126648ad9ff9c72bdc7f9fe185e3736a68dd21811b1c88d00c24e4ad9bc","signer":"ed25519:bench-node-01","signature":"5fc9aa46bc1516d1e472c199361bbdd277d21b04dd01d8fa0dee465a55814a74b45f34bc4a76b7ff9403f8e1792fb59107d5160300c84f7de3c3c0e02f0b0c03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:42afb58325b58baa45d92eeecc1eb56467042e24941b525f946b06cb80f0bdd0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.610198070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.634038e-01","shared_alloc_j":"5.446793e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","served_from_record":true,"record_id":"r101","record_hash":"sha256:423f6097e57e4c77557b0caed44714a3b731fb972ea1da097ee6162150ae2cb3","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":93972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858338e+01"},"chain":{"prev_hash":"sha256:9d698126648ad9ff9c72bdc7f9fe185e3736a68dd21811b1c88d00c24e4ad9bc","receipt_hash":"sha256:43edd7bbf10252a7df7486ed20f94361b97355db2ca2a79f3b7249cba78f1c43","signer":"ed25519:bench-node-01","signature":"1b24932332d45d66cc3ac15fa63f39a739e61e098082c6bf9ba6aabeb5589ed771ac602c9270bda680b3c3b6f2073c170851ab88a16d81023b236ced03106b0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:09b3fc47c6b26a682c06db215fd043c6360fa561e88b14e67ff467d9e9a8a629","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f64acee0744f6cb5b0186d8df86be984d0d6ad9ef0872d7c68ec46d52b0594b4","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.726943170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.376779e-01","shared_alloc_j":"4.589264e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f64acee0744f6cb5b0186d8df86be984d0d6ad9ef0872d7c68ec46d52b0594b4","served_from_record":false,"record_id":"r157","record_hash":"sha256:1d8203a5b8d3c9c81b0b23660d61289652ea34929007e17f0ee585d806a9d580","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99141},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850898e+01"},"chain":{"prev_hash":"sha256:43edd7bbf10252a7df7486ed20f94361b97355db2ca2a79f3b7249cba78f1c43","receipt_hash":"sha256:acb276ad0c5eef4cc4fc8b2057e90df675bfcc9bdd94a1491556501bca7b0fcb","signer":"ed25519:bench-node-01","signature":"668852c175dc16c2dc9e55c730fe3b7dfa7ffe0df15151e786fb7d12f7b67992a375957e770e19cde6addb2bee93ad91a2630398eff5a8a787c57ece11db8005"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:095722ec9aeec35751dc31f0ef2a6c9c4e05cbc4d8a4d2837d251193deb9c3da","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.240213770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.526275e-01","shared_alloc_j":"5.087585e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","served_from_record":true,"record_id":"r149","record_hash":"sha256:5766de1b0954020a4a5f70be2b1e114504615839e2365bda98f7b248fac792b6","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":98338},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855375e+01"},"chain":{"prev_hash":"sha256:acb276ad0c5eef4cc4fc8b2057e90df675bfcc9bdd94a1491556501bca7b0fcb","receipt_hash":"sha256:25dd0b1d2d8319d9b38482a53b7eb84440fe22c373f9cc405b607f14ed73b0f0","signer":"ed25519:bench-node-01","signature":"8c40cf84eae821cef41676e3bcc25d3bab0308adc6a2796b94bdf7f7d854d39aa9c77c5aa15f3e2d54846a24a6aad11950d6278e7ef01590a9a4f9182000b706"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0260f258e97c8b01a75be8a58c1cee9a3cb2050471c9c7551356460acf8c5df4","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:7fbe0bb7487a415754e1d2db8aa8e75c9a958e18764a14b62dbb6702a827d546","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.701286870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.369306e-01","shared_alloc_j":"4.564355e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:7fbe0bb7487a415754e1d2db8aa8e75c9a958e18764a14b62dbb6702a827d546","served_from_record":false,"record_id":"r158","record_hash":"sha256:88abfffb4c90cecda00ea3901c3e4e41126603241b96d66c18153f54bf999e3c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99302},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850662e+01"},"chain":{"prev_hash":"sha256:25dd0b1d2d8319d9b38482a53b7eb84440fe22c373f9cc405b607f14ed73b0f0","receipt_hash":"sha256:5ab4c65b92a3a3ab8ef5a3e53e274bcdb2ccfaf46dda00dac60727f44d6c9e8d","signer":"ed25519:bench-node-01","signature":"dafe1d57cb222d482cfaf53bc7675a25ca8673ed38ce43601b59aa1d3154faf08e9a176c2b3289ed7a1c3481c449dbb49cba9fb7b01369261c7b0217e321c804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6487cb432ba1a4df1716b92a88c8369a75b54edcfb2fcefa39ec6d1d97a34128","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:3c9feb0b662a0c417a55ec5751b1c501d1d315c1d204379045c2e004b8c5c875","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.862335220588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.336895e-02","shared_alloc_j":"2.778965e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3c9feb0b662a0c417a55ec5751b1c501d1d315c1d204379045c2e004b8c5c875","served_from_record":false,"record_id":"r159","record_hash":"sha256:1c1dcd4d20b2916ec8891938b92c85b6711a814628df4ca4b2ae748dea597e96","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99348},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829112e+01"},"chain":{"prev_hash":"sha256:5ab4c65b92a3a3ab8ef5a3e53e274bcdb2ccfaf46dda00dac60727f44d6c9e8d","receipt_hash":"sha256:a0e69373f51365a578543e1dd4a7061db1949ac83b9a41ecd5e76dd9cf032267","signer":"ed25519:bench-node-01","signature":"f54dd6691bd12d4520ac602bec41e7602a5275319f68155f3da728933b4f30f6cfc391b04b14feda5c859efd322852a1f3f8d7ed6ceefbeecc857d3978ddd809"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:220d7ffe84db8c0458b2839d4f7490012b48df115eaaf9ac974eec06b9ef0efa","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:236ec770245fbae01fc58a6e26be276f26c092cfb0289d628034a105e4a34f85","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.791852570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.104423e-01","shared_alloc_j":"3.681409e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:236ec770245fbae01fc58a6e26be276f26c092cfb0289d628034a105e4a34f85","served_from_record":false,"record_id":"r160","record_hash":"sha256:9321df311783dc3660a7863b6fd15f6cfbc1f324a0bc0b1ba11a648c91e751a5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99410},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.841325e+01"},"chain":{"prev_hash":"sha256:a0e69373f51365a578543e1dd4a7061db1949ac83b9a41ecd5e76dd9cf032267","receipt_hash":"sha256:62045f6ed2784a0a9018330276ad90bfca5ab92ea723a7b55deda0e8a85af018","signer":"ed25519:bench-node-01","signature":"37d1d70ea7b1b66dddd6ef8d8c7c28d5b856f8e27dbb930c125991b326d12852d3d88c47be68747621c36ae27990f9324c6075649233bbb12c30c2d715c16e0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7c28b18eb9cb096d821eacd0b1f38833f9a928401273243632511ded7613fa29","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c70c4f1cfbf7f3e80ab7fd116b69405e0071bb46bac6a04135010096235a99f3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.051613980588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.975571e-02","shared_alloc_j":"1.991857e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c70c4f1cfbf7f3e80ab7fd116b69405e0071bb46bac6a04135010096235a99f3","served_from_record":false,"record_id":"r161","record_hash":"sha256:0eee3e2f9d255e1ee0143cff2061e9ca2f87125468fc3d082061511ccd760deb","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99443},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.814650e+01"},"chain":{"prev_hash":"sha256:62045f6ed2784a0a9018330276ad90bfca5ab92ea723a7b55deda0e8a85af018","receipt_hash":"sha256:0c9f3c2354269d8a730e60bcbaa3f3dd48244b8dfdbd2f004507686158f12fee","signer":"ed25519:bench-node-01","signature":"b243c37d0a51f69ef0800ed3f2ca12d1ec67c553370289d280aabe7c64b6af1bf8ea454b74d071240754b7d96725ed28652ac560915a40182bc734c0fe615201"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:57c4bec954bc71dc1827753780695d68c5ff0e5b86d9916401d8a05045932d14","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:866985a43c4aafecdce84de12bb2720fdf4130adc7633c396da10fde78f100b5","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.815610310588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.200804e-02","shared_alloc_j":"2.733601e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:866985a43c4aafecdce84de12bb2720fdf4130adc7633c396da10fde78f100b5","served_from_record":false,"record_id":"r162","record_hash":"sha256:880b13f80c7c7fa2c1283b860a108e20c7f711860c652dfe5c00e77bffe73369","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99489},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828397e+01"},"chain":{"prev_hash":"sha256:0c9f3c2354269d8a730e60bcbaa3f3dd48244b8dfdbd2f004507686158f12fee","receipt_hash":"sha256:821a3233de3f213bbf7ab78d9526d1a8fad72b1250ba28d49bb276fbc963d07b","signer":"ed25519:bench-node-01","signature":"6fe35586912ec1b2785b4c2b69d09a3abca1e1bab244bbfeb5ef25c4c18c08c85e882002d276cc99085146d96ec59123427bb0662a0a10d4a9eed2def59e8709"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bbfa8ac0190a5157bbcbc87e3f339acfa0f76d8a2fa56fae567c1db7238e423b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:315c14e61b89addfef08fbfe1205125c8472164f9cdf669f157fc7fc338e586e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.489472130588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.250886e-02","shared_alloc_j":"2.416962e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:315c14e61b89addfef08fbfe1205125c8472164f9cdf669f157fc7fc338e586e","served_from_record":true,"record_id":"r47","record_hash":"sha256:0fd550875b4b6b51c231682f03b3c2c48dc7a447dd1adb4f3e7a8216e2d7428a","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":89837},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.823051e+01"},"chain":{"prev_hash":"sha256:821a3233de3f213bbf7ab78d9526d1a8fad72b1250ba28d49bb276fbc963d07b","receipt_hash":"sha256:72eddf6f7df5c4234424169198927ffb8762d09514a1a30c8b93bdd46931aa4d","signer":"ed25519:bench-node-01","signature":"8becae0129b438ec991bd61d29d57064a75fbd40369577fcbdb213ae0e834a963b22945df58ac6518a2f298cf3cb21f7c1bd227ff9a41d1b8964c24971263e08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:52b440afbaef49332fbfebe0dc7fad11c0b6ed4ed5467957ad0a3dc3e555cc3d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:fc270faed1a038462ee17ad9afe5fc830b173f58fbcb6f74f25d11dab82a9b32","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.855172830588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.316026e-02","shared_alloc_j":"2.772009e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fc270faed1a038462ee17ad9afe5fc830b173f58fbcb6f74f25d11dab82a9b32","served_from_record":false,"record_id":"r163","record_hash":"sha256:55d7006368260ff33a8ae09ff2417f7f1d0da3508ee64f75ee6bd30ca5cdde9c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99575},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829003e+01"},"chain":{"prev_hash":"sha256:72eddf6f7df5c4234424169198927ffb8762d09514a1a30c8b93bdd46931aa4d","receipt_hash":"sha256:4159e416dac520e7fc762af562b362d759df1134629b6d8131e482548f9b7dde","signer":"ed25519:bench-node-01","signature":"2c5b30a3fd3a8a244eb985726ac1429a53034ee3c01eb6736f1b14bc2373e57abb11bb068b6570e22f158a5f62269fce713c4b085d28c09588d93d8ae2e6a20a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:73c46b4f8f3539888e64174892e6b2d48dcab5c75e43152affff42a6f703e58c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f8045743fa59e45d492212b7ce6a4d2284e391e9ee89332c8f878260e18e5039","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.739944070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.671828e-01","shared_alloc_j":"5.572760e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f8045743fa59e45d492212b7ce6a4d2284e391e9ee89332c8f878260e18e5039","served_from_record":false,"record_id":"r164","record_hash":"sha256:55019fedb126a29d3ebc3f8263b658b03b7383301022eefbc39786aa0e5dba4a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99668},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859331e+01"},"chain":{"prev_hash":"sha256:4159e416dac520e7fc762af562b362d759df1134629b6d8131e482548f9b7dde","receipt_hash":"sha256:cf8ca95e4759e06c3fcb9a81669e535096c340a8c0cd7e2df912c8bac500bd44","signer":"ed25519:bench-node-01","signature":"3ca573612f062980caf5d2bacf49847f329511c650a897c0edfd6b4b4477bbb1c6df55d7a3fb7ae7dea07ea8e7187f1beec147f11f1694b694ca405aa3f5b407"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3ed08c543aaf4a3aaf59e4635b8bbba3a34f0c9a6fd11a5db6ec1e72580d30e5","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:d44df2bf4fb54c72ad6469a023b0b46e6be12079545ed3c2ae2aa38fe0e4f661","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.711192670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.372191e-01","shared_alloc_j":"4.573970e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d44df2bf4fb54c72ad6469a023b0b46e6be12079545ed3c2ae2aa38fe0e4f661","served_from_record":false,"record_id":"r165","record_hash":"sha256:93d60ae60910aaf517d5d8e5bec8fd928a58f1c6062aeca94522befa93e9f409","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99744},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850753e+01"},"chain":{"prev_hash":"sha256:cf8ca95e4759e06c3fcb9a81669e535096c340a8c0cd7e2df912c8bac500bd44","receipt_hash":"sha256:54d04d3104f75e7f570f2304a53ece93fb6d4dbb9044ebd92c56d4270bb6dd86","signer":"ed25519:bench-node-01","signature":"f5201b5a02f48a9d847b85328e586ccea75228962086f8d2db12f957b803857b34fd8dd00a7a02cac23fcee8ba33c4af57b664b6d8e7de8fe5edba358109990c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5db6891b6cd5e624e192110d007e51b04949ccc3fa2408afb58642cf3da3177a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c5feb99768a5f6dafcf10e73e5dd3b71a0e485e646e80369868257c8982b6ed8","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.059306260588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.997969e-02","shared_alloc_j":"1.999323e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c5feb99768a5f6dafcf10e73e5dd3b71a0e485e646e80369868257c8982b6ed8","served_from_record":false,"record_id":"r166","record_hash":"sha256:54c1aadc016d06670b52cd4f03e23ecfed3d60b12b9851403854ae26ea04b3e3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99777},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.814812e+01"},"chain":{"prev_hash":"sha256:54d04d3104f75e7f570f2304a53ece93fb6d4dbb9044ebd92c56d4270bb6dd86","receipt_hash":"sha256:58a0485548d8b8490e04aa51c9c044b4af8b78c9ba34302f8cdc23e32d88e1a0","signer":"ed25519:bench-node-01","signature":"05edeace85b167c2ed13f02b1d87eecf645901d74deb3108348c3a6402cde3c41d2f908497947364445881487a6751d3faadfcedd52320f30cfce67143fc9b09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fe4b475ab04fecef22c72bfc9372f0c399c87332187e002f2ba676d2db333a2e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:1d7a6cc8581b38a163cf95aa00c0875a71db7a0206c9b19ddf52698710a36ab6","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.856013770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.705635e-01","shared_alloc_j":"5.685449e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d7a6cc8581b38a163cf95aa00c0875a71db7a0206c9b19ddf52698710a36ab6","served_from_record":false,"record_id":"r167","record_hash":"sha256:662e905b120455ce12ca9cb913fcab615ec01d3a25a2885731785f1a0ef429de","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99872},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860200e+01"},"chain":{"prev_hash":"sha256:58a0485548d8b8490e04aa51c9c044b4af8b78c9ba34302f8cdc23e32d88e1a0","receipt_hash":"sha256:f2df4aa94fafe578129e112651e6dff9dc4f42e4ec75af0906be7e999c9d6144","signer":"ed25519:bench-node-01","signature":"47a270630a199a409d1503d1c1d4dc22aeed6de31b853db2bb4cdc819f9fe4c8656b98231df71aa66a65a432b5abf9b59ee2c2ef8e5aa076fb611fd9c4815d07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:66b91183a8b52b07937d93c2bd10e814d70e50127c02abf673cd295b5ea57d28","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:b35fdcce6b0deeb13607ea6ac07486b5e54843dcb842e6c100c5251a428ff403","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.783951070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.684645e-01","shared_alloc_j":"5.615483e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b35fdcce6b0deeb13607ea6ac07486b5e54843dcb842e6c100c5251a428ff403","served_from_record":false,"record_id":"r168","record_hash":"sha256:f49b1b0a613d8df73a042252b167239cd8fbe8fa5b9fbd238a190ee26024cd09","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99966},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859662e+01"},"chain":{"prev_hash":"sha256:f2df4aa94fafe578129e112651e6dff9dc4f42e4ec75af0906be7e999c9d6144","receipt_hash":"sha256:5c666a1f355fa224a4a808098e887edb2843de3e5480fffa16189d4df83ee855","signer":"ed25519:bench-node-01","signature":"02363e162ac42d1545673be14563e53e96005d89c23d000a3cbd1b94250dca098042cd5396d7338418d14d351348843f6032e45ce4f67e9a8a46ba4bcfe35f0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2875401c66a9e8baa85177ba4a4e9610e3bf3bf1e3c2824da9895c14cf976805","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.432438740588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.172147e-02","shared_alloc_j":"1.390716e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","served_from_record":false,"record_id":"r169","record_hash":"sha256:5899c1861eccac089cbe133fab945d22b0598b0f2365e10cd70a29f4a5f57eee","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":99989},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.799048e+01"},"chain":{"prev_hash":"sha256:5c666a1f355fa224a4a808098e887edb2843de3e5480fffa16189d4df83ee855","receipt_hash":"sha256:41ef1728747c06bab9dfd73fc845e24defff824dd3bc09545fd959613c87debd","signer":"ed25519:bench-node-01","signature":"107ad2a29725c7f358963a734beb911c8253869dd3dd090da1cb2991d429e6e99be6f8542ac8f86e053c38e7cd4d17cde072f826bf0958caa78e6780d81eb703"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:782af3966f268867fe92872b0dbd0c76c906b4dcf88940af9bdd3d9c7931e6cd","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:8130c76217d2e109b9e876d67a30cce4f6ada330eaf9ceab951621f8d960e66c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.103609870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.195226e-01","shared_alloc_j":"3.984086e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8130c76217d2e109b9e876d67a30cce4f6ada330eaf9ceab951621f8d960e66c","served_from_record":false,"record_id":"r170","record_hash":"sha256:6e363cc5d16869d08c527dce0b693e3e67dd357e3e7f729f2679293c80572d30","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100055},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844757e+01"},"chain":{"prev_hash":"sha256:41ef1728747c06bab9dfd73fc845e24defff824dd3bc09545fd959613c87debd","receipt_hash":"sha256:0dc2ac380b27300b25754802f8f0a4faa7007720d7b722454b881604eceed157","signer":"ed25519:bench-node-01","signature":"c0923b5a89de8666c5c21b19a734d6ffbe3b66d1605b2f443c6a1c2aab453d50b3732ad9f9ae01e2999f4d46d694282ec56eb67deee9fcaff4678706e383d80b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f7c17f697640a8fe1ce3f59c82cf538d7b6b2ffe20bbcc044f5cf8407109853a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:8d2ad364f746f7e5890037cb0de73c8c0800284c36b0693f37f9781bbdda230a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.165812590588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.220802e-02","shared_alloc_j":"3.073601e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8d2ad364f746f7e5890037cb0de73c8c0800284c36b0693f37f9781bbdda230a","served_from_record":false,"record_id":"r171","record_hash":"sha256:7addd716918ddea88f258c0f0d90f73f55eb5816a1eef57c529d84c173aff8f8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100107},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833489e+01"},"chain":{"prev_hash":"sha256:0dc2ac380b27300b25754802f8f0a4faa7007720d7b722454b881604eceed157","receipt_hash":"sha256:3c585a25ff6fde1001b21b715059c49412c126300c403d2fd4eaf302c0633829","signer":"ed25519:bench-node-01","signature":"980e16ba3ab3d2e64267dd65419155c486e9376a8c1319fa878a758d26087c15fc22c1f0cabd6f8dfd83fa5fd14c99a038007283fde5dc178eda7f0372608805"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7e9e3021d539045405160ddd33970bf1f8444fe465089d88d9e8ffb970598b98","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:d96ead6b9efeba477a485f30879290174c4379502931ddb2e2e517c5180a0925","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.606521110588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.679184e-02","shared_alloc_j":"1.559728e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d96ead6b9efeba477a485f30879290174c4379502931ddb2e2e517c5180a0925","served_from_record":false,"record_id":"r172","record_hash":"sha256:cafdcc7d790145457efa80142436d61051d2a2d116b8aac7c163f7885dc83f93","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100133},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.804029e+01"},"chain":{"prev_hash":"sha256:3c585a25ff6fde1001b21b715059c49412c126300c403d2fd4eaf302c0633829","receipt_hash":"sha256:cef235de78700680bec7df8b11b1410ef7ff8814b6e5f28a262ba36f5b460f2e","signer":"ed25519:bench-node-01","signature":"79e7da0631f8a20537707780d3b5d3645a72ac90f16aba4daa1513cf3ac28060073724e29802e371ae64db0beedc1dfedce30879c261a6e066f2785446c30b0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cee8ddbbd0be5694500aad2dce424c38a6c145af40a10b4a2784023453cd16a8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.870773170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.127409e-01","shared_alloc_j":"3.758031e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","served_from_record":true,"record_id":"r52","record_hash":"sha256:4b407241ed751d5065cf8c5d85ecd7c9cceb59ec65630b16476cef31225da9a5","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":90404},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842220e+01"},"chain":{"prev_hash":"sha256:cef235de78700680bec7df8b11b1410ef7ff8814b6e5f28a262ba36f5b460f2e","receipt_hash":"sha256:af18aeb38172b960bc32caecd0844825e08204e6e7c46cc9ef0f29ac1af05ac1","signer":"ed25519:bench-node-01","signature":"83db3d0e128de410a784bcab7bbd5d07559bf090d3b8d468f1e6acc099b9690a00dde75c08bd485f314f44e3ed39da7ff249b8b8a869350ee4d87a5dd81d8606"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e30b1bc4ca5fdcb9ccf93fc4775cd744d16d134301bc6f63fbe68671ff73544c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.045176470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.956820e-02","shared_alloc_j":"1.985607e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":17,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.814513e+01"},"chain":{"prev_hash":"sha256:af18aeb38172b960bc32caecd0844825e08204e6e7c46cc9ef0f29ac1af05ac1","receipt_hash":"sha256:d61ca1f89b0ff9ea65c177e90a4db65a696190c8de07b86a999f3bbd0f4a2103","signer":"ed25519:bench-node-01","signature":"fafb5f6fa87337f17bc0851e4bc22ff950848ce843e99ab715786a1e725ccbeea0f2b5efdbce3e430a122157cd68499def94ffb10e3472e2246b301c95fddb09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:90ad26ce2d8c14870957aafe01746a2ef2add4fb6c07b656517572573b15fb35","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.409006070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.575438e-01","shared_alloc_j":"5.251461e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856752e+01"},"chain":{"prev_hash":"sha256:d61ca1f89b0ff9ea65c177e90a4db65a696190c8de07b86a999f3bbd0f4a2103","receipt_hash":"sha256:95532daa4bf7d45234aa46a2edab22e00673ec97b132d099e60ca44b36d3156c","signer":"ed25519:bench-node-01","signature":"4bb74c45da5cb903e79995da3c8e6583b420ba0ee288af003e98535626c29715a951463d7cfcc7cc05d5d2f997eb851d3a56b80ab1e8df1c9252da11e8477009"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:732bdd9e28126b51ae376077db0d3929477b0bfc3e1d14bbd99111d7d6f0da34","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:db77ddfc23a61c07ebd5b655bce57cf0a257f4cd3183666ef84c4bd52ecdd2fd","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.624563470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.638222e-01","shared_alloc_j":"5.460740e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:db77ddfc23a61c07ebd5b655bce57cf0a257f4cd3183666ef84c4bd52ecdd2fd","served_from_record":false,"record_id":"r173","record_hash":"sha256:428d5f7f69ba9cbe1bb4ff54361b4953bead5fab38b14d6ff9d6c93c1c9a16dc","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100407},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858449e+01"},"chain":{"prev_hash":"sha256:95532daa4bf7d45234aa46a2edab22e00673ec97b132d099e60ca44b36d3156c","receipt_hash":"sha256:0ab9f3489683446ce354b4078c8c953df5c5a5d852e477188c18d15a0c4ae0ec","signer":"ed25519:bench-node-01","signature":"ea54a94d19e215bd233c3cf375f462d1a56d1bae4a9a99a01c15e399d7e5ad07a6f0995c8cc634d7af6796a394bdffb7fdfe24d6c46f2a4881f0c5255c7d0507"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:47b8db1344100b53541fb6247c49fc9291fd17e1f04c83c024e593d1ffb95c17","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.876185870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.128986e-01","shared_alloc_j":"3.763286e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","served_from_record":true,"record_id":"r169","record_hash":"sha256:5899c1861eccac089cbe133fab945d22b0598b0f2365e10cd70a29f4a5f57eee","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":99989},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842280e+01"},"chain":{"prev_hash":"sha256:0ab9f3489683446ce354b4078c8c953df5c5a5d852e477188c18d15a0c4ae0ec","receipt_hash":"sha256:a84b941078ffd1bb4f0ce98acfcafe833e63f4b8895df6e8b0061706042f63d8","signer":"ed25519:bench-node-01","signature":"1928c4460f8205824721201936739f07a60c3fc42a64a365aee538dfefeee3fc116b10a5619c1484176b09c726aab2b6afbf5211fb35d3dd216a2bc7752c2e0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b0883a40acf5953cf56aa21c0bea6608cbafe37a1b3f67f970586896993029d7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.900545140588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.448187e-02","shared_alloc_j":"2.816062e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","served_from_record":true,"record_id":"r169","record_hash":"sha256:5899c1861eccac089cbe133fab945d22b0598b0f2365e10cd70a29f4a5f57eee","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":99989},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829688e+01"},"chain":{"prev_hash":"sha256:a84b941078ffd1bb4f0ce98acfcafe833e63f4b8895df6e8b0061706042f63d8","receipt_hash":"sha256:b2601cf3b59e206d7f4602959b98b0747bc042ebc8f921619fdb56837e595f65","signer":"ed25519:bench-node-01","signature":"d8304150cca61ab48f80117151b0347509f9fce28fb5489888260f923dca1db3c3b3f9dff96f2df59d12227b66c440dee2d022c2d4dd32782289037e954d4b03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c83f98392659be06fa37b1cdf657514cba4757b197f07a034988edd3d610d360","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.298176410588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.693714e-02","shared_alloc_j":"2.231238e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.819578e+01"},"chain":{"prev_hash":"sha256:b2601cf3b59e206d7f4602959b98b0747bc042ebc8f921619fdb56837e595f65","receipt_hash":"sha256:0f7dc17986ed52c392383b5a2c3c0485616ed627e82f2cefe036e7dd909da30c","signer":"ed25519:bench-node-01","signature":"caacda2f73607f089be18620d44c91286e83004a94e0e566f98619ff8b826dd8ff39f32e29da393948b4184acfc26634134a5a6fdb39ab1c2ad385b994b7e200"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a34352902fc9c4cbbd1ab237fbd1011a1c42c093a651089d563de3f406cb3e23","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:08ba4fe6512d0d94de19c3932e3bff09728b6ede0b1838ff5091c9850170a516","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.859063570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.415260e-01","shared_alloc_j":"4.717534e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:08ba4fe6512d0d94de19c3932e3bff09728b6ede0b1838ff5091c9850170a516","served_from_record":false,"record_id":"r174","record_hash":"sha256:eaa4a62989bed6ee6bcfd5b2b25c5e289680ee3d6ca1245e29d8f5f7ddcef673","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100632},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852095e+01"},"chain":{"prev_hash":"sha256:0f7dc17986ed52c392383b5a2c3c0485616ed627e82f2cefe036e7dd909da30c","receipt_hash":"sha256:5ff2efcaa230b8f70390e954dcaa2f656307c6fd3d71d11eb202ad91ecafc4cf","signer":"ed25519:bench-node-01","signature":"f22eece01f56cf9cc43ad572df16f13309886ab5a646d4ca22276d96d8007835807faa83e22ae2e5425e8b57211c655f2ad4f72662499b37124d90373a7aac08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4496bf24a7556dd19b73a1aca9df83f58d01b5f25ae6d26181cc39cb1a3ba749","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.639073440588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.686617e-02","shared_alloc_j":"2.562206e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":18,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.825585e+01"},"chain":{"prev_hash":"sha256:5ff2efcaa230b8f70390e954dcaa2f656307c6fd3d71d11eb202ad91ecafc4cf","receipt_hash":"sha256:a0404a721f5de1c8261cc3db7b80bb278cb5c773b46608aef7459c4c749ffec9","signer":"ed25519:bench-node-01","signature":"90b7073002f6c5e1570d42b90ab65cc32d2671e23eb18110778deec01a83ab7f05bf1080ae73760bd520d0f2958fa6372493b18696d6936806d7e1c5bb044603"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:00b6b49be2223db80cd327ef7e2c38a337dcc717c2ab5f7744ec60a83225f316","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4a81192758d20335e6b34c2b4afb8aaa03ec6ab7edae4b92d5689ea56bac885f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.796344870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.396993e-01","shared_alloc_j":"4.656642e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4a81192758d20335e6b34c2b4afb8aaa03ec6ab7edae4b92d5689ea56bac885f","served_from_record":false,"record_id":"r175","record_hash":"sha256:48f838770d2511a296324b709391e778375bc774b0eb200fd362f8ffe9eb37d3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100753},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851531e+01"},"chain":{"prev_hash":"sha256:a0404a721f5de1c8261cc3db7b80bb278cb5c773b46608aef7459c4c749ffec9","receipt_hash":"sha256:bd37109ffb6fb31f184d8ce40c3d16a9d6c3fb927140eabe7f0478f8bd64cab6","signer":"ed25519:bench-node-01","signature":"2c12ee68b361ec8d2c7daa1fe20bf578624a879a86e50070d382098a8381f1506a0572ebddd982519baad23d76e0586467d3cf56f161a1465034e9ea44fff705"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ad07f500c8932e6b3c9ff3bf5f526c3e6bf53cdc27ce9658b525e63cef20c2d7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.996269470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.163962e-01","shared_alloc_j":"3.879872e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","served_from_record":true,"record_id":"r140","record_hash":"sha256:9f4054b5d15ac16ce0b79b780e5d8bf8b428262e4fd2a332ec366dce24f89c41","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":97569},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843605e+01"},"chain":{"prev_hash":"sha256:bd37109ffb6fb31f184d8ce40c3d16a9d6c3fb927140eabe7f0478f8bd64cab6","receipt_hash":"sha256:ee19a45eceaee42454167f4e0c20130e06257a70e07b92b18e115f81aeafc4de","signer":"ed25519:bench-node-01","signature":"862faf8c59b5b7b05fbaa2d6138a26148f257ba9c1e32b2ddd7b7804b07d11bdca8c5b746194a9c24d0bf4e123f5fb63f88a40b4e909ccd4b3706749c75e590f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:96f3f01d3ccaf0d07333233cbd8c01ba0c30509dbfe22fe3a87e98ff351c5d07","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:aa7e52c298df874051c6d2a872415cc2dfe3f707b7195b21777823f81a44483a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.937106670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.437991e-01","shared_alloc_j":"4.793304e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aa7e52c298df874051c6d2a872415cc2dfe3f707b7195b21777823f81a44483a","served_from_record":false,"record_id":"r176","record_hash":"sha256:7bf93cbada79514e2ab3a1dbd6db984b2d1e94b7358d0302980d39056e338b91","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":100897},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852787e+01"},"chain":{"prev_hash":"sha256:ee19a45eceaee42454167f4e0c20130e06257a70e07b92b18e115f81aeafc4de","receipt_hash":"sha256:d83966bcb058d8dd2027a121a11bff4bd1fc1b8bd8e2d0e63fd52473ecfdbcc2","signer":"ed25519:bench-node-01","signature":"c433c1baf587cbf9896fde39247355d97c3326c8a737bae8532c71994fee1fa1dd00c6fe08f8a0deefce80aa369071e9024f65573a9e069fdd8e1a2010eeca0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:de02b68dc5f1bc6f5e639fa4c752801bea5177b649aaa80444b69c9e02597f2e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.441080680588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.109941e-02","shared_alloc_j":"2.369980e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":6,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822198e+01"},"chain":{"prev_hash":"sha256:d83966bcb058d8dd2027a121a11bff4bd1fc1b8bd8e2d0e63fd52473ecfdbcc2","receipt_hash":"sha256:05ceab812088a9144c3895f3dea3ff4a0090034791fa20d9ee8e32fe11fa2409","signer":"ed25519:bench-node-01","signature":"c7a15f7409c1a365c0f4ef1b65022ac44540b28d29eb3674617e8b3ee755ae90d9185f8cd7c67e47018ae335610626bb25c4241e20488e960ce46d6af09e500b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:534e11cb253f7137842b12aa9369ea398ec82e206ce7802a96ab12fae48dd1c5","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.836931090588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.350282e-02","shared_alloc_j":"1.783427e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":7,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.809849e+01"},"chain":{"prev_hash":"sha256:05ceab812088a9144c3895f3dea3ff4a0090034791fa20d9ee8e32fe11fa2409","receipt_hash":"sha256:2cb79ec49b16287e3f0bbe76702cb2429c86c5ba4424ab0f1c290bcd3aa1a9d6","signer":"ed25519:bench-node-01","signature":"899590f44f764b7c677368669bc8d1e816341fa8e6614ae6b9a5bc57bfc1c137f731ed770945928d49756b01e1910a9c0c491d769c40d74fe6be6b72d44bb100"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:aa41ab658382f5ba8142dc23f662f291b4bda8a0cb1152dab5859b9e326fd2c0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.394740960588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.974969e-02","shared_alloc_j":"2.324990e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","served_from_record":true,"record_id":"r149","record_hash":"sha256:5766de1b0954020a4a5f70be2b1e114504615839e2365bda98f7b248fac792b6","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":98338},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821366e+01"},"chain":{"prev_hash":"sha256:2cb79ec49b16287e3f0bbe76702cb2429c86c5ba4424ab0f1c290bcd3aa1a9d6","receipt_hash":"sha256:1da96ce3583c4b33aa55669d8004a21a33c57f7e96ff374bb02faf04728193b1","signer":"ed25519:bench-node-01","signature":"aa5eec22ff2a88321bb1a494faef568e0afe63a4469f1443a2a081db910984b056d5c80c61529c61f51680b18f1b64acb61cee951869bae97884d613f4286e0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:122922670b936efe4ae30cdc8f05a8ab9b5df22616ef9855d6caa28fd71cf217","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:939bcc1943febcebbe225a53f2decad409bea62e86017712d04d92893c520ed4","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.689609870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.365906e-01","shared_alloc_j":"4.553018e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:939bcc1943febcebbe225a53f2decad409bea62e86017712d04d92893c520ed4","served_from_record":false,"record_id":"r177","record_hash":"sha256:5ca6219c907c8faf0a3357d950c4e0c3f4e11971260ff63baebacb89eb4ef47b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101081},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850554e+01"},"chain":{"prev_hash":"sha256:1da96ce3583c4b33aa55669d8004a21a33c57f7e96ff374bb02faf04728193b1","receipt_hash":"sha256:fba3eb70ee9c17224d850dc59ef737c803c6bc688f6c75440cf157ea0d04bd17","signer":"ed25519:bench-node-01","signature":"71557e37fa37012a33f9f8b3a234f12bbf10ce54699cae514e28b83ab2689c2a8299501e4cc7c6189f60d301407e07bef039650acd859f66c9a6f6259a0af30b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:508e4be417fa0f82b8999e81826fa42ca998dd7187320ae8a795e00cda7f8a28","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.485718800588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.239953e-02","shared_alloc_j":"2.413318e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822985e+01"},"chain":{"prev_hash":"sha256:fba3eb70ee9c17224d850dc59ef737c803c6bc688f6c75440cf157ea0d04bd17","receipt_hash":"sha256:6420aa59068bc7e1a3c44491e17602b41a33c03ec58c9114d3cc5cc3b952416c","signer":"ed25519:bench-node-01","signature":"dbd0659bb4401e654ecd174a411368f8563fb045fe993e5492e4b65209c802bc6e891e122880b0725bdf848b875b9bac7cc7534e9edf1f336de307de0134180b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e75587f3642cda4d57ea246a487723d172ebe031d22d8c7fe09cba1e4cd3da2a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.049145970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.761887e-01","shared_alloc_j":"5.872956e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":19,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861609e+01"},"chain":{"prev_hash":"sha256:6420aa59068bc7e1a3c44491e17602b41a33c03ec58c9114d3cc5cc3b952416c","receipt_hash":"sha256:e324e6dc30db70e02c021570d72b3cfdf60857cd34549bfe30ae2b6db414ce95","signer":"ed25519:bench-node-01","signature":"75f1856aa3125a264551da60a502a4157bf5eed41804c168fc7bf9f0bfeabebcb9fa5272fa11a93d19d344674e3c8d5ae19b52e8ec153e1738c5a1cdf0f3e50c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e906629cf0a4365c5b064f9c0be761f9ecb637e3bfc7501647faeca1e1ebca50","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9e61930db681a8926fd28a93fc21fc78d349459ebf95dbc889666f26e6a9511a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.404329230588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.002896e-02","shared_alloc_j":"2.334299e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9e61930db681a8926fd28a93fc21fc78d349459ebf95dbc889666f26e6a9511a","served_from_record":false,"record_id":"r178","record_hash":"sha256:a1a0f595b5d51aa70120ec1a80c5fc0e81f1a214da0ec256ad9def5334859d87","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101258},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821539e+01"},"chain":{"prev_hash":"sha256:e324e6dc30db70e02c021570d72b3cfdf60857cd34549bfe30ae2b6db414ce95","receipt_hash":"sha256:de78afadafcf99064063b1cb4de8ac831ab95c26426d2dff2c238c5458ac9ec0","signer":"ed25519:bench-node-01","signature":"d5c82c80d56a89510837d6d641d5fbc62102133b4a04447ea70d830f5112960710ff3383d2026b0b25cbd7d55ac54248148397437659986a3d07b59961a5360e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4bfc30c7b5312b0728676f8ce5cc2f0ca5cc80515854a07d8687cae6b8bca0db","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.928505510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.529624e-02","shared_alloc_j":"2.843208e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":20,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830105e+01"},"chain":{"prev_hash":"sha256:de78afadafcf99064063b1cb4de8ac831ab95c26426d2dff2c238c5458ac9ec0","receipt_hash":"sha256:26cc349890a796de9320200bc13705bab03cf4d363ebba13005e2f50de997a6a","signer":"ed25519:bench-node-01","signature":"0b7e7edf85e5ce03d1702eb7f4064086e9178f31f0c34c023f1e6b910d1e01b81107127862271e9524f834a8d004cb5b92010a0eaee19729f012c95946570508"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:05b9233acd288342233ea91ca52a888f66d50a5179d362a7a8a367dbdab093ab","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:dde0d98cce82f3e04b6a435643bf0cc5ed3dcc0a2d028483e907de961a087012","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.147485170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.790529e-01","shared_alloc_j":"5.968431e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:dde0d98cce82f3e04b6a435643bf0cc5ed3dcc0a2d028483e907de961a087012","served_from_record":false,"record_id":"r179","record_hash":"sha256:f73ccbf34b88bb5a57be810d850e09eb29717763615d3ffc5e484ea1a988386d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101405},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862310e+01"},"chain":{"prev_hash":"sha256:26cc349890a796de9320200bc13705bab03cf4d363ebba13005e2f50de997a6a","receipt_hash":"sha256:1b87823f4d775d2b75e2fe3340c71cb15c328052c08b612c70ae7f17b5b851d4","signer":"ed25519:bench-node-01","signature":"5fe1b3c49bf6e89496217a8d3727a34f748ef67c67fceb48a84f97578cc123b2f7891eb1eff9db19f07c06351f4d759ef10889c348614abf224b3325a9995a08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:29c787c647475b6c2969c7d9ca7f289eaec6206c06edca6b3788d51f35041cc5","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:83e3ecffea2fc1d618c8e6a2b3989bbf71e691b703b087230e7c8df1a5eb2142","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.205853610588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.337434e-02","shared_alloc_j":"3.112478e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:83e3ecffea2fc1d618c8e6a2b3989bbf71e691b703b087230e7c8df1a5eb2142","served_from_record":true,"record_id":"r11","record_hash":"sha256:6b20a68c63f066ea3b3730f453a658b9fedb04fdd68d05e5b26ebcb6db3b5af8","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87151},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834034e+01"},"chain":{"prev_hash":"sha256:1b87823f4d775d2b75e2fe3340c71cb15c328052c08b612c70ae7f17b5b851d4","receipt_hash":"sha256:15477e690265627e451726c8f895368c3fde84507de8dc80d63e342e172265d6","signer":"ed25519:bench-node-01","signature":"37b71410203aee9e2640818a5c23311fe3b5e7a0cb8ce8d5a52a60ce19c002d69940b0e352ad492cccab29d98f64f6860a3a1747fa8a2dd88adab472e4b72806"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b4cf3cb5be7d6a91f1b078fea08c4446b25c43dcac46ba22fd861e97a510594b","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:7bb669efc7ef54a75650b800b852a682c0dea2c379850992581df1a10e149544","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.671227200588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.780263e-02","shared_alloc_j":"2.593421e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:7bb669efc7ef54a75650b800b852a682c0dea2c379850992581df1a10e149544","served_from_record":false,"record_id":"r180","record_hash":"sha256:403f6d0e4437c5e42111e960540a82e7276119588bfc95dc6655dad691a118b0","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101500},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826111e+01"},"chain":{"prev_hash":"sha256:15477e690265627e451726c8f895368c3fde84507de8dc80d63e342e172265d6","receipt_hash":"sha256:df632bf5a328836efefa05269728bd8314fe1bcc4d7657f8f8f76d6a90e54fbc","signer":"ed25519:bench-node-01","signature":"51b52587a1f4bd8e39618533fcd7b852296b43a36d4a16e191f9c31f918cda0a516bbb5c598fa6b84bf5ee61b5aeb8d01d247082ad446b1a802bf77e5ef1f409"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:207b8761a552c05177686f0da11c98bfeaa20843e1627be645926937b450f156","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.791106380588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.216811e-02","shared_alloc_j":"1.738937e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":8,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.808752e+01"},"chain":{"prev_hash":"sha256:df632bf5a328836efefa05269728bd8314fe1bcc4d7657f8f8f76d6a90e54fbc","receipt_hash":"sha256:928d4fcf4266fc444fa20abbae56485374805a904a35ea5fde7048f9cef452cb","signer":"ed25519:bench-node-01","signature":"715617ffa87db9426f1a8e878acaff718813a3b7c4b9ecaeb501817b144fea381b76dce9e0df2e5e9f99a4faf886233b58416f2ddeb4fb70cc7e7aedd17fcd07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:273589dae230c5b151e78e1b95c86b9a82b145f5bafb785fcdb1615a368d3f2a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:74c49c22905ea62e5a5f211dc5f47a895129ef8a84de0b3ca3c06e98b014cb87","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.718266270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.082990e-01","shared_alloc_j":"3.609966e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:74c49c22905ea62e5a5f211dc5f47a895129ef8a84de0b3ca3c06e98b014cb87","served_from_record":false,"record_id":"r181","record_hash":"sha256:b1537750aa8348ab7774307378f00565f63286c681001b65f15089a6d399f2a7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101589},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.840474e+01"},"chain":{"prev_hash":"sha256:928d4fcf4266fc444fa20abbae56485374805a904a35ea5fde7048f9cef452cb","receipt_hash":"sha256:3a78a3f56769cea2aa9ff602f5c3c20e50d92c3463c1363daab27fbf1295a096","signer":"ed25519:bench-node-01","signature":"263c7837442b5b9d4faf98d0dd75921e634733519af2f16d6a65b2a8a26f6c9aaea7eb56a0cacb4a62967e69d1d752ae9f581303e934e1fcc63db46d77aede04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bdc62be1417ea0ab8921997c9c2aeeb0ba2a07f10bbe3d5973bd1a938ec52567","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.822095170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.219690e-02","shared_alloc_j":"2.739897e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":9,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828497e+01"},"chain":{"prev_hash":"sha256:3a78a3f56769cea2aa9ff602f5c3c20e50d92c3463c1363daab27fbf1295a096","receipt_hash":"sha256:8f729642e2808f1ed5922b0c89c94d457b139eeae0ede3ff296f776df983de13","signer":"ed25519:bench-node-01","signature":"162d7fc775b52119d13605a62616513c6b00494b31fb8bb6246a63c33a58b9cd1803961589e652f8aa684dfdb3c753e6d56832a7735e62307a9df1aaae772706"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0429611c76c68f2f94d49685ad40feafbef1bb741ea1ad24f518d55a32509341","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:eeefeeffb8a0a9fb80a5cbf1e129d37dde0b471996c98ef784b3e99073afef89","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.127378170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.202149e-01","shared_alloc_j":"4.007162e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:eeefeeffb8a0a9fb80a5cbf1e129d37dde0b471996c98ef784b3e99073afef89","served_from_record":false,"record_id":"r182","record_hash":"sha256:e6730dbf4bd9c99c50a65a979c748bf21cf2c1c88f8a74ffac8071aba2134018","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101702},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845007e+01"},"chain":{"prev_hash":"sha256:8f729642e2808f1ed5922b0c89c94d457b139eeae0ede3ff296f776df983de13","receipt_hash":"sha256:7ca3b7605a764c9fcd2f9f6d0bc6de0ed6560d2512ce488f4e69906afda37d93","signer":"ed25519:bench-node-01","signature":"66b21b3c2efd69b27e58471189c40b6dac2688f215f16561f477902c817ccdba752ae8e847f9ea54dd1921c1f779fcda547e8a48fbde733021cafe2636855e0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2120aa82c669cc02c17f4246e8522ee0d07deac54442b398b3938c1e4fbfd9f7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.939454190588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.648892e-02","shared_alloc_j":"1.882964e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":21,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.812208e+01"},"chain":{"prev_hash":"sha256:7ca3b7605a764c9fcd2f9f6d0bc6de0ed6560d2512ce488f4e69906afda37d93","receipt_hash":"sha256:65c1e06c314a15238d8255b1fadfb203d0971e020001ba1a1572266a06b8db81","signer":"ed25519:bench-node-01","signature":"8961fa979f2712bfea7dff65b3d04f1bbc7b1e97726f044d73a0056ddf181431ee27dca76101cc23da726998d92b1755966342f8f80c27ed15996e72691f7d00"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:17d525ed35f8a17ac882999335633e03f5db7e6562837ef80d67e9bf242e7d51","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:aef4bb6b5fe9ccb4e86032a47f27b234eace63aa374802947a1767a90c0a8464","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.733738070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.378758e-01","shared_alloc_j":"4.595861e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aef4bb6b5fe9ccb4e86032a47f27b234eace63aa374802947a1767a90c0a8464","served_from_record":true,"record_id":"r99","record_hash":"sha256:34c9f3f3e1e23a57db0a1c6a6a7ac46879665e16a919134e270f9bc17f8e0537","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":93818},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850960e+01"},"chain":{"prev_hash":"sha256:65c1e06c314a15238d8255b1fadfb203d0971e020001ba1a1572266a06b8db81","receipt_hash":"sha256:9af9f332a627b5c4c878dbc10b83cf5563e340aa3ad6c631679fa9f0f99529cc","signer":"ed25519:bench-node-01","signature":"67e48ef365c0e5f132077a99f776c7d92ba4798922833cc96177f255d6cfec38957da21bcec473252bdcca7f09011497cbc726e1e46d8699c702f6ca10eb0b03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f54d2aa469e1aee197ed0a004e4549f4324cff1f66f876af7838efbb230ccd66","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:2150f93d600bfc917a75a44cc4db64793b61221b87f3d053e9c25c37953e88d6","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.717553500588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.915193e-02","shared_alloc_j":"2.638398e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2150f93d600bfc917a75a44cc4db64793b61221b87f3d053e9c25c37953e88d6","served_from_record":false,"record_id":"r183","record_hash":"sha256:4e28008d705ccde7d238a7ebeb481fdbe2513661785f9c1fc4b33b230d7b9589","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":101854},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826858e+01"},"chain":{"prev_hash":"sha256:9af9f332a627b5c4c878dbc10b83cf5563e340aa3ad6c631679fa9f0f99529cc","receipt_hash":"sha256:e3b46f32cbda0ff38b0a6077a542eee4e72f529be174daab29852dd3c7a2dab5","signer":"ed25519:bench-node-01","signature":"d191ceceb9b20a27e135ece2b05f36244fcdab3ebb17d1d46495a36bac2f1fb60ad1818a5826907c1b33ca3c1ecad9151b33a67dc8c8cdcdd39f775520f22506"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:94bd7e6632587c8c936132e2c3e3b4837c6fb499797d1e6b0a77209b559588f7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.419695800588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.047653e-02","shared_alloc_j":"2.349218e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":10,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821816e+01"},"chain":{"prev_hash":"sha256:e3b46f32cbda0ff38b0a6077a542eee4e72f529be174daab29852dd3c7a2dab5","receipt_hash":"sha256:1eecf97b91b15c2447c9b0a38907195db29e9438f9a21f51f9cf208edb18cb70","signer":"ed25519:bench-node-01","signature":"1dca675bc03ce19e7bc9052134eb167b62bac71365c70743dc4b2d20f3c4efa9fb582e628cf6487ff599a4564723f42792e2016ae42f9fa8b24791541cc71908"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:293959a84370af3fed57681965dae5f95e456651ac4d624676cf9915704776f9","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.914355270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.722627e-01","shared_alloc_j":"5.742089e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860631e+01"},"chain":{"prev_hash":"sha256:1eecf97b91b15c2447c9b0a38907195db29e9438f9a21f51f9cf208edb18cb70","receipt_hash":"sha256:8976f758306dc8b8d273e6e3a6ea81621bfc88da968a7bb168b761753b0a2ec8","signer":"ed25519:bench-node-01","signature":"6131084674d158a18bd28dd8d17df3d5185a466925db2fb510319f38c986788aac0c2027d76efbdfb5b22ecebaa13b0ee3d4b23776176d3644b21d5c5c013309"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:09a5f21c875f909cf85fdde7f530d1f764865cf6c8731d80106dab3c125d14e7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:6f37d45f68c8e63262b6f5238005c8e712494dcf15281951ed02eb9edcbdd749","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.382546800588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.939453e-02","shared_alloc_j":"2.313151e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6f37d45f68c8e63262b6f5238005c8e712494dcf15281951ed02eb9edcbdd749","served_from_record":true,"record_id":"r139","record_hash":"sha256:454ce54f131e6c17e307228a92563feae01df8d8774033129589310b7a521a49","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":97478},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.821144e+01"},"chain":{"prev_hash":"sha256:8976f758306dc8b8d273e6e3a6ea81621bfc88da968a7bb168b761753b0a2ec8","receipt_hash":"sha256:082ad9523a8939ee14fcb6b436e82fa71110aa8b8c4d8941510db06f3b7b39d6","signer":"ed25519:bench-node-01","signature":"e08c68dcb87092ae3a3b3a5bc7585d206bfc1f8460026f8b9979cb8d52b1404683a933a23340981717393fb1d2a4a17503476bdd56a4eb4144386a7d32605802"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:eac699959c7a2fd928f10fe5e8400c79555431b66efe266d0a2a594957d5abb3","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.247088190588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"3.632292e-02","shared_alloc_j":"1.210764e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","served_from_record":true,"record_id":"r110","record_hash":"sha256:f6dd6a74403115e1c6321158ee0e6cc71d2baddb71cdaf06b97875ebcdd7c920","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":94819},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.793030e+01"},"chain":{"prev_hash":"sha256:082ad9523a8939ee14fcb6b436e82fa71110aa8b8c4d8941510db06f3b7b39d6","receipt_hash":"sha256:9714b64b6b32edc8c74df0e4b607e5e0c4c249e3df1b0e144fe74b0bb271683f","signer":"ed25519:bench-node-01","signature":"4c6348b85ba71056d90cbf13d1c2aaef177f0c6a781f766cc311c8787b755a6d35a8e2b6a42ec1f9e9794c003e434dabf829afbd903cecf07381da93b1ca9c09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4fa8415d36126d4f0497728f392cf7cc7095d7fc9b571affe9c78c3dc7816643","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.546879870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.615596e-01","shared_alloc_j":"5.385319e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":22,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857845e+01"},"chain":{"prev_hash":"sha256:9714b64b6b32edc8c74df0e4b607e5e0c4c249e3df1b0e144fe74b0bb271683f","receipt_hash":"sha256:1200901069c68f39f37a881d39a242d1ba818db32dea398ad9dace2b59a00957","signer":"ed25519:bench-node-01","signature":"7223c315ae9d2f604ac24736fcd17369bd7c7e4163c97a175e629df8dbef888c3745272a8bfdeb24239063d5e5fbd8ab96185bdb3deb7ad23429bee12c249901"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:641347aea3421d7c545cf3bebbbcedb3775c7d1a14cbdbc2591873893e917094","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.683865290588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.817072e-02","shared_alloc_j":"2.605691e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","served_from_record":true,"record_id":"r90","record_hash":"sha256:fbfb7b2e0c35a608c84403c695970a425790cfac9e71c7f2b3ab9eecb37cfc58","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":93177},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826316e+01"},"chain":{"prev_hash":"sha256:1200901069c68f39f37a881d39a242d1ba818db32dea398ad9dace2b59a00957","receipt_hash":"sha256:509a09fa3fb622a0142b381d3f25dac71d268c540b1455f97088a68e8b6c3361","signer":"ed25519:bench-node-01","signature":"7049f236b05d058795db4bcf3b32b57ba48cdda1e30983b8b95e555376e4957384b3e81dfc6c6352ddc464381ce727a9115bb5123b2ce662ee065c6191be5b04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c420cfd856ef4785842c100930a266de2ef9970d88a7dcfbfe18251de5090a4a","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:06da72ce846abf2c5eadd2aab2f18cd1e5565999fe71c40809bc145b7d50dc5f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.881000770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.712912e-01","shared_alloc_j":"5.709706e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:06da72ce846abf2c5eadd2aab2f18cd1e5565999fe71c40809bc145b7d50dc5f","served_from_record":false,"record_id":"r184","record_hash":"sha256:c1a685f8a2cffa8d705d2523d9448795f00aad5329ec6e82e3e893126f2a5955","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102276},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860385e+01"},"chain":{"prev_hash":"sha256:509a09fa3fb622a0142b381d3f25dac71d268c540b1455f97088a68e8b6c3361","receipt_hash":"sha256:a1bd1fc10ab4a4fd9c883c43435d515c05766bd5ae6fb7a4f6b23a213bc194de","signer":"ed25519:bench-node-01","signature":"dce5e2ceafe42aff9dd1362bda3e302a0fee5d4929b8bfbb613fc038a82b8fa6f6431e6496a3c17029e60ce2be5b65a4da084d75b1c8d60221fc7668b8d62c06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:eb849733e0850dfd42d699ecf2fe468e85292d4ae2e98b71d7330ff5ef3e0a98","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.665134770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.067515e-01","shared_alloc_j":"3.558382e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":23,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839849e+01"},"chain":{"prev_hash":"sha256:a1bd1fc10ab4a4fd9c883c43435d515c05766bd5ae6fb7a4f6b23a213bc194de","receipt_hash":"sha256:7370485107ba5cae631a279b09d5f8d5327e8140463fd37766d8249db930d0e9","signer":"ed25519:bench-node-01","signature":"57ad09325767ebd3ceb90a74dd3684891464d68c2fd3849f6f71613cc88744ae71e9db9f2e50548218c94759cf4f138c88e55d2e9d1fa410a7a826dfbcf4c20a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1931e2d8b42eaad69e1cacc9e107ad1901f21fb82d37592cefb7a414eed6d748","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.556658670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.618444e-01","shared_alloc_j":"5.394813e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","served_from_record":true,"record_id":"r32","record_hash":"sha256:15137fb9bb5c928e449c8d3e6b50b9ef1791b583f2bd04555aaf3a153e617bc5","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":88540},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857921e+01"},"chain":{"prev_hash":"sha256:7370485107ba5cae631a279b09d5f8d5327e8140463fd37766d8249db930d0e9","receipt_hash":"sha256:b0b937b82d1efe956208ec78aea1ec0d39fe01164952a153d3e1d50844d94047","signer":"ed25519:bench-node-01","signature":"c10bffa8929523b5672cd2fed0407898fb65e17397553b3d96d01535a29bc88d3c37faf0e2d36c6f1417b1c8e42e5c9209b4bbaadc11dc69a8a0d432c95d3707"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bebda82e94a76cb7f7929698959be2bdb1ebf41f9e0cab82319ddb4d864ef364","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:e794aeed80344416c0eea1f5479ecab56e92778ba0a1c0ad094b45481313cd95","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.597988600588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.654333e-02","shared_alloc_j":"1.551444e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e794aeed80344416c0eea1f5479ecab56e92778ba0a1c0ad094b45481313cd95","served_from_record":true,"record_id":"r66","record_hash":"sha256:4a7445a0dd5e1f0e63f6753a999ae0815081d2b460fe1e9cb4f40874dc5fdf5b","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":91596},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.803797e+01"},"chain":{"prev_hash":"sha256:b0b937b82d1efe956208ec78aea1ec0d39fe01164952a153d3e1d50844d94047","receipt_hash":"sha256:e71570847f8cfcd0dac6b9498b80cfcdc219d969ea062efad36d2be9b5acfdb0","signer":"ed25519:bench-node-01","signature":"9cb8d4396e74d8cb7b96512339dd51417f993342d8f477b35fcd6e59e53ea010be3553550bf990ab03165fa27d4280c11394f463855e8fb12e7660e68a494b0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f74200a47dfbaa3b87038a2de88ab14032b6b5a88a031da44e367908ede220b6","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.012013670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.751071e-01","shared_alloc_j":"5.836903e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861342e+01"},"chain":{"prev_hash":"sha256:e71570847f8cfcd0dac6b9498b80cfcdc219d969ea062efad36d2be9b5acfdb0","receipt_hash":"sha256:deddb9d524066f716ddfe5076e462a6d98b260f6963277f9f2931badf8875578","signer":"ed25519:bench-node-01","signature":"9fe25b34c8bf51de9eda79d10fc2181ae6a8345123c57eca989c45bd15cec5fcb74fa9f338f808f164047a2acc75eeddb19582b1d2cb1fab14305eafe14b0e0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f8b752375e3329f090f9ba512e2037df14d867e582974110bbd64cdad1186649","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:961b391b8b2d819e0bd5384c0a093e3fd737cd0e8652383fbf8ce86df8e6087c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.933632470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.436979e-01","shared_alloc_j":"4.789931e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:961b391b8b2d819e0bd5384c0a093e3fd737cd0e8652383fbf8ce86df8e6087c","served_from_record":false,"record_id":"r185","record_hash":"sha256:49133790eae82117e95b6a876b150e1f15a86bedb7281462fc137a57da8113a7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102628},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852757e+01"},"chain":{"prev_hash":"sha256:deddb9d524066f716ddfe5076e462a6d98b260f6963277f9f2931badf8875578","receipt_hash":"sha256:535c10b5ada95b2b550f1885a1f0b44ed25773cd09d2b8b45dec779952229469","signer":"ed25519:bench-node-01","signature":"8b10ea3a35b05825858c973c2c2166f34e3df484e289e863f3e19603ccd789362cca086268040162a1dd297e99b5214f2849f63740d0a6b2377f74805919e101"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:847722aa486b1b868deba82ec20936d4f6261b08bd91d4dd4c587d4c28c5e7b3","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:ec9fbd4b6ba63997cedebf8eb7b1b1602733679e70bdb87aab8f6499ba1da719","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.488157070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.247050e-02","shared_alloc_j":"2.415683e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ec9fbd4b6ba63997cedebf8eb7b1b1602733679e70bdb87aab8f6499ba1da719","served_from_record":false,"record_id":"r186","record_hash":"sha256:063ca65efcb4564ac19d9538bbf48ede3028be096a4bc56e6455938f1308d89b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102668},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.823028e+01"},"chain":{"prev_hash":"sha256:535c10b5ada95b2b550f1885a1f0b44ed25773cd09d2b8b45dec779952229469","receipt_hash":"sha256:2d48d97a950f3853260c5843d66adb76357d7dc223f1489f6b572d6e21baf00c","signer":"ed25519:bench-node-01","signature":"3d96a7e1b4a42533e0d60c50a9ef2ad77e0ab6712d957557e1b59cf4ee353aa35392102f03a8f75e29c6670aa464e9c84d5577100f4ffab8726e2df903159807"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:daee3360c7efba8300df6d5e29516898d1ab8dcd95f31e0939744fc2b5fb666a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:fb1c565303b1f155c6b39c6428631346c93ae7a3c34300d38606c842ae111be3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.269335380588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.609711e-02","shared_alloc_j":"2.203237e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fb1c565303b1f155c6b39c6428631346c93ae7a3c34300d38606c842ae111be3","served_from_record":false,"record_id":"r187","record_hash":"sha256:06b8ad0835c0538b19f8eb3cc08b5879ef7c91cc15fb8e0cb469f3d6993151db","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102705},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.819030e+01"},"chain":{"prev_hash":"sha256:2d48d97a950f3853260c5843d66adb76357d7dc223f1489f6b572d6e21baf00c","receipt_hash":"sha256:26a850ecaad6ff4e35e3263138af062a3885594cf44e93df11c813476d8dbf6a","signer":"ed25519:bench-node-01","signature":"0cbd78864a48de6f833a9d7f9ca85ac951d834057629616ed9e6e54400bc7898cc302688fc3b5a4cfa501910e809a7afe981aabfbea7fa215f09d82039fa0e06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:525644b701d5286c2a992157762d51cd4df930d789aa2cb0e9ccfb01e0fb6316","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:cf49fda430355241c258ed4f604d062793a1e809eb06aa62b8eef4d5827b6660","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.295092580588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.684731e-02","shared_alloc_j":"2.228244e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cf49fda430355241c258ed4f604d062793a1e809eb06aa62b8eef4d5827b6660","served_from_record":false,"record_id":"r188","record_hash":"sha256:32291a0cdf58073a8750b8c60bec5e703cf330fa32c2e9373894cf939de88063","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102742},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.819520e+01"},"chain":{"prev_hash":"sha256:26a850ecaad6ff4e35e3263138af062a3885594cf44e93df11c813476d8dbf6a","receipt_hash":"sha256:f749d1b2087415fa2840ccb0b1f463007c0d3b5877dabc7aadce93bc0d74241a","signer":"ed25519:bench-node-01","signature":"6a5fc788a7d32d27be28c4d7a65199973e8abccc21516c5815475037209dc60afc611deb4025853824b1e5fcd06a4d3e587f91d4d548d26e5a0901efd9c83c08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8d865e787ef469ca745d10f02e2ca3cad6b433f7f3707ab16c32a83fbec1ce2d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:6737e600363f218f40dd3069f95f5dbf3c4db57424119bd7c1736a5be5cc70bb","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.735307160588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.054289e-02","shared_alloc_j":"1.684763e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6737e600363f218f40dd3069f95f5dbf3c4db57424119bd7c1736a5be5cc70bb","served_from_record":false,"record_id":"r189","record_hash":"sha256:4f8f182ed08fc41d0c234ac00c3a69d21dfa85483b6ce8f6e2e05fb0357d2c59","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102770},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.807378e+01"},"chain":{"prev_hash":"sha256:f749d1b2087415fa2840ccb0b1f463007c0d3b5877dabc7aadce93bc0d74241a","receipt_hash":"sha256:333063474fe6d608a448bbf2991bc3dcfaeb68dc9ac3f8edb601bf6d5bceaa33","signer":"ed25519:bench-node-01","signature":"dd9a30323a1b52c0c2cb7fb15db94473efc26acb08600e4ec8cf245366316a98998b64c2dee725b3c096578c0c1ebbe34d0f82810435f524f0be66c4022a1401"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7e82b6c5b24d7b28b9964128ddadbaa947d918d91b0fe9d7f5c0b75b1112434c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:82766587876a39fe044dc0896677a505d5e5def45b21bf32bcd3f0e2ed269ba2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.996150530588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.814026e-02","shared_alloc_j":"1.938009e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:82766587876a39fe044dc0896677a505d5e5def45b21bf32bcd3f0e2ed269ba2","served_from_record":false,"record_id":"r190","record_hash":"sha256:9022b949bef7cd8e3ea890d1b16f7bd5de5dcec0b037250f70de83aa5d99a0ee","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102802},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.813459e+01"},"chain":{"prev_hash":"sha256:333063474fe6d608a448bbf2991bc3dcfaeb68dc9ac3f8edb601bf6d5bceaa33","receipt_hash":"sha256:b9998892ecc57d9b9ac4a1eceeb097d77778f591e3d3b079fd5e23fa5d4cf39c","signer":"ed25519:bench-node-01","signature":"d8a1dee5e117f2e3a6bf548dd252eabf59b5b547b206ab1544fe1e6642b2637e36c248b405490c05ab73ecd150f8245a240dcfe38eb865828da2f95cb2c3bd01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:221b6c69d7a4788dbe8fc8aaf1be196f5144583939d707eb568aecc854c2bbf8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ff23910fa778fac032c85c6568bb998c19a986333ffceece66d612ff672c1782","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.671451170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.651879e-01","shared_alloc_j":"5.506262e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ff23910fa778fac032c85c6568bb998c19a986333ffceece66d612ff672c1782","served_from_record":false,"record_id":"r191","record_hash":"sha256:42989b8189f68d0082e7dc055e36045d4dae926032e445277b02f4e4bf70ae96","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":102894},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858809e+01"},"chain":{"prev_hash":"sha256:b9998892ecc57d9b9ac4a1eceeb097d77778f591e3d3b079fd5e23fa5d4cf39c","receipt_hash":"sha256:7e52b3fbbb9268226884fdf554333e9c719bfddef019e8fc560a91455bcb7990","signer":"ed25519:bench-node-01","signature":"48cc561c199d74b4177a97c1f2b41bf68f73dfab845c55d6ccb57de78819b783a67b2396776d4764aae137b38d3abf2087d0221d11c252bc44566e426e2cf60f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a25d1e5263303a70bdf85c45f086e788bbdd8a8fb49037d9a1d1129b1f017517","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:9840140a39c47ebfcdda27e664a72009daffa1d975d005450a100350849daa10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.954071370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.151671e-01","shared_alloc_j":"3.838903e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9840140a39c47ebfcdda27e664a72009daffa1d975d005450a100350849daa10","served_from_record":true,"record_id":"r116","record_hash":"sha256:cae152c7d4ea4f178ff00a0ff86fd15535bff763a0dee1b34393c0e8844e4431","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":95210},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843144e+01"},"chain":{"prev_hash":"sha256:7e52b3fbbb9268226884fdf554333e9c719bfddef019e8fc560a91455bcb7990","receipt_hash":"sha256:b401ac21a60373ce5071f851bc970e5ee145ed97f94f6e70196ac9b98ae9afdf","signer":"ed25519:bench-node-01","signature":"a5792d145c0a3460e2560e4eab320bdcfe3dd063fc5b380ba2054d736899850f819f8bcd9e4f8d180e5be3a34e76e15a50a881e321aabc0916719dac27c5fd07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9640964941d1564d44adc82323878780afbe0e8ddf17904df1949807d7c49369","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.642050370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.060791e-01","shared_alloc_j":"3.535970e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":true,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839575e+01"},"chain":{"prev_hash":"sha256:b401ac21a60373ce5071f851bc970e5ee145ed97f94f6e70196ac9b98ae9afdf","receipt_hash":"sha256:4893e1cdd317e0a12ef984ba135411e028c39dafdda5a07a1f7aeb880881bc85","signer":"ed25519:bench-node-01","signature":"733648d60f80a0b9d5b02e4bd04de96cbfad1de3d8bfdf04518dc97a19bb029b1b0508bd5a247e84582a11f7f62861ebaabba9a52f6498c02fe88b5d6719fa09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d3db59feb4dccb95453aadab85be062c150a97b7dbe1fc73d14b3a647d22032f","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:01322a812d2397397876595f6fc2be45dfeeed256b674f70accd6e3354059fb0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.265983190588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.512562e-02","shared_alloc_j":"3.170854e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:01322a812d2397397876595f6fc2be45dfeeed256b674f70accd6e3354059fb0","served_from_record":false,"record_id":"r192","record_hash":"sha256:40484c28a799866871a4cab4dbe55a3d6fd9ec71b583e6c548b4598113b0ba5a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":103070},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834841e+01"},"chain":{"prev_hash":"sha256:4893e1cdd317e0a12ef984ba135411e028c39dafdda5a07a1f7aeb880881bc85","receipt_hash":"sha256:8bada1f9c50887193d73fef27508faaf15ef1e9679aa1d4aaa538881274d64dc","signer":"ed25519:bench-node-01","signature":"e10925cfb330da032efaff4134db25aadc998c04a8993926aa1f0f74b6a071c566b70e47bfc8f8ba6d656d70fecb429aed5e7e6754f35e03fee469c834e5fe0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:efc73656bef9eb64cad065fa491fdfd4493f974ba32e5620ee716fa6682d2f09","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:2576d606f7686868001e756e697c1c0bd80ff210c28f9626a40a0206f8740c7c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.886637470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.423292e-01","shared_alloc_j":"4.744307e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2576d606f7686868001e756e697c1c0bd80ff210c28f9626a40a0206f8740c7c","served_from_record":true,"record_id":"r96","record_hash":"sha256:f00aabe082500c634f45bf066ce0068f4071b8e5e1dd87aa9215ff18846a0c09","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":93584},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852341e+01"},"chain":{"prev_hash":"sha256:8bada1f9c50887193d73fef27508faaf15ef1e9679aa1d4aaa538881274d64dc","receipt_hash":"sha256:7e5cdf6b167e9f77072b45ceefd4236d51a68a496b186d84a170edd4960733bf","signer":"ed25519:bench-node-01","signature":"ca47e1e353c310d0999ca50d4d910fb68a499fc3da066b993a7391281b4536e2378f6da3fad6855b7af4339fee2ecc26c8aaabc2dfb1c66e317a004c914c3207"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b682ce41cbd388a87e83269d470bdc832dd175f6f217225317ab0a69afda4fe6","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5d7d5d259b708cde975291235fd292c65d84bcd5067333476c61256be72dec9a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.133356050588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.213648e-02","shared_alloc_j":"2.071216e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5d7d5d259b708cde975291235fd292c65d84bcd5067333476c61256be72dec9a","served_from_record":false,"record_id":"r193","record_hash":"sha256:840505972c746322dc68ab9977015f384d40ba56fbaffb45f6863c0f12436098","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":103183},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816346e+01"},"chain":{"prev_hash":"sha256:7e5cdf6b167e9f77072b45ceefd4236d51a68a496b186d84a170edd4960733bf","receipt_hash":"sha256:f4162c710571a9622a8ae899c6cfa7990b47cca0d9fbdc7acc03866795f5cadf","signer":"ed25519:bench-node-01","signature":"8861abbfdf01217ce035747cbf4f3b00a994d3c708081f087747d775aa13703224d7334da7287cf3f4b44c00211f873a070c4bdf60f65606f6bb9192a5cb3705"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7b0916cf7a00590c08382742db87266bec54609031c3384ba1ada63f4facd30f","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:a24555e7692044ccfaca766108abaf92a0eb3d523943bebf7d2eceb3f7cb2593","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.736082570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.379440e-01","shared_alloc_j":"4.598135e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a24555e7692044ccfaca766108abaf92a0eb3d523943bebf7d2eceb3f7cb2593","served_from_record":false,"record_id":"r194","record_hash":"sha256:769afc3e9e13947b6471a42ee0ab2a4a3cf94438feafe0b3757017530fe9743a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":103260},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850982e+01"},"chain":{"prev_hash":"sha256:f4162c710571a9622a8ae899c6cfa7990b47cca0d9fbdc7acc03866795f5cadf","receipt_hash":"sha256:293fa6089027b01acc8c92a71e3f60b967e1a6b1cd2e834ec77f125b4ff1edc5","signer":"ed25519:bench-node-01","signature":"5a9595c300ab819736971de69624d0fc75a9661785565c144ef4e32a4c7682346ede16e84e72682d593508384c47805c88ffdeb8402d966ef63e60d7135b8901"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7340012671013620362d72b41583363217a1ca2e5b538b8be4dc91d888125014","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:76aa44f7b0b3b872eb243bcd0ed8bc9038d6779900791ddcf365d5805e743a5f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.951834470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.442282e-01","shared_alloc_j":"4.807605e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:76aa44f7b0b3b872eb243bcd0ed8bc9038d6779900791ddcf365d5805e743a5f","served_from_record":true,"record_id":"r142","record_hash":"sha256:dba5353f14cbe283a3df3bc0429b4d0da6169a5533118250370697129a4c0c9f","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":97827},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852917e+01"},"chain":{"prev_hash":"sha256:293fa6089027b01acc8c92a71e3f60b967e1a6b1cd2e834ec77f125b4ff1edc5","receipt_hash":"sha256:d286700151bf611c26015cdf6f60d0f8eb965ef94bd74445f3521707b50d5001","signer":"ed25519:bench-node-01","signature":"e1bed2c4948497814459ab1e0739a49cde885cb887121c3eda802600e9117bac650405a3b9844664371604b8d23e876524600c96d7af90a749c6d0cc72019802"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:155855edd261b5f93b1f4610e80a2578233f52267ab8003b917c0f43105af7c1","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:3c9feb0b662a0c417a55ec5751b1c501d1d315c1d204379045c2e004b8c5c875","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.938949970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.147267e-01","shared_alloc_j":"3.824222e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3c9feb0b662a0c417a55ec5751b1c501d1d315c1d204379045c2e004b8c5c875","served_from_record":true,"record_id":"r159","record_hash":"sha256:1c1dcd4d20b2916ec8891938b92c85b6711a814628df4ca4b2ae748dea597e96","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":99348},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842978e+01"},"chain":{"prev_hash":"sha256:d286700151bf611c26015cdf6f60d0f8eb965ef94bd74445f3521707b50d5001","receipt_hash":"sha256:6d5d760e5efa85b7a8284bb387b403f07ea73532c94a0bc0c70b904ae409c67f","signer":"ed25519:bench-node-01","signature":"389ecf410d09f91f80d1583da481f449861d194aae52abe3636e91aa34f97fc8549ef222ac5aa275e2a47e9a7903083ebdd8ca83920c14a07a9ad33b02ce9804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:de992c2ec13db7126885afe44df842aef7d3b7be9fecc60029d196884c4cf1c8","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.985444870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.743333e-01","shared_alloc_j":"5.811108e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861150e+01"},"chain":{"prev_hash":"sha256:6d5d760e5efa85b7a8284bb387b403f07ea73532c94a0bc0c70b904ae409c67f","receipt_hash":"sha256:bd3760daf505d0b44c0b7990480625f64f7bdbad2b136a943848e2a09e21dee1","signer":"ed25519:bench-node-01","signature":"5973429c691ff5b409204cdd3ce405bac50006788e003a1205adcaa8ae068503db390f89dfbfe7c4c36e313f9d6b83450dc73777c8b8ab886139007be1b97502"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a5f8f66e04b9c41b0bf5ececd2211b9bd2a33b53d85f0c7d4bc332e947c8a277","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.817721580588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.294331e-02","shared_alloc_j":"1.764777e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.809393e+01"},"chain":{"prev_hash":"sha256:bd3760daf505d0b44c0b7990480625f64f7bdbad2b136a943848e2a09e21dee1","receipt_hash":"sha256:11c36cfc02aec36b4bd286f80affc2264ac95e5a9e85b908e17f92057084f79e","signer":"ed25519:bench-node-01","signature":"42f3a821458d68ff6fe85cd3531de31e1ebce9b6ba1b9db39df10595d9a272a876b9790d21ac49d04bf027c5ffdfd7a141ed9c6974dc671de2dc5f9df56e5a0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c1b127b25bbe9615a8f03447d304f7db96bee8014b3ad45aec9058f2415d6a86","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:4f997e150ba0259c9622fba72c9ccf1420961b0c877fe9ea6bd0e046da32ddee","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.723181370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.084421e-01","shared_alloc_j":"3.614738e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4f997e150ba0259c9622fba72c9ccf1420961b0c877fe9ea6bd0e046da32ddee","served_from_record":false,"record_id":"r195","record_hash":"sha256:760baeef735194d5233072d12e4f2bcd5592c5f0243f50e90391d710d5f1a97c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":103590},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.840531e+01"},"chain":{"prev_hash":"sha256:11c36cfc02aec36b4bd286f80affc2264ac95e5a9e85b908e17f92057084f79e","receipt_hash":"sha256:a9a7936fc5ad2768cd33396e2f9e4974880772f18b5120909659f994af8589bd","signer":"ed25519:bench-node-01","signature":"22d64b7ed1524f1d9890f37bcd0c1bd28911c2b41b72343f47c86329386943965925de6a6fac77667fe21890d3fe69dc432dce396b9c3759619ed0fcac38b80e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:77cf51ae5a3d2d9fb426ebca7e580e8947b4ceea14f2bdebd5e3b4e386d78fd8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.616163870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.635776e-01","shared_alloc_j":"5.452585e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":24,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858384e+01"},"chain":{"prev_hash":"sha256:a9a7936fc5ad2768cd33396e2f9e4974880772f18b5120909659f994af8589bd","receipt_hash":"sha256:6071826953b2b72def75714f442207cfe56fde474c6b2c80c17e848f71dce3cb","signer":"ed25519:bench-node-01","signature":"5447af30b5f2ad57029bf9d9a354d162688b68ae0123747d3ef480ba79a5e54e671def5a3700960b0eafed311247ddb014fe1304d6c9e8a140ec0074ae833f0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:af3e875f39301909aa036ba6e46fac588274c16b6d7ba147348e15a993190192","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:e22d08cd71e4fe85157a117945884be41615af88796c53f606b47fa038bac18e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.120469870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.200136e-01","shared_alloc_j":"4.000455e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e22d08cd71e4fe85157a117945884be41615af88796c53f606b47fa038bac18e","served_from_record":true,"record_id":"r103","record_hash":"sha256:aef96891cde1778fd48eb935528ed4cc34cca76b6c77efba9276f1cf503d5bb9","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":94296},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844935e+01"},"chain":{"prev_hash":"sha256:6071826953b2b72def75714f442207cfe56fde474c6b2c80c17e848f71dce3cb","receipt_hash":"sha256:9e86a52c969be9e214230cf561629ea43e117ecf62934d78dd2a1f364e601ac8","signer":"ed25519:bench-node-01","signature":"912c818f91729191b5026664e934341717f16595088517a9d7f58813728fc1ad16dfa9387751d267c637a9ffe72bec3e3666e29c757c9aba535e2c2d362ec005"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c6761333911c70037654bf3ff7fb84a8ba910ff837867e35ced3c10a4c9af811","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:9eba0993d20b4fcc833a8898898639838baa8bda656cef4206d45b329bb3ab0a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.193493600588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.301433e-02","shared_alloc_j":"3.100478e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9eba0993d20b4fcc833a8898898639838baa8bda656cef4206d45b329bb3ab0a","served_from_record":false,"record_id":"r196","record_hash":"sha256:65bff66ef8b35f4cd7df93a868f5fbe8666319d402cfaecf38b1ee526518ab31","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":103800},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833867e+01"},"chain":{"prev_hash":"sha256:9e86a52c969be9e214230cf561629ea43e117ecf62934d78dd2a1f364e601ac8","receipt_hash":"sha256:403de2d9ba7ebd5fdc26840e4d7037808efcf30bb0dec7e0b219637ce2d0bc03","signer":"ed25519:bench-node-01","signature":"a14d16a2b7e7d6bc7536407ef9212516d62b2caa3fd3ba9e03b53a9fb66c45a26619094fae47eff93589d4bb259a2dea90b8609cccabf9064e68199f8c74c100"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:804fc534e2895f3b310f4b2e25c73fbb4c9c04d23b69c88ffdc4dc4470e113c9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.736094970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.670707e-01","shared_alloc_j":"5.569023e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","served_from_record":true,"record_id":"r32","record_hash":"sha256:15137fb9bb5c928e449c8d3e6b50b9ef1791b583f2bd04555aaf3a153e617bc5","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":88540},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.859302e+01"},"chain":{"prev_hash":"sha256:403de2d9ba7ebd5fdc26840e4d7037808efcf30bb0dec7e0b219637ce2d0bc03","receipt_hash":"sha256:bd1355339cbfce63b6ee19b0c3e893aad03ea352be9e050775647c550c9dad67","signer":"ed25519:bench-node-01","signature":"6359301e333b6dc1d9ec8d48196248463858999406d27e0fc259dd93deb9c24b989d7803436d50ab2f91e3048966c1414f1c39de0b986a0be0c4d4acf6a8cd0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:894b2c5493bd0576109796b8ac73703c3eba45818c393e3e68cc96927e9fa7a6","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.356435970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.268864e-01","shared_alloc_j":"4.229546e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847353e+01"},"chain":{"prev_hash":"sha256:bd1355339cbfce63b6ee19b0c3e893aad03ea352be9e050775647c550c9dad67","receipt_hash":"sha256:f02578c38c8e4990bf44e856a661c49ec7a92098d5d0052a2525331ee6164936","signer":"ed25519:bench-node-01","signature":"1e11c0074a4a11745fb46e571bef17df7c1ecbedb0b634bdead06532194647b8d714ba5e75aa48ec84680e4f26eb1e0cada9d514021e9aabd689db5f224f5b0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3543d57d00649652423873ac6ff05a42d547653092612fa7b6ce0a7e71fc2ca0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:db77ddfc23a61c07ebd5b655bce57cf0a257f4cd3183666ef84c4bd52ecdd2fd","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.840494670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.701114e-01","shared_alloc_j":"5.670382e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:db77ddfc23a61c07ebd5b655bce57cf0a257f4cd3183666ef84c4bd52ecdd2fd","served_from_record":true,"record_id":"r173","record_hash":"sha256:428d5f7f69ba9cbe1bb4ff54361b4953bead5fab38b14d6ff9d6c93c1c9a16dc","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":100407},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.860085e+01"},"chain":{"prev_hash":"sha256:f02578c38c8e4990bf44e856a661c49ec7a92098d5d0052a2525331ee6164936","receipt_hash":"sha256:5dd4e6faa77274481025d6e196a338e8c83274e0e9a2afcdeacdb7c8a4083d04","signer":"ed25519:bench-node-01","signature":"ea536feb3019647721fa7b2937ba77d77046510734e31bd9d42e7842998d0a1e53f03b179c70aceca0ad796f0c038cdfd74606ea8f6bdfbe18545bca4ae52206"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:18310b61ecadecfe3a0a4d6893c1e038648305fa66ec83b3e316ad13e4850dae","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:9014e65fe138b28393ccb3d8d284ed537952a969e7a21268271f523fa7af84ed","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.938281230588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.558096e-02","shared_alloc_j":"2.852699e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:9014e65fe138b28393ccb3d8d284ed537952a969e7a21268271f523fa7af84ed","served_from_record":true,"record_id":"r126","record_hash":"sha256:21c082b273e8dd3bf225ba9f6c5875d948da0df81a2224d3b8400cf7a1969a41","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":96382},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830249e+01"},"chain":{"prev_hash":"sha256:5dd4e6faa77274481025d6e196a338e8c83274e0e9a2afcdeacdb7c8a4083d04","receipt_hash":"sha256:bbb379b8503587c46f277030ade10c141654e292e3e383a5e2baa7f6b450ec47","signer":"ed25519:bench-node-01","signature":"f591f5ef934d59c25e9ca8f155ad5480eb0feca46913fe61080d021ff60dab91a2d4fda17619fb5f07fd78adec68ddc7664ea5e7326dd569c2c331e94522300d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:88456ce7ae773a300de0db60fb6b6ca799a570a2f15f66451c20fab4d442585f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:efbb8d25a730016e7141c8a4385a30cc196c5b7f9d238b06f6213360fb3a4888","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.366221510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.804524e-02","shared_alloc_j":"3.268175e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:efbb8d25a730016e7141c8a4385a30cc196c5b7f9d238b06f6213360fb3a4888","served_from_record":true,"record_id":"r71","record_hash":"sha256:e6cede6feea99f953bb7617c1b457e0bd9cfe84fdff8b68ed36394aa9e7fc6a0","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":91975},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836154e+01"},"chain":{"prev_hash":"sha256:bbb379b8503587c46f277030ade10c141654e292e3e383a5e2baa7f6b450ec47","receipt_hash":"sha256:a716f0c01a09964dbc78f5487b49c6a79280a3df4b4daed343105e2189494298","signer":"ed25519:bench-node-01","signature":"00e9a6ac8406a97b4880c0b3623b184a35734ef2c904e7df20ee409b3387463bc47dfb454895f45806f19f26c08af6a1bfdc3b8f8d3e214cc7956d54dbedb60f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:28063e345d31fe22c25d892b05f78872138e6b052a38ac53ea651db8adca495f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:c5acc45aa021fd76b694dadbc084a3aa9a1107f5957329ada1989fd9a13fd849","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.735409130588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.054586e-02","shared_alloc_j":"1.684862e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c5acc45aa021fd76b694dadbc084a3aa9a1107f5957329ada1989fd9a13fd849","served_from_record":true,"record_id":"r119","record_hash":"sha256:6b7084145defec11a27bbed72264c0f691eb1c3a8766ba9ffc91fdae40296056","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":95404},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.807380e+01"},"chain":{"prev_hash":"sha256:a716f0c01a09964dbc78f5487b49c6a79280a3df4b4daed343105e2189494298","receipt_hash":"sha256:66bfb563454b92c9b1bf621c4160f70ece639a8dcf6db0dfca2e886f9cd27279","signer":"ed25519:bench-node-01","signature":"162f630f7cb6d5d8ecd5f5704dcbcd8d504f8d29e8133d7e7911b3ce535f6336325c9ad57bbfe2e5cb89bbd782f432ff3106c2f2eb21530f6032e523eaf1770b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:53eb09a847342c000b59bb4fd67994f9245558b2661fd7c00ffa8fe45a47a531","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:3866c5ef26acc8497fff0ba0c7f2411032b993655623b854d09ef997309076c9","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.401322460588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.081519e-02","shared_alloc_j":"1.360506e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3866c5ef26acc8497fff0ba0c7f2411032b993655623b854d09ef997309076c9","served_from_record":false,"record_id":"r197","record_hash":"sha256:a9587af204c6f3a521c8368d0166284790a3c1dfa4e6af1ac5cad821d07db907","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":104210},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.798094e+01"},"chain":{"prev_hash":"sha256:66bfb563454b92c9b1bf621c4160f70ece639a8dcf6db0dfca2e886f9cd27279","receipt_hash":"sha256:f42d3731a6c99f52ed1871a5b6b1a40278483bdbfb03b214176b6882c7224983","signer":"ed25519:bench-node-01","signature":"6000b05b74a9b4a21c834381d5d8cacd989579b52c46eb3e9e10f83c1f1005397028159bdb1342bac226cbd3366f1214e86d1e0aa25a455324af5965cb32f200"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:69c4582a3337407b531b88c43a844e3f8041e4c7e446463f9df6396b5578994f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.529333770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.610485e-01","shared_alloc_j":"5.368284e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857707e+01"},"chain":{"prev_hash":"sha256:f42d3731a6c99f52ed1871a5b6b1a40278483bdbfb03b214176b6882c7224983","receipt_hash":"sha256:a8edfafada7d79c32014d741cd8e235908cf9fdac516e021660dc7628851308f","signer":"ed25519:bench-node-01","signature":"86315d29b0e5cbe1f30a94b23285a3e116a077df51fce7746b53656b99d7a46343acb2390858e453838580ced0cbeb8e6c0eab68174ab08ba6641b218fe2e700"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:dfb92445018fac66b705134e3738defc148d27e48100e487bea4793ccd94e2e6","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:b5166dc9434ae553a99bc73fc4c5eff59caa50ac572d538e05455c4f40710854","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.264130470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.241979e-01","shared_alloc_j":"4.139929e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b5166dc9434ae553a99bc73fc4c5eff59caa50ac572d538e05455c4f40710854","served_from_record":false,"record_id":"r198","record_hash":"sha256:b90a7016e1efd8b5896062d62c394805f30d5be1f7aba2c5d26213e5576ed571","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":104369},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846423e+01"},"chain":{"prev_hash":"sha256:a8edfafada7d79c32014d741cd8e235908cf9fdac516e021660dc7628851308f","receipt_hash":"sha256:a39d7aa4ab2929205c40006eaf079effc52b75bb21a67cfdfada6b9787321155","signer":"ed25519:bench-node-01","signature":"6d9c46c04259672b5e4bdd5ccf04dc49523a9e4b0afdda7984f1777eae42a65bb2ff3fafc17d67a71258e4ced86285628af5d15db0f031dff4333f3ef89ee10a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f43bd911d0806f78e56d1dac3405f64161faf4fdf7ceeecabd03578776c986b2","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.997557970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.164337e-01","shared_alloc_j":"3.881123e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","served_from_record":true,"record_id":"r101","record_hash":"sha256:423f6097e57e4c77557b0caed44714a3b731fb972ea1da097ee6162150ae2cb3","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":93972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843619e+01"},"chain":{"prev_hash":"sha256:a39d7aa4ab2929205c40006eaf079effc52b75bb21a67cfdfada6b9787321155","receipt_hash":"sha256:c9367c8db97a4a4b3cb8e81f95f3c511a9e3e8f14971972bc103db95c0cac0e6","signer":"ed25519:bench-node-01","signature":"36670effcc0f38aebafdedbfaf3e9c04d95824cadf56c6090fe6015072eeb8c38cc703847ecdf184ac7735a47bcb382f16854a6898d2c922baa9725f1c386a0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:594038c4ff7f3add4a379c8efc02492498eb35822c28fe99b87283612ff446d3","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.140585590588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.147332e-02","shared_alloc_j":"3.049111e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","served_from_record":true,"record_id":"r114","record_hash":"sha256:11b74bcd9d0099b86cba50d647a39fde7bbd69fff8ab977726c7de08af14d90d","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":95088},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833141e+01"},"chain":{"prev_hash":"sha256:c9367c8db97a4a4b3cb8e81f95f3c511a9e3e8f14971972bc103db95c0cac0e6","receipt_hash":"sha256:f12f86fe2b3b767c3fac6f64df24ad5186496c9de41ebe6cc729981730af5781","signer":"ed25519:bench-node-01","signature":"bf318d3fef402107f6b924c6859549788aa279968446e3e4c3e810ac91c141e8325219548f7af3ccf13929a53c25522ed1d9d9d0e6d445b01ffc823af7874108"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ecbcce6767b082a2332679aa9073b0f9e588c95165046a59d5ce91ce18b357e4","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.057845870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.181896e-01","shared_alloc_j":"3.939655e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","served_from_record":true,"record_id":"r86","record_hash":"sha256:f4c7f1ad01d2d813ad75c00cc45d65ed4551e2d7454324699de36187f53cf52d","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":92951},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844270e+01"},"chain":{"prev_hash":"sha256:f12f86fe2b3b767c3fac6f64df24ad5186496c9de41ebe6cc729981730af5781","receipt_hash":"sha256:f6efffafc8b8cd15ebbdf3f4d7446e3b8efe41a648ab347ec1d37e34c26cddb2","signer":"ed25519:bench-node-01","signature":"39ff6bfd3ccdf11b203c4a6e9b71e1bb00ac13a5a781164985b863acf1fb295bddcc3f167600833f2fe8065849b74a58d6cdc9ba6a687d6853b28f9ad1d60c09"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:dd5639613c652b76669e37586d43040a4b8d1d678e65038b0dae34115b2febfa","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.269802200588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.523693e-02","shared_alloc_j":"3.174564e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":25,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834892e+01"},"chain":{"prev_hash":"sha256:f6efffafc8b8cd15ebbdf3f4d7446e3b8efe41a648ab347ec1d37e34c26cddb2","receipt_hash":"sha256:58fcb1ee2d75f6ee0b4314984a25be969fd694a0a5875f21e8d6bedab648a9c6","signer":"ed25519:bench-node-01","signature":"c6831cb6c7dae18d242f6268b2698825dad45f836b6a9a65077d6723ee442e984ed37ebd22c16d62df3ea57885988f489e101a0ffa1979aa4fb801ef07e45909"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d9a0a1b1648ac092e2bdbc326e200278d944a611d932ec1be52bb98b1c949222","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.863434010588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.427474e-02","shared_alloc_j":"1.809158e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","served_from_record":true,"record_id":"r16","record_hash":"sha256:3227d5f5cdb47b0c636c60fce42fed733f0e84ce2c21552a8ea3164c96c9d710","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":87438},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.810471e+01"},"chain":{"prev_hash":"sha256:58fcb1ee2d75f6ee0b4314984a25be969fd694a0a5875f21e8d6bedab648a9c6","receipt_hash":"sha256:e2a97d0704378cfda1ee1f0089a890042a139e1a904908dea20a03e2c2afdaea","signer":"ed25519:bench-node-01","signature":"32780de6d1404831e3b97daf44321de1267ffddbbd617ab8cae51c0099f49bab08a3bad714f5908f6fe3e67a0fdf168ef957c86746d60d7dd2fa25687b8e7a02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1e31f9cd69ccbcd433bb2249ec569760db1c2d04af4cc82eca310c826cbfb37f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.242835970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.235777e-01","shared_alloc_j":"4.119257e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","served_from_record":true,"record_id":"r140","record_hash":"sha256:9f4054b5d15ac16ce0b79b780e5d8bf8b428262e4fd2a332ec366dce24f89c41","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":97569},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846206e+01"},"chain":{"prev_hash":"sha256:e2a97d0704378cfda1ee1f0089a890042a139e1a904908dea20a03e2c2afdaea","receipt_hash":"sha256:82e42db190514b6f8ae9902e12ca5bc217f042e4b1b4f931518fe29dac208007","signer":"ed25519:bench-node-01","signature":"7299a7fb78e8a5978a2ba8bcf8f3d478274e170745096b2aae9b71e46001e2fc3381f186c95f008aa6f6b5343534604073a271c3c5f69c67c680c2e680540f0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:1aaadee4e97f1ca7d611d7a590251c22c61faa64a8aab4d8bef588c367cc759b","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:bba012d917b3f176c43c75c1babeca7aed6998ab35cfaa4885e98ab27b59ad9a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.331857070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.261705e-01","shared_alloc_j":"4.205683e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:bba012d917b3f176c43c75c1babeca7aed6998ab35cfaa4885e98ab27b59ad9a","served_from_record":false,"record_id":"r199","record_hash":"sha256:8d7f87e7a41047265d2e6447c0d8a25de641b35df2e2d21646634d01125516b6","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":104772},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847107e+01"},"chain":{"prev_hash":"sha256:82e42db190514b6f8ae9902e12ca5bc217f042e4b1b4f931518fe29dac208007","receipt_hash":"sha256:57b424e9e79ec84e60d64702e93b82dc1b45a2d4478a22f3ecbb992aef479591","signer":"ed25519:bench-node-01","signature":"0ddb63d51cf85de9b0dbc0bd754261107d965197a10263a3c8b4e29dfab696bea235f177772a9d459fa845c6b930a8d3898f0e937f796612eb12b3d718ee5201"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4ba61d490be21474358d8bd4d5eaac40cd2251600e9a73fe8db8f4a8248dfa49","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:3456548300328438389e70210979fd21b35f4518a9be8525a35e94da571b0bc0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.551039370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.517580e-02","shared_alloc_j":"1.505860e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3456548300328438389e70210979fd21b35f4518a9be8525a35e94da571b0bc0","served_from_record":false,"record_id":"r200","record_hash":"sha256:e101abd24d9ab038fa0aad937b49cf50562849e82002bbcb6d20322b2d9a91d5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":104797},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.802502e+01"},"chain":{"prev_hash":"sha256:57b424e9e79ec84e60d64702e93b82dc1b45a2d4478a22f3ecbb992aef479591","receipt_hash":"sha256:2e96578d06270fa623bfdfbf999bd2ec8d94672d84d38724d8158324f015ab1a","signer":"ed25519:bench-node-01","signature":"27dc97bb518f78ff89332abaf564a9c8be3635ae1ed482b0850537dcede5e4b6e05550b922a660edefbf20fb5de50a969c3a0deeb49f36b6d4db48147e492102"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a3be2ef2d734765f7ec6e5156fa0626eaf458d195872cf7ef4d197949f07e120","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.296656350588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.601908e-02","shared_alloc_j":"3.200636e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":26,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835247e+01"},"chain":{"prev_hash":"sha256:2e96578d06270fa623bfdfbf999bd2ec8d94672d84d38724d8158324f015ab1a","receipt_hash":"sha256:41d4e048da16515367b6b4924da77a4805c7b3a762d61929fcb3802923606099","signer":"ed25519:bench-node-01","signature":"b8a333036d23263c9c605ef2c985651366a039a29ad329b4434e686879bbd1dae544fb49f605d143969fba08f8eb621027cbdbe2bd68250ce6d611bc9a029e0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:89ba8926516f39115241a8d71c07d26abb69582efdaf991654262c852f903c57","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.620412370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.345751e-01","shared_alloc_j":"4.485836e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","served_from_record":true,"record_id":"r51","record_hash":"sha256:ff62c7c2ef96f95abf4dc1e600aed41d27c193ce5689fd8f868b7727dcade1a2","reuse_count":6,"derivation_j":"1.058824e-06","valid_until":90311},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849908e+01"},"chain":{"prev_hash":"sha256:41d4e048da16515367b6b4924da77a4805c7b3a762d61929fcb3802923606099","receipt_hash":"sha256:d117a46c65ea4ea6ed461deef91be65e0e1b5f0c11242d8ebd147f69c6ba1505","signer":"ed25519:bench-node-01","signature":"4ba13b6f1e67c92dca5ac818d5fc7bf6acff94263a9a252ae3cab756e7764abebd4388ff15dbde3166942bae44b76816b8c95b6a2cb20deae8fefbe4f3125d08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:10b29af87918d431a30f847c06ec5cb0d4447240d79571ecd8b58e82b5a8b074","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:aa3a99583306b739abdaacd39acd1f489f74cd82d0c356afe5edf2662711b7a6","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.492233170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.599679e-01","shared_alloc_j":"5.332264e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:aa3a99583306b739abdaacd39acd1f489f74cd82d0c356afe5edf2662711b7a6","served_from_record":false,"record_id":"r201","record_hash":"sha256:89794de1f433bbcf6a3a57b0d7a7bf8c10c7369c10c1032cadbbf2fc06c6c24f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105014},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857415e+01"},"chain":{"prev_hash":"sha256:d117a46c65ea4ea6ed461deef91be65e0e1b5f0c11242d8ebd147f69c6ba1505","receipt_hash":"sha256:b85f43b5b370e429ed29beea68f9b6c3c850e07f2cfd227820d40ccd213d7a15","signer":"ed25519:bench-node-01","signature":"3d0b07ccf6f63c146661c9509fbf74bd8a612bed12a64b055ea2394038d5761017b18a8fef5144ac33d3bf601879e8a924301de820d18d57a4780d42330ac40f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:53ca7eceb520eb67510ec77c21001027acfaf8c2272f17b0474f2b6cd46cf847","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:6859d67dc7b9683a4f1fd9f5b965aefd8a22140e5fde07807360dc5e54dc6198","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.526457270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.609647e-01","shared_alloc_j":"5.365489e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:6859d67dc7b9683a4f1fd9f5b965aefd8a22140e5fde07807360dc5e54dc6198","served_from_record":false,"record_id":"r202","record_hash":"sha256:1d775bdc298dd7321ee6032a2a8a0ed3c4adc6d72767d47e7368e96f78503e8b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105103},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857685e+01"},"chain":{"prev_hash":"sha256:b85f43b5b370e429ed29beea68f9b6c3c850e07f2cfd227820d40ccd213d7a15","receipt_hash":"sha256:c4e3ae0a15116658daff70f43b8253cd9ca87d92cd2c589bea9c8b3be21c2fcf","signer":"ed25519:bench-node-01","signature":"b5ca58dbc857ad5449ac5a3eee37cceede2e699359b1bd1e248fe5d04c332cd30b590c0bf66f0e16990b7a1730a3cd56c62e42c493c23d6e5723e1d7c517150d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8b14699363b2306e8426b387033bb97568afa6c0ebca03c7766550ef96daf12c","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.278335740588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.548547e-02","shared_alloc_j":"3.182849e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":27,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835005e+01"},"chain":{"prev_hash":"sha256:c4e3ae0a15116658daff70f43b8253cd9ca87d92cd2c589bea9c8b3be21c2fcf","receipt_hash":"sha256:d18737ddd18637d4b89982ac96faaa578d8956abfe0c943e238b42749106d467","signer":"ed25519:bench-node-01","signature":"cf0e0d95a29fbef0dc54fc133bfe86d5679047b0d78aeaa97fa8271c81db888bfc5a3ee20b64f40f1398214de1bd0775bec5bb7bc633a9bf893a205169675607"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f0d339960d39824881b395133e2e04bd439554107579f8f3e79b07084184b250","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4d67eec84284925c3bb3e94c48c11e1e415e5b4bf6c82676bdb63f70afc5dbdf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.480818300588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.225673e-02","shared_alloc_j":"2.408558e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4d67eec84284925c3bb3e94c48c11e1e415e5b4bf6c82676bdb63f70afc5dbdf","served_from_record":false,"record_id":"r203","record_hash":"sha256:a7fbe335dff33f69fee2d2e8815ea76f439ac151592deb654339ff7695d5290b","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105196},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822899e+01"},"chain":{"prev_hash":"sha256:d18737ddd18637d4b89982ac96faaa578d8956abfe0c943e238b42749106d467","receipt_hash":"sha256:c490b5ef0e7a75372561cebe61b6fff970d247311a86156318e93d614c09955e","signer":"ed25519:bench-node-01","signature":"d2337aeddbbf411aad3fc7499a105885beaea753c6b3fb5e4a739a4cd3f372bdf758a5c9d6cd4f95a31d1e5bede1072ef115095fd3170595fb331104db502a05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f1bcc6f4570e465801a3cf1e45a6840825713d8ece59db29822c11bfb8c2c214","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c056ecb36876fe2bda74fc48b7a32f777323cbaf6519fabddbf28ac0a87c2b68","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.263496540588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.592697e-02","shared_alloc_j":"2.197566e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c056ecb36876fe2bda74fc48b7a32f777323cbaf6519fabddbf28ac0a87c2b68","served_from_record":false,"record_id":"r204","record_hash":"sha256:7eade093335c3d832fabe272cd4af5e8030103d1d890d55ae6297f10d0a4a812","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105233},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.818918e+01"},"chain":{"prev_hash":"sha256:c490b5ef0e7a75372561cebe61b6fff970d247311a86156318e93d614c09955e","receipt_hash":"sha256:996182d85fbcbe25abc6d728f605bc8a12243f07b719ad9142152bc2d7ec6f51","signer":"ed25519:bench-node-01","signature":"3af95dfbc04aad5310ccdcbbefd165783bbbd42dc2dd40f2ea2b421e08217ac53549f84beed39780097ec2a2f2bbf00bdd23e7650ce1dcf104c5af8f6a932104"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bf56fb6ed84af67291e4f6294a37e5257d5b29294dbf6d324994dc8c0eb6115d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.641929070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.060755e-01","shared_alloc_j":"3.535850e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":6,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839573e+01"},"chain":{"prev_hash":"sha256:996182d85fbcbe25abc6d728f605bc8a12243f07b719ad9142152bc2d7ec6f51","receipt_hash":"sha256:afde0c8732f9da4f2585434c33dc0aceafbeef0289561cbc006a7bd512a611a8","signer":"ed25519:bench-node-01","signature":"4fa6e3a799e35130c5a47e2f5a04e2a2e81396f29719e54acda2fbfea3e10361c734588a27cd4a52b9853d1f656159b8128cd9bc29b44d34577ba8aba2cb1403"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3bc72014f94c3a6faa07f10896081aed31a85111bdedffbd42db8a7f1fbce6d0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.296707860588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.602059e-02","shared_alloc_j":"3.200686e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","served_from_record":true,"record_id":"r121","record_hash":"sha256:68c00c9152f36db8ef49fff21c928ac679e7a92a748171b7d820e16b09fa9a05","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":95619},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.835248e+01"},"chain":{"prev_hash":"sha256:afde0c8732f9da4f2585434c33dc0aceafbeef0289561cbc006a7bd512a611a8","receipt_hash":"sha256:e0bda176bf05ebe4682194fa943aa357983953f11db2ebb4e6361583b4a29467","signer":"ed25519:bench-node-01","signature":"e71fddbbcb72d7e4854ef996021d431b34bf817644c03f6c231e35bf94fa703115f9b2e559ff6b75f1c02a6367e9172009c0f2e5f25130996832be5843e81d08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:63937bd0be420a0f5e3c5b07000f66232aa99d6142c3de6468fc4edd103de4ef","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.651352570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.354763e-01","shared_alloc_j":"4.515875e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","served_from_record":true,"record_id":"r32","record_hash":"sha256:15137fb9bb5c928e449c8d3e6b50b9ef1791b583f2bd04555aaf3a153e617bc5","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":88540},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850198e+01"},"chain":{"prev_hash":"sha256:e0bda176bf05ebe4682194fa943aa357983953f11db2ebb4e6361583b4a29467","receipt_hash":"sha256:c587015cd4af86c0e39bda3c3df43cb8e1450f4d08222bcd7e26d370f7b43198","signer":"ed25519:bench-node-01","signature":"e8324fc71fb9855a6a209f773cc799159792acee45e7dae935c3d348c13cb21e84776815ecf4090bb1fc34722c7e7220d683930de8b41607dfe786a64fc9e105"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4fd7df8c1e0ea79eb259a1656a58d60930e21eba16d3b8ff1fb17d478f8490d9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.981181370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.742091e-01","shared_alloc_j":"5.806971e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","served_from_record":true,"record_id":"r149","record_hash":"sha256:5766de1b0954020a4a5f70be2b1e114504615839e2365bda98f7b248fac792b6","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":98338},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861119e+01"},"chain":{"prev_hash":"sha256:c587015cd4af86c0e39bda3c3df43cb8e1450f4d08222bcd7e26d370f7b43198","receipt_hash":"sha256:c9ef3b940f5b12c1876ae70c8c19b073a17541ca49fdea13709985e99cf0b65d","signer":"ed25519:bench-node-01","signature":"8e777dfe5144a0b6ffeab4fcc4308320643529452ec6d1893a9922c55e8665a9fd5063a28589cd572f0c352d3a1aab90d73521e40c36533c12dd99dbeccf8f03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7d82a022243910a65e5e33afe3cfd4362b4d0273c6786aee944d1c3653f45697","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ad278d6c144d6ba6abe0909ec13f4571697719ce7fc2ad60ad49fcd7a7a482af","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.353131470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.267902e-01","shared_alloc_j":"4.226340e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ad278d6c144d6ba6abe0909ec13f4571697719ce7fc2ad60ad49fcd7a7a482af","served_from_record":false,"record_id":"r205","record_hash":"sha256:d643090525613536443e5203b6a3ac0bd59f2203ab2d995b188f3c70e4eb8b05","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105588},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847320e+01"},"chain":{"prev_hash":"sha256:c9ef3b940f5b12c1876ae70c8c19b073a17541ca49fdea13709985e99cf0b65d","receipt_hash":"sha256:717facb0ad579753d1968c02e6227c598f806259faf38967d5d01a403a373f04","signer":"ed25519:bench-node-01","signature":"a67c6d4f4f1f76e7a2132d841556b94fe16ee3261389b85d638ccdeed562cad26e1708a4d4dc977c3016f95a1b74cff0a67b6098746d4275cc464208b0b5520b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:bd9c9a4d9242695b8792f876d1359576498f21496d359fe95184d5b64387012e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.679718050588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.892378e-02","shared_alloc_j":"1.630793e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":11,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.805964e+01"},"chain":{"prev_hash":"sha256:717facb0ad579753d1968c02e6227c598f806259faf38967d5d01a403a373f04","receipt_hash":"sha256:16fc316194d05e1f7bbd52d1adc515a7d54897a7542919a6fd044c529a374d06","signer":"ed25519:bench-node-01","signature":"5b3f62989501909cd20da88c08f67b723c1bd537e5c03387882634bbe7f6a1b6691ed1a9f5221dabf23831a698013df93b8aad05c5aab21653b8c0386805fd0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f0f35ed2927d4031f199873552eaf05e4a41e8fed98bc22dc4c8660f5b5f47f0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.143795770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.789455e-01","shared_alloc_j":"5.964849e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","served_from_record":true,"record_id":"r79","record_hash":"sha256:bc09a0b7aa34a4163a95cc14cba017fc4631050085f0f7aabbba0fffe37d0c86","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":92461},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862284e+01"},"chain":{"prev_hash":"sha256:16fc316194d05e1f7bbd52d1adc515a7d54897a7542919a6fd044c529a374d06","receipt_hash":"sha256:a46186e227d9a172a318df90db9801a919224aa4abdd3a4961a8f8a67903b3d4","signer":"ed25519:bench-node-01","signature":"5b3d6559c27d82421d6ce4e583b0d26c88230e3f2d9e15e1838cafd45314cf16b59d5d85433146cd50df121f39a66a606f67fa714c007108cfac82d058f47d01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:6af57039ad49eae328e0542af69b0eb10fadbb807d1230b4b7b54c7401288f19","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:01322a812d2397397876595f6fc2be45dfeeed256b674f70accd6e3354059fb0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.669593870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.068813e-01","shared_alloc_j":"3.562709e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:01322a812d2397397876595f6fc2be45dfeeed256b674f70accd6e3354059fb0","served_from_record":true,"record_id":"r192","record_hash":"sha256:40484c28a799866871a4cab4dbe55a3d6fd9ec71b583e6c548b4598113b0ba5a","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":103070},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839902e+01"},"chain":{"prev_hash":"sha256:a46186e227d9a172a318df90db9801a919224aa4abdd3a4961a8f8a67903b3d4","receipt_hash":"sha256:03ce946c635912437cf8bbb4d397843a9e01775833cb70776b58dc886de403f6","signer":"ed25519:bench-node-01","signature":"25c5d3d2e1bb6bbeeb9d52d5aa43a16db97d62021a1f9c5b1f8cc99d09459b732460d418b9a9520dcbc45646f3055bc6179829b7d7c9140d1ed7cec5bf74bf05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:765b162abb63eba8cc676cfa56db5fafc35920dc218d1624f313acac12b9579a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.366997930588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.894166e-02","shared_alloc_j":"2.298055e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","served_from_record":true,"record_id":"r101","record_hash":"sha256:423f6097e57e4c77557b0caed44714a3b731fb972ea1da097ee6162150ae2cb3","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":93972},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820860e+01"},"chain":{"prev_hash":"sha256:03ce946c635912437cf8bbb4d397843a9e01775833cb70776b58dc886de403f6","receipt_hash":"sha256:e60a52205a173601a117c1f47c2d593b5519e0f7001726161387dce8aa01f1e9","signer":"ed25519:bench-node-01","signature":"fe53d033a420ff118d336e02ad71375524379dc59bc9ef06ba2f24c66584bbc063225eed52fd2f1fa8145ee4ffd151b047fe6cb85f64e54593e47647261d4809"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2dd4584110d7d9cb120224aab2f7db890e87d86e5cf4c2263b83d43cf1b2a9e0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:88c439bb9d426fb9727a854109492c31b2cbe45e6061fb213c1131f86d0a5280","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.678305770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.653875e-01","shared_alloc_j":"5.512917e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:88c439bb9d426fb9727a854109492c31b2cbe45e6061fb213c1131f86d0a5280","served_from_record":true,"record_id":"r124","record_hash":"sha256:8810d4c5f141497c4aba7d3a9b00ca77492003fe0e235e6d347a73b851966316","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":95854},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858862e+01"},"chain":{"prev_hash":"sha256:e60a52205a173601a117c1f47c2d593b5519e0f7001726161387dce8aa01f1e9","receipt_hash":"sha256:274a546b0e1e2607020783979ea4c9c4f9d991b307eb25d23ea482ab8defb581","signer":"ed25519:bench-node-01","signature":"1eb68b4a61841e312170d95139b4de76abf8c5b18e7691789be2baf579f96d35d6b5150c71aedf3d362691d179e2f033722fd10b533d3489ffa58af9d4fc2206"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:627d19228a11c930cf96ccbc8c67a1fc22c60af7cd69a80fa129279e46adc0e9","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ca5a91e5d506197e8fd03430940a49a994c86f3b3a599cc7e4a9870d1e7d01af","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.389808770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.278585e-01","shared_alloc_j":"4.261949e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ca5a91e5d506197e8fd03430940a49a994c86f3b3a599cc7e4a9870d1e7d01af","served_from_record":false,"record_id":"r206","record_hash":"sha256:19456274dd21cd7aea78df75b7ec9ea8c08a0d61a1ea01ffc3e53e30bc1df55a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":105975},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847685e+01"},"chain":{"prev_hash":"sha256:274a546b0e1e2607020783979ea4c9c4f9d991b307eb25d23ea482ab8defb581","receipt_hash":"sha256:13ef301e9948a1db7ede4091e322e29362a9d21b0da0f0bdcc790c69837e4681","signer":"ed25519:bench-node-01","signature":"7da33a09de90fafe6a07ee17a86a56d9b088b645887acac914cf986034dbaa73dc69d08bd8b37da01c6987b5aa2aa7ad77d5358143528431896d1672b84d6e04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d0edfc3c0ca2a4a3673396727afdadf2df652cd030b332bc45b698fba64e8d1e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:22769860872a040f92d81d780c3ead33f2c4c4693a6cbead116dbb27f5fa9744","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.103564310588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.039504e-02","shared_alloc_j":"3.013168e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:22769860872a040f92d81d780c3ead33f2c4c4693a6cbead116dbb27f5fa9744","served_from_record":false,"record_id":"r207","record_hash":"sha256:5a6bb37262aae8f484c97f8c237688921af54a7e9327e0017efb559f1fefb32c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106025},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.832626e+01"},"chain":{"prev_hash":"sha256:13ef301e9948a1db7ede4091e322e29362a9d21b0da0f0bdcc790c69837e4681","receipt_hash":"sha256:95ee33af27673451061638381eb31f6dc11c19da333d44e0bae80436daa4f054","signer":"ed25519:bench-node-01","signature":"ee5436cf82ad91d93db708e4951ac56af9f568a2c24577ef6eac4494909ec017061d0377d81d025b4a5af2727d317da1a5cccec32616b39b8e6968e640c7c50a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a0b574a8568cb82688825a6270808554d2bcd4f03605bb237ab655dccbba1f98","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.462801570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.008583e-01","shared_alloc_j":"3.361942e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","served_from_record":true,"record_id":"r16","record_hash":"sha256:3227d5f5cdb47b0c636c60fce42fed733f0e84ce2c21552a8ea3164c96c9d710","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":87438},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837383e+01"},"chain":{"prev_hash":"sha256:95ee33af27673451061638381eb31f6dc11c19da333d44e0bae80436daa4f054","receipt_hash":"sha256:3e60165b7d96b77fd8ca97de1b48e60f7f6ee3c967f016b00f969e180baae367","signer":"ed25519:bench-node-01","signature":"7232c316b0707c03ed605c6d2cff81c7b55c395dd5725fbabc2010a2ce559a7712aa5ffd75fd7e96236334944a078fa7759ee9bfc28fb27c98c5bf2eb39d250d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:586d3ace0ab276a1ebe29001a863abc58c0beaa3ee90ea129929916740038935","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ae1bd322166290226b5e955743760d82a71c20a05d416ba0d87c429bf3b0e67c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.732154770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.087035e-01","shared_alloc_j":"3.623450e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ae1bd322166290226b5e955743760d82a71c20a05d416ba0d87c429bf3b0e67c","served_from_record":false,"record_id":"r208","record_hash":"sha256:4cf11433ab6977a2ac8947a58a09cceeac5185eae933577c35ed820cf35f9858","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106142},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.840636e+01"},"chain":{"prev_hash":"sha256:3e60165b7d96b77fd8ca97de1b48e60f7f6ee3c967f016b00f969e180baae367","receipt_hash":"sha256:1256d894198c42954da02523af902159994c1fcb6a64df31fcc752bec03ce6d3","signer":"ed25519:bench-node-01","signature":"71b688a39df8836042bd84b1a298142343f1f20b1158f96e115064d6c6216450dff85c04b288d3ab7ab285637593432d88130973d57d880a24981065d06c1304"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7b346038ff8b127e05a7eafbb848ddf5cab0c6b61a376356e6898f5c14fb1aa3","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:271f588ed020b0df063f75c100e10889f916ea364da298472b41f291ce3aced4","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.045886270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.760937e-01","shared_alloc_j":"5.869789e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:271f588ed020b0df063f75c100e10889f916ea364da298472b41f291ce3aced4","served_from_record":false,"record_id":"r209","record_hash":"sha256:2b89900c783e7267aa332c6004646ff104ee4665364f3348ac32d22a6d65b3c8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106239},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861586e+01"},"chain":{"prev_hash":"sha256:1256d894198c42954da02523af902159994c1fcb6a64df31fcc752bec03ce6d3","receipt_hash":"sha256:2114f3b6f6484d680518b95b25ef02bc9a4784ff1f1895172ad6fbe9de4a907b","signer":"ed25519:bench-node-01","signature":"4cefb750a19d0971b1afd65b6b50a664324968c338f0f6bcf5442f19b90a051d79d2c32dd27f86ddb1024496fa6b88a4f933cacdc6e1c6cd1f750d61567e7a01"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4b7e14ece0251715e0899d772a7809f9bfb974c1dd72976d002b9c604f57cc57","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.552110340588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.520707e-02","shared_alloc_j":"1.506902e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":true,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.802532e+01"},"chain":{"prev_hash":"sha256:2114f3b6f6484d680518b95b25ef02bc9a4784ff1f1895172ad6fbe9de4a907b","receipt_hash":"sha256:c8b60e4aa33e13c744c685fcc679254c887a2beace236a06a92ca68f71e9b9e8","signer":"ed25519:bench-node-01","signature":"7a23224e9b7baadfe9565f26c849e99cfe98ced30ee7e3ec47632e3e294d8e837fc8f2a0a357d15ef706fc4d3272881f892a5ee5ab97b1dbed31c0e4944fab00"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:985b6c5d1f66e4e443fad3f8e6c24a37cfc9fb96156e47dd70b75cf046528970","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:e6c836824528ac426cdb6b50379dc03e4effab0776267dceb4a9467298b81afa","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.137637530588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.226126e-02","shared_alloc_j":"2.075375e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c836824528ac426cdb6b50379dc03e4effab0776267dceb4a9467298b81afa","served_from_record":false,"record_id":"r210","record_hash":"sha256:eae3e92bc62f3b9f7bf2a1fbfe14437a480490257a1de5c1360f27af17d456c5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106299},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816433e+01"},"chain":{"prev_hash":"sha256:c8b60e4aa33e13c744c685fcc679254c887a2beace236a06a92ca68f71e9b9e8","receipt_hash":"sha256:7b7a67f716f8850bc6afb814f42251ac90536001f6f4115b4cf51415847db5db","signer":"ed25519:bench-node-01","signature":"2a5ef343b6cacc16fbcad41c0e386de124a6089b6dd786257044ba7ad41738fcc5c4b7dcb6b811e750de1598cb641e0e0dc1e205421c7a00d70c230d0d1e3201"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5853cdcfcd50e530e2d2018b98430a34d410fd5d0d9cfb952660db407163c7dd","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:60819bd34d50fbc46bd50d2e6a28d1071281bcc7ba2a6e42827c0b97a375501a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.681627770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.654842e-01","shared_alloc_j":"5.516140e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:60819bd34d50fbc46bd50d2e6a28d1071281bcc7ba2a6e42827c0b97a375501a","served_from_record":false,"record_id":"r211","record_hash":"sha256:326fe839fbc052fcbbaace0955045b8e9548d1b1a2367de71664c84292601155","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106391},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858887e+01"},"chain":{"prev_hash":"sha256:7b7a67f716f8850bc6afb814f42251ac90536001f6f4115b4cf51415847db5db","receipt_hash":"sha256:7e0b5c4862c35a83a5f73fbb27723402d7b9fff7f6a6aa2ef028c20d87a3b61c","signer":"ed25519:bench-node-01","signature":"314fdd9e1b8b2d0fdbbe9603b92a6eec28dce85f87006ec5baef3c0e2c92ca90fd6c3dfc0a6796fcd21a62b172e720a48a6338055a018f9732fecba805840b07"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cb3897fd8e52a29adc1bdbd0e774d7064158938f43f888350f0b83726db03976","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.278551470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.537442e-01","shared_alloc_j":"5.124806e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":28,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.855691e+01"},"chain":{"prev_hash":"sha256:7e0b5c4862c35a83a5f73fbb27723402d7b9fff7f6a6aa2ef028c20d87a3b61c","receipt_hash":"sha256:09943716255a456e2e32f439e274b5a21cdce347a22724e379acc9128f9f1ffc","signer":"ed25519:bench-node-01","signature":"941b354e2d07424d6ea793bb1753b99ee800df93f39c25cbaba473f87c5332bfe1c011fea69192c0930156021b323f64141170a93427bc4807d869998e3dae05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f5dffeabd904fbf7b2218b988a2e02c414e0ad157f1788133134d5ca73d12be6","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:3f46492cfe2688a378181ff75608c51194302a2ff04d9ef4bef928052ea3e3ff","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.889612970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.132897e-01","shared_alloc_j":"3.776322e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:3f46492cfe2688a378181ff75608c51194302a2ff04d9ef4bef928052ea3e3ff","served_from_record":false,"record_id":"r212","record_hash":"sha256:60ee6ef118725f54dbc5ef230f88bf30ffc27e8814c85b70966d9b57a47cdfe5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106539},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842431e+01"},"chain":{"prev_hash":"sha256:09943716255a456e2e32f439e274b5a21cdce347a22724e379acc9128f9f1ffc","receipt_hash":"sha256:3afd07081f179cc7d80e90c5a99c98d49b0b09c63f3f86ce70ea695e748aad4d","signer":"ed25519:bench-node-01","signature":"2405328c6e185f8d807327d7a72027d625ff16f0a9c8e1e039090941d81edf232cf39e7f4254104948b40d236a68f02744c747c0851f37fc9e4500e4e17dc802"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:35aeb746dfd7c0e0c35c2fa2d84adbce0a4771b5a6b7dc8a7637d833854f4f22","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:05f17fd121a463594b61b4cdcf207aaa369bbb2761e582ce36c12da3375fc3c3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.317045670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.548654e-01","shared_alloc_j":"5.162179e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:05f17fd121a463594b61b4cdcf207aaa369bbb2761e582ce36c12da3375fc3c3","served_from_record":true,"record_id":"r127","record_hash":"sha256:1e50dbf0ebd87cb9ea72df72adda520521f02f0b407b8a6eda9651b7dc8ee1ed","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":96603},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856007e+01"},"chain":{"prev_hash":"sha256:3afd07081f179cc7d80e90c5a99c98d49b0b09c63f3f86ce70ea695e748aad4d","receipt_hash":"sha256:b96fcf26510523c089ea1737092042abe42a61e8a6e95167de9695ec144f1f14","signer":"ed25519:bench-node-01","signature":"cc918aee03323b1c7665649e9916e1f4bf962ff33a522852f7e26c0247bbc60287458d64f3d59de831188a2d3a782628da6aa2d07ab86adc73ad90d2c6a09d04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:acac385cfabed1c0eb886d09cc6cc01aae8dfff590aaf902d1ff64f1aca385dd","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.837664660588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.265039e-02","shared_alloc_j":"2.755013e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","served_from_record":true,"record_id":"r9","record_hash":"sha256:6171686522fa52fe064eee25b459f97c1a8208bda25fd2c3d36bd73abdf5f197","reuse_count":12,"derivation_j":"1.058824e-06","valid_until":86955},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828736e+01"},"chain":{"prev_hash":"sha256:b96fcf26510523c089ea1737092042abe42a61e8a6e95167de9695ec144f1f14","receipt_hash":"sha256:4bc5b6fbdcbc3f9e0a20468bc4116f7f0c464dd2d0bb3f508d0b7d750c88c334","signer":"ed25519:bench-node-01","signature":"f16aebb12c01a1cc93f1f3103c3445d019a8df472bee0b21c9d552c9ae708179382e808a971b02b3ee1b9cb0687e124e8f3c6d75cf5695077cddc77507cef60a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ec49c2719bdd4f023fa4b137948a43bd2e7593baef6df3880ac9b0c5cbf26d93","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:1df06120a16dbc38a7af778f018c793b4b17283e0dbf1c7c323acdebc5cc84bc","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.668600700588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.772613e-02","shared_alloc_j":"2.590871e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1df06120a16dbc38a7af778f018c793b4b17283e0dbf1c7c323acdebc5cc84bc","served_from_record":false,"record_id":"r213","record_hash":"sha256:0d08b83c68c630d9a4052eb243a2d31fcf8d2fdcef073f254de81ee857a1c54d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106715},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826068e+01"},"chain":{"prev_hash":"sha256:4bc5b6fbdcbc3f9e0a20468bc4116f7f0c464dd2d0bb3f508d0b7d750c88c334","receipt_hash":"sha256:a062a7198fb36819fcf27bfb399bf645fb168e219336450566c6fe3259b8f356","signer":"ed25519:bench-node-01","signature":"b0606991b52056938db8ad41ad6741573db430596ec48723ad03f9357f5463db5bd8c327735326d9d7e5a787d7aa6e87024f30adc3e509824be907b92d385c0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9c85717789c1501dd068fb516395d8b35d68db5ff4b52d39cbf84417e2aa7113","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:356be222ab6f98d66c50ea3341980d4f6f2a51649f3224f583bfae59b72d0db0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.404356670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.282821e-01","shared_alloc_j":"4.276071e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:356be222ab6f98d66c50ea3341980d4f6f2a51649f3224f583bfae59b72d0db0","served_from_record":false,"record_id":"r214","record_hash":"sha256:a54be28cd844e5c6173e1a69e56ae5337bb2747b5cba91d01406258a70cf4297","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106786},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847828e+01"},"chain":{"prev_hash":"sha256:a062a7198fb36819fcf27bfb399bf645fb168e219336450566c6fe3259b8f356","receipt_hash":"sha256:bce6ab693afacbf8d71d1d1c5e164cc5a3f21dd4fd951b020ee92da97f7d9f6d","signer":"ed25519:bench-node-01","signature":"646f65ce2c944aa72c531ecaef25853bacad7c823618acc8f644a01149869145f0eee95edca04f433b22ab7c4414147f961e8bc6201d039614376a7c26e0430f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7b096c2357cb77bdd446d3c2c4477a5cd912b56ce11c2dca634e220d8e94bad3","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:2e6bcce24324c6413e1841fbf4ccf83ba8447651cd6d25ab70dc545d67dbecf2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.791519070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.104325e-01","shared_alloc_j":"3.681083e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2e6bcce24324c6413e1841fbf4ccf83ba8447651cd6d25ab70dc545d67dbecf2","served_from_record":false,"record_id":"r215","record_hash":"sha256:9d207aefa9a4ec9effb4b333b2299d142396ddfe0877209d6f6c30066f2ac439","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106847},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.841321e+01"},"chain":{"prev_hash":"sha256:bce6ab693afacbf8d71d1d1c5e164cc5a3f21dd4fd951b020ee92da97f7d9f6d","receipt_hash":"sha256:edb01f49ba461808a421b58b0d6a2edd0b139205cc67152bb429123a59aa26d7","signer":"ed25519:bench-node-01","signature":"918cc6a36d790b6805932b3a288036163b345d70749a653feb423c4aa907b6d33dbb36fa29721e2c9e76ea7eca70054d4ce5ee3a252782e84a30d594bbbb080b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fbc6d8929f97a24c3724415b546856fc7435045d517e94179058b5e790535606","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.641395080588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.693381e-02","shared_alloc_j":"2.564460e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.825623e+01"},"chain":{"prev_hash":"sha256:edb01f49ba461808a421b58b0d6a2edd0b139205cc67152bb429123a59aa26d7","receipt_hash":"sha256:dcbf091979e2a40a62a0b8d72f4f57fe40b2dfc2779784d49deaf64b935ac01d","signer":"ed25519:bench-node-01","signature":"9da98671045ea0d8868017362869a4216d53079335c769c24a0c98d4dee8e315d5c10ea2c3c2a2ebe284109bb129f1858ec0a823f46ef58dd7a90cc77da4d70d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f6438ba39960f050d31f7d498f806952831120de07ca6457ef8f344fd5299c69","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:59687be2cc0728f45be3c434049504371152803c7205e95ceed1d12f1291f24c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.621060590588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.721532e-02","shared_alloc_j":"1.573844e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:59687be2cc0728f45be3c434049504371152803c7205e95ceed1d12f1291f24c","served_from_record":false,"record_id":"r216","record_hash":"sha256:1a022d7f3acd2db563eda7d9e8eb6f06781f728325975d78045d9061257f383a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":106916},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.804420e+01"},"chain":{"prev_hash":"sha256:dcbf091979e2a40a62a0b8d72f4f57fe40b2dfc2779784d49deaf64b935ac01d","receipt_hash":"sha256:38fe7ca069578e453cd4b1065b87763747f41b4496f7c436323f9507d57cd2db","signer":"ed25519:bench-node-01","signature":"b21294c7fd94571805b9538326af2d640252f59a1b2ef3af83c47c91c34ece920e53e06c8ddc01e659a485d734d0faf448503a13cd65352b775e8887f3744109"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:99b727c2b3b62582e04148c583ceb7586d0813b17f1d2e0b506b574a8cd694f6","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.078132170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.770329e-01","shared_alloc_j":"5.901098e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":6,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861817e+01"},"chain":{"prev_hash":"sha256:38fe7ca069578e453cd4b1065b87763747f41b4496f7c436323f9507d57cd2db","receipt_hash":"sha256:72723c83f396bb16343f1efbb4d22dc10387cdc455f74898b14b1bd2bb4e65ec","signer":"ed25519:bench-node-01","signature":"1dae6e17d2847978ee7984d56c0f1ec5f8ff38d04acdc67f8bba77755fff853b17dce0aaca313a586ab0b894919b01edb7f4a3b0660eb1dafc04841aaecc0b05"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cd32dd96e4414485b5bace0b64d25dfd9d2678af7ca108f0cf0146aaba960bb0","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:c70c4f1cfbf7f3e80ab7fd116b69405e0071bb46bac6a04135010096235a99f3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.923646790588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.602852e-02","shared_alloc_j":"1.867617e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c70c4f1cfbf7f3e80ab7fd116b69405e0071bb46bac6a04135010096235a99f3","served_from_record":true,"record_id":"r161","record_hash":"sha256:0eee3e2f9d255e1ee0143cff2061e9ca2f87125468fc3d082061511ccd760deb","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":99443},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.811853e+01"},"chain":{"prev_hash":"sha256:72723c83f396bb16343f1efbb4d22dc10387cdc455f74898b14b1bd2bb4e65ec","receipt_hash":"sha256:38e3263c4e54c15bf048f369a3edca67ca043b9e4768a9148267588572586c1d","signer":"ed25519:bench-node-01","signature":"79b50b996ccae4d2c274933f96e9279b439bbba8c0d761a3a864d489e2cc7ed1880b0628d91cde5fea05b1c73f69680422b6ee2a62072f81500e22ed5929f508"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:2f5050106ea8a7f3998d0b6890947608fe1a00c33983a3dcac8286e7e84ddc19","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:7d4b002421433b01f9b0f76611fdfe099ed2e63b43deefa28e7ced76e9250528","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.185180490588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.364592e-02","shared_alloc_j":"2.121531e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:7d4b002421433b01f9b0f76611fdfe099ed2e63b43deefa28e7ced76e9250528","served_from_record":false,"record_id":"r217","record_hash":"sha256:bb6c7c697001ab7319d3ab4805f790d349ac7819aa2b0111a2fc4e53e86df0da","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107081},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.817389e+01"},"chain":{"prev_hash":"sha256:38e3263c4e54c15bf048f369a3edca67ca043b9e4768a9148267588572586c1d","receipt_hash":"sha256:88d774f6e72cc904da0182689c2d5c3452a37362f13240fe0b4f342d6851d3dd","signer":"ed25519:bench-node-01","signature":"c1ed0436cde717aa928d2b5eba6c40be6e4d686962ba80d1aaf12bf463b68abacb199ef1edd8053f923f726bda91494bb16fe6ac2ac04ca759be46b955228a0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:be9a452dd02de45d54183283a8b458e4403036711fa02142cd580f9a6f6e7b69","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:08823a9dcbef015dbdc1c8f4ff977078de0a188d0ec0e08e1dd7110840697ec1","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.451719970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.296617e-01","shared_alloc_j":"4.322057e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:08823a9dcbef015dbdc1c8f4ff977078de0a188d0ec0e08e1dd7110840697ec1","served_from_record":false,"record_id":"r218","record_hash":"sha256:a991e298adae8c66d805d3d89e32efdd54a3ce90c6c70ec908ff52d75a762ad9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107153},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.848293e+01"},"chain":{"prev_hash":"sha256:88d774f6e72cc904da0182689c2d5c3452a37362f13240fe0b4f342d6851d3dd","receipt_hash":"sha256:bde177b3dd0cb65da4a4cb010b9ccf68a52949fa7056bfba62aac573a3408d5c","signer":"ed25519:bench-node-01","signature":"17afe2d68f21ca03400e251b310e28262a0f4dcd2c3b8a992389639d7c71ce60212ec0e4e03e6ceb8a469565596d44f7e5eecf46daa5e05673ea8d9389d81d08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:14180123a71cf45e54858ddb05564a8803a784742c67df796f44c1970813cf39","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:a72d68eaba06ec4e6c963da103c9b0dc45ab7886ddc6983bfa2adda3429d7c9c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.026687370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.172821e-01","shared_alloc_j":"3.909404e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a72d68eaba06ec4e6c963da103c9b0dc45ab7886ddc6983bfa2adda3429d7c9c","served_from_record":false,"record_id":"r219","record_hash":"sha256:2b049211714704c8a911e2a2f5044079ee8b7ed2e7ba64eaa0b22014ca14d7b7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107218},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843935e+01"},"chain":{"prev_hash":"sha256:bde177b3dd0cb65da4a4cb010b9ccf68a52949fa7056bfba62aac573a3408d5c","receipt_hash":"sha256:45c95a668c2239233576dd12b0b7b76b3e249c16c595c456bfa742bbb0b784a0","signer":"ed25519:bench-node-01","signature":"3479814738ff42e0b773ce7328b172ce673c9ee7e1eb023f093dfa8aaa86abab777521c466fd12b4b81596acfd885406627e82537959450c4177837d51b44406"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e6f40b7e87b7ba172b8ce35f24567c54e1ea64aac4bb848ea6b5d886322cfcc8","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:d72b56294d3317cd83e6e9ac76160ce7967610be483d2d4fec03730eae111c3f","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.814680670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.402334e-01","shared_alloc_j":"4.674446e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d72b56294d3317cd83e6e9ac76160ce7967610be483d2d4fec03730eae111c3f","served_from_record":true,"record_id":"r104","record_hash":"sha256:294704c43530a35c5198aa215dc9b2be748cd6edafae3871155ee7b466c762d6","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":94387},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851697e+01"},"chain":{"prev_hash":"sha256:45c95a668c2239233576dd12b0b7b76b3e249c16c595c456bfa742bbb0b784a0","receipt_hash":"sha256:949d2bdeef3103a116d20a80f1ebd064062a899ace3170bf3c8dda08cdefaed8","signer":"ed25519:bench-node-01","signature":"00e6748f572d14ac0f0096c0f035d545c10cb151d8a1d6cd884a337a4ccc722fe1b8e93a89050512c0789f4a32ecb28d6f60c8463cc94f038099e76541ce6b0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e8bc51ea3d950e400201ba0d8495e146ab52ce7d9c4c21da7f6d5c61a3a2c82e","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:baea2e2ddc1e7402abc1dea416e792b9abb0db4212cd13a3bb45db038aef7c4d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.414865560588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"9.946199e-02","shared_alloc_j":"3.315400e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:baea2e2ddc1e7402abc1dea416e792b9abb0db4212cd13a3bb45db038aef7c4d","served_from_record":false,"record_id":"r220","record_hash":"sha256:5f0cfeddc9bd5eb0e631234b4d30877950e8da2235e5c6f0548fc2c58a7150ef","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107351},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.836777e+01"},"chain":{"prev_hash":"sha256:949d2bdeef3103a116d20a80f1ebd064062a899ace3170bf3c8dda08cdefaed8","receipt_hash":"sha256:29f1b16cf6b74194b679fa4a637b5cee1ec68852e751e0f0922939b5ece0fb74","signer":"ed25519:bench-node-01","signature":"4eb2a3592be8d33cde52a4d3239a7bb95f2e515eac0d43335d41b6470a6aeae52b90c425bbcc30959d6d2420b749808b6d8883ec49589504214914fbcd1a6a04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0f9105ddb2987f28150e7fd6871984d2838d9890353949ff547fa3e60b3997eb","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:a6c3f0d042a4ba209dda645c248347eb145cd28fc446dd789ef491d9befd9217","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.892878850588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"5.513228e-02","shared_alloc_j":"1.837743e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a6c3f0d042a4ba209dda645c248347eb145cd28fc446dd789ef491d9befd9217","served_from_record":false,"record_id":"r221","record_hash":"sha256:752c502aba28361bc552cd9f49410cd5df1940ef919265abbf795571cd2edeb8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107382},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.811152e+01"},"chain":{"prev_hash":"sha256:29f1b16cf6b74194b679fa4a637b5cee1ec68852e751e0f0922939b5ece0fb74","receipt_hash":"sha256:37efc3a0754ea802b0d00c1a250facb80700ef9fb33947da283864141bfd9f08","signer":"ed25519:bench-node-01","signature":"c9515fa799163c573e6c11cc6fc695de45f454cc2d969ce75fb5ad5d572a6e376b425df2afb0399893f5758c24aa970606da773985b8ed8c9a7c7ee03130f601"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:64e951ea23b0d1aa755d049db16447c19debcce0ff87a1b43d7976645b948603","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:94d79b3b10abf3b32bc3605e889a76f62d12e9b856a159e6889a8170369dfc6d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.402723870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.282346e-01","shared_alloc_j":"4.274488e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:94d79b3b10abf3b32bc3605e889a76f62d12e9b856a159e6889a8170369dfc6d","served_from_record":true,"record_id":"r7","record_hash":"sha256:781e5562d76a8d14d316897ae18b4fd0e03f6e448e395a5a8562b43febb6786f","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":86825},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.847812e+01"},"chain":{"prev_hash":"sha256:37efc3a0754ea802b0d00c1a250facb80700ef9fb33947da283864141bfd9f08","receipt_hash":"sha256:fd10b09f9e5fb3410914dfc381f2e0c1433639584369b9e8e45a4f3913f3148e","signer":"ed25519:bench-node-01","signature":"4219edf1cb5cdc5042409fc5eaf5912e8414b96771726ccb226058ef84e7b5dae1be386104ff89aa7fc34437f568c054fd0d04eef26df3a4e03c6d29048ce801"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:980750c9e23ef34e1d47fd36fbb7e2f13e4f362dbe397e49f5e50b2a04cb7253","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:61a0b81dbab0cff6da1d675d0857ca934485b1cb836416a15a76ff0cbb083b6a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.787188260588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.205399e-02","shared_alloc_j":"1.735133e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:61a0b81dbab0cff6da1d675d0857ca934485b1cb836416a15a76ff0cbb083b6a","served_from_record":false,"record_id":"r222","record_hash":"sha256:43ccc74f6d16f44fd16950fa3833c92acc7626c9751f31da8d7c900e792bb46e","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107482},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.808657e+01"},"chain":{"prev_hash":"sha256:fd10b09f9e5fb3410914dfc381f2e0c1433639584369b9e8e45a4f3913f3148e","receipt_hash":"sha256:e39e6e5dda2e434352b792050e40174ee5bfffd06aa4f6a56cbc58a548e6fdef","signer":"ed25519:bench-node-01","signature":"07e803d1bf5fc33093575d8c2af656239cb3d1b60bb6263049dceea81255296c2ae1f08d794518be0e7046eb50b0d88bc8482587abde7b0e0e0da095e5a73604"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cf4424a9c194a1fae808e3795b189c2bb6bd6464bb96df691a6b890c70843547","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:c8fedcbf10aee8438e76d85876f93595fdbbe423e074c2031a7b547557e07c6b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.973005470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.739709e-01","shared_alloc_j":"5.799031e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c8fedcbf10aee8438e76d85876f93595fdbbe423e074c2031a7b547557e07c6b","served_from_record":false,"record_id":"r223","record_hash":"sha256:062ec5534bf76b9cf64cc6a713a836cc82216435c022a5b68355986d4701a6ab","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107579},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861059e+01"},"chain":{"prev_hash":"sha256:e39e6e5dda2e434352b792050e40174ee5bfffd06aa4f6a56cbc58a548e6fdef","receipt_hash":"sha256:7a348796235afd47143a05ecbe5239c7c55b7f88a8370c771b9d2392cd8780da","signer":"ed25519:bench-node-01","signature":"18cd5cc0ef48d081ee23d8135abfd2f39307c719ec0cfbae49b56ee91c1ed1ca81283d871c406786541576d58de18e96bb0e9a159d44fd9c66b0b399e7352607"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ac802f85960dd42d6daddf665d0539fffc6cf8ef774056d3c33ecae38243ce4e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:c41d282f3a696a65be713156d86b2375f5d0733fefc81f28d26cd8c6b35f0d96","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.381130170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.567319e-01","shared_alloc_j":"5.224397e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c41d282f3a696a65be713156d86b2375f5d0733fefc81f28d26cd8c6b35f0d96","served_from_record":false,"record_id":"r224","record_hash":"sha256:70e2b67aea7506863292a9cadbf74f84e176da907effef97f273da2c209a6952","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107666},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.856527e+01"},"chain":{"prev_hash":"sha256:7a348796235afd47143a05ecbe5239c7c55b7f88a8370c771b9d2392cd8780da","receipt_hash":"sha256:9e0dff9286ba1b9bf7e6035c13f2b29975266318a87994c6b8b35c51525d8c22","signer":"ed25519:bench-node-01","signature":"db1295e571cc5e667b82e7e63b48f1f6a7358651f16297d2a2610ac12d0a9e7b5d044f8975f13c0183591b286f707583322bc4c4cae43cd06804f728a19f3100"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:7d16c2764ef8bb0d24825ae8cedc6acb873fba1d73f45fe158a02bd27f2ea94f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.979249500588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.677423e-02","shared_alloc_j":"2.892474e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":29,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830851e+01"},"chain":{"prev_hash":"sha256:9e0dff9286ba1b9bf7e6035c13f2b29975266318a87994c6b8b35c51525d8c22","receipt_hash":"sha256:4c5fc537c7962eb468569f8c1ff45e68f9dfa3aebdac6f64ea45c81a603014c5","signer":"ed25519:bench-node-01","signature":"c745519d66b0a665c8273ed5276cc43f1205edc2afc4f3e59d93d4926a1d69eecdbfb602b2598f23ee934874a0a7adc696d0baaf68798dc6b079e72d4de18e0f"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a9a985448536afa46cd017686994c9d704972d1e93a2dc389ac527106020c013","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.052644870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.762906e-01","shared_alloc_j":"5.876353e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":30,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861635e+01"},"chain":{"prev_hash":"sha256:4c5fc537c7962eb468569f8c1ff45e68f9dfa3aebdac6f64ea45c81a603014c5","receipt_hash":"sha256:f65887f936643bbd6e2068606e639615418602f95e45ef8c373f1c521cf90119","signer":"ed25519:bench-node-01","signature":"2bfcc1735a8131558c992deb996224ca92a75e08467f2a2241a79132095c9cc5fde2090fd66bd8f686ebf93581a5a0e4ed6bad93d9022c0b737d04b54adbd00e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fc4c79c533ee77123570e98b148c7a92fff9c5be4965975f05cd2864544652b7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.870765970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.127407e-01","shared_alloc_j":"3.758024e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":31,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842220e+01"},"chain":{"prev_hash":"sha256:f65887f936643bbd6e2068606e639615418602f95e45ef8c373f1c521cf90119","receipt_hash":"sha256:459eeb52119f33d79c6a2b414ff5e7f472bbc76d452ffe009a1996089ccd6c8d","signer":"ed25519:bench-node-01","signature":"933f72bbaf827b56876f7550328549ca4abbf53c02a479e997cf0eae32fadb1dcf1a5559ab8886e27e1192d64267d1e14b526d292bf50adaa702c81ec8a7ac03"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3d9793cfe23115dfd6e4bb6d365c299645c9f22db158f260b680b4212cabc2c5","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:438a74c1788de475b657a4d1a2b945c0fb090bbe37edf316b3c95a620c37123c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.629935970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.348524e-01","shared_alloc_j":"4.495080e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:438a74c1788de475b657a4d1a2b945c0fb090bbe37edf316b3c95a620c37123c","served_from_record":false,"record_id":"r225","record_hash":"sha256:400d079dcff9ddd209968e71526c9c47a9bce68eedeb8d849910b4300be84cb5","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107950},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849997e+01"},"chain":{"prev_hash":"sha256:459eeb52119f33d79c6a2b414ff5e7f472bbc76d452ffe009a1996089ccd6c8d","receipt_hash":"sha256:93ad26de2c0b4063fca3680ffe4e2498eade36f5a2997956204959d99b612f67","signer":"ed25519:bench-node-01","signature":"91e8cbf95de969be2c1f6ccab79b509e402d64e3ff6324528072b6dc241dbe29e488bc7856855be24fb7ab1bf79ba40628bf6ea0dae3fe3efd20305d9688af08"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b85d1478fa0e47d71d57a8ed2b6959a17d0cf0bae0f8dade6d0a8a1dcb48706a","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:a2df2bce62fb8f386af6a70e7ec36d477087420d1b44e15eda7e965a9d1feb43","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.130999170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.206790e-02","shared_alloc_j":"2.068930e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a2df2bce62fb8f386af6a70e7ec36d477087420d1b44e15eda7e965a9d1feb43","served_from_record":false,"record_id":"r226","record_hash":"sha256:245165e139ac14867855921e81154aa5d6ec31178bbe3d1fe6cfe73875a419e3","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":107984},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.816298e+01"},"chain":{"prev_hash":"sha256:93ad26de2c0b4063fca3680ffe4e2498eade36f5a2997956204959d99b612f67","receipt_hash":"sha256:afa4a6dd6b5897693915c597d8dc9a60c18cdfc2900acf2dd2eca0ba557f98d2","signer":"ed25519:bench-node-01","signature":"c95391f48bf61afe66ec86d663839e8d43c81337c7cf135d491936ad55f917dbd15054d5ea3f8f21c497e19023598d77b9fd4f8993db654ddee53e4a160b2005"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:3bf339c159ae1cf40118c3a9f4a0ccc14c27098fe91d273d66000fc773b2c385","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:154acd6e250ebe25f69cf2b239edab416d7fe7fb6baccff9ac3d51823d7f3485","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.020642370588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.171061e-01","shared_alloc_j":"3.903535e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:154acd6e250ebe25f69cf2b239edab416d7fe7fb6baccff9ac3d51823d7f3485","served_from_record":false,"record_id":"r227","record_hash":"sha256:4247199bf03398aa35a621eff8640cc5ac315d64031ab9ff84fefb3b4715403a","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108049},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843870e+01"},"chain":{"prev_hash":"sha256:afa4a6dd6b5897693915c597d8dc9a60c18cdfc2900acf2dd2eca0ba557f98d2","receipt_hash":"sha256:e9b4a3e06f8081939474b692359591d4d73eabd94322a6883de12e97ca169ae2","signer":"ed25519:bench-node-01","signature":"b7da79b07ed4cd935504128279fb96fca9067e5c56e8946b933bc2a7ea34a3bd97155be05ab5a87378d71163256fc39c3e65678181347c6f7f02e36a5d632e0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:69b50cd709df1778b45b17f00f4e10d7e5e32987dc81032771e5b99b612f9d19","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:f31f9da7b2fa4c561c8ee66224a278001052b8b99d6dbe7c209883d758145f3a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.524298770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.026495e-01","shared_alloc_j":"3.421648e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:f31f9da7b2fa4c561c8ee66224a278001052b8b99d6dbe7c209883d758145f3a","served_from_record":false,"record_id":"r228","record_hash":"sha256:c1091b6050ad597014c5f10e8e46bf21c85d9b1a93152ddac1726e2228f54e40","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108106},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.838147e+01"},"chain":{"prev_hash":"sha256:e9b4a3e06f8081939474b692359591d4d73eabd94322a6883de12e97ca169ae2","receipt_hash":"sha256:5bb9722ef66ce8c5f7c74b4e7776706e77268fe2966d2323813b180ff97af359","signer":"ed25519:bench-node-01","signature":"2329074ed35b571de129f1b14b695cd4859ad93a68cab1805898e756d12d063646e6dbbe5fac46aa6d6a2230d353424159c08ab57f1de0d25b755dc84d5ad20b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4d1c3bd22e8b094dae63c6e8b8a5d89c7e07994d392d83d5f4bb932647f46e86","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:5e7f52ad100fb57bec26eeb1324cc66580a86ca22b04827207046febf1b20a4b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"6.145659270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.789997e-01","shared_alloc_j":"5.966656e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:5e7f52ad100fb57bec26eeb1324cc66580a86ca22b04827207046febf1b20a4b","served_from_record":false,"record_id":"r229","record_hash":"sha256:643279746987b5c7aab5c327e54ae755b16edda073294a8cecf943d759241a0d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108206},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.862297e+01"},"chain":{"prev_hash":"sha256:5bb9722ef66ce8c5f7c74b4e7776706e77268fe2966d2323813b180ff97af359","receipt_hash":"sha256:80aafdcd9f8d29e94c56e2eb6aae289b9a95279a646dfe7c6bed7d11b40785d4","signer":"ed25519:bench-node-01","signature":"652243476f4998ef5ac0aab24dd14e047bbd8591eb0cbe45abcee1db318a644f5010aca38762265fd51c16c2a27a6a5bd58f48e98453c27b88383cc8abe67308"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c20b4e3d4259fb8a3e3f95d0188a30b631e9fb1ba9e43dea8dc22ad6bd89eb57","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:4c744e2ba5337d8ddbf322da9a54af286783ecf207c9c30c67beb264b801d5e3","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.791680320588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.131105e-02","shared_alloc_j":"2.710368e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4c744e2ba5337d8ddbf322da9a54af286783ecf207c9c30c67beb264b801d5e3","served_from_record":false,"record_id":"r230","record_hash":"sha256:e9e9e27561ed0c184923d342fb04bfe0ca134f52101f78cecdbbdf8a274e9d99","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108251},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828027e+01"},"chain":{"prev_hash":"sha256:80aafdcd9f8d29e94c56e2eb6aae289b9a95279a646dfe7c6bed7d11b40785d4","receipt_hash":"sha256:d527d71db78f37d87036344dd1460e90b55bd1742b30e38e796d5a54d24d8d21","signer":"ed25519:bench-node-01","signature":"27f8ce3b4d913c23adda1cf840743388cb62091aacf99dfccca0e43978692d4e04f2b345963204ef57f7129150e53db808c612d97ea73b4f2a16d7cd655e560c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:63c22cf57943e722e796166936d4ceeeff77b0b70d3fc234ca8e917784cc41e9","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:7aaecc08a0df481f598610afab8692f5ddca7549188b4b2fcc06d2adc2b91739","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.134492770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.495482e-01","shared_alloc_j":"4.984941e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:7aaecc08a0df481f598610afab8692f5ddca7549188b4b2fcc06d2adc2b91739","served_from_record":false,"record_id":"r231","record_hash":"sha256:d3a14c7700dbd53eb98cf797e55c0596f5ecfbbb221507fecfff793c08c7e257","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108334},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.854490e+01"},"chain":{"prev_hash":"sha256:d527d71db78f37d87036344dd1460e90b55bd1742b30e38e796d5a54d24d8d21","receipt_hash":"sha256:12bb841341c600bbe9385e8528b0bdd87ffb4ab8905f354758941e2b2751af55","signer":"ed25519:bench-node-01","signature":"3db798851fc409d84317d7825f880797df6cb7da483ae04cc3e8aed181461a66304fb942753d3bada9fe92d14b8ede4c073de136499cb6d5f1051e1fdc11b002"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:61fae2ad852bb272d74cf8228a6cb4f639f04b2aefe62343d62881948dcffc78","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.823300280588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.223201e-02","shared_alloc_j":"2.741067e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":7,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.828516e+01"},"chain":{"prev_hash":"sha256:12bb841341c600bbe9385e8528b0bdd87ffb4ab8905f354758941e2b2751af55","receipt_hash":"sha256:82d5dabba8588ddeeff74e726b752cb4b31cac6ac435a2ca5657dd3b0a6855c7","signer":"ed25519:bench-node-01","signature":"35d7ae2697d9b892213f5106580dc1ce7617f56062cb34febd68bea27bd72a658d84f160588732d7279585f35314c9204d11dea53831c9df9d35ac6daee2e005"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:dae424f841c973aec34d3f92ec73cd907c9cf456d2c0cd71802cd6345e4ddb93","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:b38cd1f33a130455853b4e6fce41ca504f4173d34ad1f99470b37673b5f8daad","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.053914200588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.894893e-02","shared_alloc_j":"2.964964e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:b38cd1f33a130455853b4e6fce41ca504f4173d34ad1f99470b37673b5f8daad","served_from_record":true,"record_id":"r40","record_hash":"sha256:51291ee97ebadde6d89c8d4fa2e638e63df1dad7d9b4204cf60a7cc2731225b7","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":89180},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.831926e+01"},"chain":{"prev_hash":"sha256:82d5dabba8588ddeeff74e726b752cb4b31cac6ac435a2ca5657dd3b0a6855c7","receipt_hash":"sha256:7dd4fd5c4739e91ea6f6f44c79e4fdacb66c2c6b008d48e5b1c5a66c7e4acc65","signer":"ed25519:bench-node-01","signature":"ea49ba41edcb7ced845de4df343c1dcf647f9e7465869e71b9e00eb48b8f0edd014f95a2df3195c9985f9284f4d9104e4ffec48559077d4454eb26ae8f61360b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:67bb4feb798454326d119b23912d512fda3a5910fcffa517adff74e77d8fc418","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.136803450588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.136318e-02","shared_alloc_j":"3.045439e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","served_from_record":true,"record_id":"r86","record_hash":"sha256:f4c7f1ad01d2d813ad75c00cc45d65ed4551e2d7454324699de36187f53cf52d","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":92951},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.833089e+01"},"chain":{"prev_hash":"sha256:7dd4fd5c4739e91ea6f6f44c79e4fdacb66c2c6b008d48e5b1c5a66c7e4acc65","receipt_hash":"sha256:2e162ae8c89c11ea071800505827a704ca70958531263e120b50a25f0846b322","signer":"ed25519:bench-node-01","signature":"e011d3001b88a1e1da38c5a9910af8e03e501d582918f777c69366a49a5d1fbf26faffcad808d2a350f8722aa3e3e7b88f3eca30f4bd221b5e95ca998a1beb0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f2b36ff2c96b31ed9f78e20e115557fe410493a03734454e0e61b6e623fc2339","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:32b537f7e4ab7f4fe4cb1b7c4b9cce051eecf472dbc477146b1292f4d175660b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.665968970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.067757e-01","shared_alloc_j":"3.559192e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:32b537f7e4ab7f4fe4cb1b7c4b9cce051eecf472dbc477146b1292f4d175660b","served_from_record":false,"record_id":"r232","record_hash":"sha256:c61d0e73507b3f630e75b1f964baa55d47d72ec16007784f13748a4b2fbced44","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108539},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839859e+01"},"chain":{"prev_hash":"sha256:2e162ae8c89c11ea071800505827a704ca70958531263e120b50a25f0846b322","receipt_hash":"sha256:3c6057e879c61721ae4d9a300524129bf69279d4a75264d59d5bfd9e3ebfeae4","signer":"ed25519:bench-node-01","signature":"589a89c6d137ae22acee0e8e24b6f84f98f29ba096886131069234b7a5b40d1b8129ea47ec4dd09607ff1c775477547c854d0d8366a09b64fb1022136069a20a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:48bcd1ebffb30123517f894b51894a4da34094865d43fe0831774ebc47ab323b","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:434c21a52f0ec696ed9ace53a471ae38f5ade0437b95c87c88db4fdb7b5e41ba","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.623540670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.637924e-01","shared_alloc_j":"5.459747e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:434c21a52f0ec696ed9ace53a471ae38f5ade0437b95c87c88db4fdb7b5e41ba","served_from_record":true,"record_id":"r67","record_hash":"sha256:23efb9145121ff13e6bc533cec9c6f85c7a20b651f5ea4726d7cae63f5299534","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":91662},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858441e+01"},"chain":{"prev_hash":"sha256:3c6057e879c61721ae4d9a300524129bf69279d4a75264d59d5bfd9e3ebfeae4","receipt_hash":"sha256:1adee656b7392ee0d997270ae10681f00fdc4715f8e1df20c5b8df1ebf615867","signer":"ed25519:bench-node-01","signature":"bdf9518f5b9d3d3107eed58fe901043e9032e637fcceefe0b2477efc31b010d72e9ddb96e572ce5d3d2e18ec64f5edc344d23481d60fc6f49a4dcbad74d87907"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0271f92e94ffe4a4621cdfbc09ebc7c9181a7d3ce40bebc03eea225bc35d1c95","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:0666d33c6587bdf37dfd5f26f63169d9428a4ad5b14f750a409cf5aac0ea7bea","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.702920770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.369782e-01","shared_alloc_j":"4.565939e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:0666d33c6587bdf37dfd5f26f63169d9428a4ad5b14f750a409cf5aac0ea7bea","served_from_record":false,"record_id":"r233","record_hash":"sha256:4ddda04b57cc493a16c2c2d5e58661717887d4daab653135d566371b8acc06c7","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108706},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850677e+01"},"chain":{"prev_hash":"sha256:1adee656b7392ee0d997270ae10681f00fdc4715f8e1df20c5b8df1ebf615867","receipt_hash":"sha256:afdee59008273cd743923e13f9a03797325125be220bf61ca52e916bcea382fa","signer":"ed25519:bench-node-01","signature":"4a3659f9e64291cc577caecb4114e3085d2ae2941b65c69d7f612be62809e9c8d8993e930cdfd0c8163d308b136db365086d25ec5532b0b039d443bf94ea2f0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ec5ccf79ef40fc5019df1b80f9d7b3ff9fe04b97eb8d7db525259d2e0e2456de","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:08885ac376dea4446461fdac10faefce43c5e98f66020ca04ca3e368710cd98e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.369834550588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"6.902428e-02","shared_alloc_j":"2.300809e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:08885ac376dea4446461fdac10faefce43c5e98f66020ca04ca3e368710cd98e","served_from_record":false,"record_id":"r234","record_hash":"sha256:065db1263d16d95d3dc3b1d2cda0c0ca407f0c476b161babffa42f660d91c02f","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108744},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.820912e+01"},"chain":{"prev_hash":"sha256:afdee59008273cd743923e13f9a03797325125be220bf61ca52e916bcea382fa","receipt_hash":"sha256:b3629c506bbb58820ed1bec736ea000dfc3ca8c34668d456bc663be6cb3026a7","signer":"ed25519:bench-node-01","signature":"aa0b5b19c6229743b8289b287e8bb2bd8e34d5f9100bc0df738a73e4c3bd96b358f44bd614e54c557474de033b8ff8b1e0febb5c9886645ba3e54850017e8d04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0a38b3fc8ab2731f0048ab8a3e3b23c569e76a4660afe12b7bcc9b26383aac62","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.329953760588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"3.873649e-02","shared_alloc_j":"1.291216e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":32,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.795824e+01"},"chain":{"prev_hash":"sha256:b3629c506bbb58820ed1bec736ea000dfc3ca8c34668d456bc663be6cb3026a7","receipt_hash":"sha256:4e7f871a08f6fc0d181d3aefdfa4158540d6f0797502508792ffdcf87f83701a","signer":"ed25519:bench-node-01","signature":"43a74c94b7c336baf550b712227280fba03fa189c6a21746db4c260fee60b7831ea58816c69177cf5798d94e72f9bdd8cbc385b817ccbe799e4c50d8abd2e800"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c926beeeb4c704f336913360a5c3715123e564a58696875778dd53ffac9b10aa","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:a0fd401c3038b9f285d0f65ef4ceb69b2105800921bdec43ec2954c0b0fe999e","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.915087970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.140317e-01","shared_alloc_j":"3.801055e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a0fd401c3038b9f285d0f65ef4ceb69b2105800921bdec43ec2954c0b0fe999e","served_from_record":false,"record_id":"r235","record_hash":"sha256:cd6a125f508acac70b93e1cee7a76889ba92bdbbb4292bb64b53192b51725527","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108829},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.842714e+01"},"chain":{"prev_hash":"sha256:4e7f871a08f6fc0d181d3aefdfa4158540d6f0797502508792ffdcf87f83701a","receipt_hash":"sha256:be3b887b174cfaccacbfcf45b771c26905d0be73537aadb330ed07de25f332f5","signer":"ed25519:bench-node-01","signature":"5806683c8801b64c1184c3725d9ce6abb2677f67c0a1ca61527f1864c4a990a6a451d902199fc3777781682846909c5d32f80b9d81b61fa7713b453c28850b02"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:47a61b9268cf464f7d4ce54457d934d812a5db8a1fd2597a634af16c694d284f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:ae1bd322166290226b5e955743760d82a71c20a05d416ba0d87c429bf3b0e67c","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.602584870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.049296e-01","shared_alloc_j":"3.497654e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ae1bd322166290226b5e955743760d82a71c20a05d416ba0d87c429bf3b0e67c","served_from_record":true,"record_id":"r208","record_hash":"sha256:4cf11433ab6977a2ac8947a58a09cceeac5185eae933577c35ed820cf35f9858","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":106142},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.839101e+01"},"chain":{"prev_hash":"sha256:be3b887b174cfaccacbfcf45b771c26905d0be73537aadb330ed07de25f332f5","receipt_hash":"sha256:8570bc666201b94217f59f460b08301b625aa3b1a73fc770278282718a67606f","signer":"ed25519:bench-node-01","signature":"41f85cd9da3b290e58631cd92a765a94a4dec4691c2887aad2d85924cde762cc1398ef6cc0711df647bdc8cd530b960a2900bcc2a88e53c9cfae7d2b832aa601"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:0dddb0e5f720230be82adc42936cb5f5b89c2d558449abfe8fd5102784820ae4","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:933c071a2b53d7a080551b9d19b151ec064eb2d17f6c872d6bcb961d1d1529a2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"alert"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.281431070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.247018e-01","shared_alloc_j":"4.156728e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:933c071a2b53d7a080551b9d19b151ec064eb2d17f6c872d6bcb961d1d1529a2","served_from_record":false,"record_id":"r236","record_hash":"sha256:4996780f941de8e1f28049ca9a39bf8ff1bbf8cd15fc36e13b9cbbc047c23129","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":108957},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846599e+01"},"chain":{"prev_hash":"sha256:8570bc666201b94217f59f460b08301b625aa3b1a73fc770278282718a67606f","receipt_hash":"sha256:e0be72830d5ab45837487b195153e1d000a659935887e0492da6c91161a1b770","signer":"ed25519:bench-node-01","signature":"212f388a32d334465b778dc75db34d77b17d81fdae360099ad04607d9d26eca72366c3b329f3958fc95304d20121d9d47434824599b5cc3a34fe3cbc1d57e804"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:c1b13a97ca5b35d69bd1c4dac3218d62fd115bb4ba8f1e98e8d1d27446476a99","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:a8e321822bb7a103eee73415fa73a912b90c5f863fbec7633f2cb269013e7c16","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.503704870588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.020496e-01","shared_alloc_j":"3.401654e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:a8e321822bb7a103eee73415fa73a912b90c5f863fbec7633f2cb269013e7c16","served_from_record":true,"record_id":"r13","record_hash":"sha256:2b6453fee78877e034de88726e8e50ed7892dc1bc50372ca02e5bf255acd0ac5","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":87295},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.837893e+01"},"chain":{"prev_hash":"sha256:e0be72830d5ab45837487b195153e1d000a659935887e0492da6c91161a1b770","receipt_hash":"sha256:74588c78c3debb65ee17f271a403cdb34e2e577a8462c6e07f280ac0b6df33fe","signer":"ed25519:bench-node-01","signature":"28d893774c7a5763d312c39c0015e406b60efe8ac917b7b0a7e4959d6a0da297a933c43a934fc18ae080402d926e09579b074046eb36d7a7491d9abc186be40b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fe97ec647b11e7c84589aa4671759c0bd077633d1d99b436d1d05210a3a88ab5","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:8731682b682be8c57a69b4131050ddc9fa82308bd709b8370d0684798ae379ca","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.529990970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.319414e-01","shared_alloc_j":"4.398046e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8731682b682be8c57a69b4131050ddc9fa82308bd709b8370d0684798ae379ca","served_from_record":false,"record_id":"r237","record_hash":"sha256:5ca892c48816cfc4616288735b8a37d7126519a347c6f986a8dfddf7c92d0a51","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":109087},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.849050e+01"},"chain":{"prev_hash":"sha256:74588c78c3debb65ee17f271a403cdb34e2e577a8462c6e07f280ac0b6df33fe","receipt_hash":"sha256:1859b639a9b4a3392f069962ed276f5298a9f3414997e27ae0d0a83a644f8eb5","signer":"ed25519:bench-node-01","signature":"8283301f42e0237ca24af14218d339550e9c69183118d2fd45892df9f3191ff53971a4f99ed1297d12cdad3bd69acaff84ca56e99b374754f7ec2235c2e2c409"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:75677b0aba3c745d8b5722fdda4666741308b190f00b6865fa9d6fe261b02661","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:4eca99b1aa9b7cc02d93253fcbd8b042a8f2a308065e37f5971da74e7223ddae","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.694166770588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.658495e-01","shared_alloc_j":"5.528316e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4eca99b1aa9b7cc02d93253fcbd8b042a8f2a308065e37f5971da74e7223ddae","served_from_record":true,"record_id":"r153","record_hash":"sha256:2613989d0144d77d40c7ec837263f215cd6d6e55f78b5e67fc05f5fe9aad9c1f","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":98745},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858983e+01"},"chain":{"prev_hash":"sha256:1859b639a9b4a3392f069962ed276f5298a9f3414997e27ae0d0a83a644f8eb5","receipt_hash":"sha256:291b42329e17d568d23e970bf69d9dc271a22f9091771e8166395269dc08625f","signer":"ed25519:bench-node-01","signature":"ac12ca9ddc96870a101c6c6a0d64044a01a4273dfd24595d734ca98d1564602f724a09dc7190799e83b2738b2ae436db594728ae27b462ff6674f0a75a431e0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:5be4cd86d3c8c899e6f9a893fa45cca14c776259cc9692a89fb0972e5fecd3a7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.655500710588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"4.821844e-02","shared_alloc_j":"1.607281e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","served_from_record":true,"record_id":"r121","record_hash":"sha256:68c00c9152f36db8ef49fff21c928ac679e7a92a748171b7d820e16b09fa9a05","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":95619},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.805333e+01"},"chain":{"prev_hash":"sha256:291b42329e17d568d23e970bf69d9dc271a22f9091771e8166395269dc08625f","receipt_hash":"sha256:af6b09a360b5fc0ca5d3a04fd609c37d5d16b33d85b8919d7f9371ede3ff488e","signer":"ed25519:bench-node-01","signature":"d6c66f8ff22b00d1e9efc476cf6e7e4ec1acd5e75f1af53d19c3c4493284fe906cb83dba9098f515d7889a7056e7d6c083b102970bfbfd9fd434f7732d00f20c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:cd86bb251cf9565e4a747c87c59a48015fb627190f81387949b7841816009e32","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:61a0b81dbab0cff6da1d675d0857ca934485b1cb836416a15a76ff0cbb083b6a","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.951521670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.684040e-02","shared_alloc_j":"1.894680e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:61a0b81dbab0cff6da1d675d0857ca934485b1cb836416a15a76ff0cbb083b6a","served_from_record":true,"record_id":"r222","record_hash":"sha256:43ccc74f6d16f44fd16950fa3833c92acc7626c9751f31da8d7c900e792bb46e","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":107482},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.812477e+01"},"chain":{"prev_hash":"sha256:af6b09a360b5fc0ca5d3a04fd609c37d5d16b33d85b8919d7f9371ede3ff488e","receipt_hash":"sha256:a093e5a71d0fe88815198ec2ac498d0aed84337c5e0326862e6aced439ca8440","signer":"ed25519:bench-node-01","signature":"00b758eb416e1401a81a448724f84247b4cb6ffc8ad6d9a655f4b0076e40c2365048879af9b25496fc1a709af552535f22d92c68dd08edafeeab9fb0e3943c0d"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:abb64211266e89d3090e5d07965d620779d0625de74a44a98de88102ac413de2","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.449149570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.587130e-01","shared_alloc_j":"5.290433e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":7,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857073e+01"},"chain":{"prev_hash":"sha256:a093e5a71d0fe88815198ec2ac498d0aed84337c5e0326862e6aced439ca8440","receipt_hash":"sha256:29f0839b84e0ec306cdf3036c293c128a0d8db028654c143ee4031e89aaf7910","signer":"ed25519:bench-node-01","signature":"89fee992e40b730af85d54a8ae6b4d54bec781d05ffbb99f88453681b78219123ad29508e30f5cbdac098c9a2df0aafe78beb743b506ec580efcb8afd5b48400"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:f3df6400ede45f869aab06c19aae73f0d4b87a33e4b42cdb3821e6b83b35f884","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:2425f9e03a811a126a919af3b686064dff44a60bc399c610ebe622d3abcbcfac","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.981146170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.159556e-01","shared_alloc_j":"3.865187e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:2425f9e03a811a126a919af3b686064dff44a60bc399c610ebe622d3abcbcfac","served_from_record":false,"record_id":"r238","record_hash":"sha256:64bc5e879912c31d169419267c0196c7567f4ddcf0465fc1b745810506db16d8","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":109390},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.843441e+01"},"chain":{"prev_hash":"sha256:29f0839b84e0ec306cdf3036c293c128a0d8db028654c143ee4031e89aaf7910","receipt_hash":"sha256:b7679a3501a1ada3dc0a1c3be40b8d9041ea8e89fa6882681a52ef3b3999da06","signer":"ed25519:bench-node-01","signature":"1c8a8b7664240a5261cc1307eae64c4f17a78cb5531eff90b6b3db7f7bf8e99f21a29e40c4469d7ca312f6de040bbfb6b4c48edec3ce5e5297b217665df28e0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fa6f0f960739f9722c60108b8f34f60a4edee26df5235d3b204f47fb02f66a2e","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.935845290588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"8.551002e-02","shared_alloc_j":"2.850334e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","served_from_record":true,"record_id":"r2","record_hash":"sha256:e03b3bafc134c0a9a306c15e6c375c1e686cd2bd28c225568c1964dc8d423bb5","reuse_count":33,"derivation_j":"1.058824e-06","valid_until":86477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.830213e+01"},"chain":{"prev_hash":"sha256:b7679a3501a1ada3dc0a1c3be40b8d9041ea8e89fa6882681a52ef3b3999da06","receipt_hash":"sha256:f9e47e33cdd89c67a1428a33e879da11a33daaa3688b2d553abe3e4bc99dd33d","signer":"ed25519:bench-node-01","signature":"50591e4cc2e50a1aaf1abf3f40e76a32c3c9a542ba40fcbb5172f43e37ee640a2f6432230e0e25ec797254cee6f415816dd02b5c678f23f79432bfe384f6420a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:eb3f35e18abeae1da8e665a732268ecbbdd083fa5089fc5c4a20eb741d194bb2","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:92e9c4006c4b2efecff6f3f7549014b52d121982834ec208592be3a6e76cb549","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.687563000588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"7.827843e-02","shared_alloc_j":"2.609281e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:92e9c4006c4b2efecff6f3f7549014b52d121982834ec208592be3a6e76cb549","served_from_record":false,"record_id":"r239","record_hash":"sha256:f5b9b44a2d6ff33e73eb746e55d85485711800f2c4b3386899611ce66bc8c48d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":109481},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.826376e+01"},"chain":{"prev_hash":"sha256:f9e47e33cdd89c67a1428a33e879da11a33daaa3688b2d553abe3e4bc99dd33d","receipt_hash":"sha256:499496a2d1a54f9afa6f19bdc2e0446dcae46ce1dd6d70bbbf594145caa61270","signer":"ed25519:bench-node-01","signature":"2222728c1371e2f0e8a3d808e5333044fc2ceb40a46616163aee38ec3724a59b48757a4ef2bd8b127afa15be6bbd029769881d73444fe562b3cc52eaf61c1901"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:447c46aa25494a850c6aaa0039a371a36a0184e2a70e657ed9cad7a6b2d3fb07","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"5.988162970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.744124e-01","shared_alloc_j":"5.813747e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","served_from_record":true,"record_id":"r90","record_hash":"sha256:fbfb7b2e0c35a608c84403c695970a425790cfac9e71c7f2b3ab9eecb37cfc58","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":93177},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861169e+01"},"chain":{"prev_hash":"sha256:499496a2d1a54f9afa6f19bdc2e0446dcae46ce1dd6d70bbbf594145caa61270","receipt_hash":"sha256:4280d6d53046efd406e55d2add9266720e9fc70a2e09518d91d00efe4c7d0e55","signer":"ed25519:bench-node-01","signature":"0f6676d5ba50789491d600405e124778aa0a6d152f800fccb14e428026318a10c815bdf5d38f70962dbdc3648cdb8951f2b2b930b550d9c0368a87b2f315c407"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b9890bb94a73c853c936f18ae84a69f5f38fd337be2312bb9635757f361b5a97","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:236ec770245fbae01fc58a6e26be276f26c092cfb0289d628034a105e4a34f85","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.212132670588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.226834e-01","shared_alloc_j":"4.089448e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:236ec770245fbae01fc58a6e26be276f26c092cfb0289d628034a105e4a34f85","served_from_record":true,"record_id":"r160","record_hash":"sha256:9321df311783dc3660a7863b6fd15f6cfbc1f324a0bc0b1ba11a648c91e751a5","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":99410},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.845890e+01"},"chain":{"prev_hash":"sha256:4280d6d53046efd406e55d2add9266720e9fc70a2e09518d91d00efe4c7d0e55","receipt_hash":"sha256:bc75e394e7b82f38a2e136cfc0efad02b0a2be6d5c4320fc7f9a22fea54e0ce4","signer":"ed25519:bench-node-01","signature":"100b8b0fbf17cae79d14d37639981430702fab810b83aa54e6e32d7fe601c1793061117cff0d346c9add6aaed37be6c85fecd6282c230ede478775eb980abb06"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:217e19f21ad892cbaf8fbd69bd1a53d3e6facccbc59b82fff8c52e85f37a4085","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:806356603a2a84090fe9b08ce79608322c3d664075c56f05b93992641802abf0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.595121970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.629647e-01","shared_alloc_j":"5.432156e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:806356603a2a84090fe9b08ce79608322c3d664075c56f05b93992641802abf0","served_from_record":false,"record_id":"r240","record_hash":"sha256:d6198f521231d045ec9439dbb59492cdf8a112fe1801b99df076250b98ba1df9","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":109737},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858221e+01"},"chain":{"prev_hash":"sha256:bc75e394e7b82f38a2e136cfc0efad02b0a2be6d5c4320fc7f9a22fea54e0ce4","receipt_hash":"sha256:9a5125fc90c09ac551c5953eedb176f54409180d1520b50f20e65e88d6e01a9d","signer":"ed25519:bench-node-01","signature":"654b9e28972766291cf3cc26036a3ae561f796f26fdc248b895e51e8a515c11e1791831226f40faa3baad4e80bb40388e9c5c3cc6722aed148e44c1663cfcc0b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:16c798a3019fa5feb31e01350365a02eb1c625696c28f6ec93e91bea178f713d","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.581526970588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.625687e-01","shared_alloc_j":"5.418957e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","served_from_record":true,"record_id":"r140","record_hash":"sha256:9f4054b5d15ac16ce0b79b780e5d8bf8b428262e4fd2a332ec366dce24f89c41","reuse_count":3,"derivation_j":"1.058824e-06","valid_until":97569},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.858115e+01"},"chain":{"prev_hash":"sha256:9a5125fc90c09ac551c5953eedb176f54409180d1520b50f20e65e88d6e01a9d","receipt_hash":"sha256:c857341bf3fafb3009eae37371f128c5399082cb804faada2fa36442693784bc","signer":"ed25519:bench-node-01","signature":"7051548c2050e57226674ef6b41d2a3b83a1c2c29694a118b65b958dbd52102abe6c6b6f18582e3c639d423e76455570b5933460c35bfd10c1f0acdf39372602"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:fc7c104e78e621c9b9e41ba839a115f4e311430204c5ac201dca83dd258f2825","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"replicate","subject":{"inputs":["sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize_capped"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.889861180588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"8.417061e-02","shared_alloc_j":"2.805687e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","served_from_record":true,"record_id":"r113","record_hash":"sha256:8ededf08c663db6b46adaa95fb079f2c1c4d6978d9cddb8bd8ec1d5ac9ff9f93","reuse_count":8,"derivation_j":"1.058824e-06","valid_until":94997},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.829528e+01"},"chain":{"prev_hash":"sha256:c857341bf3fafb3009eae37371f128c5399082cb804faada2fa36442693784bc","receipt_hash":"sha256:0d75fbd3a558510f57d32bfad1bb60e1e0234dc36cc0c9feae132261dfe9711f","signer":"ed25519:bench-node-01","signature":"65064082776d6662b7c41bd8f3da2510bf22416f44ecd13aa85cd874f2f98fba82030dab88cedf77ae648b26ad90f8c78b439005a9044d7963a81f6785d9c200"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:4bb6fac55bb1cee371f8cb912739efae2fa4f59a45790bacf40cd21f5686c79d","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:fcf6210ad2014207403d7ca2141df00caacfd572f9e94382871cfef28c1b2718","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.894564570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.425600e-01","shared_alloc_j":"4.752001e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:fcf6210ad2014207403d7ca2141df00caacfd572f9e94382871cfef28c1b2718","served_from_record":false,"record_id":"r241","record_hash":"sha256:27e2d4af5cf7ca15c43784531803e7a370bb1ac28e84c7d53c4b1127bbc08f27","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":109953},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.852411e+01"},"chain":{"prev_hash":"sha256:0d75fbd3a558510f57d32bfad1bb60e1e0234dc36cc0c9feae132261dfe9711f","receipt_hash":"sha256:c16841470a57385c0a1b0e4a50408ce6e55da1d6995a135b1329365f82ce8df4","signer":"ed25519:bench-node-01","signature":"c222828e82a3a9d6697044d7bb39635b6cad4a5f42798909371eaa48a1f59ba33c500d485e23f6ae354673ff4258a624b5e1674f5d3bd0d416aa7a7547724c04"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:ddc0d5962025476d821b61417439c58eb76a4ed10a709567ee4015a6f2a0e2db","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:300656a7d76a43a3659b5e523db3771511c201965d9f67c1a12732317c102177","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.811896570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.401523e-01","shared_alloc_j":"4.671743e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:300656a7d76a43a3659b5e523db3771511c201965d9f67c1a12732317c102177","served_from_record":true,"record_id":"r74","record_hash":"sha256:dd658335054ecb3f36bd7f2f6709e3a1ef958ea7aa8c944fa78fe328bd5fc514","reuse_count":1,"derivation_j":"1.058824e-06","valid_until":92184},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.851672e+01"},"chain":{"prev_hash":"sha256:c16841470a57385c0a1b0e4a50408ce6e55da1d6995a135b1329365f82ce8df4","receipt_hash":"sha256:e81a6e0844a9345c327972ed491e0be7c8a029b07d94fb00781687bbbea0d2fe","signer":"ed25519:bench-node-01","signature":"1c6dad68b3ad59abeb54c2a0a78b2ce6d4650dcdcf9f6fef82b009344a5a6bbedb0fd014c1138d27ac9d1a4a5a056a79ea31e8443358f8be76ee8a1880aa820b"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:b30115277d3288f60ae832273b8e89ad4e1c22fb7c1426b4cfaff6a5ac4deade","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"1.756015310588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"5.114604e-02","shared_alloc_j":"1.704868e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","served_from_record":true,"record_id":"r52","record_hash":"sha256:4b407241ed751d5065cf8c5d85ecd7c9cceb59ec65630b16476cef31225da9a5","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":90404},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.807893e+01"},"chain":{"prev_hash":"sha256:e81a6e0844a9345c327972ed491e0be7c8a029b07d94fb00781687bbbea0d2fe","receipt_hash":"sha256:1c673972e18cbf11f52d0f2257ef7e1a2fff9f9dd1c351698dbe958e70b97f6f","signer":"ed25519:bench-node-01","signature":"a09138307807da6f1de646e5232c1eb547c0d7950aab7b5287a33660d3a6fe288593aec906d21de26d0fa372d6d4f1f5c1b04ce7638364d074a8a355f981ac0e"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:99873dadcd54af61e0f5004f34b72056c4c296954e07db00708947a76585ef25","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:8c64fe7e125a0c23e1693ec175d3c7d7ac8100de1da797c06c8bedf80d663378","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"4.691297170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.366396e-01","shared_alloc_j":"4.554654e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:8c64fe7e125a0c23e1693ec175d3c7d7ac8100de1da797c06c8bedf80d663378","served_from_record":false,"record_id":"r242","record_hash":"sha256:11c28c7df9b49eaba4b1d2c2ab513f3e34dc0f64c880c326ab4764d553984f1c","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110135},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.850569e+01"},"chain":{"prev_hash":"sha256:1c673972e18cbf11f52d0f2257ef7e1a2fff9f9dd1c351698dbe958e70b97f6f","receipt_hash":"sha256:bec98007afe450597ffdecf128e013fb64504a9e6e29b615b6cc7f035cb83b99","signer":"ed25519:bench-node-01","signature":"5fd4d96d991a64fea3d74ff43f00dc7d098ab62a520576bb8ba6a8398d12f22d398b9491026ebe05e17870a4e1fbc324f757ddcf44c0efa041715fd9f8698201"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:8d28e5ad99e269f6aee03529009bb18d72c5b3ea727ac116db4bcd3b0916e092","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:21efe65a5cd6634a182109e3ed3c9edc6a232a0b1574ec896ede74ba2a493672","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"3.249865510588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"9.465624e-02","shared_alloc_j":"3.155208e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:21efe65a5cd6634a182109e3ed3c9edc6a232a0b1574ec896ede74ba2a493672","served_from_record":false,"record_id":"r243","record_hash":"sha256:d45c57f4e5e5b05e980fb68459f53f430f2bc1eba859b2b04cb0c6a138b17909","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110188},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.834627e+01"},"chain":{"prev_hash":"sha256:bec98007afe450597ffdecf128e013fb64504a9e6e29b615b6cc7f035cb83b99","receipt_hash":"sha256:5a8d01e6b6dc24eee1310a5007fb055da0842e29aadbf805b1b7d70713a9ea21","signer":"ed25519:bench-node-01","signature":"0926309b603432f1e3dc2c080b1eb532e1b93a448636af49052e50d9c6abd0e4d157baf696700ad93f15cd3fc9bb408063b99a65e2133ddbe167b207da2e260a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:a1bda37d33519f0a8ec0dc5acd33a2beb96346b6f335580c098c031aa9078304","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4e0f6c06f2653d70fb5238b34773775a709754e0c5cef8206cea8c7bbca5fd51","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"decline"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"3.697514070588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"1.076945e-01","shared_alloc_j":"3.589816e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4e0f6c06f2653d70fb5238b34773775a709754e0c5cef8206cea8c7bbca5fd51","served_from_record":false,"record_id":"r244","record_hash":"sha256:88bb8e14e043a5a15c7b83925acb6a4e18c52472eef87e1daf366f3453e5f754","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110247},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.840231e+01"},"chain":{"prev_hash":"sha256:5a8d01e6b6dc24eee1310a5007fb055da0842e29aadbf805b1b7d70713a9ea21","receipt_hash":"sha256:0ebcc9723051ac8efb1d9ff7aedaacd52a48249f54ef6f748ad0be05abfe0d48","signer":"ed25519:bench-node-01","signature":"3598dccbebb806a8f77305b2a839c47c533df7fcebe3e507b47b118d6f2d378ee0aac6a9122721d80da84ffd3c6de658575235855b28164a92860fa3df5df50a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:9963310dad03d27c3b9932547382c4f2ccaf312e81db2d4a8a78e986dc455fa2","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:4c74193d6acb14f41510f610a799acac10bfb3876c6a0e2a195cc68e190048d7","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"1.676242060588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"4.882249e-02","shared_alloc_j":"1.627416e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:4c74193d6acb14f41510f610a799acac10bfb3876c6a0e2a195cc68e190048d7","served_from_record":false,"record_id":"r245","record_hash":"sha256:5e6054783072e62c2df2ba0c93f09c85c4eb4e2f2c387aaa4595c14b7214cd80","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110275},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.805874e+01"},"chain":{"prev_hash":"sha256:0ebcc9723051ac8efb1d9ff7aedaacd52a48249f54ef6f748ad0be05abfe0d48","receipt_hash":"sha256:b0a906b62a431ad325e5b6ab3605040d0f54afcb4f330a80cfe70397226f7647","signer":"ed25519:bench-node-01","signature":"acdf2838f162b096d61cbd4d13b77269fba0c15271585fe6d8236aa3645e369caca62821f70e4d2eea50d97e06923f312f92cf92126919a58f7f93decf9a1003"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:d1fecfd0cc7a4d604321f7fbabe0c60f1e34466217cfc906885ef4c9b58c815f","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.032939470588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.174642e-01","shared_alloc_j":"3.915474e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","served_from_record":true,"record_id":"r82","record_hash":"sha256:796c66db2245954b7f1adefe6ab2b746c6c40d34fdc7990c935f119ab41d0a56","reuse_count":5,"derivation_j":"1.058824e-06","valid_until":92646},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.844002e+01"},"chain":{"prev_hash":"sha256:b0a906b62a431ad325e5b6ab3605040d0f54afcb4f330a80cfe70397226f7647","receipt_hash":"sha256:23faa0bf69db976a492f6c1dfc48df1913acf78bd1e73359a32aab4b013c6dd8","signer":"ed25519:bench-node-01","signature":"b326892aab5aeb759485ed1d3ccc4565be8ccc0d30df974120665e2a077643b02202daedd760a11d690c4f4e3ea97990e83dd8c5856cfffe3cc340b79fe75e0c"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:e46205496b33fe290d821dd2db1fbd917693f6baf0a19c9d79a300b615e627d7","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"6.020932170588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.753669e-01","shared_alloc_j":"5.845564e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","served_from_record":true,"record_id":"r16","record_hash":"sha256:3227d5f5cdb47b0c636c60fce42fed733f0e84ce2c21552a8ea3164c96c9d710","reuse_count":4,"derivation_j":"1.058824e-06","valid_until":87438},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.861406e+01"},"chain":{"prev_hash":"sha256:23faa0bf69db976a492f6c1dfc48df1913acf78bd1e73359a32aab4b013c6dd8","receipt_hash":"sha256:f50c528fbdd8e1e754f91701a41ce99b2aeea37432b47e8d40e5f3b85e90194d","signer":"ed25519:bench-node-01","signature":"b9b8eb0c8d8d3d3e13a0284992dae8d3aa821dee76ad3ecee21675aec687c824d724f569a3456ba6102fe955754503353767d14bb6c57a18a53abeda34793307"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:456e878283a1495141fb8f61377a433d805e599e9c901bc1d1c279da860b8955","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"create","subject":{"inputs":["sha256:ad48c4430dae690b329765ebd3a2aee6af0b915f29cbbb06ab2d43db3380730b","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"derive","latency_s":"1.700000e-03"},"energy":{"joules_total":"2.438542740588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"7.102547e-02","shared_alloc_j":"2.367516e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:ad48c4430dae690b329765ebd3a2aee6af0b915f29cbbb06ab2d43db3380730b","served_from_record":false,"record_id":"r246","record_hash":"sha256:2d2ec75370c7ff3067281f28efe906e1ccb040cfb6b9785740470fc77075ec5d","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110477},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.822153e+01"},"chain":{"prev_hash":"sha256:f50c528fbdd8e1e754f91701a41ce99b2aeea37432b47e8d40e5f3b85e90194d","receipt_hash":"sha256:6385b6f66fc8742a90ccd8325b4984d7c786319210075403bee21f189148ead9","signer":"ed25519:bench-node-01","signature":"6f8c13186d371907f92e18beedfe468d63bb96214770a8428e4f1140cc382ce4ef09bd9bd6a8fb72b5f46046e7339f4506138c04311837c801e42865288db309"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:50ec539034f5249b98966d672d08ad147a2384f87f854b1ad45d4b5070174490","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"inspect"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"4.244905270588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.236380e-01","shared_alloc_j":"4.121266e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","served_from_record":true,"record_id":"r79","record_hash":"sha256:bc09a0b7aa34a4163a95cc14cba017fc4631050085f0f7aabbba0fffe37d0c86","reuse_count":2,"derivation_j":"1.058824e-06","valid_until":92461},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.846227e+01"},"chain":{"prev_hash":"sha256:6385b6f66fc8742a90ccd8325b4984d7c786319210075403bee21f189148ead9","receipt_hash":"sha256:2beff3d38f35275049d8fe8a3879e94485cc47d61c5f19d4bf20ad81eecf784a","signer":"ed25519:bench-node-01","signature":"1133506066e636a714ddde585769ca4e82fba1b47a7163fcbc3ee335ace3fc127743247325ba8fab029db667bd3ae818a9521d6fd3e8a5e07f45662e3f4f9a0a"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:07ceecdf08693dacfca17fd28b3f2ff665aa97850883f4a1a5878c21ed46b1d9","kind":"decision","capability":"oer.decision.ev_charging_authorization","intent":"create","subject":{"inputs":["sha256:81dbeff3e03710faad18ddfdcd4b715d171b50030792c13bdd2e1a8083b5c9d0","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"authorize"},"work":{"status":1,"outcome":"derive","latency_s":"1.900000e-02"},"energy":{"joules_total":"2.077827730588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"2.300000e-06","idle_alloc_j":"6.051916e-02","shared_alloc_j":"2.017305e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:81dbeff3e03710faad18ddfdcd4b715d171b50030792c13bdd2e1a8083b5c9d0","served_from_record":false,"record_id":"r247","record_hash":"sha256:8e0979be027eeedbfb2e1e724555f7bbf20dce4ec8305cad70712c22160dfb62","reuse_count":0,"derivation_j":"1.058824e-06","valid_until":110579},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.815201e+01"},"chain":{"prev_hash":"sha256:2beff3d38f35275049d8fe8a3879e94485cc47d61c5f19d4bf20ad81eecf784a","receipt_hash":"sha256:eaf2dbcfe4e70296ba846df687d18233c26f091cd22c2cf12694bc2f0b65ee3b","signer":"ed25519:bench-node-01","signature":"ffa4a1a9bfe3a9a9482655ac8787c4a1f690039092332e948e8e045696a7ef2a262f9c2bce53cdcbad1e218d847a6c4b688bc195a14f4776b2cb377699587709"},"hash_alg":"sha-256","sig_alg":"ed25519"},{"oer":"2.0","receipt_id":"sha256:12a2ef362f462950bdb867b56482bcfe3a093b8b806a76a606812bdab38ea876","kind":"decision","capability":"oer.decision.pipeline_sensor_check","intent":"replicate","subject":{"inputs":["sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","sha256:fc5b42fd1881fb0f66bac5e59447050c09477baff2a45fcf5c28e007616b0bf9"],"output":"normal"},"work":{"status":1,"outcome":"served_from_record","latency_s":"1.700000e-03"},"energy":{"joules_total":"5.502581570588e+00","boundary":"node device, wired charger link, backend share, network","breakdown":{"compute_j":"1.270588e-06","movement_j":"0.000000e+00","idle_alloc_j":"1.602693e-01","shared_alloc_j":"5.342311e+00","upstream_j":"0.000000e+00"},"method":"model_estimated","temperature_k":"3.000000e+02"},"provenance":{"how":"projected","device":"hardware","weakest_input":{"how":"projected","input":"wire_w"}},"settlement":{"question_key":"sha256:80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","served_from_record":true,"record_id":"r25","record_hash":"sha256:6e74829278b022bdc9536ffd84c0eb821da5a3874e95b79387b7bc23e81844cd","reuse_count":8,"derivation_j":"1.058824e-06","valid_until":87941},"floor":{"bits_committed":510,"bits_delivered":"1.585000e+00","floor_j":"1.464199e-18","decades_above_floor":"1.857497e+01"},"chain":{"prev_hash":"sha256:eaf2dbcfe4e70296ba846df687d18233c26f091cd22c2cf12694bc2f0b65ee3b","receipt_hash":"sha256:8e948baa1ec7727e29ef3316df86da7bb79777933bedf455cba8d7ba16ec1ae7","signer":"ed25519:bench-node-01","signature":"bae22218995a2f060e47d8a131161c1e1f439afd7d04d07c0363c1bf6602cc813f789f3990338cceec9d32ca988ce52023fbf0c3c56db08e8a7a2cb0a0c25a08"},"hash_alg":"sha-256","sig_alg":"ed25519"}],"records":{"r235":{"key":"a0fd401c3038b9f285d0f65ef4ceb69b2105800921bdec43ec2954c0b0fe999e","answer":"inspect","created":22429.8,"valid_until":108829.8},"r60":{"key":"591bc02284e17c26a2b0835a79b31dd08d54443ff09ee36d35b60f30ddea70d0","answer":"authorize_capped","created":4576.7,"valid_until":90976.7},"r217":{"key":"7d4b002421433b01f9b0f76611fdfe099ed2e63b43deefa28e7ced76e9250528","answer":"authorize","created":20681.4,"valid_until":107081.4},"r32":{"key":"496f1026c65f1f30fc2fd412283cbaa8952f64e26889486383e53c537a12a739","answer":"normal","created":2140.1,"valid_until":88540.1},"r21":{"key":"678fe08a78a0cb3c662513b15302b138ce1354a79c85cb3644891a472d1730f3","answer":"authorize_capped","created":1307.5,"valid_until":87707.5},"r92":{"key":"5a7550a0055d59ccb3c4f9f1776480c59246751bc365995dd7e18001152fdb9a","answer":"normal","created":6935.7,"valid_until":93335.7},"r151":{"key":"c91460ada6ccfa92b02cddd2a5dc938fbfd3c5aedf6140e6d4f383451527fa10","answer":"normal","created":12159.6,"valid_until":98559.6},"r115":{"key":"cdac90b356105bbfc2ec1d2b6f50d290b09c8a4ff2cd746ce6c64fa30a02d707","answer":"inspect","created":8780.4,"valid_until":95180.4},"r48":{"key":"23d480c0475de1663073fb13cbe1e5bd2fdcc4d6e07a75c2d431461245da3010","answer":"normal","created":3572.3,"valid_until":89972.3},"r143":{"key":"ba80a0c5a96893e7ef50727233d32223b0c47e4bb8ba733fa50ffc6d22ca525e","answer":"normal","created":11512.4,"valid_until":97912.4},"r118":{"key":"6b9150cfbd8233226dad54e0c15876c5b819e8d9aff9a0c429350e52edb80cd5","answer":"authorize_capped","created":8973.9,"valid_until":95373.9},"r221":{"key":"a6c3f0d042a4ba209dda645c248347eb145cd28fc446dd789ef491d9befd9217","answer":"authorize","created":20982.4,"valid_until":107382.4},"r112":{"key":"6b4490d57878c284cca57315f4304f2b4835d387d5d5db8a92ab2484c9fa0431","answer":"authorize","created":8548.0,"valid_until":94948.0},"r61":{"key":"661120dc456ec83861c110b710ff9ad71298352ce119f83ebb44589c06a502cd","answer":"authorize_capped","created":4693.0,"valid_until":91093.0},"r144":{"key":"37e980e4882227a96e675fb441e1820f1abf8da0fd3d4073eefc5fa35288e5c0","answer":"authorize","created":11576.0,"valid_until":97976.0},"r109":{"key":"aecc00f40acfd5e31b4c34fab60b8afce96daadbfa7765a3a8bde8aaa6bc8981","answer":"authorize","created":8382.6,"valid_until":94782.6},"r241":{"key":"fcf6210ad2014207403d7ca2141df00caacfd572f9e94382871cfef28c1b2718","answer":"authorize","created":23553.3,"valid_until":109953.3},"r191":{"key":"ff23910fa778fac032c85c6568bb998c19a986333ffceece66d612ff672c1782","answer":"normal","created":16494.5,"valid_until":102894.5},"r213":{"key":"1df06120a16dbc38a7af778f018c793b4b17283e0dbf1c7c323acdebc5cc84bc","answer":"authorize","created":20315.0,"valid_until":106715.0},"r16":{"key":"1d0da12dc2e037012f9fef60e513b7779fb0ae2a2acec58682f44a3d2e3f3063","answer":"normal","created":1038.3,"valid_until":87438.3},"r82":{"key":"1308918070129909a278ac574f34dccd25d7fe6e6b9edc6c3383f683b0a4c9cf","answer":"inspect","created":6246.3,"valid_until":92646.3},"r13":{"key":"a8e321822bb7a103eee73415fa73a912b90c5f863fbec7633f2cb269013e7c16","answer":"normal","created":895.9,"valid_until":87295.9},"r67":{"key":"434c21a52f0ec696ed9ace53a471ae38f5ade0437b95c87c88db4fdb7b5e41ba","answer":"inspect","created":5262.1,"valid_until":91662.1},"r147":{"key":"4dcde1b30c97bc371abad9179f7d079831c59c3860d7df8b175517cfcde56244","answer":"authorize","created":11843.3,"valid_until":98243.3},"r114":{"key":"cbb701bee2e60d609c36090f957cfb1de305f32c2f69933c00d6a22bca8f5a11","answer":"normal","created":8688.1,"valid_until":95088.1},"r100":{"key":"5c82a1e4bc712b34adb3610a3c1262f5e1d97d2d2ca195911dae28d81ed6322d","answer":"normal","created":7534.9,"valid_until":93934.9},"r206":{"key":"ca5a91e5d506197e8fd03430940a49a994c86f3b3a599cc7e4a9870d1e7d01af","answer":"inspect","created":19575.4,"valid_until":105975.4},"r40":{"key":"b38cd1f33a130455853b4e6fce41ca504f4173d34ad1f99470b37673b5f8daad","answer":"normal","created":2780.3,"valid_until":89180.3},"r4":{"key":"000992060ac23f9a6b54bc2803d93971b95cb85a38feeb4e9d3559b2ffba116e","answer":"normal","created":233.3,"valid_until":86633.3},"r214":{"key":"356be222ab6f98d66c50ea3341980d4f6f2a51649f3224f583bfae59b72d0db0","answer":"authorize","created":20386.3,"valid_until":106786.3},"r150":{"key":"01b2122aa76c492f0e26f4d0d8113e3058a9c0a42add4d988081cc48760f2f78","answer":"authorize","created":11967.9,"valid_until":98367.9},"r14":{"key":"87fbc23294c2ec468634d4d2a29b0784ae6d1e65ac331af477e07c957fe523f0","answer":"authorize","created":923.8,"valid_until":87323.8},"r133":{"key":"04e5a26940894add6708ef236b673662643062f46a51261d7761552a16d9d3f3","answer":"normal","created":10548.0,"valid_until":96948.0},"r152":{"key":"f19bc2892427342b6a94dc67637059edcc9e4ffdbe0f27bbec3ee1262358377a","answer":"inspect","created":12206.5,"valid_until":98606.5},"r131":{"key":"681cb2a577ff523b7cd6ddb96943d8e946678ec479213c4ae937a17caab6ab20","answer":"inspect","created":10456.5,"valid_until":96856.5},"r38":{"key":"57d222a9b6821d1beda2ff0e08a18cffbef322c999e07cd13ed996e871aa136d","answer":"authorize_capped","created":2618.6,"valid_until":89018.6},"r37":{"key":"6a28d2adaac95bc3a2ea8c61107a5d0963c4e4bdcbd5093ef245a58cc8ad327f","answer":"normal","created":2524.6,"valid_until":88924.6},"r95":{"key":"2a1252ad9738cc7eaaaed1b70f61b805d45ec8615340f3472862343d3faf5552","answer":"authorize","created":7050.0,"valid_until":93450.0},"r229":{"key":"5e7f52ad100fb57bec26eeb1324cc66580a86ca22b04827207046febf1b20a4b","answer":"authorize_capped","created":21806.0,"valid_until":108206.0},"r128":{"key":"22d862b92bd310f94f74a536a6cc12299c62e5300c99188e9a681064fa11c842","answer":"authorize","created":10265.0,"valid_until":96665.0},"r165":{"key":"d44df2bf4fb54c72ad6469a023b0b46e6be12079545ed3c2ae2aa38fe0e4f661","answer":"decline","created":13344.7,"valid_until":99744.7},"r176":{"key":"aa7e52c298df874051c6d2a872415cc2dfe3f707b7195b21777823f81a44483a","answer":"decline","created":14497.7,"valid_until":100897.7},"r43":{"key":"c07152cef374396b314cee5827193f70093e1aae2bc94f82384fea2c01b4f7d3","answer":"authorize_capped","created":2996.4,"valid_until":89396.4},"r184":{"key":"06da72ce846abf2c5eadd2aab2f18cd1e5565999fe71c40809bc145b7d50dc5f","answer":"authorize_capped","created":15876.1,"valid_until":102276.1},"r199":{"key":"bba012d917b3f176c43c75c1babeca7aed6998ab35cfaa4885e98ab27b59ad9a","answer":"authorize","created":18372.1,"valid_until":104772.1},"r178":{"key":"9e61930db681a8926fd28a93fc21fc78d349459ebf95dbc889666f26e6a9511a","answer":"inspect","created":14858.6,"valid_until":101258.6},"r125":{"key":"344d3310dbfdbc5554f4e978fbb9c3cab5e5c766c52065d101623da328d5d32f","answer":"inspect","created":9902.2,"valid_until":96302.2},"r208":{"key":"ae1bd322166290226b5e955743760d82a71c20a05d416ba0d87c429bf3b0e67c","answer":"normal","created":19742.1,"valid_until":106142.1},"r233":{"key":"0666d33c6587bdf37dfd5f26f63169d9428a4ad5b14f750a409cf5aac0ea7bea","answer":"authorize","created":22306.5,"valid_until":108706.5},"r171":{"key":"8d2ad364f746f7e5890037cb0de73c8c0800284c36b0693f37f9781bbdda230a","answer":"authorize_capped","created":13707.2,"valid_until":100107.2},"r8":{"key":"0459438e800f3c46d94bb0264ba260d591f263632a5327c9c04828e074ca80c0","answer":"normal","created":460.4,"valid_until":86860.4},"r1":{"key":"5ea2a39f565cf2588f19cb5c05ffdb4e6e04155dd041eeea4651d60de5cc156e","answer":"authorize","created":40.2,"valid_until":86440.2},"r239":{"key":"92e9c4006c4b2efecff6f3f7549014b52d121982834ec208592be3a6e76cb549","answer":"authorize","created":23081.4,"valid_until":109481.4},"r136":{"key":"56f31403b6c262597065ff99fdabb3aa51f06ce20ce0c64fd757c16c6e472db8","answer":"decline","created":10865.9,"valid_until":97265.9},"r116":{"key":"9840140a39c47ebfcdda27e664a72009daffa1d975d005450a100350849daa10","answer":"inspect","created":8810.8,"valid_until":95210.8},"r121":{"key":"8f52d41daaf0271ad11368ec61f9a777a25c003c2e9b643ffae172afc8c6dc8d","answer":"normal","created":9219.5,"valid_until":95619.5},"r18":{"key":"543b0438d15cea081a05c8bc2a7c7bab836d901528216ef19b14045909d3f014","answer":"normal","created":1126.8,"valid_until":87526.8},"r24":{"key":"441d343ae7ce5bc22fef8578d70d16d57a6e30008eba1a33565b6e8c73e5f4c1","answer":"authorize","created":1465.9,"valid_until":87865.9},"r246":{"key":"ad48c4430dae690b329765ebd3a2aee6af0b915f29cbbb06ab2d43db3380730b","answer":"inspect","created":24077.2,"valid_until":110477.2},"r89":{"key":"386c444bb8e68696b4deb7cee60d731f03a2706029e7d8dcae158d7d4a6222e0","answer":"authorize","created":6713.6,"valid_until":93113.6},"r134":{"key":"03edf452ec745a0b3af013d4ab01c43d27b32aa4bc66d762434da2276860728b","answer":"decline","created":10646.8,"valid_until":97046.8},"r119":{"key":"c5acc45aa021fd76b694dadbc084a3aa9a1107f5957329ada1989fd9a13fd849","answer":"normal","created":9004.2,"valid_until":95404.2},"r139":{"key":"6f37d45f68c8e63262b6f5238005c8e712494dcf15281951ed02eb9edcbdd749","answer":"normal","created":11078.7,"valid_until":97478.7},"r80":{"key":"cfde747273a49efebd1335b7e318d6df510579a1af73818d9b0ccab8649bd5da","answer":"authorize","created":6153.4,"valid_until":92553.4},"r200":{"key":"3456548300328438389e70210979fd21b35f4518a9be8525a35e94da571b0bc0","answer":"authorize_capped","created":18397.2,"valid_until":104797.2},"r225":{"key":"438a74c1788de475b657a4d1a2b945c0fb090bbe37edf316b3c95a620c37123c","answer":"authorize","created":21550.0,"valid_until":107950.0},"r154":{"key":"50c404d36b19c3fdef88459eb0d2411aea6815b2d9ae84aea272390b347ccc47","answer":"authorize_capped","created":12407.5,"valid_until":98807.5},"r35":{"key":"995c74d71caf5d717ec1b1db854037a328e7922345dc61b3437aba12ed2a8eb3","answer":"authorize","created":2377.5,"valid_until":88777.5},"r47":{"key":"315c14e61b89addfef08fbfe1205125c8472164f9cdf669f157fc7fc338e586e","answer":"normal","created":3437.1,"valid_until":89837.1},"r142":{"key":"76aa44f7b0b3b872eb243bcd0ed8bc9038d6779900791ddcf365d5805e743a5f","answer":"inspect","created":11427.3,"valid_until":97827.3},"r64":{"key":"12e1d500f4d5e2048a2cdfdedbab64ccfa35e492a4f9b1b1ac37e4dc345e25ab","answer":"authorize_capped","created":4896.5,"valid_until":91296.5},"r108":{"key":"89d945088318077d9adfa27011c408370594902bdc04f815e39284b8a7e08d5e","answer":"authorize_capped","created":8283.2,"valid_until":94683.2},"r98":{"key":"f4f9852d4bb1ab8da33c1e53245115c7b7c35eeb04727089cfabb53b3bde5bc9","answer":"authorize","created":7365.4,"valid_until":93765.4},"r83":{"key":"9c1ce546fd54a646e92397cdc5cf76c148f6186271155222ca123a7bdf8a1d26","answer":"normal","created":6336.5,"valid_until":92736.5},"r52":{"key":"eb7bb57202e70a269d90927e2c13fab24a774d9192a4ad7dc54716765bc25720","answer":"inspect","created":4004.9,"valid_until":90404.9},"r57":{"key":"fbad157ba34331794cf5050bfec542d16e1f3924470fc53d5b8557ce96983c6d","answer":"normal","created":4273.4,"valid_until":90673.4},"r190":{"key":"82766587876a39fe044dc0896677a505d5e5def45b21bf32bcd3f0e2ed269ba2","answer":"normal","created":16402.7,"valid_until":102802.7},"r6":{"key":"373ee59b311333a4d8f4d4bc7c250e0ba6a4ad0e9dfd8983a4eca3ed32f1bca1","answer":"authorize","created":332.0,"valid_until":86732.0},"r162":{"key":"866985a43c4aafecdce84de12bb2720fdf4130adc7633c396da10fde78f100b5","answer":"normal","created":13089.1,"valid_until":99489.1},"r72":{"key":"240fa5c9d924503df218a3b93037f774d98422886228c19146631e7a15c762f2","answer":"authorize","created":5630.2,"valid_until":92030.2},"r194":{"key":"a24555e7692044ccfaca766108abaf92a0eb3d523943bebf7d2eceb3f7cb2593","answer":"decline","created":16860.5,"valid_until":103260.5},"r197":{"key":"3866c5ef26acc8497fff0ba0c7f2411032b993655623b854d09ef997309076c9","answer":"normal","created":17810.7,"valid_until":104210.7},"r106":{"key":"b01775f414fc8750ffb46d8e96e6535418e94e18e8042f473efeffc9b9317a0f","answer":"alert","created":8099.0,"valid_until":94499.0},"r25":{"key":"80d385fbc8687384e87ce5b558fc529384d5bea41b4f433a06dca0659a84738d","answer":"normal","created":1541.7,"valid_until":87941.7},"r189":{"key":"6737e600363f218f40dd3069f95f5dbf3c4db57424119bd7c1736a5be5cc70bb","answer":"normal","created":16370.4,"valid_until":102770.4},"r91":{"key":"f98f8602394386ea5ab5f4f9c08208c54148d551cb84dca8d4c60da7a903bf68","answer":"normal","created":6854.1,"valid_until":93254.1},"r96":{"key":"2576d606f7686868001e756e697c1c0bd80ff210c28f9626a40a0206f8740c7c","answer":"normal","created":7184.9,"valid_until":93584.9},"r129":{"key":"027206174fe3afe55662ff7e197cef4bcc261b706aae20ce6b70fce316d50652","answer":"normal","created":10354.3,"valid_until":96754.3},"r104":{"key":"d72b56294d3317cd83e6e9ac76160ce7967610be483d2d4fec03730eae111c3f","answer":"normal","created":7987.8,"valid_until":94387.8},"r45":{"key":"88e8063dab93d7c54c198faae564d37a45fdc05bf72a71091e28d81cdae5a7c3","answer":"normal","created":3314.1,"valid_until":89714.1},"r137":{"key":"6325a64e3e9f740e0d177e5e9f7b218e54860498e001b826bb4e3639a52aaaa5","answer":"authorize_capped","created":10896.2,"valid_until":97296.2},"r187":{"key":"fb1c565303b1f155c6b39c6428631346c93ae7a3c34300d38606c842ae111be3","answer":"normal","created":16305.2,"valid_until":102705.2},"r243":{"key":"21efe65a5cd6634a182109e3ed3c9edc6a232a0b1574ec896ede74ba2a493672","answer":"normal","created":23788.1,"valid_until":110188.1},"r126":{"key":"9014e65fe138b28393ccb3d8d284ed537952a969e7a21268271f523fa7af84ed","answer":"normal","created":9982.2,"valid_until":96382.2},"r240":{"key":"806356603a2a84090fe9b08ce79608322c3d664075c56f05b93992641802abf0","answer":"normal","created":23337.0,"valid_until":109737.0},"r68":{"key":"ce77866203f612a22e6657ca52065c2bca49b5c704e7cbe7bdbafc508469eb4c","answer":"normal","created":5342.7,"valid_until":91742.7},"r105":{"key":"5169b6649ebf570c3dba87c73d16a22ab32c9b6bfadf7e3a2fd90d625b3ea944","answer":"decline","created":8063.2,"valid_until":94463.2},"r2":{"key":"cc14a6790eb93ecdfc110965eaf5ac3350b52596cb7d600d84ab5431b73cfb27","answer":"inspect","created":78.0,"valid_until":86478.0},"r202":{"key":"6859d67dc7b9683a4f1fd9f5b965aefd8a22140e5fde07807360dc5e54dc6198","answer":"authorize","created":18703.6,"valid_until":105103.6},"r88":{"key":"c4ec9682783effc085e9f772f3940379db07512d64795c0772c75dbfe45a2979","answer":"inspect","created":6665.9,"valid_until":93065.9},"r210":{"key":"e6c836824528ac426cdb6b50379dc03e4effab0776267dceb4a9467298b81afa","answer":"normal","created":19899.6,"valid_until":106299.6},"r148":{"key":"516b5691b6e66826019f65c73831fd8628d3333ec153968bae02509709ddcf3e","answer":"authorize_capped","created":11875.8,"valid_until":98275.8},"r74":{"key":"300656a7d76a43a3659b5e523db3771511c201965d9f67c1a12732317c102177","answer":"normal","created":5784.9,"valid_until":92184.9},"r81":{"key":"310326ba6b9b9dbb0acacf16a065d18f85dff7a810d371e34f2a5949282c8060","answer":"inspect","created":6221.5,"valid_until":92621.5},"r10":{"key":"ebfae6bebcb2216decc8a5f5248c809294a8c5e1a542d328eee0999e102630d0","answer":"normal","created":664.0,"valid_until":87064.0},"r93":{"key":"8369c6ce22f5309b9167dbe73ed40554e89b1ea5b99ec31727e74624db510167","answer":"decline","created":6965.9,"valid_until":93365.9},"r111":{"key":"4989e6fd9d5b4a543eca9f0afbdce0f6043a8a567826de22f9d1d6cdf9c96ba3","answer":"authorize","created":8465.1,"valid_until":94865.1},"r236":{"key":"933c071a2b53d7a080551b9d19b151ec064eb2d17f6c872d6bcb961d1d1529a2","answer":"alert","created":22557.3,"valid_until":108957.3},"r73":{"key":"5aefa7348d80e639ad964174db0ac09ade23590bd0c9e27355a39fcf0342719b","answer":"authorize","created":5717.5,"valid_until":92117.5},"r164":{"key":"f8045743fa59e45d492212b7ce6a4d2284e391e9ee89332c8f878260e18e5039","answer":"normal","created":13268.4,"valid_until":99668.4},"r36":{"key":"fc4f1753901502e5cb89dd61351c41289f2fb74c1f4cb38a6cbfe5a603582f3f","answer":"normal","created":2431.0,"valid_until":88831.0},"r156":{"key":"f70b4758637322ee4d79b8a5f7b81ae70da5a6c8a9c3a9e8023f55d285f1b3d9","answer":"decline","created":12574.5,"valid_until":98974.5},"r170":{"key":"8130c76217d2e109b9e876d67a30cce4f6ada330eaf9ceab951621f8d960e66c","answer":"normal","created":13655.9,"valid_until":100055.9},"r160":{"key":"236ec770245fbae01fc58a6e26be276f26c092cfb0289d628034a105e4a34f85","answer":"normal","created":13010.3,"valid_until":99410.3},"r76":{"key":"07d0f7781bd69b6ac635e1588d83110921621d8756204fc2c7b3c233b482507b","answer":"authorize","created":5909.6,"valid_until":92309.6},"r69":{"key":"f668b77f7f3629e1f6d16f8bcb2557fc93c50eff52cb1fe95b97faaa24e0e33f","answer":"authorize","created":5421.0,"valid_until":91821.0},"r65":{"key":"b0387795c262bc1dc0024657e5c1142edf822e3c40aac8830124fa0b5b3be2bd","answer":"normal","created":5031.8,"valid_until":91431.8},"r101":{"key":"1b4ec7b8551450bb693316293289ae6e5721e61414d32d9e1e8dcdec64a7741e","answer":"inspect","created":7572.9,"valid_until":93972.9},"r46":{"key":"f30367cfef088d228eabb3c5ceba77659575040308761d05e591230a30803269","answer":"normal","created":3412.7,"valid_until":89812.7},"r138":{"key":"142b07d7db8dea0bfc67c9f5eba2082dd565d65695dc5376e1da98af2000ce32","answer":"inspect","created":10989.1,"valid_until":97389.1},"r3":{"key":"5d66d7e7446bb1cf9266702755e05743ab3805b0a13146038d40f354832fe6a1","answer":"authorize","created":133.8,"valid_until":86533.8},"r232":{"key":"32b537f7e4ab7f4fe4cb1b7c4b9cce051eecf472dbc477146b1292f4d175660b","answer":"normal","created":22139.4,"valid_until":108539.4},"r222":{"key":"61a0b81dbab0cff6da1d675d0857ca934485b1cb836416a15a76ff0cbb083b6a","answer":"inspect","created":21082.6,"valid_until":107482.6},"r237":{"key":"8731682b682be8c57a69b4131050ddc9fa82308bd709b8370d0684798ae379ca","answer":"decline","created":22687.3,"valid_until":109087.3},"r224":{"key":"c41d282f3a696a65be713156d86b2375f5d0733fefc81f28d26cd8c6b35f0d96","answer":"inspect","created":21266.3,"valid_until":107666.3},"r207":{"key":"22769860872a040f92d81d780c3ead33f2c4c4693a6cbead116dbb27f5fa9744","answer":"normal","created":19625.6,"valid_until":106025.6},"r62":{"key":"b90bb86248e2952a0051e38c0fbaf3d6cbe1aaa4e1f830b4cb7d07b505c1d7aa","answer":"normal","created":4731.2,"valid_until":91131.2},"r85":{"key":"4a83686302e8d2fa143a1640bef23180d38f6901a3483339dc56731a5ec0dd8b","answer":"authorize","created":6427.6,"valid_until":92827.6},"r28":{"key":"fe80b86dc90e86386ead4fb1e13dbea22c6bf076ee82b9ab7e59aa014dfac56a","answer":"alert","created":1780.6,"valid_until":88180.6},"r86":{"key":"865068876fe5c11725db601266e400936a6b822e99dafb241bdd5661ea346bd0","answer":"inspect","created":6551.2,"valid_until":92951.2},"r209":{"key":"271f588ed020b0df063f75c100e10889f916ea364da298472b41f291ce3aced4","answer":"authorize_capped","created":19839.9,"valid_until":106239.9},"r94":{"key":"e8d588c15f3a6ba2d18014a87cafd908d20d54409c84a8304cad13dcfeabcffc","answer":"authorize","created":7026.8,"valid_until":93426.8},"r103":{"key":"e22d08cd71e4fe85157a117945884be41615af88796c53f606b47fa038bac18e","answer":"normal","created":7896.8,"valid_until":94296.8},"r31":{"key":"b77ef8ce17572e60cd55a9745834934f154c1d52d767075c574f18f1d3d4d748","answer":"authorize","created":2007.5,"valid_until":88407.5},"r49":{"key":"502158ddf55d90f0209666a2eb46153da936a272f75fa05532df59430c6bd719","answer":"authorize_capped","created":3722.2,"valid_until":90122.2},"r102":{"key":"84dd48defb81097cfb6618f709c9a08f3583cb3227ad2e905c32c5666eecb9b5","answer":"inspect","created":7747.5,"valid_until":94147.5},"r219":{"key":"a72d68eaba06ec4e6c963da103c9b0dc45ab7886ddc6983bfa2adda3429d7c9c","answer":"normal","created":20818.6,"valid_until":107218.6},"r79":{"key":"d0dc58f8fe1efb2a823ba77a4b5e489d18150c6f9608416c05e861396cba0e76","answer":"inspect","created":6061.9,"valid_until":92461.9},"r113":{"key":"e6c4a8fffbd7bb68e85ee6d01f9f3b0fa89fc968061d134b0275e64026294852","answer":"authorize_capped","created":8597.7,"valid_until":94997.7},"r42":{"key":"9c89b9128168c614899065585aa1af0e9fde30a0cf82a9f112d769711fea702f","answer":"authorize","created":2849.0,"valid_until":89249.0},"r185":{"key":"961b391b8b2d819e0bd5384c0a093e3fd737cd0e8652383fbf8ce86df8e6087c","answer":"authorize_capped","created":16228.2,"valid_until":102628.2},"r149":{"key":"e3493924c9fa37ce74995eb0d97adfbf48df5cc8e5412c55cfd6709c48ff4154","answer":"normal","created":11938.3,"valid_until":98338.3},"r175":{"key":"4a81192758d20335e6b34c2b4afb8aaa03ec6ab7edae4b92d5689ea56bac885f","answer":"authorize","created":14353.2,"valid_until":100753.2},"r212":{"key":"3f46492cfe2688a378181ff75608c51194302a2ff04d9ef4bef928052ea3e3ff","answer":"inspect","created":20139.9,"valid_until":106539.9},"r183":{"key":"2150f93d600bfc917a75a44cc4db64793b61221b87f3d053e9c25c37953e88d6","answer":"authorize_capped","created":15454.1,"valid_until":101854.1},"r245":{"key":"4c74193d6acb14f41510f610a799acac10bfb3876c6a0e2a195cc68e190048d7","answer":"authorize","created":23875.0,"valid_until":110275.0},"r201":{"key":"aa3a99583306b739abdaacd39acd1f489f74cd82d0c356afe5edf2662711b7a6","answer":"normal","created":18614.2,"valid_until":105014.2},"r120":{"key":"5f91097cca77d5e974cab038a9e8b2caca452bee5ee33d9a3521ac39eff904a5","answer":"authorize","created":9100.3,"valid_until":95500.3},"r179":{"key":"dde0d98cce82f3e04b6a435643bf0cc5ed3dcc0a2d028483e907de961a087012","answer":"inspect","created":15005.5,"valid_until":101405.5},"r5":{"key":"2b6cc99222f33d8a6ffd1cf22eee3fcfe52da5b3b9a2d9a735a73f65e5681507","answer":"normal","created":304.7,"valid_until":86704.7},"r196":{"key":"9eba0993d20b4fcc833a8898898639838baa8bda656cef4206d45b329bb3ab0a","answer":"alert","created":17400.1,"valid_until":103800.1},"r166":{"key":"c5feb99768a5f6dafcf10e73e5dd3b71a0e485e646e80369868257c8982b6ed8","answer":"authorize","created":13378.0,"valid_until":99778.0},"r153":{"key":"4eca99b1aa9b7cc02d93253fcbd8b042a8f2a308065e37f5971da74e7223ddae","answer":"inspect","created":12345.1,"valid_until":98745.1},"r56":{"key":"bab919bbfb3527533a2cad88cbd913bdaae65b411f59deffed79daa5ef8b9230","answer":"normal","created":4230.1,"valid_until":90630.1},"r124":{"key":"88c439bb9d426fb9727a854109492c31b2cbe45e6061fb213c1131f86d0a5280","answer":"inspect","created":9454.7,"valid_until":95854.7},"r238":{"key":"2425f9e03a811a126a919af3b686064dff44a60bc399c610ebe622d3abcbcfac","answer":"authorize","created":22990.4,"valid_until":109390.4},"r180":{"key":"7bb669efc7ef54a75650b800b852a682c0dea2c379850992581df1a10e149544","answer":"authorize","created":15100.6,"valid_until":101500.6},"r9":{"key":"17215a184e99b89fc3da059c07f301360e397b522c12c3aad6e1d5419cfb4cd7","answer":"inspect","created":555.8,"valid_until":86955.8},"r140":{"key":"fe477a1fb2edac604c78a4db71c121f492fc1089d0ca77dae881c4d5b525c6f2","answer":"normal","created":11169.7,"valid_until":97569.7},"r20":{"key":"63943a4226d8fb42655215a97d92b7b39c4d83792db09fef2b659595697f2813","answer":"decline","created":1209.1,"valid_until":87609.1},"r90":{"key":"c7983a476a8b1358c3d43853db09b7bfc38fd0634ac0b460c285b02f89223d40","answer":"authorize_capped","created":6777.4,"valid_until":93177.4},"r77":{"key":"bcc91a4f025c63a02ead5e74a517af4b3d4f4d33b42c58e454808d418e1dca17","answer":"authorize_capped","created":5944.3,"valid_until":92344.3},"r141":{"key":"d3980a53696b36e807ddd7a77cf4eea828b8b43bd22c99f8d5ccb8925f32d248","answer":"authorize","created":11233.0,"valid_until":97633.0},"r107":{"key":"ee758a6881e98d0ade331c7e8dfde55cc7269a431806803d356bcc6eb9d5ab8c","answer":"inspect","created":8194.7,"valid_until":94594.7},"r192":{"key":"01322a812d2397397876595f6fc2be45dfeeed256b674f70accd6e3354059fb0","answer":"decline","created":16670.3,"valid_until":103070.3},"r218":{"key":"08823a9dcbef015dbdc1c8f4ff977078de0a188d0ec0e08e1dd7110840697ec1","answer":"normal","created":20753.5,"valid_until":107153.5},"r59":{"key":"363a7aa5dce960db4334d9fb150b8e9170c93243393c0a7b73ac9e6d18693522","answer":"inspect","created":4486.3,"valid_until":90886.3},"r39":{"key":"9db2aac2012a48a242f2d34c7522134a296e612ec7ee0f355b4dd16eebff0f00","answer":"normal","created":2681.9,"valid_until":89081.9},"r234":{"key":"08885ac376dea4446461fdac10faefce43c5e98f66020ca04ca3e368710cd98e","answer":"alert","created":22344.9,"valid_until":108744.9},"r78":{"key":"f2d32adb3d6e01e7630860c636aab70ca928ed102a1cdf5fa6bb132eea96bb57","answer":"normal","created":6038.0,"valid_until":92438.0},"r84":{"key":"c7244af0135d986ac61fd14065b4dbf9cfe82021f3ab953ef526e57c3d5dc13c","answer":"inspect","created":6391.9,"valid_until":92791.9},"r159":{"key":"3c9feb0b662a0c417a55ec5751b1c501d1d315c1d204379045c2e004b8c5c875","answer":"inspect","created":12949.0,"valid_until":99349.0},"r145":{"key":"aee17b375980a589f30f158391737b2322f308485b57b59896ead820ac93fcac","answer":"authorize","created":11662.7,"valid_until":98062.7},"r7":{"key":"94d79b3b10abf3b32bc3605e889a76f62d12e9b856a159e6889a8170369dfc6d","answer":"inspect","created":425.9,"valid_until":86825.9},"r17":{"key":"e496bb563eed03c5e50e65c2be033983e2af2129a553cc99debae35f3260187a","answer":"authorize_capped","created":1080.1,"valid_until":87480.1},"r99":{"key":"aef4bb6b5fe9ccb4e86032a47f27b234eace63aa374802947a1767a90c0a8464","answer":"normal","created":7418.6,"valid_until":93818.6},"r53":{"key":"d4a6fb71a5a16c3ef8c4d405f5dba86c1f33c8d257865ae3f9d2bfe82f80bc8f","answer":"normal","created":4077.3,"valid_until":90477.3},"r155":{"key":"5f670babc0d5143c2f85eeafc483373c44b95de221f254f409287881280efd20","answer":"authorize_capped","created":12486.5,"valid_until":98886.5},"r158":{"key":"7fbe0bb7487a415754e1d2db8aa8e75c9a958e18764a14b62dbb6702a827d546","answer":"normal","created":12902.6,"valid_until":99302.6},"r26":{"key":"f1070bc76733cc042f615c8c46f0da8964f7b072195de00defc3becd95ac9c58","answer":"normal","created":1579.9,"valid_until":87979.9},"r226":{"key":"a2df2bce62fb8f386af6a70e7ec36d477087420d1b44e15eda7e965a9d1feb43","answer":"inspect","created":21584.5,"valid_until":107984.5},"r211":{"key":"60819bd34d50fbc46bd50d2e6a28d1071281bcc7ba2a6e42827c0b97a375501a","answer":"authorize","created":19991.5,"valid_until":106391.5},"r216":{"key":"59687be2cc0728f45be3c434049504371152803c7205e95ceed1d12f1291f24c","answer":"normal","created":20516.6,"valid_until":106916.6},"r122":{"key":"302c7be4003ea0a217fb6534c49ada5bd8b011724c713672aaf7c5e4bdb42d69","answer":"inspect","created":9342.5,"valid_until":95742.5},"r146":{"key":"6fb90bf22cf47ebb829244b6eb2a2c3c6103a367b5355ca78f592dd35b9c656b","answer":"normal","created":11743.0,"valid_until":98143.0},"r244":{"key":"4e0f6c06f2653d70fb5238b34773775a709754e0c5cef8206cea8c7bbca5fd51","answer":"decline","created":23847.9,"valid_until":110247.9},"r231":{"key":"7aaecc08a0df481f598610afab8692f5ddca7549188b4b2fcc06d2adc2b91739","answer":"authorize","created":21934.3,"valid_until":108334.3},"r34":{"key":"a5c65c1251df6b52b6e4a628d9d24fb1484cbf31edba89ca1f021a79d978cf37","answer":"inspect","created":2309.2,"valid_until":88709.2},"r75":{"key":"759f9c148dbf8a7b035d1e93268b749afb1424af4fd1bbde4111057eade1779b","answer":"decline","created":5828.5,"valid_until":92228.5},"r177":{"key":"939bcc1943febcebbe225a53f2decad409bea62e86017712d04d92893c520ed4","answer":"normal","created":14681.6,"valid_until":101081.6},"r181":{"key":"74c49c22905ea62e5a5f211dc5f47a895129ef8a84de0b3ca3c06e98b014cb87","answer":"inspect","created":15189.7,"valid_until":101589.7},"r87":{"key":"09fbec421a34061a20a3276b975bb72b854374ca4aca4b207ae8812da3d2f0bb","answer":"inspect","created":6592.9,"valid_until":92992.9},"r70":{"key":"da6c1c4573865ce511b7df4d41f5f959ab68783b07b6c0639a8a8c91d5c45886","answer":"authorize","created":5490.2,"valid_until":91890.2},"r58":{"key":"d4342c517cddd41c899d7b9a10713f0f335f15631294442b857cdb687d622a72","answer":"inspect","created":4321.7,"valid_until":90721.7},"r15":{"key":"cac3ec97ccbcc9911415dd1c3364a4e1be2862326ead2359d76fa0d81c5c2e41","answer":"normal","created":953.9,"valid_until":87353.9},"r204":{"key":"c056ecb36876fe2bda74fc48b7a32f777323cbaf6519fabddbf28ac0a87c2b68","answer":"authorize","created":18833.5,"valid_until":105233.5},"r117":{"key":"4bacccbd030089bf80d971373b0c6e1988aa64c65713385608eff33f6b6c3fa1","answer":"decline","created":8945.7,"valid_until":95345.7},"r223":{"key":"c8fedcbf10aee8438e76d85876f93595fdbbe423e074c2031a7b547557e07c6b","answer":"authorize","created":21179.2,"valid_until":107579.2},"r167":{"key":"1d7a6cc8581b38a163cf95aa00c0875a71db7a0206c9b19ddf52698710a36ab6","answer":"normal","created":13472.8,"valid_until":99872.8},"r168":{"key":"b35fdcce6b0deeb13607ea6ac07486b5e54843dcb842e6c100c5251a428ff403","answer":"authorize","created":13566.3,"valid_until":99966.3},"r63":{"key":"0bea6cd650d108797f6adf95ce6eb98edb25d3145e447dbbe59044cdc1405e79","answer":"inspect","created":4864.9,"valid_until":91264.9},"r215":{"key":"2e6bcce24324c6413e1841fbf4ccf83ba8447651cd6d25ab70dc545d67dbecf2","answer":"authorize_capped","created":20447.6,"valid_until":106847.6},"r11":{"key":"83e3ecffea2fc1d618c8e6a2b3989bbf71e691b703b087230e7c8df1a5eb2142","answer":"inspect","created":751.6,"valid_until":87151.6},"r41":{"key":"b4e6cd21c0ba051d04aab9042e5e115c3bbe352ada582acaab628fc22dc8fd67","answer":"normal","created":2825.0,"valid_until":89225.0},"r71":{"key":"efbb8d25a730016e7141c8a4385a30cc196c5b7f9d238b06f6213360fb3a4888","answer":"normal","created":5575.5,"valid_until":91975.5},"r193":{"key":"5d7d5d259b708cde975291235fd292c65d84bcd5067333476c61256be72dec9a","answer":"authorize","created":16783.9,"valid_until":103183.9},"r169":{"key":"3666ed45e5af46d635e0d84ec059f2a60ec75bf859f6573873615fa55cc9eb05","answer":"normal","created":13589.5,"valid_until":99989.5},"r186":{"key":"ec9fbd4b6ba63997cedebf8eb7b1b1602733679e70bdb87aab8f6499ba1da719","answer":"decline","created":16268.5,"valid_until":102668.5},"r44":{"key":"0267ad62d64134b8622d4fb07cdbe888137deaca0fdee61e6b66d8bcb9076eaa","answer":"normal","created":3235.0,"valid_until":89635.0},"r172":{"key":"d96ead6b9efeba477a485f30879290174c4379502931ddb2e2e517c5180a0925","answer":"inspect","created":13733.1,"valid_until":100133.1},"r205":{"key":"ad278d6c144d6ba6abe0909ec13f4571697719ce7fc2ad60ad49fcd7a7a482af","answer":"normal","created":19188.2,"valid_until":105588.2},"r227":{"key":"154acd6e250ebe25f69cf2b239edab416d7fe7fb6baccff9ac3d51823d7f3485","answer":"inspect","created":21649.5,"valid_until":108049.5},"r27":{"key":"272c9d86aaf700789284bb8372a2da11c6d2899016b0aea1b9b930ae8725b372","answer":"normal","created":1665.3,"valid_until":88065.3},"r54":{"key":"fd4c1d8eeb1ba609a09e31334f8a9013c10158c6b9aefd227c5fd0e0dd2fa168","answer":"authorize","created":4119.5,"valid_until":90519.5},"r123":{"key":"e0b57d9c257ac8c9907ed3e56a0c407357f932bf26e1660d0d88a96cc06b6aa5","answer":"authorize","created":9424.5,"valid_until":95824.5},"r188":{"key":"cf49fda430355241c258ed4f604d062793a1e809eb06aa62b8eef4d5827b6660","answer":"normal","created":16342.4,"valid_until":102742.4},"r228":{"key":"f31f9da7b2fa4c561c8ee66224a278001052b8b99d6dbe7c209883d758145f3a","answer":"inspect","created":21706.6,"valid_until":108106.6},"r51":{"key":"8bcb9dbe359bff16d6a14b5cd61e77003452673909a5709b8fd12bcdad175c10","answer":"normal","created":3911.7,"valid_until":90311.7},"r198":{"key":"b5166dc9434ae553a99bc73fc4c5eff59caa50ac572d538e05455c4f40710854","answer":"authorize","created":17969.2,"valid_until":104369.2},"r33":{"key":"38918dd8f55312dd4ef01adad024a47d010d9a3649ba108cc31f5e515e45f804","answer":"authorize","created":2192.4,"valid_until":88592.4},"r97":{"key":"c6a5bde2c8cef5728623cc3d7d230d795042fe75b0bfcffd30613b27e1962cb8","answer":"authorize","created":7274.8,"valid_until":93674.8},"r173":{"key":"db77ddfc23a61c07ebd5b655bce57cf0a257f4cd3183666ef84c4bd52ecdd2fd","answer":"alert","created":14007.4,"valid_until":100407.4},"r195":{"key":"4f997e150ba0259c9622fba72c9ccf1420961b0c877fe9ea6bd0e046da32ddee","answer":"normal","created":17190.9,"valid_until":103590.9},"r230":{"key":"4c744e2ba5337d8ddbf322da9a54af286783ecf207c9c30c67beb264b801d5e3","answer":"normal","created":21851.2,"valid_until":108251.2},"r220":{"key":"baea2e2ddc1e7402abc1dea416e792b9abb0db4212cd13a3bb45db038aef7c4d","answer":"authorize_capped","created":20951.8,"valid_until":107351.8},"r19":{"key":"37707e34da5b534c649a60fc1296acd8d8c186353bae88e9ebb88424890d7407","answer":"inspect","created":1162.2,"valid_until":87562.2},"r135":{"key":"cdcf8e35c696111fe372178b7a84c92bcc0a341f50b1b9945d5272081b4a00a3","answer":"authorize_capped","created":10740.6,"valid_until":97140.6},"r242":{"key":"8c64fe7e125a0c23e1693ec175d3c7d7ac8100de1da797c06c8bedf80d663378","answer":"authorize","created":23735.5,"valid_until":110135.5},"r203":{"key":"4d67eec84284925c3bb3e94c48c11e1e415e5b4bf6c82676bdb63f70afc5dbdf","answer":"authorize","created":18796.8,"valid_until":105196.8},"r55":{"key":"0dc01ed37cced0f5820acbc15b5de7dc270ea65e7930a4cf889bdfa792199326","answer":"inspect","created":4147.8,"valid_until":90547.8},"r157":{"key":"f64acee0744f6cb5b0186d8df86be984d0d6ad9ef0872d7c68ec46d52b0594b4","answer":"normal","created":12741.8,"valid_until":99141.8},"r66":{"key":"e794aeed80344416c0eea1f5479ecab56e92778ba0a1c0ad094b45481313cd95","answer":"normal","created":5196.0,"valid_until":91596.0},"r182":{"key":"eeefeeffb8a0a9fb80a5cbf1e129d37dde0b471996c98ef784b3e99073afef89","answer":"alert","created":15302.2,"valid_until":101702.2},"r161":{"key":"c70c4f1cfbf7f3e80ab7fd116b69405e0071bb46bac6a04135010096235a99f3","answer":"alert","created":13043.5,"valid_until":99443.5},"r132":{"key":"cad30f2c6d0d2fedf44ec59d6ee99ebbbcde9e90ccbdaeccb878fdb153546be7","answer":"normal","created":10508.6,"valid_until":96908.6},"r22":{"key":"af6e3f5337fa8c7c3e8c821840fa70047138fe84957d62d954f2d8aca1470b96","answer":"alert","created":1392.0,"valid_until":87792.0},"r130":{"key":"86bfaf5eec3f3155eb596fba26eb284381cc8e76ceb08cf882275e1d5f13b293","answer":"normal","created":10387.6,"valid_until":96787.6},"r110":{"key":"9ebe1f6dd3e36ad6669aee625d77fc7a3459aafa9624edfd9bf91ae7b6a9d89b","answer":"alert","created":8419.6,"valid_until":94819.6},"r29":{"key":"c05b2f88954eaf469ac8bbfcd4547bc6e74c41180cce4195cef4e40ecfc1095f","answer":"normal","created":1834.7,"valid_until":88234.7},"r30":{"key":"9ca88fa2ca1389cdb90b09bc8a2e8c6a5f0e5c9345cf31bef0e590680aa21c13","answer":"authorize_capped","created":1858.3,"valid_until":88258.3},"r163":{"key":"fc270faed1a038462ee17ad9afe5fc830b173f58fbcb6f74f25d11dab82a9b32","answer":"authorize_capped","created":13175.6,"valid_until":99575.6},"r127":{"key":"05f17fd121a463594b61b4cdcf207aaa369bbb2761e582ce36c12da3375fc3c3","answer":"normal","created":10203.9,"valid_until":96603.9},"r12":{"key":"bb697fd6f8f128e857820859facf75e9f5686504c1ac81b8de52367d1ca1d83c","answer":"inspect","created":818.4,"valid_until":87218.4},"r174":{"key":"08ba4fe6512d0d94de19c3932e3bff09728b6ede0b1838ff5091c9850170a516","answer":"authorize","created":14232.9,"valid_until":100632.9},"r50":{"key":"6d5f6fefa14e96e9b333c9e2ca60b7b266ea9b478a3eea4101c6e5373b59c55f","answer":"normal","created":3862.8,"valid_until":90262.8},"r247":{"key":"81dbeff3e03710faad18ddfdcd4b715d171b50030792c13bdd2e1a8083b5c9d0","answer":"authorize","created":24179.5,"valid_until":110579.5},"r23":{"key":"843d0ffb6136b8cb2bc9712d4d55ae5f149fd4716d6773cd5f2b57114afa7b5c","answer":"authorize","created":1436.5,"valid_until":87836.5}},"ledger":{"meter_joules":"1.499794558825e+03","unallocated_joules":"0.000000e+00","carried_forward_joules":"0.000000e+00"},"expected":[]}]} diff --git a/wai/oer-conformance/settle/host_main.c b/wai/oer-conformance/settle/host_main.c index 594ecac58..b275d0d9c 100644 --- a/wai/oer-conformance/settle/host_main.c +++ b/wai/oer-conformance/settle/host_main.c @@ -1,5 +1,15 @@ /* SPDX-License-Identifier: Apache-2.0 */ -/* Host harness: replays a day of demand through the kernel with a modelled meter and writes an OER/2 vector file. */ +/* Host harness: replays a day of demand through the kernel with a modelled meter and writes an OER/2 vector file. + + settle_host [issued|modelled] + + The meter is a model: its compute energy is a cycle count times the kernel's projected cycle energy, and its idle + and shared allocations are constant powers nobody measured on this host. `modelled` states that: method + "model_estimated", grade "projected", the grade of its weakest input. `issued`, the default, recreates byte for + byte the receipts this harness issued before the kernel took its grade from its meter, which name the method + "hardware_meter" and the grade "measured" for the same modelled figures: oer-receipts §2 does not support that + grade, and those receipts are kept only because the pinned corpus ../firmware_vectors.json holds them + (oer-conformance/README.md). */ #include "settle.h" #include #include @@ -7,22 +17,31 @@ static uint32_t rng_s = 42; static double urand(void){ rng_s = rng_s * 1664525u + 1013904223u; return (rng_s >> 8) / 16777216.0; } int main(int argc, char **argv){ const char *path = argc > 1 ? argv[1] : "firmware_vectors.json"; int n_events = argc > 2 ? atoi(argv[2]) : 400; + int modelled = argc > 3 && !strcmp(argv[3], "modelled"); + if (argc > 3 && !modelled && strcmp(argv[3], "issued")) { fprintf(stderr, "usage: settle_host [issued|modelled]\n"); return 2; } static settle_ctx_t ctx; uint8_t seed[32]; int i; for (i = 0; i < 32; i++) seed[i] = (uint8_t)(i * 7 + 3); settle_init(&ctx, seed, 300.0, 86400.0); FILE *f = fopen(path, "w"); if (!f) return 1; char pk[65]; settle_pk_hex(&ctx, pk); - fprintf(f, "{\"oer\":\"2.0\",\"draft\":\"0.1\",\"source\":\"settle kernel host harness, %d events\",\"keys\":{\"ed25519:bench-node-01\":\"%s\"},\"vectors\":[{\"name\":\"v10 firmware chain from the C kernel\",\"receipts\":[", n_events, pk); + fprintf(f, "{\"oer\":\"2.0\",\"draft\":\"0.1\",\"source\":\"settle kernel host harness, %d events%s\",\"keys\":{\"ed25519:bench-node-01\":\"%s\"},\"vectors\":[{\"name\":\"v10 firmware chain from the C kernel%s\",\"receipts\":[", + n_events, modelled ? ", modelled meter graded as a model" : "", pk, modelled ? ", modelled meter" : ""); static char buf[4096]; double now = 0, last = 0, meter = 0; const double standby_w = 1.8e-3, shared_w = 0.06; for (i = 0; i < n_events; i++) { now += 20 + 80 * urand(); char cls = urand() < 0.34 ? 'A' : 'B'; double z = urand(); uint32_t id = (uint32_t)(cls == 'A' ? 1 + 2999 * z * z * z : 1 + 399 * z * z * z); settle_meter_t m; m.compute_j = 120000.0 * ctx.cycle_j; m.movement_j = cls == 'A' ? 2.3e-6 : 0; m.idle_alloc_j = standby_w * (now - last); m.shared_alloc_j = shared_w * (now - last); m.upstream_j = 0; - m.latency_s = cls == 'A' ? 0.019 : 0.0017; m.method = "hardware_meter"; m.weakest_how = "projected"; m.weakest_input = "wire_w"; + m.latency_s = cls == 'A' ? 0.019 : 0.0017; m.weakest_how = "projected"; m.weakest_input = "wire_w"; m.device = "hardware"; + if (modelled) { m.method = "model_estimated"; m.how = "projected"; } else { m.method = "hardware_meter"; m.how = "measured"; } settle_result_t res; if (settle_decide(&ctx, cls, id, now, &m, buf, sizeof buf, &res)) { fprintf(stderr, "decide failed\n"); return 2; } meter += res.joules_total; last = now; fprintf(f, "%s%s", i ? "," : "", buf); } static char recbuf[1 << 20]; fprintf(f, "],\"records\":"); if (settle_records_json(&ctx, recbuf, sizeof recbuf)) { fprintf(stderr, "records overflow\n"); return 3; } fputs(recbuf, f); fprintf(f, ",\"ledger\":{\"meter_joules\":\"%.12e\",\"unallocated_joules\":\"0.000000e+00\",\"carried_forward_joules\":\"0.000000e+00\"},\"expected\":[]}]}\n", meter); - fclose(f); fprintf(stderr, "wrote %s: %d receipts, meter %.6f J\n", path, n_events, meter); return 0; + fclose(f); fprintf(stderr, "wrote %s: %d receipts, meter %.6f J\n", path, n_events, meter); + if (modelled) { /* the kernel refuses to grade a modelled figure "measured" */ + settle_meter_t bad = { 1e-3, 0, 0, 0, 0, 0.001, "model_estimated", "projected", "wire_w", "measured", "hardware" }; + settle_result_t res; if (settle_decide(&ctx, 'A', 1, now + 1, &bad, buf, sizeof buf, &res) != -3) { fprintf(stderr, "a modelled figure graded measured was not refused\n"); return 4; } + } + return 0; } diff --git a/wai/oer-conformance/settle/settle.c b/wai/oer-conformance/settle/settle.c index f876643b3..8dcc85711 100644 --- a/wai/oer-conformance/settle/settle.c +++ b/wai/oer-conformance/settle/settle.c @@ -35,7 +35,17 @@ void settle_pk_hex(const settle_ctx_t *c, char out[65]){ hex32(c->pk, out); } static const char *dec(char *buf, double v){ snprintf(buf, 24, "%.6e", v); return buf; } #define PUT(...) do { int _n = snprintf(p, (size_t)(end - p), __VA_ARGS__); if (_n < 0 || p + _n >= end) return -1; p += _n; } while (0) +/* oer-receipts §2: the four grades; `measured` only for a meter that read an instrument. */ +static int grade_supported(const settle_meter_t *m){ + static const char *grades[] = { "projected", "simulated", "derived", "measured" }; int i, known = 0; + if (!m->how || !m->device || !m->method || !m->weakest_how) return 0; + for (i = 0; i < 4; i++) if (!strcmp(m->how, grades[i])) known = 1; + if (!known) return 0; + return strcmp(m->how, "measured") || !strcmp(m->method, "hardware_meter"); +} + int settle_decide(settle_ctx_t *c, char cls, uint32_t id, double now, const settle_meter_t *m, char *out, size_t outlen, settle_result_t *res){ + if (!grade_supported(m)) return -3; uint8_t key[32]; char keyhex[65], rechash[72] = "", d1[24], d2[24], d3[24], d4[24], d5[24], d6[24], d7[24], d8[24], d9[24]; question_key(cls, id, key); hex32(key, keyhex); settle_record_t *r = lookup(c, key, now); int served = r != NULL; double deriv_j; @@ -53,7 +63,7 @@ int settle_decide(settle_ctx_t *c, char cls, uint32_t id, double now, const sett PUT("\"work\":{\"status\":1,\"outcome\":\"%s\",\"latency_s\":\"%s\"},", served ? "served_from_record" : "derive", dec(d1, m->latency_s)); PUT("\"energy\":{\"joules_total\":\"%.12e\",\"boundary\":\"%s\",\"breakdown\":{\"compute_j\":\"%s\",\"movement_j\":\"%s\",\"idle_alloc_j\":\"%s\",\"shared_alloc_j\":\"%s\",\"upstream_j\":\"%s\"},\"method\":\"%s\",\"temperature_k\":\"%s\"},", total, c->boundary, dec(d2, m->compute_j), dec(d3, m->movement_j), dec(d4, m->idle_alloc_j), dec(d5, m->shared_alloc_j), dec(d6, m->upstream_j), m->method, dec(d7, c->temperature_k)); - PUT("\"provenance\":{\"how\":\"measured\",\"device\":\"hardware\",\"weakest_input\":{\"how\":\"%s\",\"input\":\"%s\"}},", m->weakest_how, m->weakest_input); + PUT("\"provenance\":{\"how\":\"%s\",\"device\":\"%s\",\"weakest_input\":{\"how\":\"%s\",\"input\":\"%s\"}},", m->how, m->device, m->weakest_how, m->weakest_input); PUT("\"settlement\":{\"question_key\":\"sha256:%s\",\"served_from_record\":%s,\"record_id\":\"r%u\",\"record_hash\":\"%s\",\"reuse_count\":%u,\"derivation_j\":\"%s\",\"valid_until\":%lld},", keyhex, served ? "true" : "false", r->id, rechash, r->reuse, dec(d8, deriv_j), (long long)r->valid_until); PUT("\"floor\":{\"bits_committed\":%u,\"bits_delivered\":\"1.585000e+00\",\"floor_j\":\"%s\",\"decades_above_floor\":\"%.6e\"},", c->bits_committed, dec(d9, floor_j), decades); diff --git a/wai/oer-conformance/settle/settle.h b/wai/oer-conformance/settle/settle.h index 7e31cdd22..64406078f 100644 --- a/wai/oer-conformance/settle/settle.h +++ b/wai/oer-conformance/settle/settle.h @@ -8,7 +8,12 @@ #include #define SETTLE_RECORDS 4096 #define SETTLE_ANSWER 24 -typedef struct { double compute_j, movement_j, idle_alloc_j, shared_alloc_j, upstream_j; double latency_s; const char *method; const char *weakest_how, *weakest_input; } settle_meter_t; +/* What the meter states about its figures. `how` is the receipt's grade (oer-receipts §2: projected, + simulated, derived or measured) and `device` its provenance.device; the kernel writes both as given and + writes neither on its own account. A figure is graded `measured` only when its meter read an instrument: + the kernel refuses `measured` unless `method` is "hardware_meter" (settle_decide returns -3). A meter + that models its figures names a model as its method and grades them by its weakest input. */ +typedef struct { double compute_j, movement_j, idle_alloc_j, shared_alloc_j, upstream_j; double latency_s; const char *method; const char *weakest_how, *weakest_input; const char *how, *device; } settle_meter_t; typedef struct { uint8_t key[32]; char answer[SETTLE_ANSWER]; double created, valid_until, deriv_j; uint32_t reuse, id; uint8_t used; } settle_record_t; typedef struct { int status; const char *outcome; char answer[SETTLE_ANSWER]; uint32_t record_id; uint32_t reuse; char receipt_hash[72]; double joules_total; } settle_result_t; typedef struct { @@ -22,7 +27,8 @@ typedef struct { } settle_ctx_t; int settle_init(settle_ctx_t *c, const uint8_t seed[32], double temperature_k, double validity_s); /* Runs the loop for one question. cls is 'A' (charging authorization) or 'B' (sensor check), id the canonical question id. - Writes the full receipt JSON (with chain) into out. Returns 0 on success. */ + Writes the full receipt JSON (with chain) into out. Returns 0 on success, -3 for a meter whose grade its method + does not support (above). */ int settle_decide(settle_ctx_t *c, char cls, uint32_t id, double now, const settle_meter_t *m, char *out, size_t outlen, settle_result_t *res); /* Records as a JSON object {id: {key, answer, created, valid_until}}, for vector files. */ int settle_records_json(const settle_ctx_t *c, char *out, size_t outlen); diff --git a/wai/oer-conformance/settle/zephyr/src/main.c b/wai/oer-conformance/settle/zephyr/src/main.c index c1677ea98..d952d762b 100644 --- a/wai/oer-conformance/settle/zephyr/src/main.c +++ b/wai/oer-conformance/settle/zephyr/src/main.c @@ -34,6 +34,7 @@ int main(void){ m.idle_alloc_j = standby_w * (now_ms - last_ms) / 1000.0; m.shared_alloc_j = shared_w * (now_ms - last_ms) / 1000.0; m.upstream_j = 0; m.method = "calibrated_model"; m.weakest_how = "projected"; m.weakest_input = "standby_w"; + m.how = "projected"; m.device = "hardware"; /* a model over a projected constant: graded as one, never "measured" */ m.compute_j = 0; m.latency_s = 0; settle_result_t res; int rc = settle_decide(&ctx, cls, id, now_ms / 1000.0, &m, out, sizeof out, &res); diff --git a/wai/registry/capabilities.json b/wai/registry/capabilities.json index 6b4fc39f0..9362df097 100644 --- a/wai/registry/capabilities.json +++ b/wai/registry/capabilities.json @@ -1443,6 +1443,20 @@ "edition": null, "registered": "2026-06-13" }, + { + "capability": "wai.stream.energy", + "kind": "record", + "status": "registered", + "media": null, + "role": null, + "tier": null, + "licence": null, + "replicate": null, + "sets": [], + "spec_section": "§5 Interactive, temporal & computed content", + "edition": null, + "registered": "2026-10-24" + }, { "capability": "wai.tensor.nnc", "kind": "payload", @@ -2249,6 +2263,20 @@ "section": "§7.1", "status": "defined" }, + { + "name": "WSE1", + "kind": "magic", + "document": "extensions/stream-energy.md", + "section": "§4.1", + "status": "defined" + }, + { + "name": "WSH1", + "kind": "magic", + "document": "extensions/stream-energy.md", + "section": "§3.1", + "status": "defined" + }, { "name": "WSIX", "kind": "magic", @@ -2270,6 +2298,13 @@ "section": "§7.1", "status": "defined" }, + { + "name": "WST1", + "kind": "magic", + "document": "extensions/stream-energy.md", + "section": "§5.1", + "status": "defined" + }, { "name": "WTM1", "kind": "magic", diff --git a/wai/vocab/v2.ttl b/wai/vocab/v2.ttl index ac1a1c1ab..788e4a215 100644 --- a/wai/vocab/v2.ttl +++ b/wai/vocab/v2.ttl @@ -1102,6 +1102,13 @@ wai:wai.splat.spz a wai:Capability ; wai:specSection "§5 Interactive, temporal & computed content" ; wai:registeredOn "2026-06-13"^^xsd:date . +wai:wai.stream.energy a wai:Capability ; + rdfs:label "wai.stream.energy" ; + wai:kind wai:kind-record ; + wai:status wai:status-registered ; + wai:specSection "§5 Interactive, temporal & computed content" ; + wai:registeredOn "2026-10-24"^^xsd:date . + wai:wai.tensor.nnc a wai:Capability ; rdfs:label "wai.tensor.nnc" ; wai:kind wai:kind-payload ; diff --git a/wai/wai-pack-gpu/tests/integer_only.rs b/wai/wai-pack-gpu/tests/integer_only.rs new file mode 100644 index 000000000..a60d1770e --- /dev/null +++ b/wai/wai-pack-gpu/tests/integer_only.rs @@ -0,0 +1,149 @@ +//! packaging §11.6 item 1: no step runs in floating point where the step is defined in +//! integers. The packer's WGSL kernels (the motion search, SSE and BLAKE3) are held here to +//! conditions 1 and 2 of determinism-tiers §5, *Claiming the tier on a GPU*, which +//! `wai-ops-gpu/tests/wgsl_rules.rs` checks for the decoders' kernels on naga's IR: this +//! test reads each kernel's source, with its comments removed, and refuses a floating-point +//! type (`f32`, `f16` and the vector and matrix shorthands built on them), a floating-point +//! literal, an `enable` directive and a subgroup or quad built-in. + +use std::path::PathBuf; + +/// Why a token is refused, or `None`. +fn refused(token: &str) -> Option<&'static str> { + let b = token.as_bytes(); + // A leading '.' is a member access or a swizzle (`v.x`, `a[i].xy`) unless a digit + // follows it (`.5`). + if b[0] == b'.' { + return (b.len() > 1 && b[1].is_ascii_digit()).then_some("a floating-point literal"); + } + if b[0].is_ascii_digit() { + let int = if let Some(h) = token.strip_prefix("0x").or_else(|| token.strip_prefix("0X")) { + let h = h.trim_end_matches(['i', 'u']); + !h.is_empty() && h.bytes().all(|c| c.is_ascii_hexdigit()) + } else { + let d = token.trim_end_matches(['i', 'u']); + !d.is_empty() && d.bytes().all(|c| c.is_ascii_digit()) + }; + return (!int).then_some("a floating-point literal"); + } + let float_shorthand = |t: &str| { + (t.starts_with("vec") && t.len() == 5 && (t.ends_with('f') || t.ends_with('h'))) + || (t.starts_with("mat") && t.len() == 7 && t.as_bytes()[4] == b'x' && (t.ends_with('f') || t.ends_with('h'))) + }; + match token { + "f32" | "f16" => Some("a floating-point type"), + "enable" => Some("an enable directive"), + t if float_shorthand(t) => Some("a floating-point type"), + t if t.starts_with("subgroup") || t.starts_with("quad") => Some("a subgroup built-in"), + _ => None, + } +} + +/// The source without its comments (line comments, and block comments, which WGSL nests). +fn strip_comments(src: &str) -> String { + let (b, mut out, mut i, mut depth) = (src.as_bytes(), String::new(), 0usize, 0usize); + while i < b.len() { + if b[i..].starts_with(b"/*") { + depth += 1; + i += 2; + } else if depth > 0 && b[i..].starts_with(b"*/") { + depth -= 1; + i += 2; + } else if depth > 0 { + i += 1; + } else if b[i..].starts_with(b"//") { + while i < b.len() && b[i] != b'\n' { + i += 1; + } + } else { + out.push(b[i] as char); + i += 1; + } + } + out +} + +/// Each refused token of `src`, with the reason. +fn findings(src: &str) -> Vec<(String, &'static str)> { + let s = strip_comments(src); + let mut out = Vec::new(); + let mut tok = String::new(); + let flush = |tok: &mut String, out: &mut Vec<(String, &'static str)>| { + if !tok.is_empty() { + if let Some(why) = refused(tok) { + out.push((tok.clone(), why)); + } + tok.clear(); + } + }; + for c in s.chars() { + // A number's exponent sign ("1e-3") belongs to the number. + let exponent_sign = (c == '-' || c == '+') && tok.as_bytes().first().is_some_and(u8::is_ascii_digit) && tok.ends_with(['e', 'E', 'p', 'P']); + if c.is_ascii_alphanumeric() || c == '_' || (c == '.' && tok.as_bytes().first().is_none_or(u8::is_ascii_digit)) || exponent_sign { + if c == '.' && tok.is_empty() { + tok.push(c); + continue; + } + tok.push(c); + } else { + flush(&mut tok, &mut out); + } + } + flush(&mut tok, &mut out); + // A lone '.' (member access) is not a literal. + out.retain(|(t, _)| t != "."); + out +} + +fn kernels() -> Vec<(PathBuf, String)> { + let dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("src/wgsl"); + let mut v: Vec<(PathBuf, String)> = std::fs::read_dir(&dir) + .expect("src/wgsl") + .map(|e| e.unwrap().path()) + .filter(|p| p.extension().is_some_and(|x| x == "wgsl")) + .map(|p| { + let s = std::fs::read_to_string(&p).unwrap(); + (p, s) + }) + .collect(); + v.sort(); + v +} + +#[test] +fn every_kernel_computes_in_integers_alone() { + let ks = kernels(); + assert!(!ks.is_empty(), "no kernel found"); + let mut bad = Vec::new(); + for (p, src) in &ks { + for (t, why) in findings(src) { + bad.push(format!("{}: {why}: `{t}`", p.display())); + } + } + assert!(bad.is_empty(), "{}", bad.join("\n")); +} + +/// The scanner itself: each thing the rule refuses is found in a snippet, and the integer +/// forms the kernels use are not. +#[test] +fn the_scanner_finds_what_the_rule_refuses() { + for (src, want) in [ + ("let x: f32 = 1;", "a floating-point type"), + ("let x = 1.0;", "a floating-point literal"), + ("let x = .5;", "a floating-point literal"), + ("let x = 2e3;", "a floating-point literal"), + ("let x = 1e-3;", "a floating-point literal"), + ("let x = 3f;", "a floating-point literal"), + ("let x = 0x1p4;", "a floating-point literal"), + ("var v: vec4f;", "a floating-point type"), + ("var m: mat4x4h;", "a floating-point type"), + ("enable f16;", "an enable directive"), + ("let s = subgroupAdd(x);", "a subgroup built-in"), + ("let q = quadBroadcast(x, 0u);", "a subgroup built-in"), + ] { + let f = findings(src); + assert!(f.iter().any(|(_, w)| *w == want), "{src}: {f:?}"); + } + let ok = "const ONES: u32 = 0xFFFFFFFFu; let a = v.x + 1u; let b = 7i; let c = vec2(0u, 12u); let d = w[i].xy; let e = f(a).x; // f32 in a comment\n/* 1.0 /* nested */ f16 */"; + assert_eq!(findings(ok), Vec::<(String, &str)>::new()); +} diff --git a/wai/wai-rs/Cargo.toml b/wai/wai-rs/Cargo.toml index a15d83352..cb369892f 100644 --- a/wai/wai-rs/Cargo.toml +++ b/wai/wai-rs/Cargo.toml @@ -239,6 +239,13 @@ live_metering = ["live_compose", "capture_take", "telemetry"] # steering manifest, the HLS tag and the DASH element, written exactly. SHA-256, Ed25519 and the key # log only; no new dependency. energy_steering = ["live_metering"] +# The macOS reader of the `macos-task` sink profile (energy-measurement §9.2, §9.4): the +# kernel's per-task CPU energy and the IORegistry's GPU time, read unprivileged. Off by +# default, so no other build links IOKit for it. +sink_meter = [] +# wai.stream.energy (extensions/stream-energy.md): the hop figure record, the stream-segment +# receipt and the termination record, and their corpus (energy-conformance/stream/). +stream_energy = ["ed25519"] # Live moderation (extensions/live-moderation): `wai.live.moderation` — the room authority's # signed review policy (WMP1: what is held for review or reviewed after delivery, by whom, each # deadline and fallback, and the reason codes with their grounds), the statement (WMS1) that @@ -791,6 +798,20 @@ name = "wai_live_metering_vectors" path = "src/bin/wai_live_metering_vectors.rs" required-features = ["live_metering"] +[[bin]] +name = "wai_stream_energy_vectors" +path = "src/bin/wai_stream_energy_vectors.rs" +required-features = ["stream_energy"] + +[[bin]] +name = "wai_display_vectors" +path = "src/bin/wai_display_vectors.rs" + +[[bin]] +name = "wai_sink_meter" +path = "src/bin/wai_sink_meter.rs" +required-features = ["sink_meter", "codecs", "video_int", "audio_int", "splat_int", "world_int", "haptic", "score", "splat4d", "film"] + [[bin]] name = "wai_energy_steering_vectors" path = "src/bin/wai_energy_steering_vectors.rs" @@ -1544,6 +1565,15 @@ name = "live_metering" path = "tests/live_metering.rs" required-features = ["live_metering"] +[[test]] +name = "stream_energy" +path = "tests/stream_energy.rs" +required-features = ["stream_energy"] + +[[test]] +name = "display_caps" +path = "tests/display_caps.rs" + [[test]] name = "energy_steering" path = "tests/energy_steering.rs" diff --git a/wai/wai-rs/src/bin/wai_display_vectors.rs b/wai/wai-rs/src/bin/wai_display_vectors.rs new file mode 100644 index 000000000..07a49baf3 --- /dev/null +++ b/wai/wai-rs/src/bin/wai_display_vectors.rs @@ -0,0 +1,42 @@ +//! Conformance corpus for display capability (`constraints-conformance/display/`, +//! extensions/capability-constraints.md §6.5). +//! +//! wai_display_vectors gen write vectors.json +//! wai_display_vectors verify vectors.json regenerates byte for byte, and +//! every vector gets the outcome it states +//! +//! The corpus's second implementation is `constraints-conformance/display_verify.py`, +//! written from the extension's text and sharing no code with this binary. + +use std::path::Path; +use wai::display_caps::corpus; + +fn main() { + let a: Vec = std::env::args().collect(); + match (a.get(1).map(String::as_str), a.get(2)) { + (Some("gen"), Some(d)) => { + let p = Path::new(d).join("vectors.json"); + if let Err(e) = std::fs::create_dir_all(d).and_then(|_| std::fs::write(&p, corpus::generate())) { + eprintln!("write {}: {e}", p.display()); + std::process::exit(1); + } + println!("wrote {}", p.display()); + } + (Some("verify"), Some(d)) => { + let p = Path::new(d).join("vectors.json"); + let doc = std::fs::read_to_string(&p).unwrap_or_else(|e| panic!("read {}: {e}", p.display())); + let same = doc == corpus::generate(); + println!("{} vectors.json regenerates byte for byte", if same { "PASS" } else { "FAIL" }); + let fails = corpus::verify(&doc); + for f in &fails { + println!("FAIL {f}"); + } + println!("{} every vector gets the outcome the corpus states", if fails.is_empty() { "PASS" } else { "FAIL" }); + std::process::exit((!same || !fails.is_empty()) as i32); + } + _ => { + eprintln!("usage: wai_display_vectors gen|verify "); + std::process::exit(2); + } + } +} diff --git a/wai/wai-rs/src/bin/wai_oer_vectors.rs b/wai/wai-rs/src/bin/wai_oer_vectors.rs index 61df80c5e..d9bd2106e 100644 --- a/wai/wai-rs/src/bin/wai_oer_vectors.rs +++ b/wai/wai-rs/src/bin/wai_oer_vectors.rs @@ -6,11 +6,13 @@ //! reason does not conform. //! //! The corpus holds vector files from two independent producers — `vectors.json` -//! from the reference generator (Python) and `firmware_vectors.json` from the -//! portable C kernel in `settle/` — plus `edge_vectors.json`, one hand-declared case -//! for each reason and number shape the upstream nine never exercise. This binary is the third -//! implementation and checks all three files, plus the two fixtures — canonical -//! form and stage list — the vectors cannot check. +//! from the reference generator (Python) and `firmware_vectors.json` and +//! `firmware_vectors_modelled.json` from the portable C kernel in `settle/`, as it +//! issued its receipts and with its modelled meter graded as a model — plus +//! `edge_vectors.json`, one hand-declared case for each reason and number shape the +//! upstream nine never exercise. This binary is the third implementation and checks +//! every file, plus the two fixtures — canonical form and stage list — the vectors +//! cannot check. //! //! wai_oer_vectors verify //! @@ -25,7 +27,8 @@ use wai::oer::{check_canonical_form, load, run}; /// path or a truncated file fails instead of passing on nothing. const FILES: &[(&str, usize)] = &[ ("vectors.json", 9), // the upstream draft's vectors (reference generator) - ("firmware_vectors.json", 1), // the portable C kernel's output + ("firmware_vectors.json", 1), // the portable C kernel's output, as it issued it + ("firmware_vectors_modelled.json", 1), // the same, its modelled meter graded as a model ("edge_vectors.json", 99), // the reasons and number shapes the upstream nine never exercise ]; diff --git a/wai/wai-rs/src/bin/wai_sink_meter.rs b/wai/wai-rs/src/bin/wai_sink_meter.rs new file mode 100644 index 000000000..caccfb467 --- /dev/null +++ b/wai/wai-rs/src/bin/wai_sink_meter.rs @@ -0,0 +1,553 @@ +//! `wai_sink_meter` — one decode figure per capability, metered on the `macos-task` sink +//! profile without privileges (extensions/energy-measurement.md §9.2, §9.4). +//! +//! ```text +//! wai_sink_meter list +//! wai_sink_meter run [--spans R] [--seconds S] [--filter SUBSTRING] [--out FILE] +//! wai_sink_meter command --case NAME --capability CAP --decoder DECODER --fabrics cpu[,gpu,media] +//! --units N --unit UNIT --input FILE [--spans R] [--out FILE] -- ARGV... +//! ``` +//! +//! `run` decodes, in this process, each capability the reference sink decodes, from a +//! committed vector or from a source this binary makes from a fixed seed and encodes once +//! before metering. Each span runs whole decodes on a thread started after the span's +//! opening read of the task counter (`ri_energy_nj`), one worker under the fast kernels, +//! and closes after the thread has finished and a settle wait has passed. `command` meters +//! an external decoder (dav1d, FFmpeg's software decoders or VideoToolbox) as a child +//! process, read before it is reaped: its own energy and what the kernel billed to it for +//! work other processes did on its behalf, the VideoToolbox decoder service's among them. +//! +//! Every case prints one JSON line: the capability, the decoder, the input's and the +//! output's SHA-256, the work, every span's integers, the fabrics the decode used, the +//! figure with its class and declaration or the reason it has none, its coverage (`Partial`, +//! a lower bound, where the decode ran on a fabric this profile does not meter), the build +//! and the load averages before and after. The figures are the host's at that load: +//! indicative, never a property of the capability alone. + +use std::sync::Arc; +use std::time::{Duration, Instant}; + +use serde_json::{json, Value}; +use sha2::{Digest, Sha256}; +use wai::energy_report::{BuildRecord, Liveness}; +use wai::int_kernels::{with_policy, Policy}; +use wai::sink_energy::macos::{self, Span}; +use wai::sink_energy::{fabric, profile, SpanSet}; + +const VECTORS: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/vectors"); +const WAI: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/.."); +const EVERY: Duration = Duration::from_millis(50); + +fn sha256(b: &[u8]) -> String { + Sha256::digest(b).iter().map(|x| format!("{x:02x}")).collect() +} + +fn read(p: &str) -> Vec { + std::fs::read(p).unwrap_or_else(|e| panic!("read {p}: {e}")) +} + +fn json_of(p: &str) -> Value { + serde_json::from_slice(&read(p)).unwrap_or_else(|e| panic!("{p}: {e}")) +} + +/// A seeded generator (SplitMix64). +struct Rng(u64); +impl Rng { + fn next(&mut self) -> u64 { + self.0 = self.0.wrapping_add(0x9E37_79B9_7F4A_7C15); + let mut z = self.0; + z = (z ^ (z >> 30)).wrapping_mul(0xBF58_476D_1CE4_E5B9); + z = (z ^ (z >> 27)).wrapping_mul(0x94D0_49BB_1331_11EB); + z ^ (z >> 31) + } +} + +/// One case: what is decoded and how much work one decode is. +struct Case { + name: String, + capability: &'static str, + decoder: String, + input: Vec, + units: u64, + unit: &'static str, + decode: Arc Vec + Send + Sync>, +} + +fn builtin() -> String { + format!("builtin:wai@{}", env!("CARGO_PKG_VERSION")) +} + +/// A picture with structure at every scale: gradients, edges and seeded noise. +fn picture(w: usize, h: usize) -> Vec { + let mut g = Rng(0x5157_4149_5f70_6963); + let mut rgb = vec![0u8; w * h * 3]; + for y in 0..h { + for x in 0..w { + let n = (g.next() % 24) as i32 - 12; + let r = ((x * 255) / w) as i32 + if (x / 64 + y / 64) % 2 == 0 { 30 } else { -30 }; + let gg = ((y * 255) / h) as i32; + let b = (((x + y) * 3) % 256) as i32; + for (c, v) in [r, gg, b].into_iter().enumerate() { + rgb[(y * w + x) * 3 + c] = (v + n).clamp(0, 255) as u8; + } + } + } + rgb +} + +/// Ten seconds of stereo at 48 kHz: three partials and seeded noise. +fn sound() -> (Vec, u32) { + let (sr, secs) = (48_000u32, 10usize); + let mut g = Rng(0x5157_4149_5f61_7564); + let mut s = Vec::with_capacity(sr as usize * secs * 2); + for i in 0..sr as usize * secs { + let t = i as f32 / sr as f32; + let base = 0.3 * (2.0 * std::f32::consts::PI * 220.0 * t).sin() + 0.2 * (2.0 * std::f32::consts::PI * 330.0 * t).sin() + 0.1 * (2.0 * std::f32::consts::PI * 1760.0 * t).sin(); + for _ in 0..2 { + let n = ((g.next() % 2001) as f32 - 1000.0) / 1000.0 * 0.02; + s.push(base + n); + } + } + (s, sr) +} + +/// Thirty frames at 640×360 of a moving pattern, for the in-crate AV1 decode. +fn clip() -> (Vec>, u32, u32) { + let (w, h) = (640usize, 360usize); + let base = picture(w + 64, h); + let frames = (0..30) + .map(|f| { + let mut fr = vec![0u8; w * h * 3]; + for y in 0..h { + let src = (y * (w + 64) + f * 2) * 3; + fr[y * w * 3..(y + 1) * w * 3].copy_from_slice(&base[src..src + w * 3]); + } + fr + }) + .collect(); + (frames, h as u32, w as u32) +} + +fn int_case(name: &str, cap: &'static str, payload: &str, set: &[(&str, &str)], units: u64, unit: &'static str) -> Case { + let p = read(payload); + let set: Vec<(String, Vec)> = set.iter().map(|(k, v)| (k.to_string(), read(v))).collect(); + let input = { + let mut all = p.clone(); + for (_, b) in &set { + all.extend_from_slice(b); + } + all + }; + let decode = Arc::new(move || { + let view: std::collections::BTreeMap = set.iter().map(|(k, v)| (k.clone(), v.as_slice())).collect(); + let held = [wai::pin::HeldBytes::Set { listing: b"", files: &view }]; + let params = wai::int_payload::resolve(cap, None, &held, None).unwrap_or_else(|_| wai::int_payload::IntParams::none()); + let out = with_policy(Policy::fast(1), || wai::int_payload::decode_int(cap, &p, ¶ms)).expect("the committed vector decodes"); + match out { + wai::int_payload::IntDecoded::Image { rgb, .. } => rgb, + wai::int_payload::IntDecoded::Video { frames, .. } => frames.concat(), + wai::int_payload::IntDecoded::Pcm { samples, .. } => samples.iter().flat_map(|s| s.to_le_bytes()).collect(), + wai::int_payload::IntDecoded::Attr { bytes, .. } => bytes, + _ => Vec::new(), + } + }); + Case { name: name.into(), capability: cap, decoder: builtin(), input, units, unit, decode } +} + +fn cases() -> Vec { + use wai::codecs::{audio, image, text, video}; + let v = |p: &str| format!("{VECTORS}/{p}"); + let mut out = Vec::new(); + // The integer codecs, from their committed vectors (int-payload-conformance). + let real = json_of(&v("int_video/video_real.json")); + let (rw, rh, rn) = (real["w"].as_u64().unwrap(), real["h"].as_u64().unwrap(), real["n_frames"].as_u64().unwrap()); + out.push(int_case("int_motion/video_real", "wai.video.int_motion", &v("int_video/video_real_bitstream.wiv1"), &[], rw * rh * rn, "pixels")); + let tiny = [("entropy.json", v("int_hyper/tiny_entropy.json")), ("g_s.whm", v("int_hyper/tiny_g_s.bin")), ("h_s.whm", v("int_hyper/tiny_h_s.bin"))]; + let tiny: Vec<(&str, &str)> = tiny.iter().map(|(a, b)| (*a, b.as_str())).collect(); + out.push(int_case("int_hyper/tiny", "wai.neural.int_hyper", &v("int_hyper/tiny_bitstream.wih1"), &tiny, 16 * 16, "pixels")); + out.push(int_case("video_int_hyper/video_nk", "wai.video.int_hyper", &v("int_video/video_nk_bitstream.wiv1"), &tiny, 16 * 16 * 5, "pixels")); + let audio_n = json_of(&v("int_audio/audio.json"))["n_samples"].as_u64().unwrap(); + out.push(int_case("int_codec/audio", "wai.audio.int_codec", &v("int_audio/audio_bitstream.wia1"), &[("model.wam", &v("int_audio/audio_model.bin"))], audio_n, "samples")); + let splat_n = json_of(&v("int_splat/splat.json"))["n_gaussians"].as_u64().unwrap(); + out.push(int_case("int_codec/splat", "wai.splat.int_codec", &v("int_splat/splat.wis1"), &[("g_s.whm", &v("int_splat/splat_gs.bin"))], splat_n, "gaussians")); + let photo = format!("{WAI}/neural-conformance/vectors/photo"); + out.push(int_case("int_synth/photo", "wai.neural.int_synth", &format!("{photo}/latent.bin"), &[("int_synth.json", &format!("{photo}/int_synth.json"))], 128 * 128, "pixels")); + { + let env = wai::container::Wai::from_bytes(&read(&v("int_mlicpp/stream.wai"))).expect("the committed envelope"); + let path = format!("{}/waienergy-int_mlicpp.wim1", std::env::temp_dir().display()); + std::fs::write(&path, &env.payload).expect("write the int_mlicpp payload"); + out.push(int_case("int_mlicpp/stream", "wai.neural.int_mlicpp", &path, &[("model.wmb", &v("int_mlicpp/model.wmb"))], 64 * 64, "pixels")); + } + { + let d = v("int_world"); + let t = wai::int_hyper_synth::IntModel::from_bytes(&read(&format!("{d}/world_T.bin"))).unwrap(); + let gs = wai::int_hyper_synth::IntModel::from_bytes(&read(&format!("{d}/world_gs.bin"))).unwrap(); + let j = json_of(&format!("{d}/world.json")); + let (c, lat) = (j["c"].as_u64().unwrap() as usize, j["lat"].as_u64().unwrap() as usize); + let z0: Vec = j["z0"].as_array().unwrap().iter().map(|x| x.as_i64().unwrap()).collect(); + let actions: Vec = j["actions"].as_array().unwrap().iter().map(|x| x.as_u64().unwrap() as usize).collect(); + let frames = actions.len() as u64 + 1; + let mut input = read(&format!("{d}/world_T.bin")); + input.extend(read(&format!("{d}/world_gs.bin"))); + input.extend(read(&format!("{d}/world.json"))); + out.push(Case { + name: "world_model/int_world".into(), + capability: "wai.world.model", + decoder: builtin(), + input, + units: frames, + unit: "frames", + decode: Arc::new(move || with_policy(Policy::fast(1), || wai::int_world::decode(&t, &gs, &z0, &actions, c, lat).unwrap().clip_hash().to_le_bytes().to_vec())), + }); + } + // The standard codecs the reference sink decodes, each from one source encoded once. + let (pw, ph) = (1024u32, 768u32); + let pic = picture(pw as usize, ph as usize); + let px = pw as u64 * ph as u64; + type Dec = fn(&[u8]) -> Vec; + for (cap, enc, dec) in [ + ("wai.image.png", image::png_encode(&pic, ph, pw).unwrap(), (|b: &[u8]| image::png_decode(b).unwrap().0) as Dec), + ("wai.image.jpeg", image::jpeg_encode(&pic, ph, pw, 90).unwrap(), (|b: &[u8]| image::jpeg_decode(b).unwrap().0) as Dec), + ("wai.image.avif", image::avif_encode(&pic, ph, pw, 80).unwrap(), (|b: &[u8]| image::avif_decode(b).unwrap().0) as Dec), + ("wai.image.jxl", image::jxl_encode(&pic, ph, pw, Some(1.0)).unwrap(), (|b: &[u8]| image::jxl_decode(b).unwrap().0) as Dec), + ] { + let input = enc.clone(); + out.push(Case { name: format!("{}/1024x768", &cap[10..]), capability: cap, decoder: builtin(), input, units: px, unit: "pixels", decode: Arc::new(move || dec(&enc)) }); + } + let (snd, sr) = sound(); + let ns = snd.len() as u64; + for (cap, enc, dec) in [ + ("wai.audio.opus", audio::opus_encode(&snd, sr, 128_000).unwrap(), (|b: &[u8]| audio::opus_decode(b).unwrap().0.iter().flat_map(|f| f.to_le_bytes()).collect()) as Dec), + ("wai.audio.flac", audio::flac_encode(&snd, sr).unwrap(), (|b: &[u8]| audio::flac_decode(b).unwrap().0.iter().flat_map(|f| f.to_le_bytes()).collect()) as Dec), + ] { + let input = enc.clone(); + out.push(Case { + name: format!("{}/10s-stereo", &cap[10..]), + capability: cap, + decoder: builtin(), + input, + units: ns, + unit: "samples", + decode: Arc::new(move || dec(&enc)), + }); + } + let spec = read(&format!("{WAI}/SPEC.md")); + let nb = spec.len() as u64; + for (cap, enc, dec) in [ + ("wai.text.zstd", text::zstd_encode(&spec, 19).unwrap(), (|b: &[u8]| text::zstd_decode(b).unwrap()) as Dec), + ("wai.text.xz", text::xz_encode(&spec, 9).unwrap(), (|b: &[u8]| text::xz_decode(b).unwrap()) as Dec), + ] { + let input = enc.clone(); + out.push(Case { name: format!("{}/SPEC.md", &cap[9..]), capability: cap, decoder: builtin(), input, units: nb, unit: "bytes", decode: Arc::new(move || dec(&enc)) }); + } + let (frames, h, w) = clip(); + let vpx = frames.len() as u64 * w as u64 * h as u64; + for (cap, lossless) in [("wai.video.av1", false), ("wai.video.av1.lossless", true)] { + let enc = video::av1_encode(&frames, h, w, 30, 1, lossless, 70).unwrap(); + let input = enc.clone(); + out.push(Case { + name: format!("{}/640x360x30", &cap[10..]), + capability: cap, + decoder: builtin(), + input, + units: vpx, + unit: "pixels", + decode: Arc::new(move || video::av1_decode(&enc).unwrap().0.concat()), + }); + } + // The extension classes, from their conformance corpora. + { + let b = read(&format!("{WAI}/haptic-conformance/vectors/thud.whap")); + let sig = wai::haptic::HapticSignal::from_bytes(&b).unwrap(); + let units = sig.contract.duration * sig.contract.channels as u64; + out.push(Case { + name: "haptic/thud".into(), + capability: "wai.haptic.signal", + decoder: builtin(), + input: b, + units, + unit: "samples", + decode: Arc::new(move || (0..sig.channels.len()).flat_map(|c| sig.reconstruct_channel(c)).collect()), + }); + } + { + let b = read(&format!("{WAI}/score-conformance/vectors/chord.wscr")); + let score = wai::score::Score::from_bytes(&b).unwrap(); + let units = score.contract.duration; + out.push(Case { + name: "score/chord".into(), + capability: "wai.audio.score", + decoder: builtin(), + input: b, + units, + unit: "samples", + decode: Arc::new(move || score.mixdown().iter().flat_map(|s| s.to_le_bytes()).collect()), + }); + } + { + let b = read(&format!("{WAI}/film-conformance/vectors/dolly.wflm")); + let film = wai::film::Film::from_bytes(&b).unwrap(); + let units = film.contract.frames; + out.push(Case { + name: "film/dolly".into(), + capability: "wai.film.linear", + decoder: builtin(), + input: b, + units, + unit: "frames", + decode: Arc::new(move || film.frame_hashes().unwrap().iter().flat_map(|h| h.hash).collect()), + }); + } + { + let b = read(&format!("{WAI}/film-conformance/vectors/coverage.wrel")); + let reel = wai::film::Reel::from_bytes(&b).unwrap(); + let units = reel.total_frames(); + out.push(Case { + name: "reel/coverage".into(), + capability: "wai.film.reel", + decoder: builtin(), + input: b, + units, + unit: "frames", + decode: Arc::new(move || reel.frame_hashes().unwrap().iter().flat_map(|h| h.hash).collect()), + }); + } + { + let b = read(&format!("{WAI}/volumetric-conformance/vectors/orbit.w4ds")); + let clip = wai::splat4d::Splat4dClipData::from_bytes(&b).unwrap(); + let units = clip.contract.n_frames * clip.contract.n_gaussians as u64; + out.push(Case { + name: "splat4d/orbit".into(), + capability: "wai.splat.4d", + decoder: builtin(), + input: b, + units, + unit: "frame-gaussians", + decode: Arc::new(move || (0..clip.contract.n_frames).flat_map(|f| clip.frame_hash(f)).collect()), + }); + } + // Sealed worlds, replayed to their seal through the simulation they name. + for (name, cap, path) in [ + ("world_replay/basic_kinematics", "wai.world.replay", "world-conformance/vectors/basic_kinematics.wwld"), + ("feed_state/market_ticks", "wai.feed.state", "feed-conformance/vectors/market_ticks.wwld"), + ("avatar_pose/arm_wave", "wai.avatar.pose", "avatar-conformance/vectors/arm_wave.wwld"), + ] { + let b = read(&format!("{WAI}/{path}")); + let container = wai::world::WorldContainer::from_bytes(&b).unwrap(); + let ticks = container.seal.as_ref().expect("a sealed replay").final_tick; + wai::world::run_sealed_dispatch(&container).expect("the committed replay verifies"); + out.push(Case { + name: name.into(), + capability: cap, + decoder: builtin(), + input: b, + units: ticks, + unit: "ticks", + decode: Arc::new(move || { + wai::world::run_sealed_dispatch(&container).expect("replays"); + container.seal.as_ref().map(|s| s.final_hash.to_vec()).unwrap_or_default() + }), + }); + } + // The protocol's own cost: a span whose work is a thread that sleeps. + out.push(Case { + name: "protocol/sleep-1s".into(), + capability: "none", + decoder: "none".into(), + input: Vec::new(), + units: 1, + unit: "spans", + decode: Arc::new(|| { + std::thread::sleep(Duration::from_secs(1)); + Vec::new() + }), + }); + out +} + +fn arg(a: &[String], name: &str) -> Option { + a.iter().position(|x| x == name).and_then(|i| a.get(i + 1)).cloned() +} + +fn build() -> Value { + let b = BuildRecord::of_this_build(); + json!({ "profile": b.profile.label(), "toolchain": b.toolchain, "target": b.target }) +} + +fn host() -> Value { + let sh = |c: &str, a: &[&str]| std::process::Command::new(c).args(a).output().ok().map(|o| String::from_utf8_lossy(&o.stdout).trim().to_string()).unwrap_or_default(); + json!({ + "chip": sh("sysctl", &["-n", "machdep.cpu.brand_string"]), + "cpus": sh("sysctl", &["-n", "hw.ncpu"]), + "os": format!("{} {}", sh("sw_vers", &["-productName"]), sh("sw_vers", &["-productVersion"])), + }) +} + +/// The figure, or the refusal, from the spans; and the coverage the fabrics give. +fn figure(spans: &[Span], k: u64, used: u8) -> Value { + let set = SpanSet { + energies_nj: spans.iter().map(|s| s.energy_nj).collect(), + completions: k, + settle_nj: spans.iter().map(|s| s.settle_nj).max().unwrap_or(0), + windows_us: spans.iter().map(|s| s.window_us).collect(), + liveness: spans.iter().map(|s| s.liveness).collect(), + }; + let p = profile(1).expect("macos-task"); + match set.figure() { + Ok(f) => { + let whole = used & !p.metered() == 0; + let fits = p.admits(wai::energy_class::AcquisitionKind::OnChipCounter, used, whole).is_ok(); + json!({ + "joules_micro": f.joules_micro, + "class": "OnChipCounter", + "relative_ppm": f.relative_ppm, + "window_us": f.window_us, + "filtering": "Unknown", + "coverage": if whole { "Whole" } else { "Partial" }, + "fits_profile": fits, + }) + } + Err(r) => json!({ "refused": r.code() }), + } +} + +fn span_json(spans: &[Span]) -> Value { + let live = |l: &Liveness| json!([l.intervals, l.live_intervals, l.longest_live_run]); + json!({ + "energies_nj": spans.iter().map(|s| s.energy_nj).collect::>(), + "billed_nj": spans.iter().map(|s| s.billed_nj).collect::>(), + "service_nj": spans.iter().map(|s| s.service_nj).collect::>(), + "services": spans.iter().map(|s| s.services).collect::>(), + "windows_us": spans.iter().map(|s| s.window_us).collect::>(), + "settle_nj": spans.iter().map(|s| s.settle_nj).collect::>(), + "liveness": spans.iter().map(|s| live(&s.liveness)).collect::>(), + "cpu_ns": spans.iter().map(|s| s.cpu_ns).collect::>(), + "gpu_ns": spans.iter().map(|s| s.gpu_ns).collect::>(), + }) +} + +fn emit(out: &Option, line: &Value) { + let s = line.to_string(); + println!("{s}"); + if let Some(p) = out { + use std::io::Write; + let mut f = std::fs::OpenOptions::new().create(true).append(true).open(p).expect("open --out"); + writeln!(f, "{s}").expect("write --out"); + } +} + +fn run(a: &[String]) { + let spans_n: usize = arg(a, "--spans").map_or(5, |s| s.parse().expect("--spans")); + let seconds: f64 = arg(a, "--seconds").map_or(1.5, |s| s.parse().expect("--seconds")); + let filter = arg(a, "--filter"); + let out = arg(a, "--out"); + for c in cases() { + if filter.as_ref().is_some_and(|f| !c.name.contains(f.as_str()) && !c.capability.contains(f.as_str())) { + continue; + } + let output = (c.decode)(); + // Completions per span: enough for the span to last about `seconds`. + let t = Instant::now(); + let mut n = 0u64; + while t.elapsed() < Duration::from_millis(300) || n == 0 { + std::hint::black_box((c.decode)()); + n += 1; + } + let each = t.elapsed().as_secs_f64() / n as f64; + let k = ((seconds / each).ceil() as u64).clamp(1, 1 << 20); + let load0 = macos::loadavg(); + let work = Arc::clone(&c.decode); + let w: Arc = Arc::new(move || { + std::hint::black_box(work()); + }); + let spans: Vec = (0..spans_n).filter_map(|_| macos::span_in_process(k, EVERY, Arc::clone(&w))).collect(); + let used = fabric::CPU | if spans.iter().any(|s| s.gpu_ns > 0) { fabric::GPU } else { 0 }; + let line = json!({ + "case": c.name, + "capability": c.capability, + "decoder": c.decoder, + "policy": "fast kernels, one worker", + "input_sha256": sha256(&c.input), + "input_bytes": c.input.len(), + "output_sha256": sha256(&output), + "work": { "units": c.units, "unit": c.unit }, + "completions_per_span": k, + "spans": span_json(&spans), + "fabrics": fabric::terms(used), + "figure": figure(&spans, k, used), + "profile": "macos-task", + "build": build(), + "host": host(), + "loadavg_before": load0, + "loadavg_after": macos::loadavg(), + }); + emit(&out, &line); + } +} + +fn command(a: &[String]) { + let split = a.iter().position(|x| x == "--").expect("-- before the command"); + let (opts, argv) = (&a[..split], &a[split + 1..]); + let need = |n: &str| arg(opts, n).unwrap_or_else(|| panic!("{n} is required")); + let spans_n: usize = arg(opts, "--spans").map_or(5, |s| s.parse().expect("--spans")); + let mut used = 0u8; + for f in need("--fabrics").split(',') { + used |= match f { + "cpu" => fabric::CPU, + "gpu" => fabric::GPU, + "media" => fabric::MEDIA, + "neural" => fabric::NEURAL, + other => panic!("unknown fabric {other}"), + }; + } + let input = need("--input"); + let load0 = macos::loadavg(); + let mut spans = Vec::new(); + for _ in 0..spans_n { + match macos::span_command(argv, EVERY) { + Ok(s) if s.status == Some(0) => spans.push(s), + Ok(s) => panic!("the command exited {:?}", s.status), + Err(e) => panic!("{e}"), + } + } + if spans.iter().any(|s| s.gpu_ns > 0) { + used |= fabric::GPU; + } + let units: u64 = need("--units").parse().expect("--units"); + let line = json!({ + "case": need("--case"), + "capability": need("--capability"), + "decoder": need("--decoder"), + "command": argv, + "input_sha256": sha256(&read(&input)), + "input_bytes": std::fs::metadata(&input).map(|m| m.len()).unwrap_or(0), + "work": { "units": units, "unit": need("--unit") }, + "completions_per_span": 1, + "spans": span_json(&spans), + "fabrics": fabric::terms(used), + "figure": figure(&spans, 1, used), + "profile": "macos-task", + "build": build(), + "host": host(), + "loadavg_before": load0, + "loadavg_after": macos::loadavg(), + }); + emit(&arg(opts, "--out"), &line); +} + +fn main() { + let a: Vec = std::env::args().collect(); + match a.get(1).map(String::as_str) { + Some("list") => { + for c in cases() { + println!("{}\t{}\t{} {} per decode", c.name, c.capability, c.units, c.unit); + } + } + Some("run") => run(&a[2..]), + Some("command") => command(&a[2..]), + _ => { + eprintln!("usage: wai_sink_meter list | run [--spans R] [--seconds S] [--filter SUBSTRING] [--out FILE] | command ... -- ARGV"); + std::process::exit(2); + } + } +} diff --git a/wai/wai-rs/src/bin/wai_stream_energy_vectors.rs b/wai/wai-rs/src/bin/wai_stream_energy_vectors.rs new file mode 100644 index 000000000..d39de9e6b --- /dev/null +++ b/wai/wai-rs/src/bin/wai_stream_energy_vectors.rs @@ -0,0 +1,42 @@ +//! Conformance corpus for stream energy (`energy-conformance/stream/`, +//! extensions/stream-energy.md §8). +//! +//! wai_stream_energy_vectors gen write vectors.json +//! wai_stream_energy_vectors verify vectors.json regenerates byte for byte, and +//! every vector gets the outcome it states +//! +//! The corpus's second implementation is `energy-conformance/stream_energy_verify.py`, +//! written from the extension's text and sharing no code with this binary. + +use std::path::Path; +use wai::stream_energy::corpus; + +fn main() { + let a: Vec = std::env::args().collect(); + match (a.get(1).map(String::as_str), a.get(2)) { + (Some("gen"), Some(d)) => { + let p = Path::new(d).join("vectors.json"); + if let Err(e) = std::fs::create_dir_all(d).and_then(|_| std::fs::write(&p, corpus::generate())) { + eprintln!("write {}: {e}", p.display()); + std::process::exit(1); + } + println!("wrote {}", p.display()); + } + (Some("verify"), Some(d)) => { + let p = Path::new(d).join("vectors.json"); + let doc = std::fs::read_to_string(&p).unwrap_or_else(|e| panic!("read {}: {e}", p.display())); + let same = doc == corpus::generate(); + println!("{} vectors.json regenerates byte for byte", if same { "PASS" } else { "FAIL" }); + let fails = corpus::verify(&doc); + for f in &fails { + println!("FAIL {f}"); + } + println!("{} every vector gets the outcome the corpus states", if fails.is_empty() { "PASS" } else { "FAIL" }); + std::process::exit((!same || !fails.is_empty()) as i32); + } + _ => { + eprintln!("usage: wai_stream_energy_vectors gen|verify "); + std::process::exit(2); + } + } +} diff --git a/wai/wai-rs/src/codecs/energy_budget.rs b/wai/wai-rs/src/codecs/energy_budget.rs new file mode 100644 index 000000000..9df6177fd --- /dev/null +++ b/wai/wai-rs/src/codecs/energy_budget.rs @@ -0,0 +1,235 @@ +//! The energy budgets of learned capabilities (`extensions/energy-measurement.md` §9.5): +//! the figures [platform-decode](../../../extensions/platform-decode.md) §5 reads to let a +//! learned entry rank with power-efficient classical decode. +//! +//! A **budget** is an `OnChipCounter` figure, coverage `Whole`, of a learned capability's +//! decode with one parameter set on a reference sink, measured under the span protocol of +//! energy-measurement §9.4, for one unit of output (a picture, a frame or a second), with +//! its declared uncertainty and window. The spans it is computed from are published in +//! `docs/research/wai-sink-energy.jsonl`; a test recomputes every figure here from them and +//! every parameter-set digest from the committed set. A budget belongs to its parameter +//! set: [`budget_for`] gives one only for an entry whose pin names that set, so a figure +//! measured on one model never qualifies another. + +use crate::platform_decode::{self, EnergyBudget}; + +/// A reference-sink budget, as this crate holds it. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct ReferenceBudget { + pub capability: &'static str, + /// The case of `docs/research/wai-sink-energy.jsonl` it is computed from. + pub case: &'static str, + /// The parameter set measured, as a pin names it: the SHA-256 of its `wai.prior.set` + /// listing, and, for a set of one file, that file's SHA-256 (SPEC §3.1). + pub set_listing_sha256: &'static str, + pub set_file_sha256: Option<&'static str>, + /// Microjoules per unit of output. + pub joules_micro: u64, + /// `picture`, `frame` or `second` (platform-decode §5). + pub per: &'static str, + pub relative_ppm: u64, + pub window_us: u64, +} + +/// The reference sink every budget here was measured on, and its profile. +pub const REFERENCE_SINK: &str = "Apple M3 Ultra, macOS 27.0.1, sink profile macos-task, measured 2026-10-22"; + +/// The budgets of this revision, in capability order. +pub const REFERENCE_BUDGETS: &[ReferenceBudget] = &[ + ReferenceBudget { + capability: "wai.audio.int_codec", + case: "int_codec/audio", + set_listing_sha256: "69c4d55346241097187c709a97fe1057c403830b54f05de4cc016d1cd82485d6", + set_file_sha256: Some("132958122b251869ad6725d24a2bb96e2733daaf3e09ef65ebc7af6f46030855"), + joules_micro: 13_986, + per: "second", + relative_ppm: 1_688, + window_us: 1_539_743, + }, + ReferenceBudget { + capability: "wai.neural.int_hyper", + case: "int_hyper/tiny", + set_listing_sha256: "13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818", + set_file_sha256: None, + joules_micro: 121, + per: "picture", + relative_ppm: 3_118, + window_us: 1_535_088, + }, + ReferenceBudget { + capability: "wai.neural.int_mlicpp", + case: "int_mlicpp/stream", + set_listing_sha256: "85a05b0dac15566c5a657ddeee253eaa9f54ce852ae04924f5b04151901d9d1b", + set_file_sha256: Some("7ef44f3b1fc4a2df6c3e3b68460f595cae3d31cb7f9018699e29e738340272a4"), + joules_micro: 3_468, + per: "picture", + relative_ppm: 10_252, + window_us: 1_633_800, + }, + ReferenceBudget { + capability: "wai.neural.int_synth", + case: "int_synth/photo", + set_listing_sha256: "04073f4c1d00f2c37e68dab115eff059848494fc68ca2334c3cd4283442cdf1b", + set_file_sha256: Some("50868e72f5f1599569c413ed1f67ab8610fa0b3c17919162cbf370f49275125c"), + joules_micro: 21_101, + per: "picture", + relative_ppm: 2_557, + window_us: 1_488_961, + }, + ReferenceBudget { + capability: "wai.splat.int_codec", + case: "int_codec/splat", + set_listing_sha256: "75cc5f10af4c510115d036f6e2ecd5b90bf33d754e19f9ca38cfbe62e7ce8657", + set_file_sha256: Some("033a37c9d29d7ea9675a0b4a3e269d74f2ab874b5a3b1425eec69bf3bad8b26f"), + joules_micro: 2_451, + per: "frame", + relative_ppm: 3_186, + window_us: 1_541_455, + }, + ReferenceBudget { + capability: "wai.video.int_hyper", + case: "video_int_hyper/video_nk", + set_listing_sha256: "13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818", + set_file_sha256: None, + joules_micro: 54, + per: "frame", + relative_ppm: 3_321, + window_us: 1_516_652, + }, +]; + +impl ReferenceBudget { + /// The budget as platform-decode §5 reads it. + pub fn budget(&self) -> EnergyBudget { + EnergyBudget { + class: "OnChipCounter".into(), + joules_micro: self.joules_micro, + per: self.per.into(), + relative_ppm: self.relative_ppm, + window_us: self.window_us, + reference_sink: REFERENCE_SINK.into(), + } + } + + /// Whether a pin naming `sha256` names this budget's parameter set. + pub fn names_set(&self, sha256: &str) -> bool { + self.set_listing_sha256 == sha256 || self.set_file_sha256 == Some(sha256) + } +} + +/// The budget for an entry of `capability` whose pin names `pin_sha256` (SPEC §3.1), as the +/// `budgets` input of `platform_decode::select` takes it: `Some` only for a learned +/// capability measured here with that very parameter set. An entry with no pin names no +/// set, and has no budget. +pub fn budget_for(capability: &str, pin_sha256: Option<&str>) -> Option { + let pin = pin_sha256?; + if !platform_decode::is_learned(capability) { + return None; + } + REFERENCE_BUDGETS.iter().find(|b| b.capability == capability && b.names_set(pin)).map(ReferenceBudget::budget) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::energy_report::Liveness; + use crate::sink_energy::SpanSet; + use std::collections::BTreeMap; + + fn wai(p: &str) -> Vec { + std::fs::read(concat!(env!("CARGO_MANIFEST_DIR"), "/..").to_string() + "/" + p).unwrap_or_else(|e| panic!("{p}: {e}")) + } + + /// The committed parameter set each case decoded with (int-payload-conformance). + fn set_of(case: &str) -> BTreeMap> { + let v = |p: &str| wai(&format!("wai-rs/tests/vectors/{p}")); + let tiny = || BTreeMap::from([("entropy.json".into(), v("int_hyper/tiny_entropy.json")), ("g_s.whm".into(), v("int_hyper/tiny_g_s.bin")), ("h_s.whm".into(), v("int_hyper/tiny_h_s.bin"))]); + match case { + "int_hyper/tiny" | "video_int_hyper/video_nk" => tiny(), + "int_codec/audio" => BTreeMap::from([("model.wam".into(), v("int_audio/audio_model.bin"))]), + "int_codec/splat" => BTreeMap::from([("g_s.whm".into(), v("int_splat/splat_gs.bin"))]), + "int_synth/photo" => BTreeMap::from([("int_synth.json".into(), wai("neural-conformance/vectors/photo/int_synth.json"))]), + "int_mlicpp/stream" => BTreeMap::from([("model.wmb".into(), v("int_mlicpp/model.wmb"))]), + other => panic!("no set for {other}"), + } + } + + /// Units of output per decode of each case's vector, as a fraction. + fn units_per_decode(case: &str) -> (u128, u128) { + match case { + "video_int_hyper/video_nk" => (5, 1), + "int_codec/audio" => (8_192, 16_000), // 8 192 samples at 16 kHz: 0.512 s + _ => (1, 1), + } + } + + /// Every budget is §9.4's figure from the spans the research notes publish for its case, + /// divided by the units of output one decode gives, rounded to the nearest microjoule, + /// with the rounding's `0.5/√3` µJ added to its declaration wherever the division does not + /// come out whole; and its parameter set's digests are the committed set's. + #[test] + fn every_budget_recomputes_from_its_published_spans_and_set() { + let text = String::from_utf8(wai("../docs/research/wai-sink-energy.jsonl")).unwrap(); + let lines: Vec = text.lines().map(|l| serde_json::from_str(l).unwrap()).collect(); + for b in REFERENCE_BUDGETS { + let d = lines.iter().find(|d| d["case"] == b.case).unwrap_or_else(|| panic!("no case {}", b.case)); + assert_eq!(d["capability"], b.capability); + assert_eq!(d["figure"]["coverage"], "Whole", "{}", b.case); + let s = &d["spans"]; + let nums = |k: &str| s[k].as_array().unwrap().iter().map(|x| x.as_u64().unwrap()).collect::>(); + let set = SpanSet { + energies_nj: nums("energies_nj"), + completions: d["completions_per_span"].as_u64().unwrap(), + settle_nj: nums("settle_nj").into_iter().max().unwrap(), + windows_us: nums("windows_us"), + liveness: s["liveness"].as_array().unwrap().iter().map(|l| Liveness { intervals: l[0].as_u64().unwrap(), live_intervals: l[1].as_u64().unwrap(), longest_live_run: l[2].as_u64().unwrap() }).collect(), + }; + let f = set.figure().unwrap_or_else(|r| panic!("{}: {}", b.case, r.code())); + let (num, den) = units_per_decode(b.case); + // F × den / num, to the nearest microjoule, a half rounding up. + let fu = (2 * f.joules_micro as u128 * den + num) / (2 * num); + let p = f.relative_ppm as u128; + let pu = if (f.joules_micro as u128 * den) % num == 0 { + p + } else { + // The least p' with 12·Fu²·p'² ≥ 12·Fu²·p² + 10¹²: the rounding added in quadrature. + let need = 12 * fu * fu * p * p + 1_000_000_000_000; + let mut x = p; + while 12 * fu * fu * x * x < need { + x += 1; + } + x + }; + assert_eq!((b.joules_micro as u128, b.relative_ppm as u128, b.window_us), (fu, pu, f.window_us), "{}", b.case); + let members = set_of(b.case); + let view: BTreeMap = members.iter().map(|(k, v)| (k.clone(), v.as_slice())).collect(); + let listing = crate::pin::listing_from(&view).unwrap(); + assert_eq!(crate::pin::sha256_hex(&listing), b.set_listing_sha256, "{}: the listing digest", b.case); + let one = (members.len() == 1).then(|| crate::pin::sha256_hex(members.values().next().unwrap())); + assert_eq!(one.as_deref(), b.set_file_sha256, "{}: the file digest", b.case); + b.budget().qualifies(None).unwrap_or_else(|r| panic!("{}: {r:?}", b.case)); + } + } + + /// A budget belongs to its parameter set, and the default order of platform-decode §4 + /// reads it: an `int_hyper` entry pinned to the measured set ranks with power-efficient + /// classical decode, the same capability pinned to another set ranks last, and so does a + /// learned capability nobody measured. + #[test] + fn a_budget_qualifies_only_its_own_parameter_set() { + use crate::platform_decode::{rank, Entry, Rank, Rules}; + let tiny = "13e8b0d18e001eb9f0160309a02755b35a14f71ba0bcaa13f373e32b931ab818"; + let measured = budget_for("wai.neural.int_hyper", Some(tiny)).expect("the measured set has a budget"); + assert!(budget_for("wai.neural.int_hyper", Some(&"ab".repeat(32))).is_none(), "another model has no budget"); + assert!(budget_for("wai.neural.int_hyper", None).is_none(), "no pin, no set, no budget"); + assert!(budget_for("wai.neural.mlicpp", Some(tiny)).is_none()); + assert!(budget_for("wai.video.int_motion", Some(tiny)).is_none(), "not learned"); + let ranked = |c: &str, b: Option<&EnergyBudget>| rank(&Entry { capability: c, answers: None, budget: b }, &Rules::DEFAULT).ok(); + assert_eq!(ranked("wai.neural.int_hyper", Some(&measured)), Some(Rank::First)); + assert_eq!(ranked("wai.neural.int_hyper", None), Some(Rank::LearnedWithoutBudget)); + assert_eq!(ranked("wai.neural.mlicpp", None), Some(Rank::LearnedWithoutBudget)); + for b in REFERENCE_BUDGETS { + assert!(platform_decode::is_learned(b.capability), "{}", b.capability); + } + } +} diff --git a/wai/wai-rs/src/codecs/mod.rs b/wai/wai-rs/src/codecs/mod.rs index 52cd6ba1c..9be231e55 100644 --- a/wai/wai-rs/src/codecs/mod.rs +++ b/wai/wai-rs/src/codecs/mod.rs @@ -24,6 +24,10 @@ pub mod video; // the wire forms a `Prior` may declare (extensions/prior-carriage). pub mod derivation; pub mod prior_form; +// The energy budgets of learned capabilities, measured on a reference sink, in the form +// platform-decode §5 reads (energy-measurement §9.5). +/// cbindgen:ignore +pub mod energy_budget; // The registry as one table, and its export (`wai registry export`). pub mod registry; // The codec glossary (wai/glossary) held to its schema and the registry. Test-only. diff --git a/wai/wai-rs/src/codecs/registry.rs b/wai/wai-rs/src/codecs/registry.rs index afb352617..4f2ac04eb 100644 --- a/wai/wai-rs/src/codecs/registry.rs +++ b/wai/wai-rs/src/codecs/registry.rs @@ -230,6 +230,7 @@ pub const CAP_MEDIA_CONTRIBUTION: &str = "wai.media.contribution"; pub const CAP_DELIVERY_SETTLEMENT: &str = "wai.delivery.settlement"; pub const CAP_ACCESS_SERVICES: &str = "wai.access.services"; pub const CAP_MEDIA_EXPLORATION: &str = "wai.media.exploration"; +pub const CAP_STREAM_ENERGY: &str = "wai.stream.energy"; /// One row per string SPEC §5 registers that is a payload, companion or record: /// `(string, SPEC section, edition, registered)`. @@ -328,6 +329,7 @@ const ROWS: &[(&str, &str, Option<&str>, &str)] = &[ (CAP_DELIVERY_SETTLEMENT, S_INTERACTIVE, None, "2026-10-21"), (CAP_ACCESS_SERVICES, S_INTERACTIVE, None, "2026-10-21"), (CAP_MEDIA_EXPLORATION, S_INTERACTIVE, None, "2026-10-21"), + (CAP_STREAM_ENERGY, S_INTERACTIVE, None, "2026-10-24"), (CAP_AUDIO_IAMF, S_IMMERSIVE, None, "2026-06-17"), (CAP_AUDIO_AC4, S_IMMERSIVE, None, "2026-06-17"), (CAP_AUDIO_IVAS, S_IMMERSIVE, None, "2026-06-17"), @@ -389,6 +391,7 @@ const RECORDS: &[&str] = &[ CAP_DELIVERY_SETTLEMENT, CAP_ACCESS_SERVICES, CAP_MEDIA_EXPLORATION, + CAP_STREAM_ENERGY, ]; /// A named identifier SPEC uses that has the shape of a capability string but is @@ -541,6 +544,7 @@ const LIVE_RECORDING: &str = "extensions/live-recording.md"; const TIMED_TEXT: &str = "extensions/timed-text.md"; const LIVE_METERING: &str = "extensions/live-metering.md"; const ENERGY_STEERING: &str = "extensions/energy-steering.md"; +const STREAM_ENERGY: &str = "extensions/stream-energy.md"; const LIVE_MODERATION: &str = "extensions/live-moderation.md"; const CONFIDENTIALITY: &str = "extensions/confidentiality.md"; const FORENSIC_WATERMARK: &str = "extensions/forensic-watermark.md"; @@ -639,6 +643,9 @@ pub const WIRE_IDENTIFIERS: &[WireIdentifier] = &[ wire("WMR1", WireKind::Magic, LIVE_METERING, "§4.1", WireStatus::Defined), wire("WSP1", WireKind::Magic, ENERGY_STEERING, "§3.1", WireStatus::Defined), wire("WSD1", WireKind::Magic, ENERGY_STEERING, "§7.1", WireStatus::Defined), + wire("WSH1", WireKind::Magic, STREAM_ENERGY, "§3.1", WireStatus::Defined), + wire("WSE1", WireKind::Magic, STREAM_ENERGY, "§4.1", WireStatus::Defined), + wire("WST1", WireKind::Magic, STREAM_ENERGY, "§5.1", WireStatus::Defined), wire("WMP1", WireKind::Magic, LIVE_MODERATION, "§3.1", WireStatus::Defined), wire("WMS1", WireKind::Magic, LIVE_MODERATION, "§4.2", WireStatus::Defined), wire("WMN1", WireKind::Magic, LIVE_MODERATION, "§5.1", WireStatus::Defined), diff --git a/wai/wai-rs/src/display_caps.rs b/wai/wai-rs/src/display_caps.rs new file mode 100644 index 000000000..d8077c578 --- /dev/null +++ b/wai/wai-rs/src/display_caps.rs @@ -0,0 +1,268 @@ +//! Display capability (`extensions/capability-constraints.md` §6): what a sink's panel can +//! show, the WAI-authored register entries that name it, and the rule that a sink selects +//! no rendition above its panel when one within it is offered, so bits the panel cannot +//! show are never sent. +//! +//! A rendition is **above** a panel in each of these, independently: +//! +//! - **size**: its longer side is longer than the panel's longer side, or its shorter side +//! longer than the panel's shorter side (the sides compared in the orientation that fits); +//! - **rate**: its frame rate is above the panel's refresh rate; +//! - **depth**: its bit depth is above the panel's; +//! - **transfer**: its transfer function (SDR, PQ or HLG) is one the panel does not show; +//! - **acuity**: where the sink declares its viewing distance and the panel's diagonal, its +//! shorter side holds more lines than a viewer at that distance resolves across the +//! panel's shorter side, at one arc-minute a line (the criterion of ITU-R BT.1845-1's +//! optimal viewing distance). +//! +//! Every comparison is exact in integers; [`exceeds`] gives the bits, and [`select`] the +//! rendition a sink picks. Pure std, compiled unconditionally. + +use crate::energy_report::Nat; + +pub mod corpus; + +/// What [`exceeds`] reports, as bits of one byte. +pub mod above { + pub const SIZE: u8 = 1; + pub const RATE: u8 = 2; + pub const DEPTH: u8 = 4; + pub const TRANSFER: u8 = 8; + pub const ACUITY: u8 = 16; + + /// The terms of the bits set, in the order of the bits. + pub fn terms(bits: u8) -> Vec<&'static str> { + [(SIZE, "size"), (RATE, "rate"), (DEPTH, "depth"), (TRANSFER, "transfer"), (ACUITY, "acuity")] + .into_iter() + .filter(|(b, _)| bits & b != 0) + .map(|(_, t)| t) + .collect() + } +} + +/// A transfer function, by its code in a display or rendition declaration. +pub mod transfer { + pub const SDR: u8 = 1; + pub const PQ: u8 = 2; + pub const HLG: u8 = 3; + + /// The bit of a transfer in a panel's set: `1 << (code − 1)`. + pub fn bit(code: u8) -> u8 { + if (SDR..=HLG).contains(&code) { 1 << (code - 1) } else { 0 } + } +} + +/// A panel as a sink declares it (`wai-display:*`, capability-constraints §6.1). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Display { + pub width: u32, + pub height: u32, + /// The highest refresh rate, in millihertz. + pub refresh_mhz: u32, + /// Bits per component the panel shows. + pub bit_depth: u8, + /// The transfer functions it shows: bit `1 << (code − 1)` for each. + pub transfers: u8, + /// Its diagonal, in millimetres; 0 when not declared. + pub diagonal_mm: u32, + /// The viewer's distance from it, in millimetres; 0 when not declared. + pub distance_mm: u32, +} + +/// A rendition as an envelope or a playlist declares it (`wai-video:*`, §6.1). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Rendition { + pub width: u32, + pub height: u32, + /// Its frame rate, in millihertz. + pub frame_rate_mhz: u32, + pub bit_depth: u8, + /// Its transfer function's code. + pub transfer: u8, +} + +/// tan(1′) = tan(π/10 800) as `TAN_ARCMIN / 10¹³`, rounded down, so the acuity rule never +/// flags a rendition the exact value would not. +pub const TAN_ARCMIN: u64 = 2_908_882_086; + +/// Why a declaration is refused (§6.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum DeclarationError { + /// A zero width, height, rate or depth, or a depth above 16. + Malformed, + /// A transfer code other than 1–3, or a panel that shows none. + Transfer, + /// A distance without a diagonal. + DistanceAlone, +} + +impl DeclarationError { + pub fn code(self) -> &'static str { + match self { + DeclarationError::Malformed => "display_malformed", + DeclarationError::Transfer => "display_transfer", + DeclarationError::DistanceAlone => "display_distance_alone", + } + } +} + +impl Display { + /// §6.2's rules for a panel declaration. + pub fn check(&self) -> Result<(), DeclarationError> { + if self.width == 0 || self.height == 0 || self.refresh_mhz == 0 || self.bit_depth == 0 || self.bit_depth > 16 { + return Err(DeclarationError::Malformed); + } + if self.transfers == 0 || self.transfers & !0b111 != 0 { + return Err(DeclarationError::Transfer); + } + if self.distance_mm != 0 && self.diagonal_mm == 0 { + return Err(DeclarationError::DistanceAlone); + } + Ok(()) + } +} + +impl Rendition { + /// §6.2's rules for a rendition declaration. + pub fn check(&self) -> Result<(), DeclarationError> { + if self.width == 0 || self.height == 0 || self.frame_rate_mhz == 0 || self.bit_depth == 0 || self.bit_depth > 16 { + return Err(DeclarationError::Malformed); + } + if transfer::bit(self.transfer) == 0 { + return Err(DeclarationError::Transfer); + } + Ok(()) + } +} + +fn long_short(w: u32, h: u32) -> (u64, u64) { + (w.max(h) as u64, w.min(h) as u64) +} + +/// Whether `lines` across the panel's shorter side are more than a viewer at the declared +/// distance resolves at one arc-minute a line: +/// +/// ```text +/// lines² · D² · T² · (W² + H²) > G² · S² · 10²⁶ +/// ``` +/// +/// with `D` the distance and `G` the diagonal in millimetres, `W`, `H` the panel's sides and +/// `S` its shorter side in pixels, and `T` = [`TAN_ARCMIN`]: `lines > S_mm / (D · tan 1′)`, +/// squared, where `S_mm = G · S / √(W² + H²)` for square pixels. +pub fn above_acuity(d: &Display, lines: u64) -> bool { + if d.distance_mm == 0 || d.diagonal_mm == 0 { + return false; + } + let n = |v: u128| Nat::from(v); + let (w, h) = (d.width as u128, d.height as u128); + let s = w.min(h); + let lhs = n(lines as u128 * lines as u128) + .mul(&n(d.distance_mm as u128 * d.distance_mm as u128)) + .mul(&n(TAN_ARCMIN as u128 * TAN_ARCMIN as u128)) + .mul(&n(w * w + h * h)); + let rhs = n(d.diagonal_mm as u128 * d.diagonal_mm as u128).mul(&n(s * s)).mul(&n(10u128.pow(26))); + lhs > rhs +} + +/// The ways `r` is above `d` (the bits of [`above`]); 0 when it is within. +pub fn exceeds(d: &Display, r: &Rendition) -> u8 { + let mut bits = 0; + let ((pl, ps), (rl, rs)) = (long_short(d.width, d.height), long_short(r.width, r.height)); + if rl > pl || rs > ps { + bits |= above::SIZE; + } + if r.frame_rate_mhz > d.refresh_mhz { + bits |= above::RATE; + } + if r.bit_depth > d.bit_depth { + bits |= above::DEPTH; + } + if d.transfers & transfer::bit(r.transfer) == 0 { + bits |= above::TRANSFER; + } + if above_acuity(d, rs) { + bits |= above::ACUITY; + } + bits +} + +/// What [`select`] picks: an index, whether it is within the panel, and the ways it is +/// above when it is not. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Selection { + pub index: usize, + pub within: bool, + pub above: u8, +} + +/// §6.3's selection over renditions in the deployer's order, each with whether the sink can +/// otherwise pick it (SPEC §7.1 step 2): the first one it can pick that is within the panel, +/// or, when none is, the first one it can pick, reported above. `None` when it can pick none. +pub fn select(d: &Display, renditions: &[(Rendition, bool)]) -> Option { + let pickable = || renditions.iter().enumerate().filter(|(_, (_, ok))| *ok); + if let Some((i, _)) = pickable().find(|(_, (r, _))| exceeds(d, r) == 0) { + return Some(Selection { index: i, within: true, above: 0 }); + } + pickable().next().map(|(i, (r, _))| Selection { index: i, within: false, above: exceeds(d, r) }) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn r(w: u32, h: u32, fps: u32, depth: u8, tf: u8) -> Rendition { + Rendition { width: w, height: h, frame_rate_mhz: fps * 1000, bit_depth: depth, transfer: tf } + } + + /// A 4:3 panel 1 600 mm by 1 200 mm has a 2 000 mm diagonal. ITU-R BT.1845-1 puts the + /// optimal viewing distance of a 1080-line picture at 3.2 H (exactly 1/(1080·tan 1′) = + /// 3.18 H): from 3.1 H a viewer resolves 1 108 lines, so 1 080 are within; from 3.3 H, + /// 1 041, so they are above. At 4 000 mm the boundary is 1 031.32 lines. + #[test] + fn acuity_meets_the_arcminute_distance() { + let at = |mm: u32| Display { width: 1600, height: 1200, refresh_mhz: 60_000, bit_depth: 10, transfers: 0b111, diagonal_mm: 2000, distance_mm: mm }; + assert!(!above_acuity(&at(3720), 1080), "3.1 H"); + assert!(above_acuity(&at(3960), 1080), "3.3 H"); + assert!(!above_acuity(&at(4000), 1031)); + assert!(above_acuity(&at(4000), 1032)); + let undeclared = Display { distance_mm: 0, ..at(4000) }; + assert!(!above_acuity(&undeclared, 100_000)); + } + + #[test] + fn each_dimension_is_its_own_bit() { + let phone = Display { width: 1179, height: 2556, refresh_mhz: 60_000, bit_depth: 10, transfers: 0b011, diagonal_mm: 0, distance_mm: 0 }; + assert_eq!(exceeds(&phone, &r(1920, 1080, 30, 8, transfer::SDR)), 0, "a landscape 1080p fits the portrait panel turned"); + assert_eq!(exceeds(&phone, &r(3840, 2160, 30, 10, transfer::PQ)), above::SIZE); + assert_eq!(exceeds(&phone, &r(1920, 1080, 120, 8, transfer::SDR)), above::RATE); + assert_eq!(exceeds(&phone, &r(1920, 1080, 30, 12, transfer::SDR)), above::DEPTH); + assert_eq!(exceeds(&phone, &r(1920, 1080, 30, 10, transfer::HLG)), above::TRANSFER); + } + + #[test] + fn the_first_rendition_within_is_selected() { + let monitor = Display { width: 2560, height: 1440, refresh_mhz: 60_000, bit_depth: 8, transfers: 0b001, diagonal_mm: 0, distance_mm: 0 }; + let ladder = [ + (r(3840, 2160, 60, 10, transfer::PQ), true), + (r(2560, 1440, 60, 10, transfer::PQ), true), + (r(2560, 1440, 60, 8, transfer::SDR), false), + (r(1920, 1080, 60, 8, transfer::SDR), true), + ]; + assert_eq!(select(&monitor, &ladder), Some(Selection { index: 3, within: true, above: 0 }), "the third is within but not pickable"); + let none_within = [(r(3840, 2160, 60, 10, transfer::PQ), true)]; + assert_eq!(select(&monitor, &none_within), Some(Selection { index: 0, within: false, above: above::SIZE | above::DEPTH | above::TRANSFER })); + assert_eq!(select(&monitor, &[(r(640, 360, 30, 8, transfer::SDR), false)]), None); + } + + #[test] + fn declarations_are_checked() { + let ok = Display { width: 1920, height: 1080, refresh_mhz: 60_000, bit_depth: 8, transfers: 1, diagonal_mm: 600, distance_mm: 700 }; + assert_eq!(ok.check(), Ok(())); + assert_eq!(Display { bit_depth: 0, ..ok }.check(), Err(DeclarationError::Malformed)); + assert_eq!(Display { transfers: 0, ..ok }.check(), Err(DeclarationError::Transfer)); + assert_eq!(Display { transfers: 8, ..ok }.check(), Err(DeclarationError::Transfer)); + assert_eq!(Display { diagonal_mm: 0, ..ok }.check(), Err(DeclarationError::DistanceAlone)); + assert_eq!(r(1920, 1080, 30, 8, 4).check(), Err(DeclarationError::Transfer)); + assert_eq!(r(0, 1080, 30, 8, 1).check(), Err(DeclarationError::Malformed)); + } +} diff --git a/wai/wai-rs/src/display_caps/corpus.rs b/wai/wai-rs/src/display_caps/corpus.rs new file mode 100644 index 000000000..6791f6526 --- /dev/null +++ b/wai/wai-rs/src/display_caps/corpus.rs @@ -0,0 +1,171 @@ +//! The conformance corpus of extensions/capability-constraints.md §6.5: +//! `constraints-conformance/display/vectors.json`. +//! +//! [`generate`] writes it: each vector is a panel and a ladder of renditions in a +//! deployer's order, each with whether the sink can otherwise pick it, and states every +//! rendition's bits above the panel and the selection §6.3 gives; each refusal is a +//! declaration §6.2 refuses, with its code. The panels and ladders describe common devices +//! and services; they are examples, not measurements. [`verify`] checks a corpus file +//! against this module. `constraints-conformance/display_verify.py` checks the same file +//! from the extension's text, sharing no code with this module. + +use serde_json::{json, Value}; + +use super::*; + +fn disp(w: u32, h: u32, hz: u32, depth: u8, transfers: u8, diag: u32, dist: u32) -> Display { + Display { width: w, height: h, refresh_mhz: hz * 1000, bit_depth: depth, transfers, diagonal_mm: diag, distance_mm: dist } +} + +fn rend(w: u32, h: u32, fps_milli: u32, depth: u8, tf: u8) -> Rendition { + Rendition { width: w, height: h, frame_rate_mhz: fps_milli, bit_depth: depth, transfer: tf } +} + +const SDR: u8 = transfer::SDR; +const PQ: u8 = transfer::PQ; +const HLG: u8 = transfer::HLG; + +/// A ladder from 2160p60 HDR down to 360p, highest first, every rung pickable. +fn ladder() -> Vec<(Rendition, bool)> { + vec![ + (rend(3840, 2160, 60_000, 10, PQ), true), + (rend(3840, 2160, 30_000, 10, PQ), true), + (rend(2560, 1440, 60_000, 10, PQ), true), + (rend(1920, 1080, 60_000, 8, SDR), true), + (rend(1920, 1080, 30_000, 8, SDR), true), + (rend(1280, 720, 30_000, 8, SDR), true), + (rend(640, 360, 30_000, 8, SDR), true), + ] +} + +fn cases() -> Vec<(&'static str, Display, Vec<(Rendition, bool)>)> { + let mut c = vec![ + ("tv_4k_hdr_near", disp(3840, 2160, 120, 10, 0b111, 1651, 1200), ladder()), + ("tv_4k_hdr_far", disp(3840, 2160, 60, 10, 0b111, 1397, 3000), ladder()), + ("monitor_1440p_sdr", disp(2560, 1440, 60, 8, 0b001, 686, 0), ladder()), + ("monitor_1080p_sdr_144hz", disp(1920, 1080, 144, 8, 0b001, 610, 650), ladder()), + ("laptop_1600p", disp(2560, 1600, 120, 10, 0b011, 406, 0), ladder()), + ("phone_portrait_hdr", disp(1179, 2556, 60, 10, 0b011, 155, 350), ladder()), + ("phone_portrait_hdr_no_distance", disp(1179, 2556, 60, 10, 0b011, 155, 0), ladder()), + ("tablet_hlg_only", disp(2048, 2732, 60, 10, 0b101, 330, 0), ladder()), + ]; + let mut hdr_only = ladder(); + for r in &mut hdr_only[3..] { + r.1 = false; + } + c.push(("monitor_sdr_offered_hdr_only", disp(1920, 1080, 60, 8, 0b001, 610, 0), hdr_only)); + let mut hlg = ladder(); + hlg.insert(0, (rend(3840, 2160, 50_000, 10, HLG), true)); + c.push(("tv_hlg_broadcast_first", disp(3840, 2160, 50, 10, 0b111, 1397, 2000), hlg)); + c.push(("rate_120_on_60", disp(1920, 1080, 60, 8, 0b001, 0, 0), vec![(rend(1920, 1080, 120_000, 8, SDR), true), (rend(1920, 1080, 59_940, 8, SDR), true)])); + c.push(("nothing_pickable", disp(1920, 1080, 60, 8, 0b001, 0, 0), vec![(rend(1280, 720, 30_000, 8, SDR), false)])); + c +} + +fn refusals() -> Vec<(&'static str, Value, &'static str)> { + let d = |m: Display| json!({ "display": dj(&m) }); + let r = |x: Rendition| json!({ "rendition": rj(&x) }); + let ok = disp(1920, 1080, 60, 8, 1, 600, 700); + vec![ + ("display_zero_width", d(Display { width: 0, ..ok }), DeclarationError::Malformed.code()), + ("display_depth_17", d(Display { bit_depth: 17, ..ok }), DeclarationError::Malformed.code()), + ("display_no_transfer", d(Display { transfers: 0, ..ok }), DeclarationError::Transfer.code()), + ("display_unknown_transfer_bit", d(Display { transfers: 0b1001, ..ok }), DeclarationError::Transfer.code()), + ("display_distance_without_diagonal", d(Display { diagonal_mm: 0, ..ok }), DeclarationError::DistanceAlone.code()), + ("rendition_zero_rate", r(rend(1920, 1080, 0, 8, SDR)), DeclarationError::Malformed.code()), + ("rendition_transfer_4", r(rend(1920, 1080, 30_000, 8, 4)), DeclarationError::Transfer.code()), + ] +} + +fn dj(d: &Display) -> Value { + json!({ "width": d.width, "height": d.height, "refresh_mhz": d.refresh_mhz, "bit_depth": d.bit_depth, "transfers": d.transfers, "diagonal_mm": d.diagonal_mm, "distance_mm": d.distance_mm }) +} + +fn rj(r: &Rendition) -> Value { + json!({ "width": r.width, "height": r.height, "frame_rate_mhz": r.frame_rate_mhz, "bit_depth": r.bit_depth, "transfer": r.transfer }) +} + +/// The corpus, as `constraints-conformance/display/vectors.json` holds it. +pub fn generate() -> String { + let vectors: Vec = cases() + .into_iter() + .map(|(name, d, l)| { + d.check().expect("a corpus panel is well formed"); + let sel = select(&d, &l); + json!({ + "name": name, + "display": dj(&d), + "renditions": l.iter().map(|(r, ok)| json!({ "rendition": rj(r), "pickable": ok, "above": above::terms(exceeds(&d, r)) })).collect::>(), + "selected": sel.map(|s| json!({ "index": s.index, "within": s.within, "above": above::terms(s.above) })), + }) + }) + .collect(); + let refused: Vec = refusals() + .into_iter() + .map(|(name, decl, code)| { + let got = match (decl.get("display"), decl.get("rendition")) { + (Some(d), _) => display_of(d).check(), + (_, Some(r)) => rendition_of(r).check(), + _ => unreachable!(), + }; + assert_eq!(got.err().map(DeclarationError::code), Some(code), "{name}"); + let mut v = decl; + v["name"] = json!(name); + v["code"] = json!(code); + v + }) + .collect(); + let doc = json!({ + "format": "wai capability-constraints display corpus v1", + "about": "extensions/capability-constraints.md §6.5. Each vector is a panel (wai-display:*) and renditions (wai-video:*) in a deployer's order, each pickable or not; it states each rendition's bits above the panel and the selection §6.3 gives. Each refusal is a declaration §6.2 refuses, with its code.", + "tan_arcmin_e13": TAN_ARCMIN, + "vectors": vectors, + "refusals": refused, + }); + let mut s = serde_json::to_string_pretty(&doc).expect("serialise"); + s.push('\n'); + s +} + +fn n(v: &Value, k: &str) -> u64 { + v[k].as_u64().unwrap_or(0) +} + +fn display_of(v: &Value) -> Display { + Display { width: n(v, "width") as u32, height: n(v, "height") as u32, refresh_mhz: n(v, "refresh_mhz") as u32, bit_depth: n(v, "bit_depth") as u8, transfers: n(v, "transfers") as u8, diagonal_mm: n(v, "diagonal_mm") as u32, distance_mm: n(v, "distance_mm") as u32 } +} + +fn rendition_of(v: &Value) -> Rendition { + Rendition { width: n(v, "width") as u32, height: n(v, "height") as u32, frame_rate_mhz: n(v, "frame_rate_mhz") as u32, bit_depth: n(v, "bit_depth") as u8, transfer: n(v, "transfer") as u8 } +} + +/// Check a corpus file against this module. +pub fn verify(doc: &str) -> Vec { + let mut fails = Vec::new(); + let Ok(d) = serde_json::from_str::(doc) else { return vec!["the corpus does not parse".into()] }; + for v in d["vectors"].as_array().into_iter().flatten() { + let name = v["name"].as_str().unwrap_or("?"); + let disp = display_of(&v["display"]); + let ladder: Vec<(Rendition, bool)> = v["renditions"].as_array().into_iter().flatten().map(|r| (rendition_of(&r["rendition"]), r["pickable"].as_bool().unwrap_or(false))).collect(); + for (i, (r, _)) in ladder.iter().enumerate() { + if json!(above::terms(exceeds(&disp, r))) != v["renditions"][i]["above"] { + fails.push(format!("{name}: rendition {i}'s bits above the panel")); + } + } + let sel = select(&disp, &ladder).map(|s| json!({ "index": s.index, "within": s.within, "above": above::terms(s.above) })); + if json!(sel) != v["selected"] { + fails.push(format!("{name}: the selection")); + } + } + for f in d["refusals"].as_array().into_iter().flatten() { + let got = match (f.get("display"), f.get("rendition")) { + (Some(x), _) => display_of(x).check(), + (_, Some(x)) => rendition_of(x).check(), + _ => Ok(()), + }; + if got.err().map(DeclarationError::code) != f["code"].as_str() { + fails.push(format!("{}: the refusal", f["name"])); + } + } + fails +} diff --git a/wai/wai-rs/src/energy_class.rs b/wai/wai-rs/src/energy_class.rs index 8d3037404..821f152b0 100644 --- a/wai/wai-rs/src/energy_class.rs +++ b/wai/wai-rs/src/energy_class.rs @@ -668,6 +668,67 @@ pub fn check_label(joules_micro: u64, label: Option<&EnergyProvenance>) -> Resul check_resolution(joules_micro, p) } +/// A figure as a reader shows it (energy-measurement §2, §9.3): the unmetered marker is +/// never a figure of zero joules, a figure with no class says that nothing states how it +/// was obtained, and a classed figure carries its class, its declared uncertainty where it +/// has one, and whether it is only a lower bound. Every page and tool that shows a figure +/// renders it through [`Presented::of`], so none can show unmetered work as costing nothing. +#[derive(Clone, Debug, PartialEq, Eq)] +pub enum Presented { + /// The unmetered marker: nobody measured this work. + Unmetered, + /// A figure sealed with no class (a legacy form, §2.8). + Unlabelled { joules_micro: u64 }, + /// A figure with its class; `lower_bound` where its coverage is `Partial`. + Classed { joules_micro: u64, class: EnergyProvenance, lower_bound: bool }, +} + +impl Presented { + /// What a reader shows for `joules_micro` sealed with `class`, `partial` where the + /// figure's coverage is `Partial`. A class beside a zero figure is refused, as every + /// verifier refuses it ([`AcquisitionError::NoFigure`]); so is a lower bound with no + /// figure. + pub fn of(joules_micro: u64, class: Option<&EnergyProvenance>, partial: bool) -> Result { + match (joules_micro, class) { + (0, None) if !partial => Ok(Presented::Unmetered), + (0, _) => Err(AcquisitionError::NoFigure), + (n, None) => Ok(Presented::Unlabelled { joules_micro: n }), + (n, Some(c)) => { + c.validate()?; + check_resolution(n, c)?; + Ok(Presented::Classed { joules_micro: n, class: c.clone(), lower_bound: partial }) + } + } + } +} + +/// A whole number of microjoules in the largest unit that keeps it at or above one, with +/// three decimals: integer arithmetic, so every reader writes the same text. +pub fn joules_text(uj: u64) -> String { + match uj { + 0..=999 => format!("{uj} µJ"), + 1_000..=999_999 => format!("{}.{:03} mJ", uj / 1_000, uj % 1_000), + _ => format!("{}.{:03} J", uj / 1_000_000, (uj / 1_000) % 1_000), + } +} + +impl core::fmt::Display for Presented { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + match self { + Presented::Unmetered => f.write_str("unmetered"), + Presented::Unlabelled { joules_micro } => write!(f, "{} (unlabelled: how it was obtained is not stated)", joules_text(*joules_micro)), + Presented::Classed { joules_micro, class, lower_bound } => { + write!(f, "{}{}, {}", if *lower_bound { "at least " } else { "" }, joules_text(*joules_micro), class.label())?; + if let Some(u) = class.uncertainty() { + // ±ppm as a percentage with three decimals, over the window in ms. + write!(f, " ±{}.{:03} % over {} ms", u.relative_ppm / 10_000, (u.relative_ppm % 10_000) / 10, u.window_us / 1_000)?; + } + Ok(()) + } + } + } +} + /// [`check_label`] as a predicate, for `verify()`. pub fn label_coheres(joules_micro: u64, label: Option<&EnergyProvenance>) -> bool { check_label(joules_micro, label).is_ok() @@ -1110,6 +1171,19 @@ pub(crate) fn test_on_chip() -> EnergyProvenance { mod tests { use super::*; + #[test] + fn a_reader_never_shows_unmetered_work_as_zero_joules() { + assert_eq!(Presented::of(0, None, false).unwrap().to_string(), "unmetered"); + assert_eq!(Presented::of(0, Some(&EnergyProvenance::Estimator), false), Err(AcquisitionError::NoFigure)); + assert_eq!(Presented::of(0, None, true), Err(AcquisitionError::NoFigure), "a lower bound of nothing is not a figure"); + assert_eq!(Presented::of(1_234_567, None, false).unwrap().to_string(), "1.234 J (unlabelled: how it was obtained is not stated)"); + let occ = EnergyProvenance::on_chip_counter(u(19_000, 2_000_000), CounterFiltering::Unknown).unwrap(); + assert_eq!(Presented::of(58_000, Some(&occ), true).unwrap().to_string(), "at least 58.000 mJ, OnChipCounter ±1.900 % over 2000 ms"); + assert_eq!(Presented::of(196_000_000, Some(&EnergyProvenance::Estimator), false).unwrap().to_string(), "196.000 J, Estimator"); + assert_eq!(joules_text(999), "999 µJ"); + assert!(!Presented::of(0, None, false).unwrap().to_string().contains('0'), "no digit in an unmetered figure"); + } + fn u(ppm: u32, win: u64) -> Uncertainty { Uncertainty { relative_ppm: ppm, window_us: win } } diff --git a/wai/wai-rs/src/energy_report.rs b/wai/wai-rs/src/energy_report.rs index d163e1a8c..f2adaa10f 100644 --- a/wai/wai-rs/src/energy_report.rs +++ b/wai/wai-rs/src/energy_report.rs @@ -504,10 +504,10 @@ impl BuildRecord { /// An unsigned integer of any width, little-endian in 64-bit limbs with no /// high zero limb — only what §6.2's products need: multiply, add, compare. #[derive(Clone, Debug, PartialEq, Eq)] -struct Nat(Vec); +pub(crate) struct Nat(Vec); impl Nat { - fn from(v: u128) -> Nat { + pub(crate) fn from(v: u128) -> Nat { let mut n = Nat(vec![v as u64, (v >> 64) as u64]); n.trim(); n @@ -519,7 +519,7 @@ impl Nat { } } - fn mul(&self, o: &Nat) -> Nat { + pub(crate) fn mul(&self, o: &Nat) -> Nat { if self.0.is_empty() || o.0.is_empty() { return Nat(Vec::new()); } @@ -544,7 +544,7 @@ impl Nat { n } - fn add(&self, o: &Nat) -> Nat { + pub(crate) fn add(&self, o: &Nat) -> Nat { let len = self.0.len().max(o.0.len()); let mut out = Vec::with_capacity(len + 1); let mut carry = 0u128; diff --git a/wai/wai-rs/src/lib.rs b/wai/wai-rs/src/lib.rs index e0f3c1554..9bb616901 100644 --- a/wai/wai-rs/src/lib.rs +++ b/wai/wai-rs/src/lib.rs @@ -303,6 +303,19 @@ pub mod energy_class; // (energy-measurement §3.1, §6.2). Integer only, pure std, compiled unconditionally. pub mod energy_report; +// The sink measurement profiles, one per operating system, and the span protocol for a +// task counter with its exact arithmetic (energy-measurement §9). Integer only, pure std, +// compiled unconditionally; its macOS reader is behind `sink_meter`. +/// cbindgen:ignore +pub mod sink_energy; + +// Display capability (extensions/capability-constraints.md §6): a panel's sides, refresh, bit +// depth, transfers, diagonal and viewing distance, the exact test of whether a rendition is +// above it, and the selection that sends no rendition above the panel when one within it is +// offered. Integer only, pure std, compiled unconditionally. +/// cbindgen:ignore +pub mod display_caps; + // What build.rs records about the build, shared with build.rs through `#[path]`; // compiled into the crate for its tests. #[cfg(test)] @@ -455,6 +468,13 @@ pub mod live_metering; /// cbindgen:ignore #[cfg(feature = "energy_steering")] pub mod energy_steering; +// Stream energy (extensions/stream-energy.md): `wai.stream.energy` — each hop's signed figure +// for a segment (WSH1) with its class, coverage and declared basis, the sink's stream-segment +// receipt (WSE1) with a total per class, a delivery sum and a display sum at their weakest +// class and the panel verdict, and the termination record (WST1) of a stream nobody watches. +/// cbindgen:ignore +#[cfg(feature = "stream_energy")] +pub mod stream_energy; // Live moderation (extensions/live-moderation.md): `wai.live.moderation` — the room authority's // review policy, the statement that follows a `decision` event, notices and complaints, lines // of decisions by digest, the review state machine, gaps explained by the decisions that diff --git a/wai/wai-rs/src/sink_energy.rs b/wai/wai-rs/src/sink_energy.rs new file mode 100644 index 000000000..c9d2caddd --- /dev/null +++ b/wai/wai-rs/src/sink_energy.rs @@ -0,0 +1,446 @@ +//! Sink energy (`extensions/energy-measurement.md` §9): the sink measurement profiles, one +//! per operating system, and the span protocol for a task counter (§9.4) with its exact +//! arithmetic. +//! +//! A **profile** names, for one operating system, the energy counters an unprivileged sink +//! process can read, the class each figure from them may be sealed under, the fabrics each +//! covers, and the fabrics none covers. A decode figure whose work ran on a fabric its +//! profile does not meter covers only the metered fabrics: its coverage is `Partial`, and it +//! is a **lower bound** (§9.3). `HwShunt` is in no profile (§2.6). +//! +//! The **span protocol** reads a counter scoped to the work itself (on macOS, the kernel's +//! account of a task's CPU energy) at the two ends of a span of whole completions, over +//! several spans, and computes the figure and the least declared uncertainty from the +//! integers alone ([`SpanSet::figure`]), so every reader reproduces both. The reader of the +//! counter on macOS is `macos` (feature `sink_meter`). +//! +//! Pure std and integer arithmetic, compiled unconditionally; the reader is macOS only. + +use crate::energy_class::{AcquisitionKind, CounterFiltering, EnergyProvenance, Uncertainty}; +use crate::energy_report::{Liveness, Nat}; + +/// cbindgen:ignore +#[cfg(all(target_os = "macos", feature = "sink_meter"))] +pub mod macos; + +/// The fabrics a step of work can run on (energy-measurement §6.3), as bits of one byte. +pub mod fabric { + /// The CPU. + pub const CPU: u8 = 1; + /// A GPU. + pub const GPU: u8 = 2; + /// A hardware video engine. + pub const MEDIA: u8 = 4; + /// A neural-network engine. + pub const NEURAL: u8 = 8; + /// Every fabric this revision names. + pub const ALL: u8 = CPU | GPU | MEDIA | NEURAL; + + /// The fabrics' terms, in the order of their bits. + pub fn terms(mask: u8) -> Vec<&'static str> { + [(CPU, "cpu"), (GPU, "gpu"), (MEDIA, "media"), (NEURAL, "neural")] + .into_iter() + .filter(|(b, _)| mask & b != 0) + .map(|(_, t)| t) + .collect() + } +} + +/// What a counter's reading is attributed to (§9.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Scope { + /// The work's own process: the operating system's account of its energy, which other + /// work on the host does not enter. + Task, + /// A rail or package other work shares: a figure needs the bracket of §3, or the + /// sole-user rule of §6.3. + Rail, +} + +/// What reading a counter takes (§9.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Privilege { + /// Any process of the user may read it. + None, + /// Only an act of the host's owner opens it to the sink (a group-readable file, a + /// capability granted to the binary): root by default. + OwnerGrant, +} + +/// One counter of a profile. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Counter { + /// The fabrics its reading covers. + pub fabrics: u8, + /// The interface read. + pub reader: &'static str, + /// The class a figure from it is sealed under. + pub kind: AcquisitionKind, + /// What the reading is attributed to. + pub scope: Scope, + /// What reading it takes. + pub privilege: Privilege, +} + +/// A sink measurement profile (§9.2). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Profile { + /// Its code in a stream-energy hop record (stream-energy §3), 1 to 4; 0 is none. + pub code: u8, + /// Its term. + pub term: &'static str, + /// The operating system it profiles. + pub os: &'static str, + /// The counters a sink can read under it, unprivileged or by its owner's grant. + pub counters: &'static [Counter], +} + +const MACOS_COUNTERS: [Counter; 2] = [ + Counter { + fabrics: fabric::CPU, + reader: "proc_pid_rusage(RUSAGE_INFO_V6).ri_energy_nj", + kind: AcquisitionKind::OnChipCounter, + scope: Scope::Task, + privilege: Privilege::None, + }, + Counter { + fabrics: fabric::GPU, + reader: "IOReport Energy Model \"GPU Energy\", with IORegistry accumulatedGPUTime for the sole-user rule", + kind: AcquisitionKind::OnChipCounter, + scope: Scope::Rail, + privilege: Privilege::None, + }, +]; + +const LINUX_COUNTERS: [Counter; 2] = [ + Counter { + fabrics: fabric::CPU | fabric::GPU | fabric::MEDIA, + reader: "powercap intel-rapl energy_uj (package, with an integrated GPU and its media engine)", + kind: AcquisitionKind::OnChipCounter, + scope: Scope::Rail, + privilege: Privilege::OwnerGrant, + }, + Counter { + fabrics: fabric::GPU | fabric::MEDIA, + reader: "NVML nvmlDeviceGetTotalEnergyConsumption (the board, with its video engines)", + kind: AcquisitionKind::OnChipCounter, + scope: Scope::Rail, + privilege: Privilege::None, + }, +]; + +/// The profiles of this revision, by code. +pub const PROFILES: [Profile; 4] = [ + Profile { code: 1, term: "macos-task", os: "macOS on Apple silicon", counters: &MACOS_COUNTERS }, + Profile { code: 2, term: "linux-rapl-nvml", os: "Linux", counters: &LINUX_COUNTERS }, + Profile { code: 3, term: "android-app", os: "Android", counters: &[] }, + Profile { code: 4, term: "ios-app", os: "iOS and iPadOS", counters: &[] }, +]; + +/// The profile of a code; `None` for 0 and for a code this revision does not define. +pub fn profile(code: u8) -> Option<&'static Profile> { + PROFILES.iter().find(|p| p.code == code) +} + +/// Why a decode figure's class or coverage does not fit its profile (§9.3). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum ProfileRefusal { + /// The legacy `HwShunt`, which no profile admits (§2.6). + Legacy, + /// A hardware class under a profile with no counter of that class. + ClassNotInProfile, + /// `Whole` coverage of work that ran on a fabric no counter of the profile meters: the + /// figure is a lower bound and says it is not. + BoundOverstated, + /// No fabric named. + NoFabric, +} + +impl Profile { + /// The fabrics some counter of the profile meters. + pub fn metered(&self) -> u8 { + self.counters.iter().fold(0, |m, c| m | c.fabrics) + } + + /// Whether a decode figure of class `kind`, over work that ran on the fabrics `used` + /// and sealed with coverage `whole`, fits this profile (§9.3). `ModelBased` and + /// `Estimator` fit every profile; a hardware class fits one with a counter of that + /// class, and `CalibratedInstrument` fits none, since an external instrument is no + /// counter of the operating system (its figure names no profile). + pub fn admits(&self, kind: AcquisitionKind, used: u8, whole: bool) -> Result<(), ProfileRefusal> { + if used & fabric::ALL == 0 { + return Err(ProfileRefusal::NoFabric); + } + match kind { + AcquisitionKind::HwShunt => return Err(ProfileRefusal::Legacy), + AcquisitionKind::ModelBased | AcquisitionKind::Estimator => {} + hw => { + if !self.counters.iter().any(|c| c.kind == hw) { + return Err(ProfileRefusal::ClassNotInProfile); + } + if whole && used & !self.metered() != 0 { + return Err(ProfileRefusal::BoundOverstated); + } + } + } + Ok(()) + } +} + +// --------------------------------------------------------------------------------------- +// §9.4 The span protocol for a task counter +// --------------------------------------------------------------------------------------- + +/// The fewest spans a figure is computed from. +pub const MIN_SPANS: usize = 5; +/// The most spans one figure is computed from: it keeps every sum in 128 bits. +pub const MAX_SPANS: usize = 64; +const MAX_INTEGER: u64 = (1 << 53) - 1; + +/// The integers of one figure under the span protocol (§9.4): the counter's increase over +/// each span, in nanojoules; the completions each span ran; the largest increase any span's +/// counter showed over its last settle wait; each span's duration; and each span's +/// liveness facts (§3.1), from the counter read during the span. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct SpanSet { + pub energies_nj: Vec, + pub completions: u64, + pub settle_nj: u64, + pub windows_us: Vec, + pub liveness: Vec, +} + +/// The figure a span set gives, and the least declaration it supports. +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct SpanFigure { + /// The per-completion figure, in whole microjoules. + pub joules_micro: u64, + /// The least `relative_ppm` the spans support (§9.4). + pub relative_ppm: u32, + /// The shortest span: the window the declaration holds over. + pub window_us: u64, +} + +impl SpanFigure { + /// The class the figure is sealed under: `OnChipCounter`, with the counter's filtering + /// state unknown (an unprivileged reader cannot see one, §2.4). + pub fn class(&self) -> EnergyProvenance { + let u = Uncertainty::new(self.relative_ppm, self.window_us).expect("a span figure declares a non-zero uncertainty"); + EnergyProvenance::on_chip_counter(u, CounterFiltering::Unknown).expect("a span figure meets the resolution floor") + } +} + +/// Why a span set gives no figure under a hardware class (§9.4). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum SpanRefusal { + /// Fewer than [`MIN_SPANS`] spans, or more than [`MAX_SPANS`]. + SpanCount, + /// The lists are not one per span. + Lengths, + /// A span whose counter did not increase, or no completion. + EmptySpan, + /// A value above 2⁵³ − 1. + OutOfRange, + /// A span whose counter was not live (§3.1), or that lasted under 300 ms. + NotLive, + /// The figure rounds to zero microjoules. + RoundsToZero, + /// The least declaration exceeds 2³² − 1 ppm (§2.7). + Unsealable, +} + +impl SpanRefusal { + /// The reason's code. + pub fn code(self) -> &'static str { + match self { + SpanRefusal::SpanCount => "span_count", + SpanRefusal::Lengths => "span_lengths", + SpanRefusal::EmptySpan => "span_empty", + SpanRefusal::OutOfRange => "span_out_of_range", + SpanRefusal::NotLive => "span_not_live", + SpanRefusal::RoundsToZero => "span_rounds_to_zero", + SpanRefusal::Unsealable => "span_unsealable", + } + } +} + +impl SpanSet { + /// The figure and the least declaration, from the integers alone (§9.4). With `R` + /// spans of `k` completions each, `S1 = Σ eᵢ`, `S2 = Σ eᵢ²` and `d` the settle bound: + /// + /// ```text + /// F = ⌊(2·S1 + 1000·R·k) / (2000·R·k)⌋ µJ + /// p = the least integer with p²·K ≥ P, where + /// K = 6·R²·(R−1)·k²·F² + /// P = 10⁶·( 6·(R·S2 − S1²) + 2·d²·R²·(R−1) + R·(R−1) + 500 000·R²·(R−1)·k² ) + /// ``` + /// + /// The four terms of `P` are the scatter of the spans' mean, the settle bound (a + /// systematic term, not reduced by averaging), the nanojoule resolution of each span's + /// two readings, and the `0.5/√3` µJ of rounding the figure, all carried in + /// nanojoules over the per-completion figure. + pub fn figure(&self) -> Result { + let r = self.energies_nj.len(); + if !(MIN_SPANS..=MAX_SPANS).contains(&r) { + return Err(SpanRefusal::SpanCount); + } + if self.windows_us.len() != r || self.liveness.len() != r { + return Err(SpanRefusal::Lengths); + } + if self.completions == 0 || self.energies_nj.contains(&0) { + return Err(SpanRefusal::EmptySpan); + } + let all = self.energies_nj.iter().chain(self.windows_us.iter()).chain([&self.completions, &self.settle_nj]); + if all.into_iter().any(|v| *v > MAX_INTEGER) || self.completions > u32::MAX as u64 { + return Err(SpanRefusal::OutOfRange); + } + if self.liveness.iter().zip(&self.windows_us).any(|(l, w)| !l.is_live_over(*w)) { + return Err(SpanRefusal::NotLive); + } + let (rr, k) = (r as u128, self.completions as u128); + let s1: u128 = self.energies_nj.iter().map(|e| *e as u128).sum(); + let s2: u128 = self.energies_nj.iter().map(|e| (*e as u128) * (*e as u128)).sum(); + let f = (2 * s1 + 1000 * rr * k) / (2000 * rr * k); + if f == 0 { + return Err(SpanRefusal::RoundsToZero); + } + let f = u64::try_from(f).map_err(|_| SpanRefusal::OutOfRange)?; + let (kk, pp) = k_and_p(r, self.completions, s1, s2, self.settle_nj, f); + let holds = |x: u32| Nat::from(x as u128).mul(&Nat::from(x as u128)).mul(&kk) >= pp; + if !holds(u32::MAX) { + return Err(SpanRefusal::Unsealable); + } + let (mut lo, mut hi) = (1u32, u32::MAX); + while lo < hi { + let mid = lo + (hi - lo) / 2; + if holds(mid) { + hi = mid; + } else { + lo = mid + 1; + } + } + let window_us = *self.windows_us.iter().min().expect("at least MIN_SPANS spans"); + Ok(SpanFigure { joules_micro: f, relative_ppm: lo, window_us }) + } +} + +/// `K` and `P` of §9.4 for figure `f`. +fn k_and_p(r: usize, k: u64, s1: u128, s2: u128, d: u64, f: u64) -> (Nat, Nat) { + let rr = Nat::from(r as u128); + let r1 = Nat::from(r as u128 - 1); + let r2r1 = rr.mul(&rr).mul(&r1); + let k2 = Nat::from(k as u128).mul(&Nat::from(k as u128)); + let fsq = Nat::from(f as u128).mul(&Nat::from(f as u128)); + let kk = Nat::from(6).mul(&r2r1).mul(&k2).mul(&fsq); + // R·S2 ≥ S1² (Cauchy–Schwarz); both fit 128 bits for R ≤ 64 and eᵢ < 2⁵³. + let scatter = Nat::from(6 * (r as u128 * s2 - s1 * s1)); + let settle = Nat::from(2).mul(&Nat::from(d as u128)).mul(&Nat::from(d as u128)).mul(&r2r1); + let resolution = Nat::from(r as u128 * (r as u128 - 1)); + let rounding = Nat::from(500_000).mul(&r2r1).mul(&k2); + let pp = Nat::from(1_000_000).mul(&scatter.add(&settle).add(&resolution).add(&rounding)); + (kk, pp) +} + +#[cfg(test)] +mod tests { + use super::*; + + fn live() -> Liveness { + Liveness { intervals: 20, live_intervals: 20, longest_live_run: 20 } + } + + fn set(e: &[u64], k: u64, d: u64) -> SpanSet { + SpanSet { + energies_nj: e.to_vec(), + completions: k, + settle_nj: d, + windows_us: vec![1_000_000; e.len()], + liveness: vec![live(); e.len()], + } + } + + /// The figure and the declaration against the same arithmetic in floating point, on + /// values where the two cannot disagree by a whole ppm. + #[test] + fn the_figure_and_declaration_follow_the_formula() { + let e = [2_000_000_000u64, 2_010_000_000, 1_990_000_000, 2_005_000_000, 1_995_000_000]; + let s = set(&e, 1000, 1_000_000); + let f = s.figure().unwrap(); + assert_eq!(f.joules_micro, 2000, "2 J over 1000 completions is 2000 µJ"); + let mean = e.iter().sum::() as f64 / 5.0 / 1000.0; + let sd = (e.iter().map(|x| (*x as f64 / 1000.0 - mean).powi(2)).sum::() / 4.0).sqrt(); + let u2 = sd * sd / 5.0 + (1_000_000.0f64 / 1000.0).powi(2) / 3.0 + 1.0 / (6.0 * 1e6 * 5.0) + 250_000.0 / 3.0; + let want = (1000.0 * u2.sqrt() / 2000.0).ceil() as u32; + assert_eq!(f.relative_ppm, want); + assert_eq!(f.window_us, 1_000_000); + assert!(f.joules_micro * f.relative_ppm as u64 >= crate::energy_class::RESOLUTION_FLOOR_UJ_PPM); + f.class().validate().unwrap(); + } + + /// Equal spans with no settle increase leave only the counter's and the figure's + /// resolution, which meets the floor exactly as §2.3 states it. + #[test] + fn equal_spans_declare_the_resolution_floor() { + let s = set(&[5_000_000; 5], 1, 0); + let f = s.figure().unwrap(); + assert_eq!(f.joules_micro, 5000); + assert!(f.joules_micro * f.relative_ppm as u64 >= 288_676); + assert!(f.joules_micro * (f.relative_ppm as u64 - 1) < 288_676 + 5000, "the least p, not a larger one"); + } + + #[test] + fn each_refusal_has_its_condition() { + assert_eq!(set(&[1_000_000; 4], 1, 0).figure(), Err(SpanRefusal::SpanCount)); + assert_eq!(set(&[1_000_000; 65], 1, 0).figure(), Err(SpanRefusal::SpanCount)); + assert_eq!(set(&[1_000_000, 0, 1_000_000, 1_000_000, 1_000_000], 1, 0).figure(), Err(SpanRefusal::EmptySpan)); + assert_eq!(set(&[1_000_000; 5], 0, 0).figure(), Err(SpanRefusal::EmptySpan)); + assert_eq!(set(&[400; 5], 1, 0).figure(), Err(SpanRefusal::RoundsToZero)); + let mut frozen = set(&[1_000_000; 5], 1, 0); + frozen.liveness[2] = Liveness { intervals: 20, live_intervals: 1, longest_live_run: 1 }; + assert_eq!(frozen.figure(), Err(SpanRefusal::NotLive)); + let mut short = set(&[1_000_000; 5], 1, 0); + short.windows_us[0] = 299_999; + assert_eq!(short.figure(), Err(SpanRefusal::NotLive)); + let mut lengths = set(&[1_000_000; 5], 1, 0); + lengths.windows_us.pop(); + assert_eq!(lengths.figure(), Err(SpanRefusal::Lengths)); + assert_eq!(set(&[1u64 << 53; 5], 1, 0).figure(), Err(SpanRefusal::OutOfRange)); + // A one-microjoule figure under a settle bound of 2⁵² nJ cannot be declared in 32 bits. + assert_eq!(set(&[1_000; 5], 1, 1u64 << 52).figure(), Err(SpanRefusal::Unsealable)); + } + + /// The settle bound is systematic: more spans do not shrink it. + #[test] + fn the_settle_bound_is_not_averaged_away() { + let few = set(&[1_000_000_000; 5], 1, 10_000_000).figure().unwrap(); + let many = set(&[1_000_000_000; 60], 1, 10_000_000).figure().unwrap(); + // d/√3 over the figure: 10 mJ / √3 / 1 J = 5774 ppm, whatever the span count. + assert_eq!((few.relative_ppm, many.relative_ppm), (5774, 5774)); + } + + #[test] + fn profiles_admit_their_classes_and_bound_their_fabrics() { + let mac = profile(1).unwrap(); + assert_eq!(mac.term, "macos-task"); + assert_eq!(mac.metered(), fabric::CPU | fabric::GPU); + let occ = AcquisitionKind::OnChipCounter; + assert_eq!(mac.admits(occ, fabric::CPU, true), Ok(())); + assert_eq!(mac.admits(occ, fabric::CPU | fabric::MEDIA, true), Err(ProfileRefusal::BoundOverstated)); + assert_eq!(mac.admits(occ, fabric::CPU | fabric::MEDIA, false), Ok(()), "a lower bound says so"); + assert_eq!(mac.admits(occ, fabric::NEURAL, false), Ok(())); + assert_eq!(mac.admits(AcquisitionKind::HwShunt, fabric::CPU, true), Err(ProfileRefusal::Legacy)); + assert_eq!(mac.admits(AcquisitionKind::CalibratedInstrument, fabric::CPU, true), Err(ProfileRefusal::ClassNotInProfile)); + assert_eq!(mac.admits(occ, 0, true), Err(ProfileRefusal::NoFabric)); + for code in [3, 4] { + let p = profile(code).unwrap(); + assert_eq!(p.admits(occ, fabric::CPU, false), Err(ProfileRefusal::ClassNotInProfile), "{}", p.term); + assert_eq!(p.admits(AcquisitionKind::Estimator, fabric::CPU | fabric::MEDIA, true), Ok(()), "{}", p.term); + assert_eq!(p.admits(AcquisitionKind::HwShunt, fabric::CPU, false), Err(ProfileRefusal::Legacy), "{}", p.term); + } + let linux = profile(2).unwrap(); + assert_eq!(linux.admits(occ, fabric::CPU | fabric::MEDIA, true), Ok(())); + assert_eq!(linux.admits(occ, fabric::NEURAL, true), Err(ProfileRefusal::BoundOverstated)); + assert!(linux.counters.iter().any(|c| c.privilege == Privilege::OwnerGrant), "RAPL is root-only since Linux 5.10"); + assert!(profile(0).is_none() && profile(5).is_none()); + } +} diff --git a/wai/wai-rs/src/sink_energy/macos.rs b/wai/wai-rs/src/sink_energy/macos.rs new file mode 100644 index 000000000..c7790af85 --- /dev/null +++ b/wai/wai-rs/src/sink_energy/macos.rs @@ -0,0 +1,416 @@ +//! The `macos-task` profile's reader (energy-measurement §9.2, §9.4), unprivileged: +//! +//! - **the task counter**: `proc_pid_rusage(RUSAGE_INFO_V6).ri_energy_nj`, the kernel's +//! account of a task's CPU energy, which xnu accumulates per thread from the CPU's +//! energy counters as the power manager samples them (`osfmk/kern/recount.h`: "CPU energy +//! in nanojoules, when available", sampled "out-of-band by ApplePMGR through CLPC"), +//! together with `ri_billed_energy`, the energy the kernel bills to the task for work +//! other processes did on its behalf (its `energy_billed_to_me` ledger, in nanojoules, +//! `osfmk/kern/task.c`), such as the VideoToolbox decoder service that decodes for a +//! client out of process (`VTDecoderXPCService`). Both are readable for this process and +//! for a child before it is reaped; +//! - **GPU time**: each IORegistry `IOAccelerator` user client's creator pid and its +//! `accumulatedGPUTime`, readable by any process, which says whether the work used the +//! GPU at all. +//! +//! A span ([`span_in_process`], [`span_command`]) reads the counter before the work starts +//! and after the work's threads have finished and a settle wait has passed, and reads it +//! during the span for its liveness facts (§3.1). The media engine and the neural engine +//! have no counter this reader can see on macOS 27, so work on them is unmetered: a figure +//! over it is a lower bound (§9.3). + +use std::ffi::{c_char, c_void, CStr, CString}; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; +use std::time::{Duration, Instant}; + +use crate::energy_report::Liveness; + +type CFTypeRef = *const c_void; +type CFStringRef = *const c_void; +type CFMutableDictionaryRef = *mut c_void; +type CFArrayRef = *const c_void; +type CFIndex = isize; +type IoObject = u32; + +#[link(name = "CoreFoundation", kind = "framework")] +unsafe extern "C" { + fn CFStringCreateWithCString(alloc: CFTypeRef, s: *const c_char, encoding: u32) -> CFStringRef; + fn CFStringGetCString(s: CFStringRef, buf: *mut c_char, size: CFIndex, encoding: u32) -> u8; + fn CFDictionaryGetValue(d: CFTypeRef, key: CFTypeRef) -> CFTypeRef; + fn CFArrayGetCount(a: CFArrayRef) -> CFIndex; + fn CFArrayGetValueAtIndex(a: CFArrayRef, i: CFIndex) -> CFTypeRef; + fn CFNumberGetValue(n: CFTypeRef, ty: CFIndex, out: *mut c_void) -> u8; + fn CFGetTypeID(x: CFTypeRef) -> usize; + fn CFStringGetTypeID() -> usize; + fn CFArrayGetTypeID() -> usize; + fn CFDictionaryGetTypeID() -> usize; + fn CFRelease(x: CFTypeRef); +} + +#[link(name = "IOKit", kind = "framework")] +unsafe extern "C" { + fn IOServiceMatching(name: *const c_char) -> CFMutableDictionaryRef; + fn IOServiceGetMatchingServices(port: u32, matching: CFMutableDictionaryRef, it: *mut IoObject) -> i32; + fn IOIteratorNext(it: IoObject) -> IoObject; + fn IOObjectRelease(o: IoObject) -> i32; + fn IORegistryEntryGetChildIterator(e: IoObject, plane: *const c_char, it: *mut IoObject) -> i32; + fn IORegistryEntryCreateCFProperty(e: IoObject, key: CFStringRef, alloc: CFTypeRef, opts: u32) -> CFTypeRef; +} + +unsafe extern "C" { + fn proc_pid_rusage(pid: i32, flavor: i32, buffer: *mut c_void) -> i32; + fn proc_listallpids(buffer: *mut c_void, size: i32) -> i32; + fn proc_pidpath(pid: i32, buffer: *mut c_void, size: u32) -> i32; + fn getpid() -> i32; + fn waitid(idtype: u32, id: u32, info: *mut c_void, options: i32) -> i32; + fn mach_timebase_info(info: *mut [u32; 2]) -> i32; +} + +const UTF8: u32 = 0x0800_0100; +const NUMBER_SINT64: CFIndex = 4; +const RUSAGE_INFO_V6: i32 = 6; +/// `rusage_info_v6`'s 64-bit fields after its 16-byte UUID, by place. +const RI_USER_TIME: usize = 0; +const RI_SYSTEM_TIME: usize = 1; +const RI_INSTRUCTIONS: usize = 29; +const RI_BILLED_ENERGY: usize = 31; +const RI_ENERGY_NJ: usize = 40; +/// ``: `P_PID`, and `WEXITED | WNOWAIT | WNOHANG`. +const P_PID: u32 = 1; +const WAIT_EXITED_PEEK: i32 = 0x4 | 0x20 | 0x1; +/// ``: `si_pid` follows `si_signo`, `si_errno` and `si_code`. +const SI_PID_OFFSET: usize = 12; + +/// The settle wait after the work's threads finish, before the closing read. +pub const SETTLE: Duration = Duration::from_millis(200); +/// The wait after the closing read whose increase bounds what the read missed (§9.4). +pub const SETTLE_CHECK: Duration = Duration::from_millis(100); + +/// What `proc_pid_rusage` reports of a task. +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] +pub struct TaskUsage { + /// `ri_energy_nj + ri_billed_energy`: the task's own CPU energy and the energy billed + /// to it for work done on its behalf. + pub energy_nj: u64, + /// Of `energy_nj`, `ri_billed_energy`. + pub billed_nj: u64, + /// `ri_user_time + ri_system_time`, in nanoseconds. + pub cpu_ns: u64, + /// `ri_instructions`. + pub instructions: u64, +} + +fn timebase() -> (u64, u64) { + let mut tb = [0u32; 2]; + // SAFETY: mach_timebase_info writes two u32s. + unsafe { mach_timebase_info(&mut tb) }; + (tb[0].max(1) as u64, tb[1].max(1) as u64) +} + +/// The task usage of `pid`, where this process may read it. +pub fn task_usage(pid: i32) -> Option { + let mut buf = [0u64; 2 + 64]; + // SAFETY: a buffer larger than rusage_info_v6. + let rc = unsafe { proc_pid_rusage(pid, RUSAGE_INFO_V6, buf.as_mut_ptr().cast()) }; + if rc != 0 { + return None; + } + let (n, d) = timebase(); + let ticks = buf[2 + RI_USER_TIME] as u128 + buf[2 + RI_SYSTEM_TIME] as u128; + Some(TaskUsage { + energy_nj: buf[2 + RI_ENERGY_NJ].saturating_add(buf[2 + RI_BILLED_ENERGY]), + billed_nj: buf[2 + RI_BILLED_ENERGY], + cpu_ns: (ticks * n as u128 / d as u128) as u64, + instructions: buf[2 + RI_INSTRUCTIONS], + }) +} + +/// This process's id. +pub fn self_pid() -> i32 { + // SAFETY: getpid has no preconditions. + unsafe { getpid() } +} + +fn cfstr(s: &str) -> CFStringRef { + let c = CString::new(s).expect("no NUL"); + // SAFETY: a C string and the UTF-8 encoding; the caller releases the result. + unsafe { CFStringCreateWithCString(std::ptr::null(), c.as_ptr(), UTF8) } +} + +fn string_of(s: CFTypeRef) -> Option { + if s.is_null() { + return None; + } + let mut buf = [0 as c_char; 256]; + // SAFETY: a CF object and a buffer of its stated size. + let ok = unsafe { CFGetTypeID(s) == CFStringGetTypeID() && CFStringGetCString(s, buf.as_mut_ptr(), buf.len() as CFIndex, UTF8) != 0 }; + // SAFETY: CFStringGetCString wrote a NUL-terminated string. + ok.then(|| unsafe { CStr::from_ptr(buf.as_ptr()) }.to_string_lossy().into_owned()) +} + +/// The GPU time accrued so far, in nanoseconds, by the user clients whose creator is one of +/// `pids`. +pub fn gpu_time_ns(pids: &[i32]) -> u64 { + let plane = CString::new("IOService").expect("no NUL"); + let class = CString::new("IOAccelerator").expect("no NUL"); + let (k_creator, k_usage, k_time) = (cfstr("IOUserClientCreator"), cfstr("AppUsage"), cfstr("accumulatedGPUTime")); + let mut total = 0u64; + let mut it: IoObject = 0; + // SAFETY: IOKit's documented calls; every object obtained is released. + unsafe { + if IOServiceGetMatchingServices(0, IOServiceMatching(class.as_ptr()), &mut it) == 0 { + loop { + let acc = IOIteratorNext(it); + if acc == 0 { + break; + } + let mut cit: IoObject = 0; + if IORegistryEntryGetChildIterator(acc, plane.as_ptr(), &mut cit) == 0 { + loop { + let c = IOIteratorNext(cit); + if c == 0 { + break; + } + let creator = IORegistryEntryCreateCFProperty(c, k_creator, std::ptr::null(), 0); + let pid = string_of(creator).and_then(|s| s.strip_prefix("pid ").and_then(|r| r.split(',').next()).and_then(|p| p.trim().parse::().ok())); + if !creator.is_null() { + CFRelease(creator); + } + if pid.is_some_and(|p| pids.contains(&p)) { + let usage = IORegistryEntryCreateCFProperty(c, k_usage, std::ptr::null(), 0); + if !usage.is_null() && CFGetTypeID(usage) == CFArrayGetTypeID() { + for i in 0..CFArrayGetCount(usage) { + let d = CFArrayGetValueAtIndex(usage, i); + if CFGetTypeID(d) != CFDictionaryGetTypeID() { + continue; + } + let n = CFDictionaryGetValue(d, k_time); + let mut v: i64 = 0; + if !n.is_null() && CFNumberGetValue(n, NUMBER_SINT64, (&mut v as *mut i64).cast()) != 0 && v > 0 { + total = total.saturating_add(v as u64); + } + } + } + if !usage.is_null() { + CFRelease(usage); + } + } + IOObjectRelease(c); + } + IOObjectRelease(cit); + } + IOObjectRelease(acc); + } + IOObjectRelease(it); + } + CFRelease(k_creator); + CFRelease(k_usage); + CFRelease(k_time); + } + total +} + +fn pids_named(names: &[&str]) -> Vec { + let mut pids = vec![0i32; 16384]; + // SAFETY: a buffer of the stated byte size. + let n = unsafe { proc_listallpids(pids.as_mut_ptr().cast(), (pids.len() * 4) as i32) }; + if n <= 0 { + return Vec::new(); + } + pids.truncate(n as usize); + pids.into_iter() + .filter(|&p| p > 0) + .filter(|&p| { + let mut buf = [0u8; 4096]; + // SAFETY: a buffer of the stated size. + let len = unsafe { proc_pidpath(p, buf.as_mut_ptr().cast(), buf.len() as u32) }; + len > 0 && { + let path = String::from_utf8_lossy(&buf[..len as usize]); + let base = path.rsplit('/').next().unwrap_or(""); + names.contains(&base) + } + }) + .collect() +} + +/// The VideoToolbox services that decode and encode for a client, out of its process. +pub const VT_SERVICES: [&str; 2] = ["VTDecoderXPCService", "VTEncoderXPCService"]; + +/// One span as read. +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct Span { + /// The counter's increase over the span, in nanojoules: the work's process's own and + /// what the kernel billed to it. + pub energy_nj: u64, + /// Of `energy_nj`, what the kernel billed to the process. + pub billed_nj: u64, + /// The energy of the VideoToolbox services that started during the span, whichever + /// client they served: a diagnostic, never part of the figure. + pub service_nj: u64, + /// The services that started during the span. + pub services: u32, + /// The span's duration, opening read to closing read before the settle wait. + pub window_us: u64, + /// The counter's liveness facts, from reads during the span. + pub liveness: Liveness, + /// The counter's increase over [`SETTLE_CHECK`] after the closing read. + pub settle_nj: u64, + /// The CPU time of the process over the span, in nanoseconds. + pub cpu_ns: u64, + /// The GPU time of the process and the services over the span, in nanoseconds. + pub gpu_ns: u64, + /// The process's exit status, for a command. + pub status: Option, +} + +/// Run `work` `k` times on a thread started after the opening read, reading this process's +/// counter every `every` while it runs, and close the span after the thread has finished +/// and [`SETTLE`] has passed (§9.4). +pub fn span_in_process(k: u64, every: Duration, work: Arc) -> Option { + let me = self_pid(); + let g0 = gpu_time_ns(&[me]); + let u0 = task_usage(me)?; + let t0 = Instant::now(); + let done = Arc::new(AtomicBool::new(false)); + let worker = { + let (done, work) = (Arc::clone(&done), Arc::clone(&work)); + std::thread::spawn(move || { + for _ in 0..k { + work(); + } + done.store(true, Ordering::Release); + }) + }; + let mut prev = u0.energy_nj; + let mut advances = Vec::new(); + while !done.load(Ordering::Acquire) { + std::thread::sleep(every); + let e = task_usage(me)?.energy_nj; + advances.push(e > prev); + prev = e; + } + worker.join().ok()?; + let window_us = t0.elapsed().as_micros() as u64; + std::thread::sleep(SETTLE); + let u1 = task_usage(me)?; + std::thread::sleep(SETTLE_CHECK); + let u2 = task_usage(me)?; + Some(Span { + energy_nj: u1.energy_nj.checked_sub(u0.energy_nj)?, + billed_nj: u1.billed_nj.saturating_sub(u0.billed_nj), + window_us, + liveness: Liveness::from_advances(advances), + settle_nj: u2.energy_nj.saturating_sub(u1.energy_nj), + cpu_ns: u1.cpu_ns.saturating_sub(u0.cpu_ns), + gpu_ns: gpu_time_ns(&[me]).saturating_sub(g0), + ..Span::default() + }) +} + +/// Whether `pid` has exited, without reaping it. +fn exited(pid: i32) -> bool { + let mut info = [0u8; 128]; + // SAFETY: a buffer larger than siginfo_t; WNOWAIT leaves the child waitable. + let rc = unsafe { waitid(P_PID, pid as u32, info.as_mut_ptr().cast(), WAIT_EXITED_PEEK) }; + rc == 0 && i32::from_ne_bytes(info[SI_PID_OFFSET..SI_PID_OFFSET + 4].try_into().expect("4 bytes")) == pid +} + +/// Run `argv` as a child, reading its counter every `every` while it runs; read it again +/// once it has exited, before it is reaped, and after [`SETTLE_CHECK`] more (§9.4). The +/// figure is the child's own energy and what the kernel billed to it for work done on its +/// behalf. The VideoToolbox services that started during the span are read too, for the +/// record only: on a shared host another client can start one at the same time, so their +/// energy is not attributed to the child. +pub fn span_command(argv: &[String], every: Duration) -> Result { + let (prog, args) = argv.split_first().ok_or("an empty command")?; + let before = pids_named(&VT_SERVICES); + let t0 = Instant::now(); + let mut child = std::process::Command::new(prog) + .args(args) + .stdin(std::process::Stdio::null()) + .stdout(std::process::Stdio::null()) + .stderr(std::process::Stdio::null()) + .spawn() + .map_err(|e| format!("{prog}: {e}"))?; + let pid = child.id() as i32; + let mut prev = 0u64; + let mut advances = Vec::new(); + let mut fresh: Vec<(i32, u64)> = Vec::new(); + let mut gpu_seen: Vec = vec![pid]; + let g0 = gpu_time_ns(&gpu_seen); + let scan = |fresh: &mut Vec<(i32, u64)>, gpu_seen: &mut Vec| { + for p in pids_named(&VT_SERVICES) { + if before.contains(&p) { + continue; + } + let e = task_usage(p).map(|u| u.energy_nj); + match fresh.iter_mut().find(|(q, _)| *q == p) { + Some(slot) => { + if let Some(e) = e { + slot.1 = slot.1.max(e); + } + } + None => { + fresh.push((p, e.unwrap_or(0))); + gpu_seen.push(p); + } + } + } + }; + loop { + let gone = exited(pid); + if !gone { + std::thread::sleep(every); + } + scan(&mut fresh, &mut gpu_seen); + let u = task_usage(pid); + if let Some(u) = u { + advances.push(u.energy_nj > prev); + prev = u.energy_nj; + } + if gone { + break; + } + } + let window_us = t0.elapsed().as_micros() as u64; + let gpu_ns = gpu_time_ns(&gpu_seen).saturating_sub(g0); + let u1 = task_usage(pid).ok_or("the child's usage could not be read before it was reaped")?; + std::thread::sleep(SETTLE_CHECK); + let u2 = task_usage(pid).unwrap_or(u1); + let status = child.wait().map_err(|e| e.to_string())?.code(); + // The services the child started, until they exit or two seconds pass. + let until = Instant::now() + Duration::from_secs(2); + while Instant::now() < until { + scan(&mut fresh, &mut gpu_seen); + if fresh.iter().all(|(p, _)| task_usage(*p).is_none()) { + break; + } + std::thread::sleep(Duration::from_millis(100)); + } + let service_nj: u64 = fresh.iter().map(|(_, e)| *e).sum(); + Ok(Span { + energy_nj: u1.energy_nj, + billed_nj: u1.billed_nj, + service_nj, + services: fresh.len() as u32, + window_us, + // The first read is of a counter that started at zero with the child. + liveness: Liveness::from_advances(advances), + settle_nj: u2.energy_nj.saturating_sub(u1.energy_nj), + cpu_ns: u1.cpu_ns, + gpu_ns, + status, + }) +} + +/// The load averages, as `getloadavg` gives them. +pub fn loadavg() -> [f64; 3] { + unsafe extern "C" { + fn getloadavg(l: *mut f64, n: i32) -> i32; + } + let mut l = [0f64; 3]; + // SAFETY: three doubles. + unsafe { getloadavg(l.as_mut_ptr(), 3) }; + l +} diff --git a/wai/wai-rs/src/stream_energy.rs b/wai/wai-rs/src/stream_energy.rs new file mode 100644 index 000000000..46cba2486 --- /dev/null +++ b/wai/wai-rs/src/stream_energy.rs @@ -0,0 +1,1110 @@ +//! `wai.stream.energy` (`extensions/stream-energy.md`): what one segment of a stream cost +//! at each hop that carried it — the origin, the relays, the sink's decode and its display — +//! each figure signed by its hop with its acquisition class, its coverage and, for an +//! estimate, the declared basis it is computed from (`WSH1`, §3); the sink's +//! stream-segment receipt over those figures, with a total per class, a delivery sum and a +//! display sum each at its weakest class, and the panel verdict (`WSE1`, §4); and the +//! termination record a sink signs when it stops a stream nobody is watching (`WST1`, §5). +//! A verifier recomputes every number from the records (§6). + +use std::collections::BTreeMap; + +use ed25519_dalek::{Signer, SigningKey}; +use sha2::{Digest, Sha256}; + +use crate::display_caps::{self, Display, Rendition}; +use crate::energy_class::{check_resolution, AcquisitionKind, CounterFiltering, EnergyProvenance, Uncertainty}; +use crate::sink_energy::{fabric, profile}; + +pub mod corpus; +#[cfg(test)] +mod tests; + +/// The record this extension registers. +pub const CAPABILITY: &str = crate::codecs::registry::CAP_STREAM_ENERGY; + +const HOP_DOMAIN: &[u8] = b"wai:stream-hop\x01"; +const SEGMENT_DOMAIN: &[u8] = b"wai:stream-segment\x01"; +const TERMINATION_DOMAIN: &[u8] = b"wai:stream-termination\x01"; +const MAX_CALIBRATION_REF: usize = 255; +const MAX_HOPS: usize = 16; + +/// The roles of §2. +pub mod role { + pub const ORIGIN: u8 = 1; + pub const RELAY: u8 = 2; + pub const DECODE: u8 = 3; + pub const DISPLAY: u8 = 4; +} + +/// Coverage codes (§2). +pub mod coverage { + pub const NONE: u8 = 0; + pub const WHOLE: u8 = 1; + pub const PARTIAL: u8 = 2; +} + +// --------------------------------------------------------------------------------------- +// §7 Reasons +// --------------------------------------------------------------------------------------- + +/// Why a record, a receipt or a termination record is refused (§7). +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] +pub enum Reason { + LegacyClass, + EnergyInvalid, + RecordInvalid, + BasisInvalid, + BasisMismatch, + ProfileMismatch, + BoundOverstated, + ReceiptInvalid, + ClassesSummed, + RecordMissing, + WrongSegment, + UnitMismatch, + RenditionMismatch, + SumMismatch, + PanelMismatch, + TerminationInvalid, + WrongStream, + IndexMismatch, + Truncated, + Malformed, + UnknownVersion, + BadKey, + BadSignature, +} + +impl Reason { + /// The codes this extension adds, in §7's order. + pub const ALL: [Reason; 18] = [ + Reason::LegacyClass, + Reason::EnergyInvalid, + Reason::RecordInvalid, + Reason::BasisInvalid, + Reason::BasisMismatch, + Reason::ProfileMismatch, + Reason::BoundOverstated, + Reason::ReceiptInvalid, + Reason::ClassesSummed, + Reason::RecordMissing, + Reason::WrongSegment, + Reason::UnitMismatch, + Reason::RenditionMismatch, + Reason::SumMismatch, + Reason::PanelMismatch, + Reason::TerminationInvalid, + Reason::WrongStream, + Reason::IndexMismatch, + ]; + + /// The reason's code. + pub fn code(self) -> &'static str { + match self { + Reason::LegacyClass => "legacy_class", + Reason::EnergyInvalid => "energy_invalid", + Reason::RecordInvalid => "record_invalid", + Reason::BasisInvalid => "basis_invalid", + Reason::BasisMismatch => "basis_mismatch", + Reason::ProfileMismatch => "profile_mismatch", + Reason::BoundOverstated => "bound_overstated", + Reason::ReceiptInvalid => "receipt_invalid", + Reason::ClassesSummed => "classes_summed", + Reason::RecordMissing => "record_missing", + Reason::WrongSegment => "wrong_segment", + Reason::UnitMismatch => "unit_mismatch", + Reason::RenditionMismatch => "rendition_mismatch", + Reason::SumMismatch => "sum_mismatch", + Reason::PanelMismatch => "panel_mismatch", + Reason::TerminationInvalid => "termination_invalid", + Reason::WrongStream => "wrong_stream", + Reason::IndexMismatch => "index_mismatch", + Reason::Truncated => "truncated", + Reason::Malformed => "malformed", + Reason::UnknownVersion => "unknown_version", + Reason::BadKey => "bad_key", + Reason::BadSignature => "bad_signature", + } + } +} + +impl std::fmt::Display for Reason { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.write_str(self.code()) + } +} + +impl std::error::Error for Reason {} + +/// Where a verification stopped (§6). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum Place { + Receipt, + /// A hop entry, by its index. + Hop(usize), + Rendition, + Energy, + Sums, + Panel, + Termination, + /// A receipt of a termination record, by its place in index order. + Segment(usize), +} + +impl Place { + /// The place as the corpus writes it. + pub fn label(&self) -> String { + match self { + Place::Receipt => "receipt".into(), + Place::Hop(i) => format!("hop/{i}"), + Place::Rendition => "rendition".into(), + Place::Energy => "energy".into(), + Place::Sums => "sums".into(), + Place::Panel => "panel".into(), + Place::Termination => "termination".into(), + Place::Segment(i) => format!("segment/{i}"), + } + } +} + +// --------------------------------------------------------------------------------------- +// Reading +// --------------------------------------------------------------------------------------- + +fn sha256(parts: &[&[u8]]) -> [u8; 32] { + let mut h = Sha256::new(); + for p in parts { + h.update(p); + } + h.finalize().into() +} + +/// Lowercase hexadecimal. +pub fn hex(b: &[u8]) -> String { + b.iter().map(|x| format!("{x:02x}")).collect() +} + +/// The digest of given bytes (§6.1 step 2): SHA-256 over all but their last 64. +pub fn given_digest(b: &[u8]) -> [u8; 32] { + sha256(&[&b[..b.len().saturating_sub(64)]]) +} + +struct Rd<'a> { + b: &'a [u8], + p: usize, +} + +impl<'a> Rd<'a> { + fn take(&mut self, n: usize) -> Result<&'a [u8], Reason> { + let e = self.p.checked_add(n).filter(|&e| e <= self.b.len()).ok_or(Reason::Truncated)?; + let s = &self.b[self.p..e]; + self.p = e; + Ok(s) + } + fn arr(&mut self) -> Result<[u8; N], Reason> { + Ok(self.take(N)?.try_into().expect("N bytes")) + } + fn u8(&mut self) -> Result { + Ok(self.take(1)?[0]) + } + fn u32(&mut self) -> Result { + Ok(u32::from_le_bytes(self.arr()?)) + } + fn u64(&mut self) -> Result { + Ok(u64::from_le_bytes(self.arr()?)) + } + fn be32(&mut self) -> Result { + Ok(u32::from_be_bytes(self.arr()?)) + } + fn be64(&mut self) -> Result { + Ok(u64::from_be_bytes(self.arr()?)) + } +} + +fn read_head(b: &[u8], magic: &[u8; 4]) -> Result<(), Reason> { + if b.len() < 4 { + return Err(Reason::Truncated); + } + if b[..4] != *magic { + return Err(Reason::Malformed); + } + match b.get(4) { + None => Err(Reason::Truncated), + Some(1) => Ok(()), + Some(_) => Err(Reason::UnknownVersion), + } +} + +/// The signature over `domain ‖ body`, checked strictly (SPEC §7 *Signatures*). +fn verify_sig(key: &[u8; 32], domain: &[u8], body: &[u8], sig: &[u8; 64]) -> Result<(), Reason> { + let mut m = domain.to_vec(); + m.extend_from_slice(body); + crate::sig::verify_strict(key, &m, sig).map_err(|e| match e { + crate::sig::SigError::BadKey => Reason::BadKey, + crate::sig::SigError::BadSignature => Reason::BadSignature, + }) +} + +fn sign(key: &SigningKey, domain: &[u8], body: &[u8]) -> [u8; 64] { + let mut m = domain.to_vec(); + m.extend_from_slice(body); + key.sign(&m).to_bytes() +} + +/// A class as read: `None` for tag 0; `Err` with the reason a class's tag or evidence is +/// refused, after its bytes, so the reader goes on. +type ClassRead = Result, Reason>; + +fn read_class(r: &mut Rd) -> Result { + let tag = r.u8()?; + Ok(match tag { + 0 => Ok(None), + 1 => Err(Reason::LegacyClass), + 2 => Ok(Some(EnergyProvenance::ModelBased)), + 3 => Ok(Some(EnergyProvenance::Estimator)), + 4 => { + let (ppm, window, f) = (r.be32()?, r.be64()?, r.u8()?); + let filtering = match f { + 0 => Some(CounterFiltering::Unknown), + 1 => Some(CounterFiltering::Off), + 2 => Some(CounterFiltering::On), + _ => None, + }; + match (Uncertainty::new(ppm, window), filtering) { + (Ok(u), Some(f)) => EnergyProvenance::on_chip_counter(u, f).map(Some).map_err(|_| Reason::EnergyInvalid), + _ => Err(Reason::EnergyInvalid), + } + } + 5 => { + let (ppm, window, n) = (r.be32()?, r.be64()?, r.be32()? as usize); + if n > MAX_CALIBRATION_REF { + return Err(Reason::Malformed); + } + let reference = r.take(n)?; + match (Uncertainty::new(ppm, window), std::str::from_utf8(reference)) { + (Ok(u), Ok(s)) => EnergyProvenance::calibrated_instrument(u, s).map(Some).map_err(|_| Reason::EnergyInvalid), + _ => Err(Reason::EnergyInvalid), + } + } + _ => Err(Reason::EnergyInvalid), + }) +} + +fn write_class(c: Option<&EnergyProvenance>, o: &mut Vec) { + crate::energy_class::write_optional(c, o); +} + +/// The tag of a class, 0 for the unmetered marker. +pub fn tag_of(c: Option<&EnergyProvenance>) -> u8 { + c.map_or(0, EnergyProvenance::tag_byte) +} + +/// The rank of a tag in energy-measurement §2's order, strongest highest; 0 for none. +pub fn rank(tag: u8) -> u8 { + match tag { + 5 => 4, + 4 => 3, + 2 => 2, + 3 => 1, + _ => 0, + } +} + +/// The label of a tag. +pub fn tag_label(tag: u8) -> &'static str { + match tag { + 2 => "ModelBased", + 3 => "Estimator", + 4 => "OnChipCounter", + 5 => "CalibratedInstrument", + _ => "unmetered", + } +} + +/// §3.6 rule 2 over a figure, its class and its coverage. +fn energy_rule(joules: u64, class: &Option, cov: u8) -> Result<(), Reason> { + let ok = match class { + None => joules == 0 && cov == coverage::NONE, + Some(p) => joules != 0 && (cov == coverage::WHOLE || cov == coverage::PARTIAL) && check_resolution(joules, p).is_ok(), + }; + if ok { Ok(()) } else { Err(Reason::EnergyInvalid) } +} + +fn read_rendition(r: &mut Rd) -> Result { + Ok(Rendition { width: r.u32()?, height: r.u32()?, frame_rate_mhz: r.u32()?, bit_depth: r.u8()?, transfer: r.u8()? }) +} + +fn write_rendition(x: &Rendition, o: &mut Vec) { + o.extend_from_slice(&x.width.to_le_bytes()); + o.extend_from_slice(&x.height.to_le_bytes()); + o.extend_from_slice(&x.frame_rate_mhz.to_le_bytes()); + o.push(x.bit_depth); + o.push(x.transfer); +} + +// --------------------------------------------------------------------------------------- +// §3 The hop figure record +// --------------------------------------------------------------------------------------- + +/// The declared-power basis (§3.4). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Basis { + pub power_mw: u32, + pub time_us: u64, + /// 1 an EU energy label, 2 a manufacturer's declaration, 3 the hop's own. + pub source: u8, +} + +impl Basis { + /// The figure the basis gives: ⌊(power_mw × time_us + 500) / 1000⌋ µJ. + pub fn joules(&self) -> u64 { + let nj = self.power_mw as u128 * self.time_us as u128; + ((nj + 500) / 1000).min(u64::MAX as u128) as u64 + } +} + +/// A panel as a display record declares it (§3.5). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Panel { + pub class: u8, + pub display: Display, + pub brightness_ppm: u32, +} + +/// A hop figure record (§3.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct HopRecord { + pub role: u8, + pub hop: [u8; 32], + pub segment: [u8; 32], + pub index: u64, + pub stream: [u8; 32], + pub deliveries: u32, + pub joules: u64, + pub class: Option, + pub coverage: u8, + pub profile: u8, + pub fabrics: u8, + pub rendition: Rendition, + pub duration_us: u64, + pub basis: Option, + pub panel: Option, + pub sig: [u8; 64], +} + +impl HopRecord { + /// The bytes before `sig`. + pub fn body(&self) -> Vec { + let mut o = Vec::with_capacity(256); + o.extend_from_slice(b"WSH1"); + o.push(1); + o.push(self.role); + o.extend_from_slice(&self.hop); + o.extend_from_slice(&self.segment); + o.extend_from_slice(&self.index.to_le_bytes()); + o.extend_from_slice(&self.stream); + o.extend_from_slice(&self.deliveries.to_le_bytes()); + o.extend_from_slice(&self.joules.to_le_bytes()); + write_class(self.class.as_ref(), &mut o); + o.push(self.coverage); + o.push(self.profile); + o.push(self.fabrics); + write_rendition(&self.rendition, &mut o); + o.extend_from_slice(&self.duration_us.to_le_bytes()); + match &self.basis { + None => o.push(0), + Some(b) => { + o.push(1); + o.extend_from_slice(&b.power_mw.to_le_bytes()); + o.extend_from_slice(&b.time_us.to_le_bytes()); + o.push(b.source); + } + } + if let Some(p) = &self.panel { + let d = &p.display; + o.push(p.class); + for v in [d.width, d.height, d.refresh_mhz] { + o.extend_from_slice(&v.to_le_bytes()); + } + o.push(d.bit_depth); + o.push(d.transfers); + for v in [d.diagonal_mm, d.distance_mm, p.brightness_ppm] { + o.extend_from_slice(&v.to_le_bytes()); + } + } + o + } + + pub fn to_bytes(&self) -> Vec { + let mut o = self.body(); + o.extend_from_slice(&self.sig); + o + } + + pub fn digest(&self) -> [u8; 32] { + sha256(&[&self.body()]) + } + + /// Sign with `key`, whose public key is `hop`. + pub fn sign(mut self, key: &SigningKey) -> HopRecord { + self.hop = key.verifying_key().to_bytes(); + self.sig = sign(key, HOP_DOMAIN, &self.body()); + self + } + + /// The share the record carries per delivery (§3.3). + pub fn share(&self) -> u64 { + self.joules / self.deliveries.max(1) as u64 + } + + /// Read exactly `b` as a record and apply §3.6's rules, then check its signature. + pub fn parse(b: &[u8]) -> Result { + read_head(b, b"WSH1")?; + let mut r = Rd { b, p: 5 }; + let role = r.u8()?; + let hop = r.arr()?; + let segment = r.arr()?; + let index = r.u64()?; + let stream: [u8; 32] = r.arr()?; + let deliveries = r.u32()?; + let joules = r.u64()?; + let class = read_class(&mut r)?; + let cov = r.u8()?; + let prof = r.u8()?; + let fabrics = r.u8()?; + let rendition = read_rendition(&mut r)?; + let duration_us = r.u64()?; + // A basis kind this revision does not define has no defined length. + let basis = match r.u8()? { + 0 => None, + 1 => { + let (power_mw, time_us, source) = (r.u32()?, r.u64()?, r.u8()?); + Some(Basis { power_mw, time_us, source }) + } + _ => return Err(Reason::Malformed), + }; + let panel = if role == role::DISPLAY { + let class = r.u8()?; + let (width, height, refresh_mhz) = (r.u32()?, r.u32()?, r.u32()?); + let (bit_depth, transfers) = (r.u8()?, r.u8()?); + let (diagonal_mm, distance_mm, brightness_ppm) = (r.u32()?, r.u32()?, r.u32()?); + Some(Panel { class, display: Display { width, height, refresh_mhz, bit_depth, transfers, diagonal_mm, distance_mm }, brightness_ppm }) + } else { + None + }; + let sig: [u8; 64] = r.arr()?; + if r.p != b.len() { + return Err(Reason::Malformed); + } + // §3.6 rules 1 and 2. + let class = class?; + energy_rule(joules, &class, cov)?; + let rec = HopRecord { role, hop, segment, index, stream, deliveries, joules, class, coverage: cov, profile: prof, fabrics, rendition, duration_us, basis, panel, sig }; + rec.rules()?; + verify_sig(&rec.hop, HOP_DOMAIN, &b[..b.len() - 64], &rec.sig)?; + Ok(rec) + } + + /// §3.6 rules 3 to 6, over a record whose class and coverage passed rules 1 and 2. + pub fn rules(&self) -> Result<(), Reason> { + let sink_side = matches!(self.role, role::DECODE | role::DISPLAY); + let zero = self.stream == [0; 32]; + let invalid = !(role::ORIGIN..=role::DISPLAY).contains(&self.role) + || zero == sink_side + || self.deliveries == 0 + || (sink_side && self.deliveries != 1) + || self.profile > 4 + || (self.role != role::DECODE && (self.profile != 0 || self.fabrics != 0)) + || (self.role == role::DECODE && (self.fabrics == 0 || self.fabrics & !fabric::ALL != 0)) + || self.rendition.check().is_err() + || self.panel.is_some_and(|p| !(1..=7).contains(&p.class) || p.display.check().is_err()) + || self.duration_us == 0 + || self.basis.is_some_and(|b| !(1..=3).contains(&b.source)); + if invalid { + return Err(Reason::RecordInvalid); + } + let kind = self.class.as_ref().map(EnergyProvenance::kind); + let hardware = matches!(kind, Some(AcquisitionKind::OnChipCounter | AcquisitionKind::CalibratedInstrument)); + let basis_invalid = (kind == Some(AcquisitionKind::Estimator) && self.basis.is_none()) + || (hardware && self.basis.is_some()) + || (kind.is_none() && self.basis.is_some()) + || (self.role == role::DISPLAY && !matches!(kind, None | Some(AcquisitionKind::Estimator))); + if basis_invalid { + return Err(Reason::BasisInvalid); + } + if let Some(b) = &self.basis + && b.joules() != self.joules + { + return Err(Reason::BasisMismatch); + } + if self.role == role::DECODE && hardware { + match kind { + Some(AcquisitionKind::CalibratedInstrument) if self.profile != 0 => return Err(Reason::ProfileMismatch), + Some(AcquisitionKind::OnChipCounter) => { + let p = profile(self.profile).ok_or(Reason::ProfileMismatch)?; + match p.admits(AcquisitionKind::OnChipCounter, self.fabrics, self.coverage == coverage::WHOLE) { + Ok(()) => {} + Err(crate::sink_energy::ProfileRefusal::BoundOverstated) => return Err(Reason::BoundOverstated), + Err(_) => return Err(Reason::ProfileMismatch), + } + } + _ => {} + } + } + Ok(()) + } +} + +// --------------------------------------------------------------------------------------- +// §4 The stream-segment receipt +// --------------------------------------------------------------------------------------- + +/// A hop entry of a receipt (§4.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct HopEntry { + pub record: [u8; 32], + pub role: u8, + pub hop: [u8; 32], + pub joules: u64, + pub deliveries: u32, + pub share: u64, + pub class: Option, + pub coverage: u8, +} + +impl HopEntry { + /// The entry that restates `r`. + pub fn of(r: &HopRecord) -> HopEntry { + HopEntry { record: r.digest(), role: r.role, hop: r.hop, joules: r.joules, deliveries: r.deliveries, share: r.share(), class: r.class.clone(), coverage: r.coverage } + } + + fn tag(&self) -> u8 { + tag_of(self.class.as_ref()) + } +} + +/// A per-class total (§4.4). +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Total { + pub tag: u8, + pub figures: u32, + pub joules: u64, +} + +/// A sum (§4.4): joules, the weakest class's tag, coverage. +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] +pub struct Sum { + pub joules: u64, + pub class: u8, + pub coverage: u8, +} + +/// The panel verdict (§4.5). +#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] +pub struct PanelVerdict { + pub verdict: u8, + pub above: u8, +} + +/// A stream-segment receipt (§4.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct SegmentReceipt { + pub signer: [u8; 32], + pub stream: [u8; 32], + pub segment: [u8; 32], + pub index: u64, + pub hops: Vec, + pub unmetered: u8, + pub totals: Vec, + pub delivery: Sum, + pub display: Sum, + pub panel: PanelVerdict, + pub sig: [u8; 64], +} + +/// The totals of a set of entries (§4.4). +pub fn totals_of<'a>(entries: impl IntoIterator) -> Option<(u8, Vec)> { + let mut unmetered = 0u8; + let mut by: BTreeMap = BTreeMap::new(); + for e in entries { + match e.tag() { + 0 => unmetered = unmetered.checked_add(1)?, + t => { + let s = by.entry(t).or_default(); + s.0 += 1; + s.1 = s.1.checked_add(e.share)?; + } + } + } + Some((unmetered, by.into_iter().map(|(tag, (figures, joules))| Total { tag, figures, joules }).collect())) +} + +/// The delivery and display sums of a receipt's entries (§4.4). +pub fn sums_of(entries: &[HopEntry]) -> Option<(Sum, Sum)> { + let part: Vec<&HopEntry> = entries.iter().filter(|e| e.role <= role::DECODE).collect(); + let metered: Vec<&&HopEntry> = part.iter().filter(|e| e.tag() != 0).collect(); + let delivery = if metered.is_empty() { + Sum::default() + } else { + let joules = metered.iter().try_fold(0u64, |a, e| a.checked_add(e.share))?; + let class = metered.iter().map(|e| e.tag()).min_by_key(|t| rank(*t)).expect("one metered"); + let has = |r: u8| part.iter().any(|e| e.role == r); + let whole = has(role::ORIGIN) && has(role::DECODE) && part.iter().all(|e| e.tag() != 0 && e.coverage == coverage::WHOLE); + Sum { joules, class, coverage: if whole { coverage::WHOLE } else { coverage::PARTIAL } } + }; + let display = entries + .iter() + .find(|e| e.role == role::DISPLAY && e.tag() != 0) + .map_or(Sum::default(), |e| Sum { joules: e.share, class: e.tag(), coverage: e.coverage }); + Some((delivery, display)) +} + +/// The panel verdict two records give (§4.5). +pub fn panel_of(decode: Option<&HopRecord>, display: Option<&HopRecord>) -> PanelVerdict { + match (decode, display.and_then(|d| d.panel)) { + (Some(dec), Some(p)) => match display_caps::exceeds(&p.display, &dec.rendition) { + 0 => PanelVerdict { verdict: 1, above: 0 }, + bits => PanelVerdict { verdict: 2, above: bits }, + }, + _ => PanelVerdict::default(), + } +} + +impl SegmentReceipt { + /// The receipt over `records`, its entries, totals, sums and panel verdict computed + /// from them; unsigned until [`SegmentReceipt::sign`]. + pub fn over(stream: [u8; 32], segment: [u8; 32], index: u64, records: &[HopRecord]) -> SegmentReceipt { + let mut hops: Vec = records.iter().map(HopEntry::of).collect(); + hops.sort_by(|a, b| (a.role, a.record).cmp(&(b.role, b.record))); + let (unmetered, totals) = totals_of(&hops).expect("the corpus's figures do not overflow"); + let (delivery, display) = sums_of(&hops).expect("the corpus's figures do not overflow"); + let find = |r: u8| records.iter().find(|x| x.role == r); + SegmentReceipt { + signer: [0; 32], + stream, + segment, + index, + hops, + unmetered, + totals, + delivery, + display, + panel: panel_of(find(role::DECODE), find(role::DISPLAY)), + sig: [0; 64], + } + } + + pub fn body(&self) -> Vec { + let mut o = Vec::with_capacity(512); + o.extend_from_slice(b"WSE1"); + o.push(1); + o.extend_from_slice(&self.signer); + o.extend_from_slice(&self.stream); + o.extend_from_slice(&self.segment); + o.extend_from_slice(&self.index.to_le_bytes()); + o.push(self.hops.len() as u8); + for e in &self.hops { + o.extend_from_slice(&e.record); + o.push(e.role); + o.extend_from_slice(&e.hop); + o.extend_from_slice(&e.joules.to_le_bytes()); + o.extend_from_slice(&e.deliveries.to_le_bytes()); + o.extend_from_slice(&e.share.to_le_bytes()); + write_class(e.class.as_ref(), &mut o); + o.push(e.coverage); + } + o.push(self.unmetered); + o.push(self.totals.len() as u8); + for t in &self.totals { + o.push(t.tag); + o.extend_from_slice(&t.figures.to_le_bytes()); + o.extend_from_slice(&t.joules.to_le_bytes()); + } + for s in [&self.delivery, &self.display] { + o.extend_from_slice(&s.joules.to_le_bytes()); + o.push(s.class); + o.push(s.coverage); + } + o.push(self.panel.verdict); + o.push(self.panel.above); + o + } + + pub fn to_bytes(&self) -> Vec { + let mut o = self.body(); + o.extend_from_slice(&self.sig); + o + } + + pub fn digest(&self) -> [u8; 32] { + sha256(&[&self.body()]) + } + + pub fn sign(mut self, key: &SigningKey) -> SegmentReceipt { + self.signer = key.verifying_key().to_bytes(); + self.sig = sign(key, SEGMENT_DOMAIN, &self.body()); + self + } + + /// Read exactly `b` as a receipt, apply §4.2's rules and check its signature. + pub fn parse(b: &[u8]) -> Result { + read_head(b, b"WSE1")?; + let mut r = Rd { b, p: 5 }; + let signer = r.arr()?; + let stream = r.arr()?; + let segment = r.arr()?; + let index = r.u64()?; + let n = r.u8()? as usize; + let mut hops = Vec::with_capacity(n); + let mut class_fault = None; + for _ in 0..n { + let record = r.arr()?; + let role = r.u8()?; + let hop = r.arr()?; + let joules = r.u64()?; + let deliveries = r.u32()?; + let share = r.u64()?; + let class = read_class(&mut r)?; + let cov = r.u8()?; + let class = match class { + Ok(c) => c, + Err(e) => { + class_fault.get_or_insert(e); + None + } + }; + hops.push(HopEntry { record, role, hop, joules, deliveries, share, class, coverage: cov }); + } + let unmetered = r.u8()?; + let m = r.u8()? as usize; + let mut totals = Vec::with_capacity(m); + for _ in 0..m { + totals.push(Total { tag: r.u8()?, figures: r.u32()?, joules: r.u64()? }); + } + let mut sum = || -> Result { Ok(Sum { joules: r.u64()?, class: r.u8()?, coverage: r.u8()? }) }; + let (delivery, display) = (sum()?, sum()?); + let panel = PanelVerdict { verdict: r.u8()?, above: r.u8()? }; + let sig: [u8; 64] = r.arr()?; + if r.p != b.len() { + return Err(Reason::Malformed); + } + if let Some(e) = class_fault { + return Err(e); + } + for e in &hops { + energy_rule(e.joules, &e.class, e.coverage)?; + } + if totals.iter().any(|t| t.tag <= 1) { + return Err(Reason::ClassesSummed); + } + let rec = SegmentReceipt { signer, stream, segment, index, hops, unmetered, totals, delivery, display, panel, sig }; + rec.rules()?; + verify_sig(&rec.signer, SEGMENT_DOMAIN, &b[..b.len() - 64], &rec.sig)?; + Ok(rec) + } + + /// §4.2's `receipt_invalid` rules. + fn rules(&self) -> Result<(), Reason> { + let n = self.hops.len(); + let count = |r: u8| self.hops.iter().filter(|e| e.role == r).count(); + let ordered = self.hops.windows(2).all(|w| (w[0].role, w[0].record) < (w[1].role, w[1].record)); + let sum_ok = |s: &Sum| matches!(s.class, 0 | 2..=5) && s.coverage <= 2 && ((s.class == 0) == (s.coverage == 0)) && (s.class != 0 || s.joules == 0); + let invalid = !(1..=MAX_HOPS).contains(&n) + || !ordered + || self.hops.iter().any(|e| !(role::ORIGIN..=role::DISPLAY).contains(&e.role) || e.deliveries == 0 || (e.role >= role::DECODE && e.deliveries != 1)) + || count(role::ORIGIN) > 1 + || count(role::DECODE) > 1 + || count(role::DISPLAY) > 1 + || !self.totals.windows(2).all(|w| w[0].tag < w[1].tag) + || self.totals.iter().any(|t| t.figures == 0) + || !sum_ok(&self.delivery) + || !sum_ok(&self.display) + || self.panel.verdict > 2 + || (self.panel.verdict != 2 && self.panel.above != 0) + || self.panel.above & !0b1_1111 != 0; + if invalid { Err(Reason::ReceiptInvalid) } else { Ok(()) } + } +} + +/// An accepted receipt (§6.1): its digest, totals, sums and panel verdict. +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Accepted { + pub digest: [u8; 32], + pub receipt: SegmentReceipt, +} + +/// §6.1 over a receipt's bytes and the records given, keyed by their digests. +pub fn verify_receipt(b: &[u8], records: &BTreeMap<[u8; 32], Vec>) -> Result { + let rcpt = SegmentReceipt::parse(b).map_err(|e| (Place::Receipt, e))?; + let mut read = Vec::with_capacity(rcpt.hops.len()); + for (i, e) in rcpt.hops.iter().enumerate() { + let at = Place::Hop(i); + let bytes = records.get(&e.record).ok_or((at, Reason::RecordMissing))?; + if given_digest(bytes) != e.record { + return Err((at, Reason::RecordMissing)); + } + let rec = HopRecord::parse(bytes).map_err(|r| (at, r))?; + let sink_side = rec.role >= role::DECODE; + if rec.segment != rcpt.segment || rec.index != rcpt.index || (sink_side && rec.stream != rcpt.stream) { + return Err((at, Reason::WrongSegment)); + } + if rec.role != e.role || rec.hop != e.hop || rec.joules != e.joules || rec.deliveries != e.deliveries || rec.class != e.class || rec.coverage != e.coverage || rec.share() != e.share { + return Err((at, Reason::UnitMismatch)); + } + read.push(rec); + } + if read.windows(2).any(|w| w[0].rendition != w[1].rendition) { + return Err((Place::Rendition, Reason::RenditionMismatch)); + } + check_totals(&rcpt.hops, rcpt.unmetered, &rcpt.totals).map_err(|r| (Place::Energy, r))?; + let (delivery, display) = sums_of(&rcpt.hops).ok_or((Place::Sums, Reason::SumMismatch))?; + if delivery != rcpt.delivery || display != rcpt.display { + return Err((Place::Sums, Reason::SumMismatch)); + } + let find = |r: u8| read.iter().find(|x| x.role == r); + if panel_of(find(role::DECODE), find(role::DISPLAY)) != rcpt.panel { + return Err((Place::Panel, Reason::PanelMismatch)); + } + Ok(Accepted { digest: rcpt.digest(), receipt: rcpt }) +} + +/// §6.1 step 4: the unmetered count and the totals. +fn check_totals(hops: &[HopEntry], unmetered: u8, stated: &[Total]) -> Result<(), Reason> { + let (u, want) = totals_of(hops).ok_or(Reason::UnitMismatch)?; + if u != unmetered { + return Err(Reason::UnitMismatch); + } + let by: BTreeMap = want.iter().map(|t| (t.tag, t.joules)).collect(); + for t in stated { + let Some(own) = by.get(&t.tag) else { return Err(Reason::UnitMismatch) }; + if t.joules != *own { + // A sum over this class and at least one other is `classes_summed`. + let others: Vec = by.iter().filter(|(k, _)| **k != t.tag).map(|(_, v)| *v).collect(); + let summed = (1u32..(1 << others.len())).any(|mask| { + let s: u128 = *own as u128 + others.iter().enumerate().filter(|(i, _)| mask & (1 << i) != 0).map(|(_, v)| *v as u128).sum::(); + s == t.joules as u128 + }); + return Err(if summed { Reason::ClassesSummed } else { Reason::UnitMismatch }); + } + let figures = want.iter().find(|w| w.tag == t.tag).map(|w| w.figures); + if figures != Some(t.figures) { + return Err(Reason::UnitMismatch); + } + } + if stated.len() != want.len() { + return Err(Reason::UnitMismatch); + } + Ok(()) +} + +// --------------------------------------------------------------------------------------- +// §5 The termination record +// --------------------------------------------------------------------------------------- + +/// What a termination states for one role (§5.1). +#[derive(Clone, Debug, Default, PartialEq, Eq)] +pub struct RoleSpent { + pub unmetered: u32, + pub totals: Vec<(u8, u32, u64)>, +} + +/// The reasons of §5.2. +pub mod why { + pub const HIDDEN: u8 = 1; + pub const OCCLUDED: u8 = 2; + pub const DISPLAY_OFF: u8 = 3; + pub const AUTOPLAY_OFF: u8 = 4; + pub const IDLE: u8 = 5; + + pub fn label(r: u8) -> &'static str { + match r { + HIDDEN => "hidden", + OCCLUDED => "occluded", + DISPLAY_OFF => "display-off", + AUTOPLAY_OFF => "autoplay-off", + IDLE => "idle", + _ => "unknown", + } + } +} + +/// A termination record (§5.1). +#[derive(Clone, Debug, PartialEq, Eq)] +pub struct Termination { + pub sink: [u8; 32], + pub stream: [u8; 32], + pub reason: u8, + pub at_us: u64, + pub from_index: u64, + pub last_index: u64, + pub receipts: u32, + pub list: [u8; 32], + pub spent: [RoleSpent; 4], + pub held: [RoleSpent; 4], + pub sig: [u8; 64], +} + +/// The list digest of receipts' digests in their order (§5.1). +pub fn list_digest(digests: &[[u8; 32]]) -> [u8; 32] { + let all: Vec = digests.iter().flatten().copied().collect(); + sha256(&[&all]) +} + +/// What receipts' entries give, role by role (§5.1). +pub fn spent_of<'a>(receipts: impl IntoIterator) -> Option<[RoleSpent; 4]> { + let mut by: [BTreeMap; 4] = Default::default(); + let mut unmetered = [0u32; 4]; + for r in receipts { + for e in &r.hops { + let i = (e.role - 1) as usize; + match e.tag() { + 0 => unmetered[i] = unmetered[i].checked_add(1)?, + t => { + let s = by[i].entry(t).or_default(); + s.0 = s.0.checked_add(1)?; + s.1 = s.1.checked_add(e.share)?; + } + } + } + } + let mut out: [RoleSpent; 4] = Default::default(); + for i in 0..4 { + out[i] = RoleSpent { unmetered: unmetered[i], totals: by[i].iter().map(|(t, (f, j))| (*t, *f, *j)).collect() }; + } + Some(out) +} + +fn write_spent(s: &[RoleSpent; 4], o: &mut Vec) { + for r in s { + o.extend_from_slice(&r.unmetered.to_le_bytes()); + o.push(r.totals.len() as u8); + for (t, f, j) in &r.totals { + o.push(*t); + o.extend_from_slice(&f.to_le_bytes()); + o.extend_from_slice(&j.to_le_bytes()); + } + } +} + +fn read_spent(r: &mut Rd) -> Result<[RoleSpent; 4], Reason> { + let mut out: [RoleSpent; 4] = Default::default(); + for s in &mut out { + s.unmetered = r.u32()?; + let m = r.u8()? as usize; + for _ in 0..m { + s.totals.push((r.u8()?, r.u32()?, r.u64()?)); + } + } + Ok(out) +} + +impl Termination { + /// The record over `receipts` (in index order), its list digest and joules computed + /// from them; unsigned until [`Termination::sign`]. + pub fn over(stream: [u8; 32], reason: u8, at_us: u64, from_index: u64, receipts: &[SegmentReceipt]) -> Termination { + let digests: Vec<[u8; 32]> = receipts.iter().map(SegmentReceipt::digest).collect(); + Termination { + sink: [0; 32], + stream, + reason, + at_us, + from_index, + last_index: receipts.last().map_or(0, |r| r.index), + receipts: receipts.len() as u32, + list: list_digest(&digests), + spent: spent_of(receipts).expect("the corpus's figures do not overflow"), + held: spent_of(receipts.iter().filter(|r| r.index >= from_index)).expect("the corpus's figures do not overflow"), + sig: [0; 64], + } + } + + pub fn body(&self) -> Vec { + let mut o = Vec::with_capacity(256); + o.extend_from_slice(b"WST1"); + o.push(1); + o.extend_from_slice(&self.sink); + o.extend_from_slice(&self.stream); + o.push(self.reason); + for v in [self.at_us, self.from_index, self.last_index] { + o.extend_from_slice(&v.to_le_bytes()); + } + o.extend_from_slice(&self.receipts.to_le_bytes()); + o.extend_from_slice(&self.list); + write_spent(&self.spent, &mut o); + write_spent(&self.held, &mut o); + o + } + + pub fn to_bytes(&self) -> Vec { + let mut o = self.body(); + o.extend_from_slice(&self.sig); + o + } + + pub fn digest(&self) -> [u8; 32] { + sha256(&[&self.body()]) + } + + pub fn sign(mut self, key: &SigningKey) -> Termination { + self.sink = key.verifying_key().to_bytes(); + self.sig = sign(key, TERMINATION_DOMAIN, &self.body()); + self + } + + /// Read exactly `b`, apply §5.3's rules and check the signature. + pub fn parse(b: &[u8]) -> Result { + read_head(b, b"WST1")?; + let mut r = Rd { b, p: 5 }; + let sink = r.arr()?; + let stream = r.arr()?; + let reason = r.u8()?; + let (at_us, from_index, last_index) = (r.u64()?, r.u64()?, r.u64()?); + let receipts = r.u32()?; + let list = r.arr()?; + let spent = read_spent(&mut r)?; + let held = read_spent(&mut r)?; + let sig: [u8; 64] = r.arr()?; + if r.p != b.len() { + return Err(Reason::Malformed); + } + let classes_ok = |s: &[RoleSpent; 4]| s.iter().all(|x| x.totals.iter().all(|(t, f, _)| (2..=5).contains(t) && *f > 0) && x.totals.windows(2).all(|w| w[0].0 < w[1].0)); + if !(1..=5).contains(&reason) || from_index > last_index || receipts == 0 || !classes_ok(&spent) || !classes_ok(&held) { + return Err(Reason::TerminationInvalid); + } + let t = Termination { sink, stream, reason, at_us, from_index, last_index, receipts, list, spent, held, sig }; + verify_sig(&t.sink, TERMINATION_DOMAIN, &b[..b.len() - 64], &t.sig)?; + Ok(t) + } +} + +/// §6.2 over a termination record's bytes, the receipts given and the records they name. +pub fn verify_termination(b: &[u8], receipts: &[Vec], records: &BTreeMap<[u8; 32], Vec>) -> Result { + let t = Termination::parse(b).map_err(|r| (Place::Termination, r))?; + let digests: Vec<[u8; 32]> = receipts.iter().map(|x| given_digest(x)).collect(); + if receipts.len() != t.receipts as usize || list_digest(&digests) != t.list { + return Err((Place::Termination, Reason::RecordMissing)); + } + let mut accepted: Vec = Vec::with_capacity(receipts.len()); + for (i, rb) in receipts.iter().enumerate() { + let at = Place::Segment(i); + let a = verify_receipt(rb, records).map_err(|(_, r)| (at, r))?; + if a.receipt.stream != t.stream || a.receipt.signer != t.sink { + return Err((at, Reason::WrongStream)); + } + if accepted.last().is_some_and(|p| a.receipt.index <= p.index) { + return Err((at, Reason::TerminationInvalid)); + } + accepted.push(a.receipt); + } + let (first, last) = (accepted.first().expect("receipts ≥ 1"), accepted.last().expect("receipts ≥ 1")); + if last.index != t.last_index || t.from_index < first.index { + return Err((Place::Termination, Reason::IndexMismatch)); + } + let spent = spent_of(&accepted).ok_or((Place::Termination, Reason::UnitMismatch))?; + let held = spent_of(accepted.iter().filter(|r| r.index >= t.from_index)).ok_or((Place::Termination, Reason::UnitMismatch))?; + if spent != t.spent || held != t.held { + return Err((Place::Termination, Reason::UnitMismatch)); + } + Ok(t) +} diff --git a/wai/wai-rs/src/stream_energy/corpus.rs b/wai/wai-rs/src/stream_energy/corpus.rs new file mode 100644 index 000000000..484405fb7 --- /dev/null +++ b/wai/wai-rs/src/stream_energy/corpus.rs @@ -0,0 +1,553 @@ +//! The conformance corpus of extensions/stream-energy.md §8: +//! `energy-conformance/stream/vectors.json`. +//! +//! [`generate`] writes it from fixed seeds: every key is SHA-256 of this corpus's label and +//! an index, every stream id and segment hash SHA-256 of another label and an index, and +//! Ed25519 signing is deterministic (RFC 8032). The figures are synthetic, chosen to +//! exercise the rules, and claim nothing about any device. Each vector states the outcome it +//! was written to have, and the generator asserts that this module reaches it. +//! +//! [`verify`] checks a corpus file against this module. +//! `energy-conformance/stream_energy_verify.py` checks the same file from the extension's +//! text, sharing no code with this module. + +use std::collections::BTreeMap; + +use serde_json::{json, Map, Value}; + +use super::*; +use crate::display_caps::transfer; + +const ORIGIN: u8 = 0; +const RELAY_A: u8 = 1; +const RELAY_B: u8 = 2; +const SINK: u8 = 3; +const PHONE: u8 = 4; +const STRANGER: u8 = 5; + +const KEYS: [(&str, u8); 6] = [("origin", ORIGIN), ("relay_a", RELAY_A), ("relay_b", RELAY_B), ("sink", SINK), ("phone", PHONE), ("stranger", STRANGER)]; + +fn h(label: &[u8], i: u8) -> [u8; 32] { + sha256(&[b"wai:stream-energy/corpus/", label, b"\x00", &[i]]) +} + +fn key(i: u8) -> SigningKey { + SigningKey::from_bytes(&h(b"key", i)) +} + +fn occ(ppm: u32, window_us: u64) -> EnergyProvenance { + EnergyProvenance::on_chip_counter(Uncertainty::new(ppm, window_us).unwrap(), CounterFiltering::Unknown).unwrap() +} + +/// A 1080p, 24 fps, 8-bit SDR rendition of 2 s segments. +const HD: Rendition = Rendition { width: 1920, height: 1080, frame_rate_mhz: 24_000, bit_depth: 8, transfer: transfer::SDR }; +const UHD_HDR: Rendition = Rendition { width: 3840, height: 2160, frame_rate_mhz: 24_000, bit_depth: 10, transfer: transfer::PQ }; +const SEG_US: u64 = 2_000_000; + +/// A 65-inch television, 3840×2160, 120 Hz, 10-bit, SDR/PQ/HLG, viewed from 2.5 m. +fn tv() -> Panel { + Panel { class: 1, display: Display { width: 3840, height: 2160, refresh_mhz: 120_000, bit_depth: 10, transfers: 0b111, diagonal_mm: 1651, distance_mm: 2500 }, brightness_ppm: 600_000 } +} + +/// A 1080p 8-bit SDR monitor of 24 inches, no distance declared. +fn monitor() -> Panel { + Panel { class: 2, display: Display { width: 1920, height: 1080, refresh_mhz: 60_000, bit_depth: 8, transfers: 0b001, diagonal_mm: 610, distance_mm: 0 }, brightness_ppm: 500_000 } +} + +/// A 55-inch 4K television viewed from 3 m: its 1080 lines are finer than a viewer resolves. +fn far_tv() -> Panel { + Panel { class: 1, display: Display { width: 3840, height: 2160, refresh_mhz: 60_000, bit_depth: 10, transfers: 0b111, diagonal_mm: 1397, distance_mm: 3000 }, brightness_ppm: 1_000_000 } +} + +/// A phone panel, 1179×2556, 60 Hz, 10-bit, SDR and PQ. +fn phone_panel() -> Panel { + Panel { class: 5, display: Display { width: 1179, height: 2556, refresh_mhz: 60_000, bit_depth: 10, transfers: 0b011, diagonal_mm: 155, distance_mm: 0 }, brightness_ppm: 500_000 } +} + +/// A segment: its content hash and index. +#[derive(Clone, Copy)] +struct Seg { + hash: [u8; 32], + index: u64, +} + +fn seg(i: u8) -> Seg { + Seg { hash: h(b"segment", i), index: 100 + i as u64 } +} + +fn stream(i: u8) -> [u8; 32] { + h(b"stream", i) +} + +struct Hop { + role: u8, + deliveries: u32, + joules: u64, + class: Option, + coverage: u8, + profile: u8, + fabrics: u8, + rendition: Rendition, + basis: Option, + panel: Option, +} + +impl Hop { + fn record(&self, k: u8, s: Seg, st: [u8; 32]) -> HopRecord { + HopRecord { + role: self.role, + hop: [0; 32], + segment: s.hash, + index: s.index, + stream: if self.role >= role::DECODE { st } else { [0; 32] }, + deliveries: self.deliveries, + joules: self.joules, + class: self.class.clone(), + coverage: self.coverage, + profile: self.profile, + fabrics: self.fabrics, + rendition: self.rendition, + duration_us: SEG_US, + basis: self.basis, + panel: self.panel, + sig: [0; 64], + } + .sign(&key(k)) + } +} + +fn origin(joules: u64, deliveries: u32) -> Hop { + Hop { role: role::ORIGIN, deliveries, joules, class: Some(EnergyProvenance::ModelBased), coverage: coverage::WHOLE, profile: 0, fabrics: 0, rendition: HD, basis: None, panel: None } +} + +fn relay(joules: u64, deliveries: u32) -> Hop { + Hop { role: role::RELAY, deliveries, joules, class: Some(occ(40_000, 2_000_000)), coverage: coverage::WHOLE, profile: 0, fabrics: 0, rendition: HD, basis: None, panel: None } +} + +fn relay_unmetered() -> Hop { + Hop { class: None, joules: 0, coverage: coverage::NONE, ..relay(0, 12) } +} + +/// A CPU decode under `macos-task`: 660 000 µJ at 1.9 % over a 2 s window. +fn decode_cpu() -> Hop { + Hop { role: role::DECODE, deliveries: 1, joules: 660_000, class: Some(occ(19_000, 2_000_000)), coverage: coverage::WHOLE, profile: 1, fabrics: fabric::CPU, rendition: HD, basis: None, panel: None } +} + +/// A VideoToolbox decode: the CPU side only, the media engine unmetered. +fn decode_media() -> Hop { + Hop { joules: 58_000, class: Some(occ(52_000, 2_000_000)), coverage: coverage::PARTIAL, fabrics: fabric::CPU | fabric::MEDIA, ..decode_cpu() } +} + +/// A phone decode under `android-app`: 180 ms of CPU at a declared 1 200 mW per busy core. +fn decode_phone() -> Hop { + let basis = Basis { power_mw: 1_200, time_us: 180_000, source: 3 }; + Hop { role: role::DECODE, deliveries: 1, joules: basis.joules(), class: Some(EnergyProvenance::Estimator), coverage: coverage::WHOLE, profile: 3, fabrics: fabric::CPU, rendition: HD, basis: Some(basis), panel: None } +} + +/// A display from the panel's label power over the 2 s it was presented. +fn display(panel: Panel, power_mw: u32, rendition: Rendition) -> Hop { + let basis = Basis { power_mw, time_us: SEG_US, source: if panel.class == 1 || panel.class == 2 { 1 } else { 2 } }; + Hop { role: role::DISPLAY, deliveries: 1, joules: basis.joules(), class: Some(EnergyProvenance::Estimator), coverage: coverage::WHOLE, profile: 0, fabrics: 0, rendition, basis: Some(basis), panel: Some(panel) } +} + +fn display_unmetered(panel: Panel) -> Hop { + Hop { joules: 0, class: None, coverage: coverage::NONE, basis: None, ..display(panel, 1, HD) } +} + +/// The records of a segment's hops, each signed by its hop's key. +fn records(hops: &[(u8, Hop)], s: Seg, st: [u8; 32]) -> Vec { + hops.iter().map(|(k, x)| x.record(*k, s, st)).collect() +} + +fn receipt(signer: u8, s: Seg, st: [u8; 32], recs: &[HopRecord]) -> SegmentReceipt { + SegmentReceipt::over(st, s.hash, s.index, recs).sign(&key(signer)) +} + +fn standard(s: Seg, st: [u8; 32]) -> Vec { + records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (SINK, decode_cpu()), (SINK, display(tv(), 98_000, HD))], s, st) +} + +// --------------------------------------------------------------------------------------- +// Vectors +// --------------------------------------------------------------------------------------- + +struct Vector { + name: &'static str, + kind: &'static str, + /// The receipt, or the termination record. + subject: Vec, + receipts: Vec>, + records: Vec>, + outcome: Result, +} + +fn entry_facts(r: &SegmentReceipt) -> Value { + const COVERAGE: [&str; 3] = ["none", "Whole", "Partial"]; + const VERDICT: [&str; 3] = ["none", "within", "above"]; + let sum = |s: &Sum| json!({ "joules_micro": s.joules, "class": tag_label(s.class), "coverage": COVERAGE[s.coverage as usize] }); + json!({ + "shares": r.hops.iter().map(|e| json!({ "role": e.role, "share": e.share, "class": tag_label(tag_of(e.class.as_ref())) })).collect::>(), + "unmetered": r.unmetered, + "totals": r.totals.iter().map(|t| json!({ "class": tag_label(t.tag), "figures": t.figures, "joules_micro": t.joules })).collect::>(), + "delivery": sum(&r.delivery), + "display": sum(&r.display), + "panel": { "verdict": VERDICT[r.panel.verdict as usize], "above": display_caps::above::terms(r.panel.above) }, + }) +} + +fn by_digest(recs: &[Vec]) -> BTreeMap<[u8; 32], Vec> { + recs.iter().map(|b| (given_digest(b), b.clone())).collect() +} + +/// What this module gives a vector. +fn outcome_of(v: &Vector) -> Result { + let recs = by_digest(&v.records); + match v.kind { + "receipt" => verify_receipt(&v.subject, &recs).map(|a| entry_facts(&a.receipt)).map_err(|(p, r)| (p.label(), r)), + _ => verify_termination(&v.subject, &v.receipts, &recs) + .map(|t| { + let spent = |s: &[RoleSpent; 4]| { + s.iter() + .enumerate() + .map(|(i, r)| json!({ "role": i + 1, "unmetered": r.unmetered, "totals": r.totals.iter().map(|(t, f, j)| json!({ "class": tag_label(*t), "figures": f, "joules_micro": j })).collect::>() })) + .collect::>() + }; + json!({ "reason": why::label(t.reason), "from_index": t.from_index, "last_index": t.last_index, "spent": spent(&t.spent), "held": spent(&t.held) }) + }) + .map_err(|(p, r)| (p.label(), r)), + } +} + +fn accept_receipt(name: &'static str, recs: Vec, r: SegmentReceipt) -> Vector { + let mut v = Vector { name, kind: "receipt", subject: r.to_bytes(), receipts: Vec::new(), records: recs.iter().map(HopRecord::to_bytes).collect(), outcome: Ok(Value::Null) }; + v.outcome = Ok(outcome_of(&v).unwrap_or_else(|e| panic!("{name}: {e:?}"))); + v +} + +fn refuse(name: &'static str, kind: &'static str, subject: Vec, receipts: Vec>, records: Vec>, place: &str, reason: Reason) -> Vector { + Vector { name, kind, subject, receipts, records, outcome: Err((place.into(), reason)) } +} + +/// A receipt over `recs` refused at a record of it. An entry restating a class or a figure +/// §4.2 refuses in a receipt is written as the unmetered marker instead, so that the +/// receipt reads and the refusal is the record's, at its entry. +#[allow(deprecated)] +fn refuse_at_record(name: &'static str, recs: Vec, place: &str, reason: Reason) -> Vector { + let s = Seg { hash: recs[0].segment, index: recs[0].index }; + let st = recs.iter().find(|r| r.role >= role::DECODE).map_or(stream(0), |r| r.stream); + let mut r = SegmentReceipt::over(st, s.hash, s.index, &recs); + for e in &mut r.hops { + if e.class == Some(EnergyProvenance::HwShunt) || energy_rule(e.joules, &e.class, e.coverage).is_err() { + (e.joules, e.share, e.class, e.coverage) = (0, 0, None, coverage::NONE); + } + } + (r.unmetered, r.totals) = totals_of(&r.hops).expect("no overflow"); + (r.delivery, r.display) = sums_of(&r.hops).expect("no overflow"); + let r = r.sign(&key(SINK)); + refuse(name, "receipt", r.to_bytes(), Vec::new(), recs.iter().map(HopRecord::to_bytes).collect(), place, reason) +} + +/// The index of the entry of role `r` in a receipt over `recs`. +fn hop_place(recs: &[HopRecord], r: u8) -> String { + let mut es: Vec<(u8, [u8; 32])> = recs.iter().map(|x| (x.role, x.digest())).collect(); + es.sort(); + format!("hop/{}", es.iter().position(|e| e.0 == r).unwrap()) +} + +fn resign(mut r: SegmentReceipt) -> SegmentReceipt { + r.sig = [0; 64]; + r.sign(&key(SINK)) +} + +#[allow(deprecated)] +fn vectors() -> Vec { + let mut out = Vec::new(); + let s0 = stream(0); + + // ---- Accepted receipts. + let recs = standard(seg(0), s0); + out.push(accept_receipt("four_hops_metered", recs.clone(), receipt(SINK, seg(0), s0, &recs))); + let media = records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (SINK, decode_media()), (SINK, display(tv(), 98_000, HD))], seg(1), s0); + out.push(accept_receipt("media_engine_lower_bound", media.clone(), receipt(SINK, seg(1), s0, &media))); + let unm = records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay_unmetered()), (SINK, decode_cpu()), (SINK, display(tv(), 98_000, HD))], seg(2), s0); + out.push(accept_receipt("relay_unmetered", unm.clone(), receipt(SINK, seg(2), s0, &unm))); + let shared = records(&[(ORIGIN, origin(5_000_000, 1_000)), (RELAY_A, relay(3_600_000, 400)), (SINK, decode_cpu()), (SINK, display(tv(), 98_000, HD))], seg(3), s0); + out.push(accept_receipt("origin_shared", shared.clone(), receipt(SINK, seg(3), s0, &shared))); + let two = records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (RELAY_B, relay(700, 1)), (SINK, decode_cpu()), (SINK, display(tv(), 98_000, HD))], seg(4), s0); + out.push(accept_receipt("two_relays", two.clone(), receipt(SINK, seg(4), s0, &two))); + let s1 = stream(1); + let phone = records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (PHONE, decode_phone()), (PHONE, display(phone_panel(), 1_100, HD))], seg(0), s1); + out.push(accept_receipt("phone_estimator", phone.clone(), receipt(PHONE, seg(0), s1, &phone))); + let dunm = records(&[(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (SINK, decode_cpu()), (SINK, display_unmetered(monitor()))], seg(5), s0); + out.push(accept_receipt("display_unmetered", dunm.clone(), receipt(SINK, seg(5), s0, &dunm))); + let uhd = Hop { rendition: UHD_HDR, ..decode_cpu() }; + let above_recs = records(&[(ORIGIN, Hop { rendition: UHD_HDR, ..origin(9_000, 1) }), (SINK, uhd), (SINK, display(monitor(), 21_000, UHD_HDR))], seg(6), s0); + out.push(accept_receipt("above_panel", above_recs.clone(), receipt(SINK, seg(6), s0, &above_recs))); + let acuity = records(&[(ORIGIN, origin(3_000, 1)), (SINK, decode_cpu()), (SINK, display(far_tv(), 85_000, HD))], seg(7), s0); + out.push(accept_receipt("above_acuity", acuity.clone(), receipt(SINK, seg(7), s0, &acuity))); + let decode_only = records(&[(SINK, decode_cpu())], seg(8), s0); + out.push(accept_receipt("decode_only", decode_only.clone(), receipt(SINK, seg(8), s0, &decode_only))); + + // ---- Accepted terminations, one per reason. + for (name, reason, st, from) in [ + ("termination_hidden", why::HIDDEN, 10u8, 102u64), + ("termination_occluded", why::OCCLUDED, 11, 101), + ("termination_display_off", why::DISPLAY_OFF, 12, 103), + ("termination_autoplay_off", why::AUTOPLAY_OFF, 13, 100), + ("termination_idle", why::IDLE, 14, 102), + ] { + let stid = stream(st); + let mut rs = Vec::new(); + let mut all_recs = Vec::new(); + for i in 0..4u8 { + let recs = standard(seg(i), stid); + rs.push(receipt(SINK, seg(i), stid, &recs)); + all_recs.extend(recs); + } + let t = Termination::over(stid, reason, 8_000_000, from, &rs).sign(&key(SINK)); + let mut v = Vector { name, kind: "termination", subject: t.to_bytes(), receipts: rs.iter().map(SegmentReceipt::to_bytes).collect(), records: all_recs.iter().map(HopRecord::to_bytes).collect(), outcome: Ok(Value::Null) }; + v.outcome = Ok(outcome_of(&v).unwrap_or_else(|e| panic!("{name}: {e:?}"))); + out.push(v); + } + + // ---- Refused at a record (§3.6). + let with = |role_: u8, hop: Hop, k: u8, s: u8| -> Vec { + let mut base: Vec<(u8, Hop)> = vec![(ORIGIN, origin(3_000, 1)), (RELAY_A, relay(900, 1)), (SINK, decode_cpu()), (SINK, display(tv(), 98_000, HD))]; + let i = base.iter().position(|(_, x)| x.role == role_).unwrap(); + base[i] = (k, hop); + records(&base, seg(s), s0) + }; + let legacy = with(role::RELAY, Hop { class: Some(EnergyProvenance::HwShunt), ..relay(900, 1) }, RELAY_A, 20); + out.push(refuse_at_record("record_legacy_class", legacy.clone(), &hop_place(&legacy, role::RELAY), Reason::LegacyClass)); + let zero = with(role::ORIGIN, Hop { joules: 0, ..origin(3_000, 1) }, ORIGIN, 21); + out.push(refuse_at_record("record_class_beside_zero", zero.clone(), &hop_place(&zero, role::ORIGIN), Reason::EnergyInvalid)); + let streamed_relay = { + let mut r = with(role::RELAY, relay(900, 1), RELAY_A, 22); + let i = r.iter().position(|x| x.role == role::RELAY).unwrap(); + let mut bad = r[i].clone(); + bad.stream = s0; + r[i] = bad.sign(&key(RELAY_A)); + r + }; + out.push(refuse_at_record("record_relay_names_a_stream", streamed_relay.clone(), &hop_place(&streamed_relay, role::RELAY), Reason::RecordInvalid)); + let bare_estimate = with(role::ORIGIN, Hop { class: Some(EnergyProvenance::Estimator), ..origin(3_000, 1) }, ORIGIN, 23); + out.push(refuse_at_record("record_estimate_without_basis", bare_estimate.clone(), &hop_place(&bare_estimate, role::ORIGIN), Reason::BasisInvalid)); + let display_counter = with(role::DISPLAY, Hop { class: Some(occ(40_000, 2_000_000)), basis: None, ..display(tv(), 98_000, HD) }, SINK, 24); + out.push(refuse_at_record("record_display_not_an_estimate", display_counter.clone(), &hop_place(&display_counter, role::DISPLAY), Reason::BasisInvalid)); + let mismatch = with(role::DISPLAY, Hop { joules: 196_000_001, ..display(tv(), 98_000, HD) }, SINK, 25); + out.push(refuse_at_record("record_basis_mismatch", mismatch.clone(), &hop_place(&mismatch, role::DISPLAY), Reason::BasisMismatch)); + let phone_counter = with(role::DECODE, Hop { profile: 3, ..decode_cpu() }, SINK, 26); + out.push(refuse_at_record("record_counter_outside_profile", phone_counter.clone(), &hop_place(&phone_counter, role::DECODE), Reason::ProfileMismatch)); + let no_profile = with(role::DECODE, Hop { profile: 0, ..decode_cpu() }, SINK, 27); + out.push(refuse_at_record("record_counter_without_profile", no_profile.clone(), &hop_place(&no_profile, role::DECODE), Reason::ProfileMismatch)); + let overstated = with(role::DECODE, Hop { coverage: coverage::WHOLE, ..decode_media() }, SINK, 28); + out.push(refuse_at_record("record_media_engine_whole", overstated.clone(), &hop_place(&overstated, role::DECODE), Reason::BoundOverstated)); + let neural = with(role::DECODE, Hop { fabrics: fabric::CPU | fabric::NEURAL, ..decode_cpu() }, SINK, 29); + out.push(refuse_at_record("record_neural_engine_whole", neural.clone(), &hop_place(&neural, role::DECODE), Reason::BoundOverstated)); + + // ---- Refused at the receipt and its steps (§4.2, §6.1). + let good = standard(seg(30), s0); + let good_bytes: Vec> = good.iter().map(HopRecord::to_bytes).collect(); + let base = receipt(SINK, seg(30), s0, &good); + let mut two_decodes = base.clone(); + let extra = Hop { joules: 640_000, ..decode_cpu() }.record(SINK, seg(30), s0); + let mut both = good.clone(); + both.push(extra); + let over_both = SegmentReceipt::over(s0, seg(30).hash, seg(30).index, &both); + two_decodes.hops = over_both.hops; + two_decodes.totals = over_both.totals; + two_decodes.unmetered = over_both.unmetered; + two_decodes.delivery = over_both.delivery; + out.push(refuse("receipt_two_decodes", "receipt", resign(two_decodes).to_bytes(), Vec::new(), both.iter().map(HopRecord::to_bytes).collect(), "receipt", Reason::ReceiptInvalid)); + let mut legacy_entry = base.clone(); + legacy_entry.hops[1].class = Some(EnergyProvenance::HwShunt); + out.push(refuse("receipt_legacy_entry", "receipt", resign(legacy_entry).to_bytes(), Vec::new(), good_bytes.clone(), "receipt", Reason::LegacyClass)); + let mut summed = base.clone(); + let model = summed.totals.iter().find(|t| t.tag == 2).unwrap().joules; + let t4 = summed.totals.iter_mut().find(|t| t.tag == 4).unwrap(); + t4.joules += model; + out.push(refuse("receipt_classes_summed", "receipt", resign(summed).to_bytes(), Vec::new(), good_bytes.clone(), "energy", Reason::ClassesSummed)); + let mut zero_total = base.clone(); + zero_total.totals.insert(0, Total { tag: 0, figures: 1, joules: 0 }); + out.push(refuse("receipt_total_of_no_class", "receipt", resign(zero_total).to_bytes(), Vec::new(), good_bytes.clone(), "receipt", Reason::ClassesSummed)); + out.push(refuse("receipt_record_missing", "receipt", base.to_bytes(), Vec::new(), good_bytes[1..].to_vec(), &hop_place(&good, role::ORIGIN), Reason::RecordMissing)); + let other = standard(seg(31), s0); + let mut wrong = good.clone(); + let i = wrong.iter().position(|r| r.role == role::RELAY).unwrap(); + wrong[i] = other.iter().find(|r| r.role == role::RELAY).unwrap().clone(); + let wr = receipt(SINK, seg(30), s0, &wrong); + out.push(refuse("receipt_wrong_segment", "receipt", wr.to_bytes(), Vec::new(), wrong.iter().map(HopRecord::to_bytes).collect(), &hop_place(&wrong, role::RELAY), Reason::WrongSegment)); + let other_stream = standard(seg(30), stream(2)); + let mut ws = good.clone(); + let i = ws.iter().position(|r| r.role == role::DECODE).unwrap(); + ws[i] = other_stream.iter().find(|r| r.role == role::DECODE).unwrap().clone(); + let wsr = receipt(SINK, seg(30), s0, &ws); + out.push(refuse("receipt_decode_of_another_stream", "receipt", wsr.to_bytes(), Vec::new(), ws.iter().map(HopRecord::to_bytes).collect(), &hop_place(&ws, role::DECODE), Reason::WrongSegment)); + let mut share = base.clone(); + share.hops[0].share += 1; + out.push(refuse("receipt_share_restated", "receipt", resign(share).to_bytes(), Vec::new(), good_bytes.clone(), "hop/0", Reason::UnitMismatch)); + let renditions = with(role::RELAY, Hop { rendition: Rendition { width: 1280, height: 720, ..HD }, ..relay(900, 1) }, RELAY_A, 32); + let rr = receipt(SINK, seg(32), s0, &renditions); + out.push(refuse("receipt_rendition_mismatch", "receipt", rr.to_bytes(), Vec::new(), renditions.iter().map(HopRecord::to_bytes).collect(), "rendition", Reason::RenditionMismatch)); + let mut count = base.clone(); + count.unmetered = 1; + out.push(refuse("receipt_unmetered_miscounted", "receipt", resign(count).to_bytes(), Vec::new(), good_bytes.clone(), "energy", Reason::UnitMismatch)); + let unm_bytes: Vec> = unm.iter().map(HopRecord::to_bytes).collect(); + let mut whole = receipt(SINK, seg(2), s0, &unm); + whole.delivery.coverage = coverage::WHOLE; + out.push(refuse("receipt_partial_sum_stated_whole", "receipt", resign(whole).to_bytes(), Vec::new(), unm_bytes, "sums", Reason::SumMismatch)); + let mut strongest = base.clone(); + strongest.delivery.class = 4; + out.push(refuse("receipt_sum_at_its_strongest_class", "receipt", resign(strongest).to_bytes(), Vec::new(), good_bytes.clone(), "sums", Reason::SumMismatch)); + let above_bytes: Vec> = above_recs.iter().map(HopRecord::to_bytes).collect(); + let mut within = receipt(SINK, seg(6), s0, &above_recs); + within.panel = PanelVerdict { verdict: 1, above: 0 }; + out.push(refuse("receipt_panel_stated_within", "receipt", resign(within).to_bytes(), Vec::new(), above_bytes, "panel", Reason::PanelMismatch)); + let mut sig = base.to_bytes(); + let n = sig.len(); + sig[n - 1] ^= 1; + out.push(refuse("receipt_bad_signature", "receipt", sig, Vec::new(), good_bytes.clone(), "receipt", Reason::BadSignature)); + let mut stranger = base.clone(); + stranger.signer = key(STRANGER).verifying_key().to_bytes(); + out.push(refuse("receipt_signed_by_another_key", "receipt", stranger.to_bytes(), Vec::new(), good_bytes.clone(), "receipt", Reason::BadSignature)); + let b = base.to_bytes(); + out.push(refuse("receipt_truncated", "receipt", b[..b.len() - 65].to_vec(), Vec::new(), good_bytes.clone(), "receipt", Reason::Truncated)); + let mut magic = b.clone(); + magic[3] = b'2'; + out.push(refuse("receipt_wrong_magic", "receipt", magic, Vec::new(), good_bytes.clone(), "receipt", Reason::Malformed)); + let mut version = b.clone(); + version[4] = 2; + out.push(refuse("receipt_version_2", "receipt", version, Vec::new(), good_bytes.clone(), "receipt", Reason::UnknownVersion)); + let mut trailing = b.clone(); + trailing.push(0); + out.push(refuse("receipt_trailing_byte", "receipt", trailing, Vec::new(), good_bytes.clone(), "receipt", Reason::Malformed)); + + // ---- Refused terminations (§5.3, §6.2). + let stid = stream(20); + let mut rs = Vec::new(); + let mut tr = Vec::new(); + for i in 0..3u8 { + let recs = standard(seg(40 + i), stid); + rs.push(receipt(SINK, seg(40 + i), stid, &recs)); + tr.extend(recs.iter().map(HopRecord::to_bytes)); + } + let rb: Vec> = rs.iter().map(SegmentReceipt::to_bytes).collect(); + let t = Termination::over(stid, why::HIDDEN, 6_000_000, seg(41).index, &rs); + let signed = |t: Termination| t.sign(&key(SINK)).to_bytes(); + out.push(refuse("termination_unknown_reason", "termination", signed(Termination { reason: 9, ..t.clone() }), rb.clone(), tr.clone(), "termination", Reason::TerminationInvalid)); + out.push(refuse("termination_from_after_last", "termination", signed(Termination { from_index: t.last_index + 1, ..t.clone() }), rb.clone(), tr.clone(), "termination", Reason::TerminationInvalid)); + out.push(refuse("termination_receipt_missing", "termination", signed(t.clone()), rb[..2].to_vec(), tr.clone(), "termination", Reason::RecordMissing)); + out.push(refuse("termination_last_index", "termination", signed(Termination { last_index: t.last_index + 7, ..t.clone() }), rb.clone(), tr.clone(), "termination", Reason::IndexMismatch)); + let mut held = t.clone(); + held.held[3].totals[0].2 += 1; + out.push(refuse("termination_held_restated", "termination", signed(held), rb.clone(), tr.clone(), "termination", Reason::UnitMismatch)); + let mut spent_all = t.clone(); + spent_all.held = spent_all.spent.clone(); + out.push(refuse("termination_held_is_all_spent", "termination", signed(spent_all), rb.clone(), tr.clone(), "termination", Reason::UnitMismatch)); + { + let mut mixed = rs.clone(); + let recs = standard(seg(42), stream(21)); + mixed[2] = receipt(SINK, seg(42), stream(21), &recs); + let mut mr = tr.clone(); + mr.extend(recs.iter().map(HopRecord::to_bytes)); + let mt = Termination::over(stid, why::HIDDEN, 6_000_000, seg(41).index, &mixed); + out.push(refuse("termination_receipt_of_another_stream", "termination", signed(mt), mixed.iter().map(SegmentReceipt::to_bytes).collect(), mr, "segment/2", Reason::WrongStream)); + } + { + let mut order = rs.clone(); + order.swap(1, 2); + let mt = Termination::over(stid, why::HIDDEN, 6_000_000, seg(40).index, &order); + out.push(refuse("termination_receipts_out_of_order", "termination", signed(mt), order.iter().map(SegmentReceipt::to_bytes).collect(), tr.clone(), "segment/2", Reason::TerminationInvalid)); + } + out.push(refuse("termination_bad_signature", "termination", { + let mut b = signed(t.clone()); + let n = b.len(); + b[n - 1] ^= 1; + b + }, rb.clone(), tr.clone(), "termination", Reason::BadSignature)); + out +} + +fn hexs(v: &[Vec]) -> Vec { + v.iter().map(|b| hex(b)).collect() +} + +fn vector_json(v: &Vector) -> Value { + let mut m = Map::new(); + m.insert("name".into(), json!(v.name)); + m.insert("kind".into(), json!(v.kind)); + m.insert(if v.kind == "receipt" { "receipt" } else { "termination" }.into(), json!(hex(&v.subject))); + if v.kind == "termination" { + m.insert("receipts".into(), json!(hexs(&v.receipts))); + } + m.insert("records".into(), json!(hexs(&v.records))); + match &v.outcome { + Ok(facts) => { + m.insert("outcome".into(), json!("accept")); + m.insert("facts".into(), facts.clone()); + } + Err((place, reason)) => { + m.insert("outcome".into(), json!("refuse")); + m.insert("reason".into(), json!(reason.code())); + m.insert("place".into(), json!(place)); + } + } + Value::Object(m) +} + +/// The corpus, as `energy-conformance/stream/vectors.json` holds it. +pub fn generate() -> String { + let vs = vectors(); + for v in &vs { + let got = outcome_of(v); + let want = match &v.outcome { + Ok(f) => Ok(f.clone()), + Err((p, r)) => Err((p.clone(), *r)), + }; + assert_eq!(got, want, "{}: the module does not give the outcome the vector was written for", v.name); + } + let keys: Map = KEYS.iter().map(|(n, i)| (n.to_string(), json!(hex(&key(*i).verifying_key().to_bytes())))).collect(); + let doc = json!({ + "format": "wai.stream.energy corpus v1", + "about": "extensions/stream-energy.md §8. Each vector is a stream-segment receipt (WSE1) or a termination record (WST1), with the receipts and hop figure records (WSH1) it names, as lowercase hex, and the outcome §6 gives it: accept with the facts every verifier recomputes, or refuse with the reason and the place. The figures are synthetic and claim nothing about any device.", + "keys": keys, + "vectors": vs.iter().map(vector_json).collect::>(), + }); + let mut s = serde_json::to_string_pretty(&doc).expect("serialise"); + s.push('\n'); + s +} + +fn unhex(s: &str) -> Option> { + (s.len() % 2 == 0).then(|| (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16).ok()).collect::>>()).flatten() +} + +/// Check a corpus file against this module: every vector gets the outcome it states. +pub fn verify(doc: &str) -> Vec { + let mut fails = Vec::new(); + let Ok(d) = serde_json::from_str::(doc) else { return vec!["the corpus does not parse".into()] }; + for v in d["vectors"].as_array().into_iter().flatten() { + let name = v["name"].as_str().unwrap_or("?").to_string(); + let kind = v["kind"].as_str().unwrap_or(""); + let field = |k: &str| v[k].as_str().and_then(unhex).unwrap_or_default(); + let list = |k: &str| v[k].as_array().into_iter().flatten().filter_map(|x| x.as_str().and_then(unhex)).collect::>(); + let vec = Vector { + name: "", + kind: if kind == "receipt" { "receipt" } else { "termination" }, + subject: field(if kind == "receipt" { "receipt" } else { "termination" }), + receipts: list("receipts"), + records: list("records"), + outcome: Ok(Value::Null), + }; + let got = outcome_of(&vec); + let ok = match (v["outcome"].as_str(), &got) { + (Some("accept"), Ok(f)) => *f == v["facts"], + (Some("refuse"), Err((p, r))) => v["reason"] == r.code() && v["place"] == p.as_str(), + _ => false, + }; + if !ok { + fails.push(format!("{name}: got {got:?}")); + } + } + fails +} diff --git a/wai/wai-rs/src/stream_energy/tests.rs b/wai/wai-rs/src/stream_energy/tests.rs new file mode 100644 index 000000000..7d75df3a4 --- /dev/null +++ b/wai/wai-rs/src/stream_energy/tests.rs @@ -0,0 +1,113 @@ +use super::*; +use crate::display_caps::transfer; + +fn key(i: u8) -> SigningKey { + SigningKey::from_bytes(&[i; 32]) +} + +const HD: Rendition = Rendition { width: 1920, height: 1080, frame_rate_mhz: 25_000, bit_depth: 8, transfer: transfer::SDR }; + +fn occ(ppm: u32) -> EnergyProvenance { + EnergyProvenance::on_chip_counter(Uncertainty::new(ppm, 2_000_000).unwrap(), CounterFiltering::Unknown).unwrap() +} + +fn rec(role: u8, joules: u64, class: Option, cov: u8) -> HopRecord { + HopRecord { + role, + hop: [0; 32], + segment: [7; 32], + index: 3, + stream: if role >= role::DECODE { [9; 32] } else { [0; 32] }, + deliveries: 1, + joules, + class, + coverage: cov, + profile: if role == role::DECODE { 1 } else { 0 }, + fabrics: if role == role::DECODE { fabric::CPU } else { 0 }, + rendition: HD, + duration_us: 2_000_000, + basis: None, + panel: None, + sig: [0; 64], + } +} + +#[test] +fn a_record_round_trips_and_its_signature_covers_every_byte() { + let r = rec(role::DECODE, 500_000, Some(occ(20_000)), coverage::WHOLE).sign(&key(1)); + let b = r.to_bytes(); + assert_eq!(HopRecord::parse(&b), Ok(r.clone())); + for i in [5, 40, 120, b.len() - 70] { + let mut x = b.clone(); + x[i] ^= 0x10; + assert!(HopRecord::parse(&x).is_err(), "byte {i}"); + } + assert_eq!(given_digest(&b), r.digest()); +} + +#[test] +fn the_declared_power_rounds_half_up() { + assert_eq!(Basis { power_mw: 1, time_us: 500, source: 3 }.joules(), 1, "0.5 µJ rounds up"); + assert_eq!(Basis { power_mw: 1, time_us: 499, source: 3 }.joules(), 0); + assert_eq!(Basis { power_mw: 98_000, time_us: 2_000_000, source: 1 }.joules(), 196_000_000, "98 W for 2 s is 196 J"); +} + +#[test] +#[allow(deprecated)] +fn the_legacy_class_is_refused_before_anything_else() { + let r = rec(role::RELAY, 900, Some(EnergyProvenance::HwShunt), coverage::WHOLE).sign(&key(2)); + assert_eq!(HopRecord::parse(&r.to_bytes()), Err(Reason::LegacyClass)); +} + +#[test] +fn a_hardware_decode_on_the_media_engine_is_a_lower_bound() { + let mut r = rec(role::DECODE, 58_000, Some(occ(52_000)), coverage::WHOLE); + r.fabrics = fabric::CPU | fabric::MEDIA; + assert_eq!(r.clone().sign(&key(3)).rules(), Err(Reason::BoundOverstated)); + r.coverage = coverage::PARTIAL; + let r = r.sign(&key(3)); + assert_eq!(HopRecord::parse(&r.to_bytes()).map(|x| x.coverage), Ok(coverage::PARTIAL)); +} + +#[test] +fn an_estimate_needs_its_basis_and_a_display_is_always_one() { + let bare = rec(role::ORIGIN, 3_000, Some(EnergyProvenance::Estimator), coverage::WHOLE); + assert_eq!(bare.rules(), Err(Reason::BasisInvalid)); + let mut with = bare.clone(); + with.basis = Some(Basis { power_mw: 3, time_us: 1_000_000, source: 3 }); + assert_eq!(with.rules(), Ok(())); + let mut counter_display = rec(role::DISPLAY, 196_000_000, Some(occ(30_000)), coverage::WHOLE); + counter_display.panel = Some(Panel { class: 1, display: Display { width: 3840, height: 2160, refresh_mhz: 60_000, bit_depth: 10, transfers: 7, diagonal_mm: 0, distance_mm: 0 }, brightness_ppm: 0 }); + assert_eq!(counter_display.rules(), Err(Reason::BasisInvalid)); +} + +/// The delivery sum is labelled with its weakest class, never its strongest, and is +/// `Partial` whenever a part is unmetered or a lower bound. +#[test] +fn a_sum_reads_at_its_weakest_class() { + let origin = rec(role::ORIGIN, 3_000, Some(EnergyProvenance::ModelBased), coverage::WHOLE); + let relay = rec(role::RELAY, 900, Some(occ(40_000)), coverage::WHOLE); + let decode = rec(role::DECODE, 660_000, Some(occ(19_000)), coverage::WHOLE); + let all = [origin.clone(), relay.clone(), decode.clone()].map(|r| r.sign(&key(4))); + let r = SegmentReceipt::over([9; 32], [7; 32], 3, &all); + assert_eq!(r.delivery, Sum { joules: 663_900, class: 2, coverage: coverage::WHOLE }); + let unmetered_relay = rec(role::RELAY, 0, None, coverage::NONE); + let part = [origin.clone(), unmetered_relay, decode.clone()].map(|r| r.sign(&key(4))); + let r = SegmentReceipt::over([9; 32], [7; 32], 3, &part); + assert_eq!((r.delivery.joules, r.delivery.coverage, r.unmetered), (663_000, coverage::PARTIAL, 1)); + let no_origin = [relay, decode].map(|r| r.sign(&key(4))); + assert_eq!(SegmentReceipt::over([9; 32], [7; 32], 3, &no_origin).delivery.coverage, coverage::PARTIAL, "no origin figure: not the whole delivery"); +} + +#[test] +fn a_share_divides_by_deliveries_and_drops_the_remainder() { + let mut origin = rec(role::ORIGIN, 5_000_003, Some(EnergyProvenance::ModelBased), coverage::WHOLE); + origin.deliveries = 1_000; + assert_eq!(origin.share(), 5_000); +} + +#[test] +fn every_reason_has_a_distinct_code() { + let codes: std::collections::BTreeSet<&str> = Reason::ALL.iter().map(|r| r.code()).collect(); + assert_eq!(codes.len(), Reason::ALL.len()); +} diff --git a/wai/wai-rs/tests/display_caps.rs b/wai/wai-rs/tests/display_caps.rs new file mode 100644 index 000000000..2141bb4a8 --- /dev/null +++ b/wai/wai-rs/tests/display_caps.rs @@ -0,0 +1,42 @@ +//! Display capability (extensions/capability-constraints.md §6): the committed corpus +//! `constraints-conformance/display/vectors.json` regenerates byte for byte, every vector +//! and refusal gets the outcome it states, and the cases §6.5 names are in it. + +use std::path::PathBuf; +use wai::display_caps::corpus; + +fn committed() -> String { + let p = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../constraints-conformance/display/vectors.json"); + std::fs::read_to_string(&p).unwrap_or_else(|e| panic!("{}: {e}", p.display())) +} + +#[test] +fn the_committed_corpus_regenerates() { + assert!(committed() == corpus::generate(), "constraints-conformance/display/vectors.json differs from `wai_display_vectors gen`"); +} + +#[test] +fn every_vector_gets_its_stated_outcome() { + let fails = corpus::verify(&committed()); + assert!(fails.is_empty(), "{}", fails.join("\n")); +} + +#[test] +fn the_corpus_shows_each_bit_and_the_fallback() { + let doc: serde_json::Value = serde_json::from_str(&committed()).unwrap(); + let vs = doc["vectors"].as_array().unwrap(); + let get = |n: &str| vs.iter().find(|v| v["name"] == n).unwrap_or_else(|| panic!("no vector {n}")); + let mut bits = std::collections::BTreeSet::new(); + for v in vs { + for r in v["renditions"].as_array().unwrap() { + for b in r["above"].as_array().unwrap() { + bits.insert(b.as_str().unwrap().to_string()); + } + } + } + assert_eq!(bits.into_iter().collect::>(), ["acuity", "depth", "rate", "size", "transfer"]); + assert_eq!(get("tv_4k_hdr_near")["selected"]["index"], 0, "a near 4K HDR panel takes the top rung"); + assert_eq!(get("monitor_sdr_offered_hdr_only")["selected"]["within"], false, "nothing within: the first pickable, reported above"); + assert!(get("nothing_pickable")["selected"].is_null()); + assert_eq!(get("phone_portrait_hdr_no_distance")["selected"]["index"], 3, "the sides compared in the orientation that fits"); +} diff --git a/wai/wai-rs/tests/stream_energy.rs b/wai/wai-rs/tests/stream_energy.rs new file mode 100644 index 000000000..39a11574e --- /dev/null +++ b/wai/wai-rs/tests/stream_energy.rs @@ -0,0 +1,78 @@ +//! `wai.stream.energy` (extensions/stream-energy.md): the committed corpus +//! `energy-conformance/stream/vectors.json` regenerates byte for byte from its fixed seeds, +//! every vector in it gets the outcome it states, every reason the extension adds refuses a +//! vector, the accepted vectors are the cases §8 names, and §7 lists exactly the reasons the +//! reference reports. +#![cfg(feature = "stream_energy")] + +use std::collections::BTreeSet; +use std::path::PathBuf; +use wai::stream_energy::{corpus, Reason}; + +fn read(p: &str) -> String { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("..").join(p); + std::fs::read_to_string(&path).unwrap_or_else(|e| panic!("{p}: {e}")) +} + +fn committed() -> String { + read("energy-conformance/stream/vectors.json") +} + +#[test] +fn the_committed_corpus_regenerates_from_its_seeds() { + assert!(committed() == corpus::generate(), "energy-conformance/stream/vectors.json differs from `wai_stream_energy_vectors gen`"); +} + +#[test] +fn every_vector_gets_its_stated_outcome() { + let fails = corpus::verify(&committed()); + assert!(fails.is_empty(), "{}", fails.join("\n")); +} + +#[test] +fn the_corpus_covers_every_reason_and_case() { + let doc: serde_json::Value = serde_json::from_str(&committed()).unwrap(); + let vs = doc["vectors"].as_array().unwrap(); + let seen: BTreeSet<&str> = vs.iter().filter_map(|v| v["reason"].as_str()).collect(); + for r in Reason::ALL { + assert!(seen.contains(r.code()), "nothing in the corpus is refused {r}"); + } + for r in ["truncated", "malformed", "unknown_version", "bad_signature"] { + assert!(seen.contains(r), "nothing in the corpus is refused {r}"); + } + let get = |n: &str| vs.iter().find(|v| v["name"] == n).unwrap_or_else(|| panic!("no vector {n}")); + let facts = |n: &str| get(n)["facts"].clone(); + assert_eq!(facts("four_hops_metered")["delivery"]["coverage"], "Whole"); + assert_eq!(facts("four_hops_metered")["delivery"]["class"], "ModelBased", "the weakest class among the parts, not the strongest"); + assert_eq!(facts("four_hops_metered")["display"]["class"], "Estimator"); + assert_eq!(facts("media_engine_lower_bound")["delivery"]["coverage"], "Partial", "a media-engine decode is a lower bound"); + assert_eq!(facts("relay_unmetered")["unmetered"], 1); + assert_eq!(facts("relay_unmetered")["delivery"]["coverage"], "Partial"); + assert_eq!(facts("origin_shared")["shares"][0]["share"], 5_000); + assert_eq!(facts("phone_estimator")["delivery"]["class"], "Estimator"); + assert_eq!(facts("display_unmetered")["display"]["class"], "unmetered"); + assert_eq!(facts("above_panel")["panel"]["verdict"], "above"); + assert_eq!(facts("above_panel")["panel"]["above"], serde_json::json!(["size", "depth", "transfer"])); + assert_eq!(facts("above_acuity")["panel"]["above"], serde_json::json!(["acuity"])); + assert_eq!(facts("four_hops_metered")["panel"]["verdict"], "within"); + for r in ["hidden", "occluded", "display-off", "autoplay-off", "idle"] { + let n = format!("termination_{}", r.replace('-', "_")); + assert_eq!(get(&n)["outcome"], "accept", "{n}"); + assert_eq!(get(&n)["facts"]["reason"], r, "{n}"); + } + let t = facts("termination_hidden"); + let display_held = &t["held"][3]["totals"][0]["joules_micro"]; + let display_spent = &t["spent"][3]["totals"][0]["joules_micro"]; + assert!(display_held.as_u64().unwrap() < display_spent.as_u64().unwrap(), "held covers the segments from from_index only"); +} + +/// §7 of the extension lists exactly the codes `Reason::ALL` has, each once, in order. +#[test] +fn the_extension_lists_the_reasons() { + let text = read("extensions/stream-energy.md"); + let at = text.find("\n## 7. Reasons").expect("a §7"); + let end = text[at + 1..].find("\n## ").map_or(text.len(), |e| at + 1 + e); + let listed: Vec = text[at..end].lines().filter(|l| l.starts_with("| `")).filter_map(|l| l.split('`').nth(1).map(String::from)).collect(); + let want: Vec = Reason::ALL.iter().map(|r| r.code().to_string()).collect(); + assert_eq!(listed, want, "§7's table and Reason::ALL differ"); +} diff --git a/wai/wai-web/demo/world.js b/wai/wai-web/demo/world.js index 864f527d3..8c3490a88 100644 --- a/wai/wai-web/demo/world.js +++ b/wai/wai-web/demo/world.js @@ -11,7 +11,7 @@ // identical state hash because the math does, not because a server // says so. -import init, { WorldSink, Actor, op_lamport } from './pkg/wai_web.js'; +import init, { WorldSink, Actor, op_lamport, energy_text } from './pkg/wai_web.js'; const WORLD = { xMin: -9, xMax: 9, yMin: -1, yMax: 11 }; // ortho camera box const TICK_HZ = 60; @@ -739,9 +739,10 @@ function chainHead(worldHash) { // Honest energy figure: work_steps is the EXACT signed quantity; joules // is an ESTIMATE from measured wall-clock compute at a declared power -// coefficient (a browser can't read RAPL — native sinks supply real -// joules via the sink-metering path). Labeled "est" so it's never -// mistaken for a measurement. +// coefficient (a browser reads no energy counter — native sinks supply +// measured joules through the sink-metering path). The receipt seals it +// `Estimator`, and the page shows it through `energy_text`, which writes +// the unmetered marker as "unmetered", never as zero joules. const WATTS = 4.0; // declared coefficient for the estimate let computeMs = 0; // accumulated wall-clock in the deterministic step loop @@ -765,10 +766,10 @@ ui.seal.addEventListener('click', () => { // Advance the world's chain head. localStorage.setItem(CHAIN_KEY(worldHash), JSON.stringify({ receipt_hash: sealed.receipt_hash(), group_id: Number(groupId) })); - const mJ = (Number(joulesMicro) / 1000).toFixed(1); + const energy = energy_text(joulesMicro, joulesMicro > 0n ? 'Estimator' : '', false); ui.receipt.textContent = `chain #${groupId}${head ? ' ↳linked' : ''} · root ${sealed.root_hash().slice(0, 10)}… · ` - + `${sealed.work_steps()} steps · ≈${mJ} mJ est@${WATTS}W · ${reverified ? '✓ re-verified' : '✗ FAILED'}`; + + `${sealed.work_steps()} steps · ${energy}${joulesMicro > 0n ? ` (compute time × a declared ${WATTS} W)` : ''} · ${reverified ? '✓ re-verified' : '✗ FAILED'}`; } catch (e) { ui.receipt.textContent = '✗ ' + (e.message || e); } diff --git a/wai/wai-web/src/lib.rs b/wai/wai-web/src/lib.rs index 74a2df2b3..c31f07d5d 100644 --- a/wai/wai-web/src/lib.rs +++ b/wai/wai-web/src/lib.rs @@ -215,6 +215,20 @@ pub fn known_capabilities() -> Box<[JsValue]> { ].iter().map(|s| JsValue::from_str(s)).collect() } +/// The text a page shows for an energy figure (`wai::energy_class::Presented`): a figure +/// of `joules_micro` with the class `class_label` (`""` for none), `partial` when it is a +/// lower bound. The unmetered marker reads `unmetered`, never zero joules; a class beside a +/// zero figure, or a label this sink does not know, is an error, never a number. +#[wasm_bindgen] +pub fn energy_text(joules_micro: u64, class_label: &str, partial: bool) -> Result { + use wai::energy_class::{EnergyProvenance, Presented}; + let class = match class_label { + "" => None, + l => Some(EnergyProvenance::from_label(l).map_err(|e| JsError::new(&format!("{l}: {e}")))?), + }; + Presented::of(joules_micro, class.as_ref(), partial).map(|p| p.to_string()).map_err(|e| JsError::new(&e.to_string())) +} + /// Whether `cap` is a registered **candidate** capability: registered, but with no /// payload format pinned, so an encoder MUST NOT emit it and a sink treats it as /// unsupported (SPEC §5, *Candidate capabilities*). The registry's own predicate, diff --git a/wai/wai-web/src/world.rs b/wai/wai-web/src/world.rs index 820a1636b..d6925f0fb 100644 --- a/wai/wai-web/src/world.rs +++ b/wai/wai-web/src/world.rs @@ -391,6 +391,14 @@ fn seal_with( let receipt = SessionReceipt::build( publisher, signer_id, wh, group_id, &c.ops, &checkpoints, joules_micro, work, parent, ); + // The page's figure is wall-clock time at a declared power, a constant nobody + // calibrated on this device: an `Estimator` (energy-measurement §2), labelled so that + // no reader takes it for a measurement. Zero stays the unmetered marker, unlabelled. + let receipt = if joules_micro > 0 { + receipt.with_energy_class(publisher, wai::energy_class::EnergyProvenance::Estimator).map_err(js_err)? + } else { + receipt + }; Ok(SealedSession { replay: c.to_bytes(), @@ -416,8 +424,8 @@ impl WorldSink { /// `wai.world.replay` plus its §8 receipt, signed by `publisher`. /// /// `joules_micro` is **carried, never invented** — the page passes a - /// measured wall-clock estimate (with a declared coefficient) or `0` - /// when unmetered. `group_id` + `parent_hex` chain this seal onto the + /// wall-clock estimate at a declared power, sealed `Estimator`, or `0` + /// when unmetered, sealed as the unmetered marker. `group_id` + `parent_hex` chain this seal onto the /// world's prior receipt (empty `parent_hex` starts a fresh chain). /// The exact deterministic work figure is computed here, not passed. pub fn seal_session( @@ -567,3 +575,32 @@ fn kin_scalar(_n: &KinNode) -> f32 { // Silence the unused import when only some sims produce these types. #[allow(unused)] fn _types(_b: &BalNode) {} + +#[cfg(test)] +mod tests { + use super::*; + + const VECTOR: &[u8] = include_bytes!("../../world-conformance/vectors/basic_kinematics.wwld"); + + fn sealed(joules_micro: u64) -> SealedSession { + let mut sink = WorldSink::new(VECTOR).ok().expect("the committed vector opens"); + let t = sink.final_tick(); + sink.advance_to(t).ok().expect("advances"); + sink.seal_session(&[7u8; 32], "did:example:wai-world", joules_micro, 0, "").ok().expect("seals") + } + + /// The page's estimate is sealed `Estimator`, and a zero is the unmetered marker, + /// unlabelled (energy-measurement §2, §2.8): no seal of this demo states a figure with + /// no class, and none states zero joules as a figure. + #[test] + fn the_demo_seals_its_estimate_as_an_estimate_and_zero_as_unmetered() { + let est: serde_json::Value = serde_json::from_str(&sealed(4_000).receipt_json).unwrap(); + assert_eq!(est["energy_provenance"], "Estimator"); + assert_eq!(est["joules_micro"], 4_000); + let unmetered: serde_json::Value = serde_json::from_str(&sealed(0).receipt_json).unwrap(); + assert!(unmetered.get("energy_provenance").is_none()); + assert_eq!(unmetered["joules_micro"], 0); + assert_eq!(crate::energy_text(0, "", false).ok().unwrap(), "unmetered"); + assert_eq!(crate::energy_text(4_000, "Estimator", false).ok().unwrap(), "4.000 mJ, Estimator"); + } +}