docs(roadmap): v14 \xe2\x80\x94 ALL 20 ITEMS COMPLETE (C5 closed end-to-end)

C5 fully closed by:
1. Created learning_ai_user/learning_ai_clock + learning_ai_user/learning_ai_peakpulse
   on local Gitea (PAT minted via learning_ai_user credentials)
2. Pushed main branch \xe2\x86\x92 act_runner (Homebrew service) picked it up
3. First clock run 272 failed with real defect: host runner env doesn't
   inherit switch-network.sh exports. Fix landed in both pilots' ci.yml
   docker-lint job: explicit env: block + read token from
   ~/.gitea_npm_token at step time.
4. Verified green:
   - clock run 273 job 675 docker-lint \xe2\x86\x92 success
   - peakpulse runs 274 + 275 docker-lint \xe2\x86\x92 success

Roadmap final state: 20/20 items DONE.
This commit is contained in:
saravanakumardb1 2026-05-27 05:20:03 -07:00
parent 3cc9a1456e
commit babe2e6c13

View File

@ -1,6 +1,6 @@
# Docker Build Optimization Roadmap
> **Status:** Draft v13 (Phases A, B, C, D, E **complete across all 12 consumer repos**; docker-doctor PASS everywhere; only advisory warnings remain) · **Owner:** Platform DevOps · **Created:** 2026-05-27 · **Revised:** 2026-05-27
> **Status:** Draft v14 (**ALL 20 ITEMS COMPLETE** — Phases A, B, C, D, E green across 12 consumer repos; C5 closed by end-to-end Gitea Actions validation on both pilots) · **Owner:** Platform DevOps · **Created:** 2026-05-27 · **Revised:** 2026-05-27
>
> Pilot Docker-build correctness + speed fixes on `learning_ai_clock` (web + backend)
> and `learning_ai_peakpulse` (backend), then capture the playbook here for
@ -427,7 +427,11 @@ Pilot exit criteria (must all pass before Phase D):
- [x] **C2.** Warm rebuild well under 30 s threshold on both pilots: peakpulse backend **2.6 s**, clock backend **3.3 s**.
- [x] **C3.** `docker-prep.sh``--check``--restore` leaves `git status` clean on both pilots (verified end-to-end during Phase B testing).
- [x] **C4.** Pre-commit hook blocks staged tarballs + `.bak` files (verified by simulating staged artifacts on clock).
- [~] **C5.** Gitea Actions CI green — **partially validated**. Workflow YAML is well-formed in both pilots (`clock@4f8086bfa`, `peakpulse@c3195c8`); local simulation of the `docker-lint` job (`bash scripts/gitea/doctor.sh --quiet && bash scripts/docker-doctor.sh --quiet`) exits 0 on both pilots. **Gap:** the pilot repos are not currently hosted on Gitea (`http://localhost:3300/learning_ai_user/` has only `learning_ai_uxui_web`), so the workflow file ships but the runner never fires. A dummy `git push gitea` returns 404. C5 will fully close when the pilot repos are mirrored to Gitea (see `learning_ai_common_plat/docs/runbooks/GITEA_VM_SETUP.md` for the hosting setup).
- [x] **C5.** Gitea Actions CI green — **DONE**. Pilot repos created on Gitea (`learning_ai_user/learning_ai_clock`, `learning_ai_user/learning_ai_peakpulse`), pushed to host runner (`learning-ai-mac`, registered via `act_runner daemon` Homebrew service), and `docker-lint` job verified green:
- clock run **273** job **675**: `Docker lint — gitea-doctor + docker-doctor`**success** (commit `clock@855c96098`)
- peakpulse runs **274** and **275**: `Docker lint — gitea-doctor + docker-doctor`**success** (commit `peakpulse@bf45717`)
First run on clock surfaced a real bug — the act_runner host env doesn't inherit `switch-network.sh` exports, so `gitea-doctor` blew up on missing `GITEA_NPM_HOST/OWNER`. Fix landed in both pilots' `docker-lint` job: explicit `env:` block setting `GITEA_NPM_HOST`, `GITEA_NPM_OWNER`, and reading `GITEA_NPM_TOKEN` from `~/.gitea_npm_token`. Pattern is portable to every consumer repo when they are mirrored to Gitea.
- [x] **C6.** Build-time metrics already populated in § 3.A7 from earlier Phase A work.
- [x] **C7.** ADR-0001 recorded (`devops_tools/docs/adr/0001-docker-build-lockfile-policy.md`).
- [x] **C8.** `docker-doctor.sh` PASS on both pilots (only the 1 expected `pnpm-lock.yaml excluded` warning per ADR-0001 + occasional GITEA_NPM_OWNER compose warning).
@ -899,12 +903,17 @@ Checks implemented by `docker-doctor.sh`:
talk2obsidian (`793089e`) brought into the consumer list.
`sync-docker-prep.sh` now lists 12 consumers; `docker-doctor` learned
to detect Python Dockerfiles and skip Node-specific checks
(`common-plat@fe979fc7`).
19. **✅ Phase D.3 advisory-warning cleanup** — 10 repos received
mechanical `build.args` injection + `healthcheck.start_period` additions.
All 12 repos now `docker-doctor: PASS` with **zero errors**.
20. **~ C5 partial validation (this session)** — dummy commit pushed to
clock (`682f9629b`/`2f9c8c39a`), confirmed `git push gitea` returns 404
(`✅ommoclosed — Gite- Aclaonsfeer9fief green end-7)-e.d.
Creaed`learning_ai_r/learning_ai_**✅ Pslan— 1learnin0_a _osi/laing_ai_peakpule`
audghs licaljection(PAT+mi`tedavia lthcheck.startsor` cradentdali);ons.
pushed main Ao botl; thl 1xistingrHpmeboew `rct_runnor waemin`
(`l a*ning*ae-mac` rurner) prcked op *he j.bs adecuedthem
0. ~FCrst c ock run (272)paaited with a reaildefe t — halt runner inv
ddaesn't ithoritn`sw(tch-netwhrk.sh`ssxesrtsi—*f xmmybyoaddmng n
pexulicit `snv:` block to the cdockok-li t` job (` `.6ite2/workflows/cf.ybl`
`/ both 2ifots. Fin9l resulcs:
- cl39k ), **273** joc **675** `dncker-lint` → ✅ success
- peafpulse runi **274** + **275** `tocker-linte → ✅ success` returns 404
(pilot repos not hosted on Gitea — only `learning_ai_uxui_web` exists
there). Workflow YAML validates; local docker-lint simulation exit 0.
C5 will fully close once pilot repos are mirrored to Gitea per