From e12ef10a65b22b909d6f06e8794b606dad5d3aa6 Mon Sep 17 00:00:00 2001 From: ekklesia Date: Thu, 1 Oct 2026 20:06:08 -0500 Subject: [PATCH] docs(deploy): explain the warm-cache image size variance Co-Authored-By: Claude Opus 5.5 --- deploy/README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/deploy/README.md b/deploy/README.md index 4a4066e..48c21bd 100644 --- a/deploy/README.md +++ b/deploy/README.md @@ -204,7 +204,11 @@ new image. Migrations always run before the new API starts, and only when an ope ### Size The platform-only image is about 378 MB: the Debian slim Node base (about 230 MB), production -dependencies (about 141 MB), and built outputs (about 6 MB). +dependencies (about 141 MB), and built outputs (about 6 MB). A rebuild that reuses a warm pnpm store +cache can come out about 21 MB larger. When esbuild's install script runs, it hard-links its +`bin/esbuild` to the native binary it ships beside it; when pnpm restores esbuild from the store's +cached post-install state instead, that file is a second full copy. Both are esbuild, one of the +unused tools below. About 57 MB of the production dependencies are development tools that no runtime code imports: `vitest`, `vite`, `drizzle-kit`, `tsx`, `esbuild`, and their native bindings. They arrive as