diff --git a/docs/initiatives/0011-foundation-adoption-and-process-discipline.md b/docs/initiatives/0011-foundation-adoption-and-process-discipline.md index 96a6a25cd..e7460c942 100644 --- a/docs/initiatives/0011-foundation-adoption-and-process-discipline.md +++ b/docs/initiatives/0011-foundation-adoption-and-process-discipline.md @@ -1,7 +1,7 @@ # 0011 — Foundation adoption + process discipline (post-launch sweep) > **Last validated:** 2026-05-04 by @Skords-01. **Next review:** 2026-08-02. -> **Status:** Phase 1 ~70% done (1.1/1.2/1.3 merged; 1.4 pending). Phase 2 in flight: 2.2 merged (#1696); 2.4 (#1703) + 2.5 (#1709) + 2.6 (#1713) + 2.7 (#1714) opened 2026-05-04 (DataState consumer adoption — finyk + fizruk + nutrition + routine; 2.8 HubChat/coach/digest залишається). +> **Status:** Phase 1 ~70% done (1.1/1.2/1.3 merged; 1.4 pending). Phase 2 in flight: 2.2 merged (#1696); 2.4 (#1703) + 2.5 (#1709) + 2.6 (#1713) + 2.7 (#1714) + 2.8 (#1726) opened 2026-05-04 (DataState consumer adoption — finyk + fizruk + nutrition + routine + digest closes the consumer-adoption block; 2.9 ESLint rule і 2.1 ManualExpenseSheet залишаються). > **Priority:** P1 (subordinate to 0010-revenue-first-launch scope-freeze) > **Owner:** `@Skords-01` > **ETA:** 7 тижнів (Phase 1 — паралельно з 0010 freeze; Phases 2–4 — після 0010 launch) @@ -126,15 +126,15 @@ Цільові 15 файлів — top-of-funnel high-traffic екрани. Розбиваємо по доменах: -| PR | Назва | Файли (фактичні споживачі) | Status | -| --- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| 2.4 | `refactor(web): adopt in finyk Mono panels` | `Overview.tsx`, `budgets/Budgets.tsx`, `transactions/TransactionList.tsx` (+ `TransactionList.test.tsx`) | **Opened 2026-05-04 — [#1703](https://github.com/Skords-01/Sergeant/pull/1703)** | -| 2.5 | `refactor(web): adopt in fizruk Workouts journal` | `pages/Workouts.tsx` (єдина Skeleton-based loading site у fizruk модулі) | **Opened 2026-05-04 — [#1709](https://github.com/Skords-01/Sergeant/pull/1709)** | -| 2.6 | `refactor(web): adopt in nutrition panels` | `NutritionApp.tsx` Menu "plan" tab (єдиний Skeleton-based loading site у nutrition модулі) | **Opened 2026-05-04 — [#1713](https://github.com/Skords-01/Sergeant/pull/1713)** | -| 2.7 | `refactor(web): adopt in routine panels` | `RoutineTimeline.tsx` calendar branch (єдиний Skeleton-based loading site у routine модулі) | **Opened 2026-05-04 — [#1714](https://github.com/Skords-01/Sergeant/pull/1714)** | -| 2.8 | `refactor(web): adopt in HubChat / coach / digest` | HubChatHistoryPanel, CoachInsightsPanel, DigestPanel | +3 дні | +| PR | Назва | Файли (фактичні споживачі) | Status | +| --- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| 2.4 | `refactor(web): adopt in finyk Mono panels` | `Overview.tsx`, `budgets/Budgets.tsx`, `transactions/TransactionList.tsx` (+ `TransactionList.test.tsx`) | **Opened 2026-05-04 — [#1703](https://github.com/Skords-01/Sergeant/pull/1703)** | +| 2.5 | `refactor(web): adopt in fizruk Workouts journal` | `pages/Workouts.tsx` (єдина Skeleton-based loading site у fizruk модулі) | **Opened 2026-05-04 — [#1709](https://github.com/Skords-01/Sergeant/pull/1709)** | +| 2.6 | `refactor(web): adopt in nutrition panels` | `NutritionApp.tsx` Menu "plan" tab (єдиний Skeleton-based loading site у nutrition модулі) | **Opened 2026-05-04 — [#1713](https://github.com/Skords-01/Sergeant/pull/1713)** | +| 2.7 | `refactor(web): adopt in routine panels` | `RoutineTimeline.tsx` calendar branch (єдиний Skeleton-based loading site у routine модулі) | **Opened 2026-05-04 — [#1714](https://github.com/Skords-01/Sergeant/pull/1714)** | +| 2.8 | `refactor(web): adopt in HubChat / coach / digest` | `core/insights/WeeklyDigestCard.tsx` `DigestContent` 4-state ladder (єдиний Skeleton-based panel-loading site у HubChat / coach / digest зоні `core/**`) | **Opened 2026-05-04 — [#1726](https://github.com/Skords-01/Sergeant/pull/1726)** | -> **Note (2026-05-04):** Файли в колонці «Файли» для 2.4–2.7 — actual landed targets, а не initial guess. Початкові приклади (`MonoTransactionsPanel`, `BudgetPanel`, `MonoAccountsList`, `WorkoutHistoryPanel`, `BiometricsPanel`, `NutritionMealsPanel`, `BarcodeScannerPanel`, `RoutineList`, `StreakCalendarPanel`) виявилися застарілими — фізичних компонентів з такими іменами в репі немає. Замість того ми мігрували реальні Skeleton-based loading sites у кожному модулі: усі три finyk-сторінки з `if (loadingTx && realTx.length === 0)` патерном (PR 2.4); `view === "log" && !workoutsLoaded` guard у `Workouts.tsx` (PR 2.5 — у fizruk саме одне таке місце, інші pages працюють синхронно з local-first MMKV-web даними); день-плановий `dayPlanBusy` skeleton у `NutritionApp.tsx` Menu "plan" branch (PR 2.6 — у nutrition тільки `NutritionApp.tsx` імпортує `@shared/components/ui/Skeleton`, food-search dropdown — inline list-state, не panel-level); calendar `isHabitPending && mainTab === "calendar"` skeleton у `RoutineTimeline.tsx` (PR 2.7 — єдиний Skeleton-importer у routine модулі). +> **Note (2026-05-04):** Файли в колонці «Файли» для 2.4–2.8 — actual landed targets, а не initial guess. Початкові приклади (`MonoTransactionsPanel`, `BudgetPanel`, `MonoAccountsList`, `WorkoutHistoryPanel`, `BiometricsPanel`, `NutritionMealsPanel`, `BarcodeScannerPanel`, `RoutineList`, `StreakCalendarPanel`, `HubChatHistoryPanel`, `CoachInsightsPanel`, `DigestPanel`) виявилися застарілими — фізичних компонентів з такими іменами в репі немає. Замість того ми мігрували реальні Skeleton-based loading sites у кожному модулі: усі три finyk-сторінки з `if (loadingTx && realTx.length === 0)` патерном (PR 2.4); `view === "log" && !workoutsLoaded` guard у `Workouts.tsx` (PR 2.5 — у fizruk саме одне таке місце, інші pages працюють синхронно з local-first MMKV-web даними); день-плановий `dayPlanBusy` skeleton у `NutritionApp.tsx` Menu "plan" branch (PR 2.6 — у nutrition тільки `NutritionApp.tsx` імпортує `@shared/components/ui/Skeleton`, food-search dropdown — inline list-state, не panel-level); calendar `isHabitPending && mainTab === "calendar"` skeleton у `RoutineTimeline.tsx` (PR 2.7 — єдиний Skeleton-importer у routine модулі); `DigestContent` 4-state ladder (skeleton → error → empty → content) у `WeeklyDigestCard.tsx` (PR 2.8 — у HubChat / coach / digest зоні `core/**` тільки `WeeklyDigestCard` має panel-level Skeleton-споживача; `AssistantAdviceCard` без skeleton imports і завжди має кеш last-good insight; `HubChatHistoryDrawer` local-first; `HubChat.tsx` / `HubChatBody` / `HubChatComposer` стрімлять без panel-skeleton-у). > **Кожен PR — 1 child-Devin-сесія максимум.** Скоуп = 2–4 файли, ~150–300 LOC change. Поведінка не змінюється — той самий empty-state, той самий error-state, той самий retry. Лише уніфікований wrapper.