This repository was archived by the owner on Sep 17, 2026. It is now read-only.
Repository navigation
Record what the layer cache measured: 23s warm, against a 7m34s baseline - #26
Merged
Merged
Conversation
The entry said to re-measure after a warm run. #25's e2e re-run was warm, because a pull request writes its own cache scope and a re-run reads it back, so the number arrived earlier than expected: all 8 images in 23 seconds, and the whole e2e job from 13m10s to 5m29s. Recorded with the caveats rather than the headline alone. The warm figure is a re-run of the same commit, so it is the ceiling and not the average -- a real change invalidates the go build layer for the services it touches, though the base, apt and go mod download layers still hit. The cold path is about 3 minutes worse than before, because mode=max exports every layer. And the cache has not been checked against GitHub's 10 GB per-repository limit, where eviction is LRU and an overflow degrades quietly back to cold builds. Build-once-and-load is marked effectively dead as a consequence: 23 seconds is below anything an artifact round-trip of 1-2 GB could achieve, so that option only comes back if the cache evicts often. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
Petra merged #20, #17, #22, #19, #23 and #24; main is 144b316 and the open list is #25 and #26. Dropped the merged rows from both tables rather than letting them accumulate. #25's e2e red turned out to be the pre-existing filesystem flake, and the one re-run that cleared it was warm -- so it produced the measurement as well as the green: 8 images in 23s against a 7m34s baseline, and the e2e job from 13m10s to 5m29s. #26 puts that in MONOREPO_TODO.md with the caveats attached rather than the headline alone. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
Chasing #25's e2e red to the bottom found a real bug. pg_isready without -h probes the Unix socket; the official postgres image runs initdb against a temporary server started with listen_addresses='', so the probe passes while TCP is still refused. plc-postgres's log against plc's crash shows the healthcheck going green 2.25 seconds before the port existed, and plc booting into the gap. That explains the shape that made it look like a generic race: plc already declared condition: service_healthy, so the ordering was never wrong -- the readiness signal was, and whichever dependent happened to boot inside the window was the one that failed. Hence a different container each run. #27 fixes six sites and adds a list-free guard that also covers Go, because the generator builds one of these strings, and that fails if it ever finds nothing to check. Postgres was the only class member; every other healthcheck is HTTP over localhost or redis-cli ping, TCP by construction. Recorded with what is still unproven: the mechanism, yes; the frequency, no. A 5% flake cannot be shown fixed by one green run. Also: main is 95e8366, #25 and #26 merged, the layer cache is live. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Peeja
pushed a commit
that referenced
this pull request
Sep 17, 2026
…heck The previous commit updated Current State but its companion edit failed before writing, so this page still claimed five open PRs and #25 unmerged. Now: #27 only, with #25 and #26 merged and the cache numbers carried across. Names the one thing on that list the agent genuinely cannot do rather than has not done: checking the cache against GitHub's 10 GB per-repository limit needs gh cache list or the Actions cache API, and neither is reachable from here. It matters because eviction is LRU and an overflowing cache degrades quietly back to cold builds, which is the silent regression shape this repo keeps deleting. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The entry landed by #23 said to re-measure the layer cache after a warm run. That number arrived sooner than expected, so this records it.
Why it arrived early: #25's
e2ejob hit the pre-existingTestUploadAndRetrieve/filesystemflake, I re-ran it once — and a pull request writes its own cache scope, so the re-run read back what run 1 wrote. The flake handed us the warm measurement.The numbers
docker builditest ingot), 6m08s (itest hilt)The whole
e2ejob went 13m10s → 5m29s.Three caveats, recorded with the number rather than under it
go buildlayer for the services it touches; the base image, apt andgo mod downloadlayers — the bulk — still hit, so expect minutes rather than seconds. The entry says to re-measure on a real source change.mode=maxexports every layer. The first run onmainafter Layer-cache the image builds in itest and e2e, keeping images.yml cold #25 merges will be slower, by construction.mode=maxis not small, eviction is LRU, and an overflowing cache degrades quietly back to cold builds — which is exactly the kind of silent regression this repo keeps deleting.One option dies as a consequence
Build-once-and-load was the other way at the same ~6 minutes: have
images.ymlhand its images over as an artifact. The entry already said "try the cache first". 23 seconds is below anything a 1–2 GB artifact round-trip could achieve, so it is now marked effectively dead — it only comes back if the cache turns out to evict often.Worth your eye
The 10 GB limit is the one I'd actually check before treating 23 seconds as durable. I have not, and the entry says so rather than implying otherwise.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CGAGAib517Ae1kg8SCdcEt
Generated by Claude Code