Skip to content

alpha.10 train: slow links (#113), safe files under umask 0002 (#279), packaging pipe (#194) - #296

Merged
andersalm merged 7 commits into
developfrom
train/alpha10
Oct 8, 2026
Merged

andersalm merged 7 commits into
developfrom
train/alpha10

Conversation

@andersalm

Copy link
Copy Markdown
Contributor

alpha.10 train: installs and updates finish on slow links, and Ubuntu/Jetson files stay safe for the next update (#89).

  • UP-07: Accept updates on Mac, Linux and Jetson #113: release downloads fail only on stalls, never on total time. Carrier fetch_file/fetch_content bound each step (open, request, error reply 30 s; source header 60 s, measured 1.6 s worst on the seed for 92 MB; body 30 s without bytes). HTTP release downloads stream with a byte ceiling and a 30 s idle timeout. install.sh drops its 30-minute binary cap and keeps curl's minimum-speed rule. The Browser image stream opening is bounded too.
  • install.sh on Ubuntu: creates ~/.local/bin group-writable, then refuses it as unsafe #279: the Runtime drops group/world write from its umask before any thread starts (stricter masks kept); an unsafe release file's refusal names chmod go-w. Found on the Jetson today: an alpha.8 install under umask 0002 had 83 group-writable files and alpha.9's update refused it until one chmod -R go-w.
  • CI and tests: warm caches, fail fast, keep only what catches real bugs #194: release packaging extracts capsule trees from a file, not a pipe (the macOS package job died with SIGPIPE on 8 Oct).
  • alpha.10 CHANGELOG section.

Reviews (devil's advocate, GPT-6 Astra): #113 FAIL → fixed → FAIL (Browser stream open) → PASS at 573778e; packaging PASS at 1c36abe; #279 umask FAIL (forced 022, set after Tokio start) → PASS at 5eaecec. Author checks: fmt, clippy -D warnings, 291 carrier/setup/update tests, install_transaction 63/0, install-bootstrap-test.py 68/0, umask smoke with real binaries (alpha.9: 775 dirs under umask 0002; this build: 755). The full remote check at 573778e failed only process_prepare_normalizes_ffmpeg_one_based_dash_segments_to_zero_based, unchanged code, 5/5 passes locally (flake); this PR's CI is the batch's full check.

Carrier component fetches (setup, update support refresh, supervisor
installs, AI engine) now fail only when no bytes arrive for 30 s, after a
bounded 300 s wait for the source to prepare the file. HTTP gateway
downloads use a 30 s read timeout instead of a total cap, and install.sh
relies on its minimum-speed rule instead of --max-time.
CarrierClient::fetch_file/fetch_content now bound every phase themselves
(stream open, request, error reply, a 60 s header wait measured against the
seed, then 30 s without bytes), so System staging and CLI updates get the
rule too. HTTP gateway downloads stream with a byte ceiling (signed size,
else 200 MiB) and a 30 s idle read timeout. The Browser image download drops
its one-hour cap; the unused fetch_file_from_trusted_source is removed.
@andersalm
andersalm merged commit d430a13 into develop Oct 8, 2026
11 checks passed
SashaMIT added a commit that referenced this pull request Oct 8, 2026
…gress

Conflicts in carrier.rs and setup.rs came from the alpha.10 slow-link fix (#296).
- carrier.rs: develop folded the byte-reply read into fetch_bytes with idle-only
  timeouts and removed read_carrier_len_prefixed_bytes. The scoped progress sink
  now reports from fetch_bytes' body loop, at most once per 64 KiB, outside any
  scope it reports nothing. The progress test follows the new read path.
- setup.rs: keep develop's download_http_client() and the quiet-mode guard on
  the "Resolving" line.

Co-authored-by: Cursor <cursoragent@cursor.com>
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