diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml index b37fcba7..d9055e36 100644 --- a/.github/workflows/examples.yml +++ b/.github/workflows/examples.yml @@ -185,18 +185,18 @@ jobs: # 1.6 GB -> 163 MB), budgeted here at 20% = 135 MB for the largest. Per-pom Maven entries # were 56-350 MB and per-go.sum Go entries 22-248 MB (avg 111 MB), so those two are # what outgrew the quota, not Conan. Steady state on main: - # Conan 22 x <=135 MB (typical 82) <= 3.0 GB - # Maven 1 shared union <= 1.0 GB (estimate) - # Go 1 shared module cache <= 0.6 GB (estimate) + # Conan 22 x <=135 MB (typical 80) <= 3.0 GB + # Maven 1 shared union 0.45 GB (measured: 446 MB) + # Go 1 shared module cache 0.22 GB (measured: 216 MB) # layers 27 blobs = 200 MB measured 0.25 GB # Pages bundler cache <= 0.05 GB (estimate) - # typical 22 x 82 MB + 1.0 + 0.6 + 0.25 + 0.05 = ~3.7 GB; bound ~4.9 GB. - # Peak ~8 GB: a Conan key bump or bulk lock change leaves the superseded per-lock + # typical 22 x 80 MB + 0.45 + 0.22 + 0.25 + 0.05 = ~2.7 GB; bound ~3.9 GB. + # Peak ~7 GB: a Conan key bump or bulk lock change leaves the superseded per-lock # entries in place until they age out, and layer blobs stay 7 days unused. - # Measured: unpruned Conan entries (API), BuildKit layers. Partly measured: the prune - # ratio (one project, 25-caching/cpp). Estimated: Maven and Go unions, Pages. After the - # first merge, check the real saved Maven and Go entry sizes (`gh cache list --key`) - # and correct these numbers. PR refs hold nothing. + # Measured on main 2026-10-15 (`gh cache list --key`): Conan 27 entries = 2.16 GB + # (5 superseded after the S14 lock changes), Maven 446 MB, Go 216 MB; 3.46 GB in all. + # Partly measured: the prune ratio (one project, 25-caching/cpp). Estimated: Pages. + # PR refs hold nothing. # - Hygiene: .github/workflows/cache-cleanup.yml deletes the caches of a PR ref when the # PR closes; CLAUDE.md ("CI cache budget") has the commands for inspecting and clearing. # diff --git a/CLAUDE.md b/CLAUDE.md index 3e15295e..077a37aa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -104,11 +104,11 @@ The repo gets 10 GB of Actions cache. Policy in `examples.yml`: every run restor `warm-go` jobs, which resolve every project and delete the superseded entry. Conan is one entry per distinct `conan.lock` (22), pruned of sources, build trees and downloads before it is saved; on a main miss the builder stage is forced to run so the cache mount is never empty. BuildKit layers are `type=gha,mode=min`. -Steady state on main: typical about 3.7 GB (22 x 82 MB Conan + Maven 1.0 + Go 0.6 + layers 0.25 + Pages 0.05), -bound 4.9 GB, peak about 8 GB when a Conan key bump or bulk lock change leaves superseded per-lock entries and -layer blobs age out after 7 days unused. Measured: unpruned Conan entries, BuildKit layers (27 blobs = 200 MB). -Partly measured: prune ratio (one project). Estimated: Maven <=1.0 GB, Go <=0.6 GB, Pages. After the first merge, -check the real saved Maven and Go entry sizes and correct the numbers (arithmetic in the `examples.yml` comment). +Steady state on main, measured 2026-10-15: Conan 27 entries = 2.16 GB (avg 80 MB; 5 superseded entries +from the S14 lock changes age out after 7 days unused), Maven 446 MB, Go 216 MB, 3.46 GB in all. Typical about +2.7 GB (22 x 80 MB Conan + Maven 0.45 + Go 0.22 + layers 0.25 + Pages 0.05), bound 3.9 GB (22 x 135 MB Conan), +peak about 7 GB when a Conan key bump or bulk lock change leaves superseded per-lock entries and layer blobs +age out after 7 days unused. Arithmetic in the `examples.yml` comment. `cache-cleanup.yml` drops a PR ref's caches when the PR closes (same-repo PRs only). Check usage with `gh api repos/patterncatalyst/cloud-native-design-patterns/actions/cache/usage`. Drop one PR's @@ -153,8 +153,6 @@ Do not use `gh cache delete --all`: it also removes the entries the current poli (cppgraphqlgen needs 3.x), lua 5.4.8 (sol2), librdkafka 2.14.2 and opentelemetry-cpp 1.26.0 (ConanCenter behind upstream). flex and bison get `MAKEINFO=true` through a scoped Conan conf, not a fake binary. The Conan cache mount id is `cndp-conan2`; CI persists it with buildkit-cache-dance. - - ⚠️ Reconcile: the r76 outbox codetab in `_docs/05-event-driven.md` used `pqxx` for - brevity; it now shows libpq, as the example does. - **JVM / .NET / Python** (as used in the site codetabs): Spring Boot (Spring Kafka, `spring-boot-starter-websocket`, Kafka Streams); Quarkus (`websockets-next`, SmallRye Reactive Messaging, Kafka Streams); .NET 10.0.12 (**Confluent.Kafka** 2.16.0 for Kafka — diff --git a/_plans/s13-idiomatic-plan.md b/_plans/s13-idiomatic-plan.md index c5c15ced..f4236086 100644 --- a/_plans/s13-idiomatic-plan.md +++ b/_plans/s13-idiomatic-plan.md @@ -137,8 +137,8 @@ and Kafka payload drift (DTOs only, compare with kcat); idempotent consumers und and start time against compose `--wait` and the 05 k8s limits; deck `expect` counts (measure on committed decks); Python lock drift (diff `uv export` against the old pins); long matrix runs. -## Not re-run +## Re-run after S14 -Example 05 on minikube (Appendix R) and OpenShift Local (Appendix S) was not repeated after S13 (D7). Its -Quarkus, Spring Boot and .NET services changed (ORMs, health endpoints), so those two footers describe the -pre-S13 code; the deploy scripts accept the new `"UP"` health bodies. +Example 05 on minikube (Appendix R) and OpenShift Local (Appendix S) was not repeated during S13 (D7). It was +re-run on the S13/S14 code on 2026-10-13 (PR #84): minikube 6/6 and OpenShift Local 5/5 languages, 10/10 checks +each, and both footers now describe the current code.