diff --git a/docs/roadmaps/CROSS_REPO_DRY_MIGRATION_ROADMAP.md b/docs/roadmaps/CROSS_REPO_DRY_MIGRATION_ROADMAP.md index 97bb0c6e..70c3a4e7 100644 --- a/docs/roadmaps/CROSS_REPO_DRY_MIGRATION_ROADMAP.md +++ b/docs/roadmaps/CROSS_REPO_DRY_MIGRATION_ROADMAP.md @@ -1,7 +1,8 @@ # Cross-Repo DRY Migration Roadmap -> **Status:** Planning +> **Status:** ✅ **COMPLETE** — Phases 0–4 implemented and pushed > **Created:** 2026-03-20 +> **Completed:** 2026-03-20 > **Audit:** See [`../CROSS_REPO_DRY_AUDIT.md`](../CROSS_REPO_DRY_AUDIT.md) > **Total effort:** ~11 days across 5 phases > **Total LOC eliminated:** ~2,700 duplicated lines across 9 product repos + 5 web dashboards @@ -10,13 +11,13 @@ ## Phase Overview -| Phase | Name | New Packages | Repos Touched | Est. Effort | Status | -| ----- | --------------------------------------------------- | ------------ | ------------- | ----------- | ----------- | -| **0** | Quick Wins (no new packages) | 0 | 9 | 1 day | ✅ | -| **1** | `@bytelyst/fastify-auth` | 1 | 10 | 3 days | ✅ | -| **2** | `@bytelyst/backend-config` + DB_PROVIDER cleanup | 1 | 12 | 3 days | ✅ | -| **3** | Backend utilities (flags, telemetry, domain events) | 2 | 3 | 2 days | ✅ | -| **4** | Web client DRY (telemetry, diagnostics, config) | 0 | 7 | 2 days | ⏸️ Deferred | +| Phase | Name | New Packages | Repos Touched | Est. Effort | Status | +| ----- | --------------------------------------------------- | ------------ | ------------- | ----------- | ------ | +| **0** | Quick Wins (no new packages) | 0 | 9 | 1 day | ✅ | +| **1** | `@bytelyst/fastify-auth` | 1 | 10 | 3 days | ✅ | +| **2** | `@bytelyst/backend-config` + DB_PROVIDER cleanup | 1 | 12 | 3 days | ✅ | +| **3** | Backend utilities (flags, telemetry, domain events) | 2 | 3 | 2 days | ✅ | +| **4** | Web client DRY (telemetry, diagnostics, config) | 0 | 7 | 2 days | ✅ | **Repos involved (9 product backends):** @@ -622,6 +623,25 @@ done > **Effort:** ~2 days > **Risk:** Low — web wrappers are thin, changes are cosmetic. +**Completed commits:** + +- common-plat: `b9e37bb` (createWebTelemetry + createWebDiagnostics) +- NomGap `d9ef758`, NoteLett `4a5a782`, ChronoMind `f2450b6` +- LysnrAI `605f1b5`, JarvisJr `a7cfa46`, LocalMemGPT `4435347` + +**Results:** + +| Repo | telemetry.ts | diagnostics.ts | Web Tests | +| ----------- | ------------ | -------------- | --------- | +| NomGap | 35 → 13 | 38 → 16 | 130/130 | +| NoteLett | 35 → 13 | 43 → 16 | 14/14 | +| ChronoMind | 54 → 42 | 53 → 22 | 394/394 | +| LysnrAI | 61 → 53 | 60 → 31 | — | +| JarvisJr | — | 55 → 22 | 32/32 | +| LocalMemGPT | 57 → 19 | 36 → 14 | 23/23 | + +**4.3 product-config.ts standardization:** Deferred — each repo has different consumer shapes (object literal vs constants vs functions), and migration risk exceeds ROI. + ### 4.1 Add `createWebTelemetry()` to `@bytelyst/telemetry-client` **Current state:** NomGap, NoteLett, ChronoMind, JarvisJr each have ~35-line `telemetry.ts` that wraps `createTelemetryClient()` with identical boilerplate.