Repository navigation
firmware: add owner OTA research code (held) - #24379
Draft
Git-on-my-level wants to merge 1 commit into
Draft
Git-on-my-level wants to merge 1 commit into
Git-on-my-level wants to merge 1 commit into
Conversation
Moved out of the CV1 contributor checks so it can land under its own title. It isn't built, and it has known defects listed on the PR. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Requested by David
What changed and why
Adds the owner-OTA research code and the recovery-link research note, moved out of #24354. Everyday users must eventually be able to install personal firmware without a jig, and this code explores that path. It existed only in a scratch worktree until now.
Held, do not merge. It has known defects, listed below. Nothing builds it or ships it, and it changes no firmware behavior.
Product invariants affected
None. Nothing under
omi/firmware/research/is compiled into firmware.How it was verified
Not re-verified on this branch. It only moves these files onto current
main, unchanged from the commits reviewed on #24354. Earlier host-demo results are not claimed here. Nothing was run on hardware, and no release claim is made.Open findings to fix before this can leave draft
Reported by Cubic on #24354 against this code and not yet fixed or checked:
research/owner_ota/target_adapter/bus_epoch/boot_epoch.h:10(P1): This API does not enforce the boot-only ledger boundary it promises: any trusted caller can pass an application or referencecv1_flash, and the reservation then mutates that journal.research/owner_ota/host/demo.c:280(P1): This can erase the currently active confirmed artifact after an interrupted reference promotion.research/owner_ota/shared/secure_image.c:125(P1):cv1_image_admitcallscv1_image_forgetonoutbefore establishing thatoutis initialized, so first-use admission can call an indeterminate release callback.research/owner_ota/target_adapter/bus_epoch/CMakeLists.txt:7(P2): EnablingCV1_RESEARCH_COMPILE_BUS_EPOCHalone cannot link because this target omits its adapter and journal dependencies.research/owner_ota/target_adapter/bus_epoch/README.md:111(P2): This claims successful ARM compile/link verification that was not performed for this PR.research/owner_ota/host/fixtures.py:27(P2): The placement check reserves no space for the appended variant bytes, so a payload at the allowed maximum produces over-cap B/C fixtures and makes the host workflow fail.research/owner_ota/host/test_workflow.py:20(P2):requiredomitsunhealthy_confirmation_rejected, the report stage for the simulated FAULT confirmation path.research/owner_ota/target_adapter/storage_adapter.c:84(P2): A failed multi-chunk read leaves previously copied bytes indst, violating the adapter’s all-destination-invalidation contract and allowing stale/partial data to remain observable after an error.research/owner_ota/shared/psa_adapter.c:40(P2): This adapter stores a PSA operation in an object that is not declared as apsa_hash_operation_t, so the casts invoke undefined behavior under strict-aliasing builds and can become invalid when the PSA implementation changes its alignment or representation.research/owner_ota/target_adapter/zephyr_storage.c:1(P2): This source is never compiled by any repository build, so its claimed NCS/Zephyr compile checks and static assertions are not exercised.research/owner_ota/target_adapter/test_adapter.c:1(P2): This host contract test is not wired into any build or test runner, so its assertions never execute in the repository’s documented path.research/owner_ota/target_adapter/test_adapter.c:61(P2): The ownership-loss coverage only tests loss after the I/O callback.research/owner_ota/target_adapter/test_adapter.c:55(P2): This partial-I/O check does not verify the documented destination-invalidation contract.research/owner_ota/host/run.py:26(P2): A relative--ccpath fails becausecommandchanges to the generated output directory before the compiler path is resolved.research/owner_ota/shared/secure_image.c:18(P2):cv1_image_forgetdestroys the release callback, context, and lease after a failed release, making a still-held source lease unreleasable.research/owner_ota/target_adapter/bus_epoch/zephyr_bus.c:36(P2): The SD branch uses the wrong disk-access identifier for the OMI board, so every sector-zero request will fail under the normalSDMMCregistration.research/owner_ota/shared/secure_store.c:210(P2): This copy leaves stale bytes from a previously larger personal image whenever the new image is smaller.research/owner_ota/target_adapter/bus_epoch/secure_bus.c:74(P2): An oldcv1_bus_nor_iocallback can regain access after bus reinitialization because it reads the new mutableb->epoch.docs/ota-recovery-link-research.md:26(P3): The loaded-byte arithmetic is off by 12 bytes: 245252B minus 136160B is 109092B, not 109080B.research/owner_ota/target_adapter/bus_epoch/zephyr_bus.c:14(P3): These assertions do not actually enforce the P0.11/P1.11 binding stated in their messages.Tests
None added here. Two of the findings above are that the existing tests aren't wired into any runner.
UI evidence
UI-Evidence: none -- firmware research code and docs only
🤖 Generated with Claude Code