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:
parent
19fdba752c
commit
e96b555f07
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user