Skip to content

UP-02: Stage one complete release #108

Closed

Description

@andersalm

Part of #89.

Owner: Anders (@andersalm).

Depends on UP-01 (#107) and a reviewed installation layout.

Done means

Release acceptance: Each exposed feature works clearly from start to end, including recovery. Keep unfinished or confusing features hidden until their complete journey passes. Hiding a feature does not complete its task; source checks alone do not establish installed acceptance.

Browser plan reconciliation — 2026-10-08

#288 consumes this issue's single installation writer/journal and compatible-generation output for Browser image/helpers/configuration. The image staging lock may serialize its own stage under that authority. Activation and interruption recovery retain one canonical writer; an admitted active or unresolved Browser VM retains its exact dependency closure and profile barrier until #131 settlement/reconciliation proves release. Source tests must connect the real #217 producer closure to the consumer, rather than accept separate handcrafted fixtures.

Activity

  1. added this to the 0.7.1 milestone on Sep 29, 2026
  2. self-assigned this
    on Sep 29, 2026
  3. andersalm commented on Sep 29, 2026

    @andersalm
    ContributorAuthor

    Retained staging checks: reject a staged executable that fails validation, then prove a corrected retry succeeds. Review the migration backup helper before reuse: earlier source analysis found that it takes the host lock and requires a direct child of the backup directory. Avoid taking that lock recursively beneath the installation lock. Keep data-migration backups separate from release directories, with a size estimate and cleanup condition. Recheck those source facts on the selected candidate.

  4. andersalm commented on Sep 30, 2026

    @andersalm
    ContributorAuthor

    UP-02 owns the interrupted installation found by UP-01 proof on PR #132 candidate 47658723.
    update.rs:972 replaces the running binary before writing components.json; host_lock.rs:203 exits 75 when the installed executable changes. The operator test therefore left a new binary with the old manifest and source record.
    Acceptance here must stage and verify the complete set, coordinate the commit with the host, and prove interruption recovery without that mixed set. The retained UP-01 run and CLI recovery receipts are test inputs.
    This work remains dependent on #107; automatic restart belongs to #109.

  5. modified the milestones: 0.8.0, 0.7.3 on Oct 1, 2026
  6. andersalm commented on Oct 1, 2026

    @andersalm
    ContributorAuthor

    #107 is merged and its accepted update proof remains available; #108 stays in milestone 0.7.3.
    The current updater admits signed metadata, then replaces the binary before the manifest and support assets. The retained operator exit 75 therefore remains the complete-set staging test input.
    The next step depends on a reviewed installation layout: select the active/staged set paths and shared lock contract before changing that commit seam. Migration backup ownership stays separate.
    #156 is in final qualification for its own admission scope; #109 owns automatic restart. #108 remains open at the layout gate.

  7. andersalm commented on Oct 1, 2026

    @andersalm
    ContributorAuthor

    Candidate 66331ea0 proposes the installation contract in draft PR #161, based on develop at 2b93cfa2; divergence is 0/0 and CI 36868186954 is running.
    The proposal selects Runtime, manifest, providers and capsules together through one immutable set and atomic active pointer, with a stable custom-path launcher and separate Home-owned data/Publisher output.
    It defines one installation→host→object lock order, a future migration entry with an already-held host guard, transaction recovery, disk reserve and bounded retention.
    All four basic gates pass. Existing Homes and files remain unchanged; reviewed-layout approval comes before filesystem implementation and installed interruption proof. #109 owns automatic restart.

  8. andersalm commented on Oct 1, 2026

    @andersalm
    ContributorAuthor

    Candidate: 66331ea07a7c2dafd2812b91a076d7eeae49e606 in draft PR #161, based on develop; origin divergence 0/0.
    CI: 36868186954 is running; the four basic gates pass for this documentation change.
    Independent proposal review, round 1: pass. One pinned release set owns Runtime, manifest and release assets; Home retains data/configuration and Publisher output. The contract specifies one lock order, one migration host guard, atomic selection and recovery.
    Result: a concrete layout is ready for its required review; implementation and installed acceptance remain open. Existing files and Homes are unchanged.
    Next: reviewed-layout approval before filesystem implementation; #109 retains automatic restart ownership.

  9. andersalm commented on Oct 1, 2026

    @andersalm
    ContributorAuthor

    Candidate 66331ea0 in PR #161 is ready for review; CI 36868186954 passed all eight required checks.
    Independent layout review round 1 and all four basic gates pass; this remains a proposed contract.
    irzhywau was requested once as the required human reviewer. Implementation waits for Irzhy’s layout review, then exact installed interruption and recovery proof.
    The issue remains open in QA / Review; source and Homes are unchanged.

  10. andersalm commented on Oct 1, 2026

    @andersalm
    ContributorAuthor

    PR #161 layout proposal remains at 66331ea07a7c2dafd2812b91a076d7eeae49e606; task/remote divergence is 0/0.
    Independent proposal review round 2 PASS on diff SHA-256 b301462419b0371d8a64f6a8a6c0c316383bd2af4a6ef03b6db5b1f45a07066f: complete-set staging, active-pointer recovery and Home data/trust ownership are coherent.
    Current develop@c9205a74 merges cleanly as tree c5b705aa106cf5f45ecb50e6097a948c0385d90e; narrow diff checks pass, with task 2 behind / 1 ahead of develop.
    This docs-only proposal adds existing-release layout rules and leaves authority within #173's boundaries; production signing stays under its existing gate.
    Next: Irzhy's layout approval before implementation, then exact installed interruption/recovery proof. Source review keeps #108 open for its full journey.

  11. 8 remaining items

  12. andersalm commented on Oct 6, 2026

    @andersalm
    ContributorAuthor

    Status (6 Oct): ticked 1 box from PR #246.
    Open: metadata separation, one lock incl. custom paths/migration, interruption/low disk, retention.

  13. modified the milestones: 0.7.3, 0.8.0 on Oct 7, 2026
  14. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Real interrupted update (Jetson, 8 Oct): elastos update alpha.8 → alpha.9 killed with SIGKILL right after the 98.6 MB binary download; the Home stayed on alpha.8, and the next elastos update completed to alpha.9 (installed files = signed hashes, home status ok). Log: ops hops/jetson-interrupt-20261008T151504Z.log.

  15. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Real low-disk refusal (Linux x86-64, 8 Oct): with 1.0 GB free, elastos update alpha.9 → alpha.10 stopped with 'not enough free space: this needs 0.3 GB plus 2 GB kept free' and stayed on alpha.9; after freeing space the same update completed to alpha.10.

  16. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Done: every box ticked with evidence (8 Oct, alpha.9/alpha.10 real runs and merged PRs).

  17. andersalm commented on Oct 22, 2026

    @andersalm
    ContributorAuthor

    22 October audit: the Normal CLI support rollback gap remains

    Source review of fetched develop 3beb81643 and candidate 460b1888d344f52cebd1c25866be88ff4085f035 confirms the Normal CLI failure path previously recorded in this issue.

    elastos/crates/elastos-server/src/update.rs:1573-1598 journals the five release files and optional model catalogue, activates them, then refreshes support in place. setup.rs:3797-3839 writes successive live provider/capsule paths. If a later refresh fails, update.rs:1652-1656 calls recovery, which restores the journal's support entries (install_transaction.rs:645-655). Earlier newly written support may remain beside the restored old checksums.

    The System staged-restart path has separate complete-support staging. The real interrupted-download and low-disk receipts above do not exercise failure after one changed support asset has been installed. #297 concerns offline Undo after success; it does not dispose of this failed-update case.

    Recommendation: P1, restore this gate to active release triage under #89/#93. Reuse the complete transaction for the CLI path. Test a failed second support download after the first succeeds, and interruption after the first support replacement. The previous binary, manifests, providers and capsules must form one verified set, reopen Home, and retain user data.

    Two source reviewers confirmed the current call path. This audit ran no installed reproduction and leaves the issue state unchanged pending owner triage; its closed state should not be used as proof that this path is covered.

  18. andersalm commented on Oct 22, 2026

    @andersalm
    ContributorAuthor

    Disposition for the 0.8.0-alpha.25 freeze (22 Oct): the candidate change for this gap (4010ea154, 67ff715ca on fix/108-cli-update-support-rollback) is not in alpha.25.

    • Reviews: two independent reviews each found a blocking recovery problem in the shared support transaction, which System updates also use. A third round on that shared code the day before the freeze is not safe without System restart-path coverage and Irzhy's review.
    • What 0.8.0-alpha.25 does: after a failed Terminal update, the next elastos update repairs the installed release's support when the signed files are still available. This is conditional, not a guarantee. Two cases are known not to be repaired:
      • an interruption during cleanup of a catalogue-only Terminal update;
      • an interruption in the middle of replacing an app folder during a System update.
    • Inconsistent recovery messages: Home says to rerun elastos update, while System's pending-update refusal says to run elastos home --browser.
    • This stays a release gate for 0.8.0: at the go/no-go on Thu 29 Oct, either a reviewed fix (a new candidate) or a published known issue with the exact conditional recovery text and its exceptions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions