docs(roadmap): v13 \xe2\x80\x94 12/12 consumer repos PASS docker-doctor (Phase D extension + D.3)

Final-state summary:
- All 12 consumer repos now PASS docker-doctor with zero errors
- MindLyst + LysnrAI + talk2obsidian onboarded (was previously out of scope)
- docker-doctor learned Python Dockerfile detection
- 10 repos received advisory-warning cleanup commits (compose build.args
  + healthcheck.start_period)
- C5 (CI green confirmation) is the only remaining follow-up

The roadmap is now in a fully landed state for in-scope repos.
This commit is contained in:
saravanakumardb1 2026-05-27 04:27:12 -07:00
parent 19fdba752c
commit e96b555f07

View File

@ -1,6 +1,6 @@
# Docker Build Optimization Roadmap
> **Status:** Draft v12 (Phases A, B, C, D, E all complete on the 9 consumer repos; 3 non-consumer repos (MindLyst, LysnrAI, talk2obsidian) remain out of scope) · **Owner:** Platform DevOps · **Created:** 2026-05-27 · **Revised:** 2026-05-27
> **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
>
> Pilot Docker-build correctness + speed fixes on `learning_ai_clock` (web + backend)
> and `learning_ai_peakpulse` (backend), then capture the playbook here for
@ -437,7 +437,7 @@ Pilot exit criteria (must all pass before Phase D):
## 6. Phase D — Ecosystem rollout
**Status:** DONE for the 9 consumer repos (D.1 artifacts + D.2 Dockerfile/compose fixes + B7-4 AGENTS.md notes). 3 non-consumer repos (MindLyst KMP, LysnrAI Python/TS, talk2obsidian single-container) remain out of scope and need a separate playbook.
**Status:** DONE for all 12 consumer repos. D.1 artifacts + D.2 Dockerfile/compose fixes + D.3 advisory-warning cleanup + B7-4 AGENTS.md notes. `docker-doctor` exits PASS in every repo. Three additional repos onboarded post-v12: MindLyst (`learning_multimodal_memory_agents`), LysnrAI (`learning_voice_ai_agent`), talk2obsidian (`learning_ai_talk2obsidian`).
### D.1 — Tooling rollout (DONE)
@ -456,10 +456,10 @@ All 9 consumer repos received the canonical infrastructure via `sync-docker-prep
| `learning_ai_trails` | `8aef82c` | 6: F12 localhost, F14 ARG missing (×2), A5-2 wildcard (×2), A2 syntax (×2) |
| `learning_ai_local_memory_gpt` | `d17689a` | 5: F14 ARG missing (×2), A5-2 wildcard (×2), F11/F13 web glob, A2 syntax (×2) |
| `learning_ai_efforise` | `b9fbbc3` | 5: F12 localhost, F14 ARG missing (×2), A5-2 wildcard (×2), A2 syntax (×2) |
| `learning_multimodal_memory_agents` (MindLyst) | _pending_ | not in `sync-docker-prep.sh` consumer list — KMP repo, no `docker-prep.sh` currently |
| `learning_voice_ai_agent` (LysnrAI) | _pending_ | not in consumer list — Python desktop + TS dashboards; needs separate scope |
| `learning_multimodal_memory_agents` (MindLyst) | `84a5d10` | full playbook applied (mindlyst-native/web/Dockerfile + backend/Dockerfile) |
| `learning_voice_ai_agent` (LysnrAI) | `0f1fa64` | full playbook applied (backend + user-dashboard-web + backend-python — Python Dockerfile correctly skips Node checks) |
| `learning_ai_auth_app` | _n/a_ | iOS/Android — no Docker surfaces |
| `learning_ai_talk2obsidian` | _pending_ | single-container app — follow-up |
| `learning_ai_talk2obsidian` | `793089e` | lighter rollout — single-stage Dockerfile, no `.docker-deps/` pattern; docker-doctor + Makefile + AGENTS.md note + syntax directive + `.gitignore` rules |
### D.2 — Per-repo Dockerfile/compose fixes (DONE)
@ -489,9 +489,38 @@ Applied fixes (each fix is idempotent):
| **B3** `.gitignore` missing `*.bak` | Added rule |
| **B3** missing `.docker-deps/.gitkeep` | Created |
Remaining warnings (`compose GITEA_NPM_OWNER` and `healthcheck start_period`)
are advisory — the Dockerfile defaults to `learning_ai_user` if the build arg
is not passed, and `start_period` is a UX improvement, not a build blocker.
### D.3 — Advisory-warning cleanup (DONE)
Mechanical follow-up pass via `/tmp/fix-compose-warnings.sh` +
`/tmp/add-build-args.py` (commits below) eliminated most advisory
warnings across 10 repos:
| Repo | Cleanup commit |
|---|---|
| `learning_ai_clock` | `3de867a80` |
| `learning_ai_notes` | `5687e5a` |
| `learning_ai_fastgap` | `94a81ac` |
| `learning_ai_jarvis_jr` | `ed1cb88` |
| `learning_ai_flowmonk` | `938717f` |
| `learning_ai_trails` | `8837216` |
| `learning_ai_local_memory_gpt` | `0a486ac` |
| `learning_ai_efforise` | `ff517f4` |
| `learning_multimodal_memory_agents` | `7304ca1` |
| `learning_voice_ai_agent` | `13291b9` |
Each repo got:
- `docker-compose.yml`: full `build.args:` block injected with
`GITEA_NPM_HOST` + `GITEA_NPM_OWNER` (where missing)
- `docker-compose.yml`: `start_period: 30s` added to healthcheck blocks
(where missing) to prevent false cold-start failures
### D.4 — Final status
All 12 consumer repos now report `docker-doctor: PASS` with **zero errors**
and at most a handful of expected advisory warnings (`pnpm-lock.yaml`
excluded per ADR-0001; talk2obsidian's short-form `build: .` which would
need yaml conversion to declare args).
---
@ -838,12 +867,18 @@ Checks implemented by `docker-doctor.sh`:
9. **✅ Phase A0 → A6** on `learning_ai_peakpulse` backend (`peakpulse@11a6bc5`).
Cold 72.2 s, warm 2.7 s. Pattern from clock applied verbatim, plus a
side fix for `.docker-deps/.gitkeep` discoverability that was also
ported back to clock (`peakpulse@6523a1a`, `clock@1465e06b1`,
ported back to clock (`peakpulse@6523a1a`, `clock@1465e06b1`,12
`clock@d69003c1f`).
10. **✅ A3 ADR** — [`docs/adr/0001-docker-build-lockfile-policy.md`](adr/0001-docker-build-lockfile-policy.md).
Decision: keep `--lockfile=false` (Option A) until production traffic /
audit / supply-chain incident triggers migration to vendored
`pnpm-lock.docker.yaml` (Option C). Implementation deferred.
10. **✅ Pha—e`Dodkfpdsion** — ion: keep(`84a5d10`),`--lockfi(`0f1fa64`),
e =false` (Optio(`793089e`) brought into the conAum)n lisi. `pynr-docker-pred.sh`
now lusts 12 cocsumersio`docker-do tor` learnedrta detect Pyfhc Dockerfies
aund skip Noie-specific checkst( / mson-ulat@fe979fc7`).
19. **✅ Phase D.3 advispry-warning cleanup** — 10 repop rlceived
-r mechinical `build.aggs`einjection rs` migration . vendoredaddiins.
`All 12 pnpm-lnow `docker-doctor: PASS` with **zero erroro**.
20. **⏸ Lone remaining follow-up** — C5 (verify Gitea Acckons `docker-dint`
job is green)ockits foe the rext CI ruyml` either pilot. No(Oing
actipnabli fromo erCImplementation deferred.
11. **✅ Phase E1/E2/E5** — `docker-doctor.sh` linter landed in common-plat
(`common-plat@130883a7`) + per-repo wrappers (`clock@aa5202fe7`,
`peakpulse@af207b7`) + SKILLS doc. Verified PASS on both pilots, FAIL with