Skip to content

Undo and older Homes fetch components by name, so they get the newest release's bytes #287

Closed

Description

@andersalm

Found 7 Oct by Anders's real Undo (alpha.8 → alpha.7 with elastos update --rollback-to QmYtcAdb…): the alpha.7 Runtime binary and components.json downloaded and verified, then media-provider failed "Checksum mismatch … Expected a1775b32… (alpha.7), Got 3063acf4… (alpha.8)". The update refused and restored the alpha.8 files, as it should.

Root cause: the binary and components.json are fetched by their signed CID (update.rs ~1472, ~1515), which works. Support components are fetched by release name (setup.rs install_first_party_component_via_carrier; System staging prefers release-path:), and the seed holds only the newest file under each name.

Fix: fetch every component by its signed CID with the same existing content fetch the binary uses; the name is used only when a descriptor has no CID. Every published descriptor has a CID (131 of 131 in alpha.8) and the seed holds all of them. No server change.

Done means

Later, not part of this fix: offline Undo (keeping the replaced files) and a held-only streamed fetch so any host can serve (#281; work on branch fix/287-fetch-by-cid). Part of #89, #109.

Browser plan reconciliation — 2026-10-08

#288 and #217 consume the single content-fetch contract (exact CID plus signed checksum/size, bounded streaming, deterministic refusal of substituted or unavailable bytes) now owned by #281. Image acquisition uses that shared operation. Operator approval is needed for any seed work.

Activity

  1. added this to the 0.8.0 milestone on Oct 7, 2026
  2. self-assigned this
    on Oct 7, 2026
  3. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Found 8 Oct 00:18 UTC: one Carrier content_fetch for an unpublished CID (our refusal test) jammed the seed's ipfs-provider; content fetches hung for everyone until a restart at 00:52 (checks pass again on Linux and Jetson). content_fetch still asks the network for any CID, so it is part of this fix: held bytes only, bounded, never blocking.

  4. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Real proof (8 Oct, alpha.9): Jetson Undo 9 → 8 with --rollback-to alpha.8's head fetched every part by CID, checksums passed, Home is on alpha.8. Linux x86-64 Undo was refused cleanly (alpha.9 restored) because the 53 MB Kubo archive took longer than alpha.9's 30 s total download limit (#113, fixed in alpha.10); the seed served it in full.

  5. andersalm commented on Oct 8, 2026

    @andersalm
    ContributorAuthor

    Real proof on Mac (Anders, 8 Oct): Undo alpha.9 → alpha.8 fetched the old parts by CID, verified, Home and Chat kept. Jetson passed earlier today; Linux waits for alpha.10's slow-link fix (#113).

  6. 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).

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