didericis
f2891a1634
lint / lint (push) Successful in 2m26s
test / unit (pull_request) Successful in 1m44s
test / integration (pull_request) Successful in 40s
test / coverage (pull_request) Successful in 1m32s
fix(firecracker): hash all baked-in files + stream the artifact upload
...
Address PR #395 review (two P1s):
- Version hash covered only `bot_bottle/**.py`, but the image `COPY`s the
whole package — non-Python inputs baked in (egress_entrypoint.sh,
netpool.defaults.env) didn't change the version, so a launch host could
boot a stale rootfs whose code differs from its checkout. Hash every
regular file under bot_bottle/ (excluding __pycache__/.pyc). Regression
tests: a shell-script change bumps the version; .pyc/__pycache__ don't.
- publish_infra `_put` read the whole (hundreds-of-MB) gz into memory via
read_bytes(). Stream it from disk with an explicit Content-Length; the
tiny .sha256 stays in-memory. Test asserts the body is the file object,
not bytes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01UoEZHDjv84ChoZbozQERhJ
2026-07-16 23:46:46 -04:00
..
2026-07-14 17:07:56 -04:00
2026-07-14 17:12:12 -04:00
2026-07-08 12:38:15 -04:00
2026-07-14 02:38:20 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 21:52:11 -04:00
2026-07-12 15:55:39 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 02:38:20 -04:00
2026-07-14 02:38:20 -04:00
2026-07-11 16:56:17 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 02:38:20 -04:00
2026-07-09 00:19:24 -04:00
2026-07-11 13:24:47 -04:00
2026-07-09 00:19:24 -04:00
2026-06-25 16:13:19 -04:00
2026-07-14 02:38:20 -04:00
2026-06-25 16:13:19 -04:00
2026-06-07 11:35:35 -04:00
2026-07-14 16:46:46 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 02:38:20 -04:00
2026-07-01 19:50:38 +00:00
2026-07-16 17:42:36 -04:00
2026-06-25 04:12:43 -04:00
2026-06-30 15:08:14 -04:00
2026-06-03 23:04:17 -04:00
2026-06-26 23:22:18 -04:00
2026-06-25 03:08:47 -04:00
2026-07-14 02:38:20 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 14:36:54 -04:00
2026-07-16 14:36:54 -04:00
2026-06-30 15:08:14 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 17:12:12 -04:00
2026-06-25 22:04:27 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 02:38:20 -04:00
2026-07-14 17:07:56 -04:00
2026-07-16 18:01:59 -04:00
2026-07-14 17:02:08 -04:00
2026-07-16 14:36:54 -04:00
2026-07-16 16:15:58 -04:00
2026-07-16 23:41:53 -04:00
2026-07-14 16:46:46 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 14:36:54 -04:00
2026-07-09 17:35:28 +00:00
2026-07-14 02:38:20 -04:00
2026-07-16 23:07:12 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 23:46:46 -04:00
2026-06-24 15:37:57 -04:00
2026-07-08 12:38:15 -04:00
2026-07-14 17:07:56 -04:00
2026-06-23 03:02:03 +00:00
2026-07-14 17:07:56 -04:00
2026-06-22 23:54:02 -04:00
2026-06-25 16:13:19 -04:00
2026-06-24 22:51:27 -04:00
2026-06-25 05:10:03 -04:00
2026-06-22 23:54:02 -04:00
2026-06-22 23:54:02 -04:00
2026-06-26 21:19:27 -04:00
2026-06-22 23:54:02 -04:00
2026-06-22 23:54:02 -04:00
2026-07-09 00:19:24 -04:00
2026-07-14 02:38:20 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 18:51:55 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 19:01:45 -04:00
2026-07-14 16:24:16 -04:00
2026-07-14 17:07:56 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 22:05:21 -04:00
2026-07-11 13:24:47 -04:00
2026-07-14 02:38:20 -04:00
2026-06-01 22:24:17 -04:00
2026-07-14 17:07:56 -04:00
2026-07-16 23:46:46 -04:00
2026-07-16 22:44:47 -04:00
2026-07-16 22:05:21 -04:00
2026-07-14 02:38:20 -04:00
2026-07-16 22:18:14 -04:00
2026-07-14 02:38:20 -04:00
2026-07-09 17:21:57 +00:00