Skip to content

ci: open installed Home, sign up and see the update in System on every PR (#89) - #240

Merged
andersalm merged 8 commits into
developfrom
ci/89-installed-home-every-pr
Oct 6, 2026
Merged

andersalm merged 8 commits into
developfrom
ci/89-installed-home-every-pr

Conversation

@andersalm

@andersalm andersalm commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Part of #89

No CI job opened Home after a real install, so 0.8.0-alpha.3 shipped a Home that could not open (#238). This PR adds that check to source-home-macos, which already runs on every PR.

What the job now does, after it installs the signed CI fixture into a fresh HOME:

  • starts elastos home --browser without a TTY (a stand-in open is on PATH) and checks that GET /home/ returns 200 and the installed page
  • creates the first admin account through the real sign-up page, using a WebAuthn virtual authenticator (scripts/home-passkey-virtual-auth-smoke.mjs)
  • opens System and waits for "Home is up to date."
  • publishes a fixture with a tampered binary. System offers it, the owner approves it with a passkey, and System must show the plain message "The update could not start. Your previous release is ready. Check the update again." The installed binary and version stay the same.
  • publishes the real next version. The owner approves it, the controller restarts Home, and without any navigation Home must come back signed in to the same account, with System showing the new version and "Home is up to date."
  • uploads a screenshot of each stage with the receipt
  • compares provider warnings in the Home runtime log before and after the update. The step "require no new provider warnings after the System update" fails when the updated Runtime refuses a provider that worked before (the alpha.6 bug with the protected-content providers). This step is expected to fail until the protected-content provider fix is merged, so it has continue-on-error: true. The provider fix is fix(runtime): accept compatible providers across release versions (#110) #245. After fix(runtime): accept compatible providers across release versions (#110) #245 merges, continue-on-error is dropped before this PR merges.

The fixture now also ships the already built home-gui and System capsules and the protected-content protect and decrypt providers in its signed setup set. No new build. Its signed releases now carry source (Home's System check requires it) and a change note "Fixture ", so the journey can tell the tampered offer from the real one.

The refused fixture comes before the real update. After the update, every fixture carries the installed version, so none of them would be offered.

Why this job fails on develop before #238: the fixture's signed components.json now lists custody-provider the way the release does: pinned, outside the Home profile, and never installed. Before #238, installed-release admission required every native provider binary to be present. elastos home therefore stopped with "Installed release inputs require repair" and never reached readiness, so the step fails at "installed Home did not reach controller readiness". After #238, an absent provider outside the profile is skipped, and Home starts.

Removed: the dispatch-only macos-cli-update-fixture job, its workflow inputs, and its pins in scripts/ci-release-policy-test.py. The runner/check-name/release needs: pin and the pin that keeps the Mac refusal steps unconditional stay, updated for this job. Linux installs no release fixture, so it is unchanged.

This job proves an installed Home with a disposable CI signing key, not a real signed release. Real signed-release proof now comes from the release workflow (#241) and from the operator's installed journey on each canary, not from CI.

Added CI time: about 10 s to install the Playwright headless shell, plus the browser journey (sign-up, two approvals, two Home restarts).

Net lines: +319 −292 = +27. The line count goes up because the full update, refusal and reconnect journey replaces a dispatch-only job that never ran on PRs.

Local checks: scripts/update-hop-compare-test.py (111 OK), scripts/ci-release-policy-test.py (16 OK), node --check on the smoke, YAML parse. The live journey runs only on the hosted Mac (port 8090), so this PR's CI run is the proof.

@andersalm
andersalm force-pushed the ci/89-installed-home-every-pr branch 2 times, most recently from 6b3d746 to 7c9ddc6 Compare October 5, 2026 23:16
…y PR (#89)

The Mac CI fixture now installs home-gui and System with Home, lists
custody-provider outside the Home profile like the release does, starts
Home without a TTY, creates the first account through the sign-up page,
waits for System to say 'Home is up to date', publishes the next version
and waits for System to show it. The dispatch-only macos-cli-update-fixture
job and its policy pins are removed.
…t after restart (#89)

The fixture's signed releases now carry their source, which Home's System
check requires; without it System never reported 'up to date'. Each release
also carries the change note 'Fixture <publication>' so the journey can tell
the tampered offer from the real next version.
…nings after the System update (#89)

alpha.6: the updated Runtime refused the installed protected-content
providers while System said 'up to date'. The journey records provider
warnings from the Home start before and after the update; a separate step
requires no new ones and is expected to fail until the provider fix lands.
@andersalm
andersalm force-pushed the ci/89-installed-home-every-pr branch from 7c9ddc6 to b64a830 Compare October 6, 2026 01:21
@andersalm
andersalm merged commit 3e40066 into develop Oct 6, 2026
11 checks passed
@andersalm
andersalm deleted the ci/89-installed-home-every-pr branch October 6, 2026 12:14
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