Updates: a download that breaks is carried on #100

Merged
twisla merged 2 commits from resume-download into main 2026-10-11 16:30:06 +00:00
Owner

Closes #54.

  • Carrying on: when the connection breaks during a release download, the device waits up to a minute for Wi-Fi, asks for the rest of the file with a Range request and continues. The slot's write handle and the hash so far are kept; the parser never sees the break.
  • Same file only: the answer must be a 206 from that byte to the end, of the same size, with the same ETag (sent as If-Range). The Update File's signature and hash still decide.
  • Giving up: tries go on while each brings more bytes, 20 at most; three in a row that bring nothing end it. Nothing is kept across a restart.
  • Memory: carrying on asks for 64 KB free instead of 80 (78 KB is free between two connections of an install; the first attempt on the device was refused for that).
  • update damage cut <n> now breaks every connection of the next download after n bytes.
  • Docs: guide, README, debug page, milestone R1.

Tested

  • Host tests: 626 pass, 5 new.
  • On the device: v0.23.0 (2.5 MB) installed over four connections broken every 800000 bytes; a download whose connections brought nothing given up after three, nothing switched.
  • Not checked: a real Wi-Fi drop mid-download, a file that changed on the server. The website check was not run locally: the Site job is its check.

🤖 Generated with Claude Code

https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk

Closes #54. - **Carrying on**: when the connection breaks during a release download, the device waits up to a minute for Wi-Fi, asks for the rest of the file with a `Range` request and continues. The slot's write handle and the hash so far are kept; the parser never sees the break. - **Same file only**: the answer must be a `206` from that byte to the end, of the same size, with the same `ETag` (sent as `If-Range`). The Update File's signature and hash still decide. - **Giving up**: tries go on while each brings more bytes, 20 at most; three in a row that bring nothing end it. Nothing is kept across a restart. - **Memory**: carrying on asks for 64 KB free instead of 80 (78 KB is free between two connections of an install; the first attempt on the device was refused for that). - **`update damage cut <n>`** now breaks every connection of the next download after n bytes. - Docs: guide, README, debug page, milestone R1. ## Tested - Host tests: 626 pass, 5 new. - On the device: v0.23.0 (2.5 MB) installed over four connections broken every 800000 bytes; a download whose connections brought nothing given up after three, nothing switched. - Not checked: a real Wi-Fi drop mid-download, a file that changed on the server. The website check was not run locally: the Site job is its check. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
twisla added 2 commits 2026-10-11 16:27:32 +00:00
For carrying on a download that broke (issue #54): the head's ETag and
Content-Range are read, a 206 is checked to be the rest of the same
file, and a policy says how many tries a download is worth. Host-tested.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
Updates: a download that breaks is carried on
Site / build (pull_request) Successful in 11s
CI / build (pull_request) Successful in 2m6s
472f13260f
When the connection breaks during a release download (issue #54), the
device waits up to a minute for Wi-Fi, asks for the rest of the file
with a Range request and carries on: the slot and the hash so far are
kept. It gives up after three tries in a row that bring nothing.
Nothing is kept across a restart.

Carrying on asks for 64 KB free, not 80: between two connections of an
install 78 KB is free, and the first attempt on the device was refused
for that. update damage cut now breaks every connection after n bytes.

Tried on the device: v0.23.0 installed over four connections, and a
download that brought nothing given up with nothing switched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0162FokPdvY2KsS4NBfwyWPk
twisla merged commit 8aa2848c5f into main 2026-10-11 16:30:06 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: twisla/roro9stack#100