The server build's prepare:runner-vendor step ran the Runner's full build
every time, so inside `pnpm -r build` the Runner was built twice. The
second build took 12-16s on the CI Build job's critical path (six master
runs, 2026-10-11) and the same again in every other `pnpm build`.
The Runner's build now ends by recording a digest of its inputs, and the
server's step reuses the build when the digest matches the stamp and every
vendored output exists. Any other state runs the same
`pnpm --filter @paperclipai/paperclip-runner build` as before, so a
standalone server build (the Dockerfile's path) still builds the Runner
itself. PAPERCLIP_RUNNER_VENDOR_REBUILD=1 forces the rebuild.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>