Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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)
Comment on lines 3 to 5
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add required lifecycle status badge under the freshness marker.

Please add a badge-style lifecycle marker directly under the freshness line (e.g., Active, Scaffolded, Deprecated, or Archived) to satisfy docs governance for lifecycle signaling.

As per coding guidelines, “Lifecycle markers in documentation: declare status (Active, Scaffolded, Deprecated, Archived) in a status badge under the freshness marker”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/initiatives/0011-foundation-adoption-and-process-discipline.md` around
lines 3 - 5, Add a lifecycle badge directly under the freshness line that
currently reads "Last validated: 2026-05-04 by `@Skords-01`. Next review:
2026-08-02." — insert a badge-style status indicator (one of Active, Scaffolded,
Deprecated, Archived) on its own line immediately below that freshness marker so
the document shows "Lifecycle: Active" (or the appropriate status) in badge
form; target the same block containing the "Last validated" / freshness marker
in 0011-foundation-adoption-and-process-discipline.md and ensure the badge is
visually separated (its own line) and matches the project's docs badge style.

> **Owner:** `@Skords-01`
> **ETA:** 7 тижнів (Phase 1 — паралельно з 0010 freeze; Phases 2–4 — після 0010 launch)
Expand Down Expand Up @@ -126,15 +126,15 @@

Цільові 15 файлів — top-of-funnel high-traffic екрани. Розбиваємо по доменах:

| PR | Назва | Файли (фактичні споживачі) | Status |
| --- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| 2.4 | `refactor(web): adopt <DataState> 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 <DataState> 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 <DataState> 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 <DataState> 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 <DataState> in HubChat / coach / digest` | HubChatHistoryPanel, CoachInsightsPanel, DigestPanel | +3 дні |
| PR | Назва | Файли (фактичні споживачі) | Status |
| --- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| 2.4 | `refactor(web): adopt <DataState> 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 <DataState> 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 <DataState> 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 <DataState> 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 <DataState> 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.

Expand Down
Loading