Repository navigation
Commit 2cea801
[green] derive fixed V4 SLOs by source ancestry
Turn the ADR-0037/ADR-0038 performance RED green without weakening it.
Bench (tests/firmware_tests/hil/_pble_bench.py):
- DERIVATION advances to the frozen replacement identifiers
fixed-profile-product-slo-esp3000-pico7000-v4 and
fixed-product-slo-64k-under-10s-6600-v3; the retired v0.5.1 schema-2
identity is frozen as V051_DERIVATION so historical policies keep
validating unchanged.
- derive_thresholds now yields the fixed product SLOs: reset-to-service
3000 ms on the four ESP profiles, 7000 ms on rpi-pico2-w, and the
uniform 6600 B/s PUT/GET floors (ceil_100(65536/10 s)); static and
heap arithmetic is untouched. derive_thresholds and
evaluate_thresholds accept an optional profile_id that must agree with
the build resource kind; the OI runner passes --profile through both.
Release tool (firmware/scripts/release_bundle.py):
- QUALIFICATION_DERIVATION_V4 joins the registry; V1-V3 stay frozen.
The ADR-0038 identities V060_SUPERSEDED_SOURCE_BOUNDARY (5620f2f) and
V060_ABANDONED_CANDIDATE_SOURCE (719b211) are exported.
- _qualification_derivation_for_source selects by the bound source
commit's git ancestry: a strict descendant of the boundary is the
replacement era (V4); the boundary and its ancestors keep the
historical version-routed derivation; unknown, unrelated, diverged, or
unprovable ancestry fails closed via git merge-base.
- _derived_qualification_thresholds accepts the selected derivation and
profile_id; the V4 branch applies the fixed SLOs, never baseline
extrema. Version routing without a bound checkout is unchanged for
every pre-0.6.0 era; a v0.6.0 policy without checkout context admits
both era shapes and is narrowed to the exact era wherever the source
checkout is known (_load_qualification_policy, assemble, HIL binding
against the committed policy).
- assemble_oi1_baseline and _validate_qualification_policy/-baseline
thread the ancestry-selected era end to end.
Policy (firmware/qualification/oi1-gates.json):
- Mechanically regenerated from the immutable retained a8be631 baseline
(sha256 8a7dbf32..., byte-identical) using the tool's own
_qualification_derivation_for_source + _derived_qualification_thresholds
+ _canonical_json_bytes: exactly 11 numeric fields change (Pico reset
3000 -> 7000, all ten PUT/GET floors -> 6600) plus the two derivation
identifiers. New identity: 5,015 bytes, sha256
b9b19ddc217598835185429d6d1f1da60bb3a504a447e32dcdeae15bf18bd0c5.
Full checkout revalidation (_load_qualification_policy) passes.
Witnessed green: test_oi1_profile_bench (78 OK), test_oi1_rp2_profile_bench
(15 OK), test_release_v060_contract (12 OK), the C3 policy pin in
test_target_runtime_contract, plus historical/bench/release/lifecycle/
finalization/lineage/no-leak/SPDX/sha-drift collateral all green. The
amended C3 NVS receipt RED (step 5) remains red for exactly its
missing-receipt reasons.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CAVghCmvKjF4BZFBUjAMwc
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>1 parent 51e9124 commit 2cea801
4 files changed
Lines changed: 289 additions & 53 deletions
File tree
- firmware
- qualification
- scripts
- tests/firmware_tests/hil
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
10 | | - | |
| 9 | + | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
29 | | - | |
| 29 | + | |
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
33 | | - | |
| 33 | + | |
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
| 73 | + | |
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
77 | | - | |
| 77 | + | |
78 | 78 | | |
79 | 79 | | |
80 | 80 | | |
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
95 | | - | |
| 95 | + | |
96 | 96 | | |
97 | 97 | | |
98 | 98 | | |
99 | | - | |
| 99 | + | |
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | | - | |
118 | | - | |
119 | | - | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
120 | 120 | | |
121 | 121 | | |
122 | 122 | | |
| |||
0 commit comments