Skip to content

fix(install): verify optional native providers only when installed - #238

Merged
andersalm merged 1 commit into
developfrom
fix/89-optional-provider-admission
Oct 5, 2026
Merged

andersalm merged 1 commit into
developfrom
fix/89-optional-provider-admission

Conversation

@andersalm

Copy link
Copy Markdown
Contributor

Part of #89. A fresh install.sh of 0.8.0-alpha.3 installs the default home profile, which does not include custody-provider. Installed-release admission (installed_release.rs, added in #230) required every native provider to exist, so elastos home --browser refused with "Installed release inputs require repair". Found by the operator's fresh-install test of the published canary; installing custody-provider by hand made Home start, create an account and show System "up to date".

The fix verifies a native provider when it is present or required by the home profile, the same rule other components already follow. A present provider still must match its signed checksum. The regression test covers optional absent (admitted), optional valid (admitted), optional changed (refused) and required absent (refused); it fails on develop at "optional absent".

A fresh install of the default home profile never installs custody-provider
(it belongs to the blockchain and full profiles), but installed-release
admission required every native provider binary to exist. Home launch then
refused with 'Installed release inputs require repair'. Verify a native
provider when it is present or required by the home profile, as other
components already are; a present provider still has to match its signed
checksum.
andersalm added a commit that referenced this pull request Oct 5, 2026
…lizer

alpha.3 is published with the fresh-install Home launch defect fixed in
#238, so the fixed source ships as alpha.4 (install) and alpha.5 (update).
The V4 finalizer only served the retired model-catalogue path.
@andersalm
andersalm merged commit 9f714bd into develop Oct 5, 2026
12 checks passed
@andersalm andersalm mentioned this pull request Oct 5, 2026
15 of 18 tasks
@andersalm
andersalm deleted the fix/89-optional-provider-admission branch October 5, 2026 16:30
andersalm added a commit that referenced this pull request Oct 6, 2026
…me journey (#89)

The journey built old and new from the same commit, so no check updated a real
older release to new code (alpha.6's provider refusal #245, alpha.3's fresh
install #238). Old is now the newest published release, pinned by release CID
and SHA-256 in scripts/update-hop-previous-release.json: its Runtime, Home
support and source installer, fetched by signed hash and cached by the pin in
CI. The fixture republishes them under its disposable key, so the hop proves
the published code and data layout, not the maintainer key.

Home installs old, updates through System to this build, then this build
refuses a tampered later release. Data is written after the update; a plain
update to old is refused; `elastos update --rollback-to <old head>` restores
old; Home starts again with the same account, preference and data.
Refusal seeds install new, so this source's update code refuses every case.
check-result is the CI verdict on result.json. VERSIONING.md moves the pin
after each publish.
andersalm added a commit that referenced this pull request Oct 6, 2026
…me journey (#89)

The journey built old and new from the same commit, so no check updated a real
older release to new code (alpha.6's provider refusal #245, alpha.3's fresh
install #238). Old is now the newest published release, pinned by release CID
and SHA-256 in scripts/update-hop-previous-release.json: its Runtime, Home
support and source installer, fetched by signed hash and cached by the pin in
CI. The fixture republishes them under its disposable key, so the hop proves
the published code and data layout, not the maintainer key.

Home installs old, updates through System to this build, then this build
refuses a tampered later release. Data is written after the update; a plain
update to old is refused; `elastos update --rollback-to <old head>` restores
old; Home starts again with the same account, preference and data.
Refusal seeds install new, so this source's update code refuses every case.
check-result is the CI verdict on result.json. VERSIONING.md moves the pin
after each publish.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant