Repository navigation
package: TRUST_STORE=1 on UCI products; releases refuse the test bundle key (#155 phase 2, L3) - #269
Merged
Merged
Conversation
JC-000
force-pushed
the
feat/p2-l3-policy
branch
from
October 1, 2026 19:43
f29f264 to
04af8b9
Compare
JC-000
force-pushed
the
feat/p2-l3-package
branch
from
October 1, 2026 19:43
309062d to
da127f4
Compare
JC-000
force-pushed
the
feat/p2-l3-policy
branch
from
October 6, 2026 02:35
04af8b9 to
d1bb592
Compare
JC-000
force-pushed
the
feat/p2-l3-package
branch
from
October 6, 2026 02:36
da127f4 to
402bc54
Compare
…t bundle key DECISIONS 11 (Q1): uci-onchip and uci-comb ship with the trust store; the signed bundle stays out of packages until a production key exists. DECISIONS 10 (adv-l4): build_prgs.sh builds every product with TRUST_RELEASE=1 (variant_make_args in _common.sh, recorded in build-info so verify_release.py rebuilds the same way). With TRUST_BUNDLE=1 that refuses the TEST-ONLY key twice: a parse-time $(error) on its 64 key bytes (a hand-relabelled IS_TEST_ONLY = 0 does not get through) and an .assert in trust_bundle.s on the flag. Without the bundle it changes no byte. tools/test_trust_release_guard.py pins all three layers. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ey path (adv-269)
1. The parse-time guard compares the key .inc's `$XX` tokens, so an .inc
that spells byte 0 as `234`, pads the count with a commented `$00` and
says IS_TEST_ONLY = 0 linked a release carrying the test key (PRG offset
5901). The link now runs tools/check_release_key.py under TRUST_RELEASE=1
TRUST_BUNDLE=1: the test key derived from its PEM (no .inc parsed) is
searched for in the whole PRG -- the comb cold image included (offset
47929) -- and the PRG is deleted on a hit. Red on the old head, refused
after; a non-test key still builds.
2. tools/test_trust_release_guard.py failed 2 of 20 controls in a fresh
checkout ("No rule to make target build/https_host.inc"): a dry run
skips the parse-time write. build/https_host.inc gets the same write as
a recipe, so `make -n` on a fresh tree answers (and still writes
nothing). The test now also pins the link-time check: 24/24, red with
the recipe line removed.
3. tools/trust_bundle.py documents the production-key path: key outside
the repo, `inc` for the public half + floor, TRUST_BUNDLE_KEY_INC=.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…sses it The fixed 240 s sat too close to the d64 load-and-boot on a loaded host: on master it failed 2 of 3 runs at 240 s and passed at 900 s with the ip65-onchip banner at 90 s; UCI banners swung 5-150 s. Default 600 s, VICE_BOOT_TIMEOUT still overrides it, and a failed boot check now prints the budget it used. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
JC-000
force-pushed
the
feat/p2-l3-policy
branch
from
October 6, 2026 17:39
d1bb592 to
011209b
Compare
JC-000
force-pushed
the
feat/p2-l3-package
branch
from
October 6, 2026 17:39
402bc54 to
8fdebe7
Compare
JC-000
added a commit
that referenced
this pull request
Oct 6, 2026
#211 is closed: the stretch-goal bullet, the wikipedia-stall bullet and the rig list no longer describe it as open (no replacement claim). "There is no trust store, no root CAs" is false for the UCI images (#268/#269) and the M3 demo; the chain-validation bullet keeps only the issuer skip. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#155 phase 2, L3 part 2. Stacked on the trust-policy PR (base
feat/p2-l3-policy).Merge order: #268 → #269 (base stays
feat/p2-l3-policyuntil #268 merges).uci-onchipanduci-combnow build withTRUST_STORE=1. The signed bundle stays out of packages until a production key exists.build_prgs.shbuilds every product withTRUST_RELEASE=1, viavariant_make_argsin_common.sh.verify_release.pyrebuilds identically.TRUST_BUNDLE=1, the TEST-ONLY key is refused three ways:$(error)on its 64 key bytes;.assertintrust_bundle.son the flag;tools/check_release_key.py. It derives the test key from its PEM, so no.incis parsed, and searches the whole PRG for it, the comb cold image included. On a hit it deletes the PRG..incthat spelled byte 0 in decimal and claimedIS_TEST_ONLY = 0linked a release carrying the test key. It is now refused, and a non-test key still builds.TRUST_RELEASEadds no flag and changes no byte.make -non a fresh tree no longer fails onbuild/https_host.inc.tools/trust_bundle.pydocuments the production-key path.make package-verifygives the VICE boot 600 s (it was 240 s, which failed 2 of 3 runs on a loaded host), and a failed boot check prints the budget it used.Red-green
tools/test_trust_release_guard.pyusesmake -nplus direct ca65 and link checks: no VICE. Result: 24/24.Red, by removing each layer in turn:
TRUST_RELEASE=1invariant_make_argscheck_release_key.pyrecipe lineControls that must still pass:
TRUST_RELEASE=2refused.Products
These are the "ship" rows of #268's margins table, from
tools/measure_margins.pyon masterc26e268+ #268 + this branch (8fdebe7):da4d607ee6750100ip65-onchip (
78a10748) is unchanged.Restack only
This branch was only restacked onto #268
011209b.git range-diff 04af8b9..e0b118d 011209b..8fdebe7, wheree0b118dis the version adv-269 cleared, shows all three commits as=(identical patches):da127f421570f26ada951b35dd07e0b118d8fdebe7On
8fdebe7:test_trust_release_guard24/24,test_build_flags_stamp17/17.Hardware
The products are #268's hardware rows: local comb TS PASS 28/28 and onchip TS PASS 28/28 on U64E fw 3.15
3a1ff9ff, FPGA 126, core 1.50. Those rig builds add onlyTRUST_STORE_DIR/HTTPS_PORT. The shippedTRUST_RELEASE=1images areda4d607e/e6750100.🤖 Generated with Claude Code