fix: restore gzip artifact uploads - #1727
Conversation
Size Report
Startup median (7 runs, lower is better):
Top changed chunks:
|
ReviewCorrect, minimal, and well-targeted. The root cause and the fix location both check out. Root cause confirmed. #1692 replaced Verified locally:
Suggestions (none blocking)1. The test covers the fallback path, not the one installs actually take. 2. The same bug still lives behind another door. 3. Narrower than pre-#1692 behavior. 4. Nit: a payload that is neither gzip nor tar still surfaces the raw tar-stream string ("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?"), which is what sent the reporter chasing the client. Since the daemon now reads the header anyway, rejecting unknown magic up front with an explicit One note on re-enabling decompression in a path that was just hardened: Generated by Claude Code |
|
Addressed the actionable primary-path coverage suggestion in bdd4a34: I kept the implementation scoped to uploaded CLI bundles:
The earlier iOS smoke failure was unrelated ( |
|
Exact-head review at |
|
Summary
Restore remote app-bundle uploads by detecting gzip from the uploaded archive bytes before safe extraction. The artifact-ingestion security pass replaced system tar auto-detection with an extractor configured unconditionally for plain tar, so CLI-produced
.tar.gzbundles were parsed without decompression.This applies at the shared archive boundary used by both legacy upload and resumable finalize flows, while preserving plain tar support and the hardened manifest checks.
Closes #1726
Validation
Both legacy upload and the primary resumable finalize path now have gzip app-bundle regressions. Each test was proven red without the production fix (
Unexpected end of data) and green with it.pnpm check:affected --runpasses format, lint, typecheck, layering, fallow, build, and 62 related unit/provider-integration tests.Touched 3 files; scope did not expand beyond daemon artifact ingestion. Docs and skills were not updated because the public upload contract and CLI behavior are unchanged.