Some checks failed
standards workspaces build + test / jouleclaw-rs (pull_request) Successful in 2m45s
standards workspaces build + test / aac-rs (pull_request) Successful in 1m32s
no-vanity-metrics / Scan committed Markdown for vanity metrics (pull_request) Has been cancelled
no-vanity-metrics / WAI public text names no comparison (pull_request) Has been cancelled
no-vanity-metrics / WAI public text names no company or product (pull_request) Has been cancelled
standards workspaces build + test / arl-rs (pull_request) Has been cancelled
standards workspaces build + test / eoc-rs (pull_request) Has been cancelled
standards workspaces build + test / jcp-rs (pull_request) Has been cancelled
standards workspaces build + test / joule-ui-rs (pull_request) Has been cancelled
standards workspaces build + test / joulecontract-rs (pull_request) Has been cancelled
standards workspaces build + test / jouledesk-rs (pull_request) Has been cancelled
standards workspaces build + test / joulehook-rs (pull_request) Has been cancelled
standards workspaces build + test / map-rs (pull_request) Has been cancelled
standards workspaces build + test / mesh-rs (pull_request) Has been cancelled
standards workspaces build + test / openpay (pull_request) Has been cancelled
standards workspaces build + test / proof-rs (pull_request) Has been cancelled
standards workspaces build + test / sandbox-rs (pull_request) Has been cancelled
standards workspaces build + test / sense-rs (pull_request) Has been cancelled
standards workspaces build + test / smart-byte-rs (pull_request) Has been cancelled
standards workspaces build + test / macOS energy backend (jcp-energy) (pull_request) Has been cancelled
standards workspaces build + test / joule-code-rs (pull_request) Has been cancelled
§5.3–5.6 stated rules and nothing emitted them. The types did not even derive `Serialize`, so the profile could not cross a wire, let alone be checked by anyone else — a shape nothing emits is a proposal, which is the same gap the C2PA emitter closed for `wai` and the negative-vector replay closed for `joulecontract`. So: serde on the trace and dynamics types, a `gen_trace_vectors` binary writing `jcp/conformance/v1/energy_trace.json`, and a test that reads those bytes back from disk — the same bytes a third party would — and checks the reference implementation reproduces every recorded verdict. The pack carries the refusals, not just the acceptances, because the refusals are the load-bearing half. An implementation that admits an unbound outcome, a double-counted activity, an over-accounted total or a frozen counter has failed in the direction that flatters, which is the direction nobody notices: - conservation: the named residual, the provenance/coverage floor, and all three refusals (`Unbound`, `DuplicateActivity`, `OverAccounted`) - budget: 0.5 % over a one-joule grant is 5000 ppm against a 1 ppm floor; the same floor over `Estimator` windows is exact and physically meaningless; a ratio against a zero grant is not a figure - physical: refuted above the burst envelope, refuted **below** the idle floor (the frozen-counter shape), `NotRefuted` which is not verification, and a zero-duration window as unboundable rather than clean - shape: a total balanced by padding does not read as sustained; character is scale-invariant at 37× the magnitude; under three windows it is unresolvable - dynamism: an undeclared baseline makes no comparison, a coarser baseline does not apply to finer windows, and a cause explains only with evidence attached Falsified rather than assumed: flipping one recorded residual by a single microjoule — 250000 to 250001 — fails the replay naming the case and the field. The pack was then regenerated and the value confirmed back at 250000. Two anti-vacuity guards, because this file has been written three times this session and twice the first version could not fail: the pack path is asserted rather than skipped, and a test requires every declared section plus at least 20 replayed cases, so a wrong path or a renamed key fails instead of passing having checked nothing. Verified: 49 tests in `jcp-efficiency` — 43 unit, 6 pack. Co-Authored-By: Claude Opus 5 <[email protected]>
1003 lines
25 KiB
JSON
1003 lines
25 KiB
JSON
{
|
|
"budget": {
|
|
"negative": [
|
|
{
|
|
"expected": {
|
|
"detectable_floor_ppm": null,
|
|
"drift_ppm": null
|
|
},
|
|
"input": {
|
|
"accounted_uj": 5,
|
|
"granted_uj": 0
|
|
},
|
|
"note": "a ratio against a zero grant is not a figure"
|
|
}
|
|
],
|
|
"positive": [
|
|
{
|
|
"expected": {
|
|
"detectable_floor_ppm": 1,
|
|
"drift_is_resolvable": true,
|
|
"drift_ppm": 5000,
|
|
"floor_is_physical": true
|
|
},
|
|
"input": {
|
|
"accounted_uj": 1005000,
|
|
"granted_uj": 1000000,
|
|
"provenance_floor": "HwShunt"
|
|
},
|
|
"note": "half a percent over a one-joule grant is 5000 ppm, floor 1 ppm"
|
|
},
|
|
{
|
|
"expected": {
|
|
"detectable_floor_ppm": 1,
|
|
"drift_ppm": 5,
|
|
"floor_is_physical": false
|
|
},
|
|
"input": {
|
|
"accounted_uj": 1000005,
|
|
"granted_uj": 1000000,
|
|
"provenance_floor": "Estimator"
|
|
},
|
|
"note": "the same floor over modelled windows is exact and meaningless"
|
|
},
|
|
{
|
|
"expected": {
|
|
"drift_ppm": -700000
|
|
},
|
|
"input": {
|
|
"accounted_uj": 300000,
|
|
"granted_uj": 1000000,
|
|
"provenance_floor": "HwShunt"
|
|
},
|
|
"note": "underspend is signed, not clamped: allowed joules nothing claimed"
|
|
}
|
|
]
|
|
},
|
|
"conservation": {
|
|
"negative": [
|
|
{
|
|
"expected": {
|
|
"error": "Unbound"
|
|
},
|
|
"input": {
|
|
"activities": [],
|
|
"completed": true,
|
|
"total": {
|
|
"estimated_uj": 1000000,
|
|
"measured_uj": 1000000,
|
|
"provenance": "HwShunt"
|
|
}
|
|
},
|
|
"note": "an outcome traceable to nothing is refused"
|
|
},
|
|
{
|
|
"expected": {
|
|
"error": "DuplicateActivity"
|
|
},
|
|
"input": {
|
|
"activities": [
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
131,
|
|
254,
|
|
130,
|
|
87,
|
|
58,
|
|
181,
|
|
54,
|
|
207,
|
|
32,
|
|
202,
|
|
241,
|
|
199,
|
|
142,
|
|
152,
|
|
1,
|
|
167,
|
|
222,
|
|
190,
|
|
185,
|
|
106,
|
|
127,
|
|
54,
|
|
150,
|
|
55,
|
|
244,
|
|
56,
|
|
187,
|
|
18,
|
|
192,
|
|
232,
|
|
2,
|
|
31
|
|
]
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
131,
|
|
254,
|
|
130,
|
|
87,
|
|
58,
|
|
181,
|
|
54,
|
|
207,
|
|
32,
|
|
202,
|
|
241,
|
|
199,
|
|
142,
|
|
152,
|
|
1,
|
|
167,
|
|
222,
|
|
190,
|
|
185,
|
|
106,
|
|
127,
|
|
54,
|
|
150,
|
|
55,
|
|
244,
|
|
56,
|
|
187,
|
|
18,
|
|
192,
|
|
232,
|
|
2,
|
|
31
|
|
]
|
|
}
|
|
],
|
|
"completed": true,
|
|
"total": {
|
|
"estimated_uj": 1000,
|
|
"measured_uj": 1000,
|
|
"provenance": "HwShunt"
|
|
}
|
|
},
|
|
"note": "a double-bound activity is refused before the sum"
|
|
},
|
|
{
|
|
"expected": {
|
|
"accounted_uj": 140,
|
|
"error": "OverAccounted",
|
|
"total_uj": 100
|
|
},
|
|
"input": {
|
|
"activities": [
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 90,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
145,
|
|
164,
|
|
228,
|
|
185,
|
|
68,
|
|
127,
|
|
194,
|
|
173,
|
|
193,
|
|
139,
|
|
176,
|
|
74,
|
|
18,
|
|
11,
|
|
104,
|
|
118,
|
|
90,
|
|
128,
|
|
13,
|
|
105,
|
|
45,
|
|
112,
|
|
99,
|
|
117,
|
|
0,
|
|
80,
|
|
196,
|
|
87,
|
|
158,
|
|
232,
|
|
254,
|
|
67
|
|
]
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 50,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
214,
|
|
244,
|
|
83,
|
|
42,
|
|
36,
|
|
238,
|
|
178,
|
|
159,
|
|
163,
|
|
59,
|
|
43,
|
|
88,
|
|
40,
|
|
16,
|
|
8,
|
|
50,
|
|
57,
|
|
110,
|
|
181,
|
|
174,
|
|
173,
|
|
88,
|
|
149,
|
|
104,
|
|
17,
|
|
233,
|
|
101,
|
|
109,
|
|
180,
|
|
224,
|
|
255,
|
|
116
|
|
]
|
|
}
|
|
],
|
|
"completed": true,
|
|
"total": {
|
|
"estimated_uj": 100,
|
|
"measured_uj": 100,
|
|
"provenance": "HwShunt"
|
|
}
|
|
},
|
|
"note": "activities claiming more than the outcome are refused"
|
|
}
|
|
],
|
|
"positive": [
|
|
{
|
|
"expected": {
|
|
"accounted_uj": 750000,
|
|
"coverage_floor": "Whole",
|
|
"provenance_floor": "HwShunt",
|
|
"residual_uj": 250000,
|
|
"unattributed_ppm": 250000
|
|
},
|
|
"input": {
|
|
"activities": [
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 400000,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
145,
|
|
164,
|
|
228,
|
|
185,
|
|
68,
|
|
127,
|
|
194,
|
|
173,
|
|
193,
|
|
139,
|
|
176,
|
|
74,
|
|
18,
|
|
11,
|
|
104,
|
|
118,
|
|
90,
|
|
128,
|
|
13,
|
|
105,
|
|
45,
|
|
112,
|
|
99,
|
|
117,
|
|
0,
|
|
80,
|
|
196,
|
|
87,
|
|
158,
|
|
232,
|
|
254,
|
|
67
|
|
]
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 350000,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
214,
|
|
244,
|
|
83,
|
|
42,
|
|
36,
|
|
238,
|
|
178,
|
|
159,
|
|
163,
|
|
59,
|
|
43,
|
|
88,
|
|
40,
|
|
16,
|
|
8,
|
|
50,
|
|
57,
|
|
110,
|
|
181,
|
|
174,
|
|
173,
|
|
88,
|
|
149,
|
|
104,
|
|
17,
|
|
233,
|
|
101,
|
|
109,
|
|
180,
|
|
224,
|
|
255,
|
|
116
|
|
]
|
|
}
|
|
],
|
|
"completed": true,
|
|
"total": {
|
|
"estimated_uj": 1000000,
|
|
"measured_uj": 1000000,
|
|
"provenance": "HwShunt"
|
|
}
|
|
},
|
|
"note": "the residual names what no operation claims"
|
|
},
|
|
{
|
|
"expected": {
|
|
"accounted_uj": 600,
|
|
"coverage_floor": "Partial",
|
|
"provenance_floor": "Estimator",
|
|
"residual_uj": 400
|
|
},
|
|
"input": {
|
|
"activities": [
|
|
{
|
|
"coverage": "Whole",
|
|
"joules_uj": 300,
|
|
"provenance": "HwShunt",
|
|
"receipt": [
|
|
145,
|
|
164,
|
|
228,
|
|
185,
|
|
68,
|
|
127,
|
|
194,
|
|
173,
|
|
193,
|
|
139,
|
|
176,
|
|
74,
|
|
18,
|
|
11,
|
|
104,
|
|
118,
|
|
90,
|
|
128,
|
|
13,
|
|
105,
|
|
45,
|
|
112,
|
|
99,
|
|
117,
|
|
0,
|
|
80,
|
|
196,
|
|
87,
|
|
158,
|
|
232,
|
|
254,
|
|
67
|
|
]
|
|
},
|
|
{
|
|
"coverage": "Partial",
|
|
"joules_uj": 300,
|
|
"provenance": "Estimator",
|
|
"receipt": [
|
|
214,
|
|
244,
|
|
83,
|
|
42,
|
|
36,
|
|
238,
|
|
178,
|
|
159,
|
|
163,
|
|
59,
|
|
43,
|
|
88,
|
|
40,
|
|
16,
|
|
8,
|
|
50,
|
|
57,
|
|
110,
|
|
181,
|
|
174,
|
|
173,
|
|
88,
|
|
149,
|
|
104,
|
|
17,
|
|
233,
|
|
101,
|
|
109,
|
|
180,
|
|
224,
|
|
255,
|
|
116
|
|
]
|
|
}
|
|
],
|
|
"completed": true,
|
|
"total": {
|
|
"estimated_uj": 1000,
|
|
"measured_uj": 1000,
|
|
"provenance": "HwShunt"
|
|
}
|
|
},
|
|
"note": "provenance and coverage take the floor, never the average"
|
|
}
|
|
]
|
|
},
|
|
"dynamism": {
|
|
"cases": [
|
|
{
|
|
"expected": {
|
|
"deviation": "BaselineInapplicable"
|
|
},
|
|
"input": {
|
|
"baseline": {
|
|
"band_uj": 100,
|
|
"declared_applicable": false,
|
|
"expected_uj": 1000,
|
|
"fit_window_ns": 1000,
|
|
"source": "harness:run-1"
|
|
},
|
|
"window": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 5000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
}
|
|
},
|
|
"note": "an undeclared baseline makes no comparison"
|
|
},
|
|
{
|
|
"expected": {
|
|
"deviation": "BaselineInapplicable"
|
|
},
|
|
"input": {
|
|
"baseline": {
|
|
"band_uj": 100,
|
|
"declared_applicable": true,
|
|
"expected_uj": 1000,
|
|
"fit_window_ns": 10000000,
|
|
"source": "harness:coarse"
|
|
},
|
|
"window": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 5000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
}
|
|
},
|
|
"note": "a baseline fit coarser than the trace samples does not apply"
|
|
},
|
|
{
|
|
"expected": {
|
|
"deviation": "Unexplained",
|
|
"excess_uj": 4000
|
|
},
|
|
"input": {
|
|
"baseline": {
|
|
"band_uj": 100,
|
|
"declared_applicable": true,
|
|
"expected_uj": 1000,
|
|
"fit_window_ns": 1000,
|
|
"source": "harness:run-1"
|
|
},
|
|
"cause": null,
|
|
"window": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 5000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
}
|
|
},
|
|
"note": "outside the band with no evidenced cause stays unexplained"
|
|
},
|
|
{
|
|
"expected": {
|
|
"cause_token": "thermal_throttle",
|
|
"deviation": "Explained",
|
|
"evidence": "5bf7c3480486191c7a4765d7f463d0f30663489492c4d0eaab8d57749d2b2f1a",
|
|
"excess_uj": 4000
|
|
},
|
|
"input": {
|
|
"baseline": {
|
|
"band_uj": 100,
|
|
"declared_applicable": true,
|
|
"expected_uj": 1000,
|
|
"fit_window_ns": 1000,
|
|
"source": "harness:run-1"
|
|
},
|
|
"cause": {
|
|
"ThermalThrottle": {
|
|
"reading": [
|
|
91,
|
|
247,
|
|
195,
|
|
72,
|
|
4,
|
|
134,
|
|
25,
|
|
28,
|
|
122,
|
|
71,
|
|
101,
|
|
215,
|
|
244,
|
|
99,
|
|
208,
|
|
243,
|
|
6,
|
|
99,
|
|
72,
|
|
148,
|
|
146,
|
|
196,
|
|
208,
|
|
234,
|
|
171,
|
|
141,
|
|
87,
|
|
116,
|
|
157,
|
|
43,
|
|
47,
|
|
26
|
|
]
|
|
}
|
|
},
|
|
"window": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 5000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
}
|
|
},
|
|
"note": "a cause with evidence explains; the token is the claim vocabulary"
|
|
}
|
|
],
|
|
"note": "there is no verdict of intent in this profile, by design"
|
|
},
|
|
"physical": {
|
|
"cases": [
|
|
{
|
|
"expected": {
|
|
"floor_uj": 400000,
|
|
"verdict": "RefutedBelow"
|
|
},
|
|
"input": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 400000000,
|
|
"joules_uj": 0,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
"note": "a frozen counter on a busy window is refuted from below"
|
|
},
|
|
{
|
|
"expected": {
|
|
"verdict": "RefutedAbove"
|
|
},
|
|
"input": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10000000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
"note": "a figure past the burst envelope is refuted from above"
|
|
},
|
|
{
|
|
"expected": {
|
|
"verdict": "NotRefuted"
|
|
},
|
|
"input": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 30000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
"note": "inside the envelope is NotRefuted — which is not verification"
|
|
},
|
|
{
|
|
"expected": {
|
|
"verdict": "Unboundable"
|
|
},
|
|
"input": {
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 0,
|
|
"joules_uj": 999,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
"note": "a zero-duration window is unboundable, not clean"
|
|
}
|
|
],
|
|
"envelope": {
|
|
"idle_floor_mw": 1000,
|
|
"peak_mw": 60000,
|
|
"source": "burst rating, deliberately permissive"
|
|
}
|
|
},
|
|
"profile": "energy_trace/1",
|
|
"shape": {
|
|
"cases": [
|
|
{
|
|
"expected": {
|
|
"verdict": "Inconsistent"
|
|
},
|
|
"input": {
|
|
"declared": "Sustained",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 300000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 2000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 3000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 4000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 10,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 5000000
|
|
}
|
|
]
|
|
},
|
|
"note": "a total balanced by padding does not read as sustained"
|
|
},
|
|
{
|
|
"expected": {
|
|
"shape": "Sustained",
|
|
"verdict": "Consistent"
|
|
},
|
|
"input": {
|
|
"declared": "Sustained",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 37000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 37740,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 36260,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 2000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 37370,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 3000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 36630,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 4000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 37000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 5000000
|
|
}
|
|
]
|
|
},
|
|
"note": "character is scale-invariant: same shape at 37x the magnitude"
|
|
},
|
|
{
|
|
"expected": {
|
|
"shape": "Sustained",
|
|
"verdict": "Consistent"
|
|
},
|
|
"input": {
|
|
"declared": "Sustained",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1020,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 980,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 2000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1010,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 3000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 990,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 4000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 5000000
|
|
}
|
|
]
|
|
},
|
|
"note": "flat is sustained"
|
|
},
|
|
{
|
|
"expected": {
|
|
"shape": "Ramping",
|
|
"verdict": "Consistent"
|
|
},
|
|
"input": {
|
|
"declared": "Ramping",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 400,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 700,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 2000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 3000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1100,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 4000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1120,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 5000000
|
|
}
|
|
]
|
|
},
|
|
"note": "rising then settling is a ramp"
|
|
},
|
|
{
|
|
"expected": {
|
|
"shape": "Bursty",
|
|
"verdict": "Consistent"
|
|
},
|
|
"input": {
|
|
"declared": "Bursty",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 2000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 2000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 2000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 3000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 100,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 4000000
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 2000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 5000000
|
|
}
|
|
]
|
|
},
|
|
"note": "alternating is bursty"
|
|
},
|
|
{
|
|
"expected": {
|
|
"verdict": "Unresolvable",
|
|
"windows": 2
|
|
},
|
|
"input": {
|
|
"declared": "Sustained",
|
|
"windows": [
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 0
|
|
},
|
|
{
|
|
"coverage": "Whole",
|
|
"declared_work": null,
|
|
"duration_ns": 1000000,
|
|
"joules_uj": 1000,
|
|
"provenance": "HwShunt",
|
|
"started_ns": 1000000
|
|
}
|
|
]
|
|
},
|
|
"note": "under three windows character is unresolvable, never consistent"
|
|
}
|
|
],
|
|
"idle_floor_uj": 100
|
|
},
|
|
"spec": "JCP v0.3 SPEC.md §5.3-5.6"
|
|
}
|