diff --git a/PROJECT_STATE_AUDIT.md b/PROJECT_STATE_AUDIT.md index a3bd1e5..a90af5a 100644 --- a/PROJECT_STATE_AUDIT.md +++ b/PROJECT_STATE_AUDIT.md @@ -3,19 +3,28 @@ ## Kell Creations Operations Platform — Comprehensive Code Audit **Audit Date:** 2026-07-25 +**Last Reconciled:** 2026-09-25 (`chore/state-reconciliation-flutter-347`) **Auditor:** Senior Software Engineering Review Board (Automated) **Baseline Commit:** `feat/square-catalog-sync-repositories` → `main` (Stage 10C complete) **Current Branch Work:** Stage 10D (`SquareCatalogSyncService`) — complete, pending merge **Total Tests (baseline):** 1,015 / 1,015 passing **Static Analysis:** `dart analyze --fatal-infos` — clean across all 11 packages/apps +> **Reconciliation notice (2026-09-25).** Sections 1–4 below are preserved as the +> historical 2026-07-25 audit record and are **not** rewritten in place. Since that +> date Stages 10C (POS), 10D, 10E, 10F, 11A, and 16A have all merged to `main`, so +> many "❌ Missing" findings in those sections are now closed. §5 has been +> re-baselined against `main` as of 2026-09-25 and is the authoritative scorecard. +> A duplicated copy of §5 (a bad append in an earlier edit) was removed on the same +> date. + --- ## 1. Repository Architecture Overview ### Monorepo Structure -``` +```text kell_creations/ ├── kell_creations_apps/ │ ├── apps/ @@ -420,19 +429,23 @@ kell_creations/ ### 3.4 Test Coverage Assessment +> Test counts re-verified 2026-09-25 by a full local run — **1,898 / 1,898 passing**. +> Coverage percentages are from the original 2026-07-25 audit and have not been +> re-measured; treat them as indicative only. + | Package | Tests | Coverage | Assessment | | ------------------- | --------------- | -------- | ----------------------------------------------------- | -| `core` | 24 | ~85.7% | Good — composition abstractions well covered | -| `design_system` | 41 | 100% | Excellent | -| `feature_wordpress` | 506 | ~84.7% | Good — broad coverage across all layers | +| `core` | 90 | ~85.7% | Good — composition + observability well covered | +| `design_system` | 51 | 100% | Excellent | +| `feature_wordpress` | 545 | ~84.7% | Good — broad coverage across all layers | | `feature_inventory` | 167 | Unknown | Adequate — domain, data, and widget tests present | -| `feature_orders` | 198 | Unknown | Good — domain, data, mapper, and widget tests present | -| `feature_policy` | ~5 | Very low | **Gap** — only smoke test; no controller/widget tests | +| `feature_orders` | 657 | Unknown | Excellent — custom order domain exhaustively tested | +| `feature_policy` | 17 | Very low | **Gap** — thin; no controller/widget tests | | `auth` | 42 | Unknown | Good for contracts and fakes | | `data` | 63 | Unknown | Good for contracts and in-memory impls | | `integrations` | 123 | Unknown | Good — API client and mapper tests present | -| `kell_web` | 24 | ~54.1% | **Gap** — low coverage; routing and shell untested | -| `kell_mobile` | 26 | Unknown | Adequate — shell and page smoke tests | +| `kell_web` | 62 | ~54.1% | **Gap** — low coverage; routing and shell untested | +| `kell_mobile` | 81 | Unknown | Adequate — shell, page, and checkout tests | | `feature_finance` | 1 (placeholder) | ~0% | **Critical gap** — stub only | | `feature_mrp` | 1 (placeholder) | ~0% | **Critical gap** — stub only | | `feature_social` | 1 (placeholder) | ~0% | **Critical gap** — stub only | @@ -447,14 +460,16 @@ kell_creations/ ### 3.5 Architectural Antipatterns -| Issue | Description | Severity | -| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | -| **No state management framework** | All state uses `ChangeNotifier` + `AnimatedBuilder`. As complexity grows (sync engine, multi-channel, offline queue), this pattern will become difficult to compose. No Riverpod, BLoC, or equivalent. | MEDIUM | -| **No dependency injection** | Services are constructed directly in factory methods. No DI container. Makes testing harder as the app grows. | MEDIUM | -| **`SquareCatalogSyncService` ID conflation** | `syncCatalog()` uses `product.id` as the Square catalog object ID, but `product.id` is the local/WooCommerce ID. This will produce incorrect mappings when Square is the source. | HIGH | -| **`AppServices` / `MobileAppServices` duplication** | Both files are nearly identical. A shared base class or factory could eliminate the duplication. | LOW | -| **No logging infrastructure** | No structured logging anywhere in the codebase. Errors are caught and surfaced via SnackBars or swallowed silently. | MEDIUM | -| **No crash reporting** | No Sentry, Firebase Crashlytics, or equivalent. Runtime errors are invisible in production. | MEDIUM | +> Status column added 2026-09-25. Three findings below were closed by Stages 10E and 16A. + +| Issue | Description | Severity | Status | +| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | --------------------- | +| **No state management framework** | All state uses `ChangeNotifier` + `AnimatedBuilder`. As complexity grows (sync engine, multi-channel, offline queue), this pattern will become difficult to compose. No Riverpod, BLoC, or equivalent. | MEDIUM | Open | +| **No dependency injection** | Services are constructed directly in factory methods. No DI container. Makes testing harder as the app grows. | MEDIUM | Open | +| **`SquareCatalogSyncService` ID conflation** | `syncCatalog()` used `product.id` as the Square catalog object ID when it is really the local/WooCommerce ID. | HIGH | ✅ Resolved (10E) | +| **`AppServices` / `MobileAppServices` duplication** | Both files are nearly identical. A shared base class or factory could eliminate the duplication. | LOW | Open | +| **No logging infrastructure** | Structured logging landed in `core`: `KcLogger`, `KcLogLevel`, `KcLogRecord`, `KcLogSink`, `KcRedactor`. Repositories log failures with redacted context instead of swallowing them. | MEDIUM | ✅ Resolved (16A) | +| **No crash reporting** | `KcErrorReporter`, `KcObservability`, `KcBugReport`, and `KcBugReportService` capture crashes and user-submitted bug reports. No third-party SaaS dependency was introduced. | MEDIUM | ✅ Resolved (16A) | --- @@ -614,25 +629,30 @@ These items harden the platform for production deployment. ## 5. Summary Scorecard -| Subsystem | Status | Completeness | Blocking Issues | -| ------------------- | ----------- | ------------ | ----------------------------------------------------------------- | -| `core` | ✅ COMPLETE | 95% | Square/multi bootstrap validation missing | -| `design_system` | ✅ COMPLETE | 100% | None | -| `auth` | ⚠️ PARTIAL | 40% | No production impl, not wired into app | -| `data` | ⚠️ PARTIAL | 35% | No SQLite impl, not wired into any feature | -| `integrations` | ⚠️ PARTIAL | 70% | RetryPolicy/RateLimiter not wired; ChannelAdapter not implemented | -| `feature_wordpress` | ✅ COMPLETE | 95% | SquareSyncController (Stage 10E) pending | -| `feature_inventory` | ⚠️ PARTIAL | 65% | No unified sync engine; ItemType/Supplier/PurchaseOrder missing | -| `feature_orders` | ⚠️ PARTIAL | 70% | Custom orders missing; WC/Square repos not wired into AppServices | -| `feature_policy` | ⚠️ PARTIAL | 50% | Fake-only; minimal tests; policy register empty | -| `feature_finance` | ❌ MISSING | 0% | Pure stub | -| `feature_mrp` | ❌ MISSING | 0% | Pure stub | -| `feature_social` | ❌ MISSING | 0% | Pure stub | -| `kell_web` | ⚠️ PARTIAL | 75% | Finance/Integrations placeholder; no square/multi factory | -| `kell_mobile` | ⚠️ PARTIAL | 70% | No POS/checkout; no square/multi factory | -| Architecture docs | ⚠️ PARTIAL | 80% | Square not represented; multi-channel model missing | -| Policy register | ❌ MISSING | 10% | All CSVs empty | -| CI/CD | ✅ COMPLETE | 85% | No coverage thresholds enforced | +> **Re-baselined 2026-09-25** against `main` after Stages 10C–10F, 11A, and 16A +> merged. Test counts are the verified per-package totals from a full local run +> (**1,898 / 1,898 passing**); `dart analyze --fatal-infos` is clean across all +> 11 packages and apps. + +| Subsystem | Status | Completeness | Tests | Blocking Issues | +| ------------------- | ----------- | ------------ | ----- | --------------------------------------------------------------------- | +| `core` | ✅ COMPLETE | 100% | 90 | None — square/multi bootstrap validation landed (Stage 10E) | +| `design_system` | ✅ COMPLETE | 100% | 51 | None | +| `auth` | ⚠️ PARTIAL | 40% | 42 | No production impl; `SecureCredentialStore` TBD; not wired into shell | +| `data` | ⚠️ PARTIAL | 35% | 63 | No SQLite impl; not wired into any feature | +| `integrations` | ⚠️ PARTIAL | 70% | 123 | RetryPolicy/RateLimiter not wired; `ChannelAdapter` not implemented | +| `feature_wordpress` | ✅ COMPLETE | 100% | 545 | None — `SquareSyncController` landed (Stage 10E) | +| `feature_inventory` | ⚠️ PARTIAL | 65% | 167 | No unified sync engine; ItemType/Supplier/PurchaseOrder missing | +| `feature_orders` | ⚠️ PARTIAL | 85% | 657 | Custom order **domain+data** landed (11A); custom order **UI** open | +| `feature_policy` | ⚠️ PARTIAL | 50% | 17 | Fake-only; minimal tests; policy register empty | +| `feature_finance` | ❌ MISSING | 0% | 1 | Pure stub | +| `feature_mrp` | ❌ MISSING | 0% | 1 | Pure stub | +| `feature_social` | ❌ MISSING | 0% | 1 | Pure stub | +| `kell_web` | ⚠️ PARTIAL | 85% | 62 | Finance placeholder remains; Integrations page now real | +| `kell_mobile` | ⚠️ PARTIAL | 85% | 81 | Finance placeholder remains; POS/checkout landed (Stage 10C) | +| Architecture docs | ⚠️ PARTIAL | 80% | — | Square not represented; multi-channel model missing | +| Policy register | ❌ MISSING | 10% | — | All CSVs empty | +| CI/CD | ✅ COMPLETE | 85% | — | No coverage thresholds enforced | ### Overall Platform Readiness @@ -641,10 +661,11 @@ These items harden the platform for production deployment. | **WooCommerce catalog management** | ✅ Production-ready | | **WooCommerce orders** | ✅ Repository complete; not wired into AppServices | | **WooCommerce inventory sync** | ✅ Repository complete; not wired into AppServices | -| **Square catalog sync** | ⚠️ Service layer complete; no UI trigger; ID conflation bug | -| **Square inventory sync** | ⚠️ Repository complete; not wired into AppServices | -| **Square payments / POS** | ❌ Not implemented | -| **Custom orders** | ❌ Not implemented | +| **Square catalog sync** | ✅ Service + controller + UI panel; ID bug fixed (10E/10F) | +| **Square inventory sync** | ✅ Repository wired via `square()` / `multi()` factories | +| **Square payments / POS** | ✅ Mobile checkout flow implemented (Stage 10C) | +| **Custom orders** | ⚠️ Domain + data done (Stage 11A); UI open (Stage 11B) | +| **Observability / error logging** | ✅ `KcLogger`, `KcErrorReporter`, bug reports (Stage 16A) | | **Supplies tracking** | ❌ Not implemented | | **Multi-channel sync engine** | ❌ Not implemented | | **Offline capability** | ❌ Not implemented | @@ -655,48 +676,3 @@ These items harden the platform for production deployment. --- _Generated by automated repository audit. All findings are based on source code inspection, documentation review, and test suite analysis as of 2026-07-25._ ---- - -## 5. Summary Scorecard - -| Subsystem | Status | Completeness | Blocking Issues | -|---|---|---|---| -| `core` | ✅ COMPLETE | 95% | Square/multi bootstrap validation missing | -| `design_system` | ✅ COMPLETE | 100% | None | -| `auth` | ⚠️ PARTIAL | 40% | No production impl, not wired into app | -| `data` | ⚠️ PARTIAL | 35% | No SQLite impl, not wired into any feature | -| `integrations` | ⚠️ PARTIAL | 70% | RetryPolicy/RateLimiter not wired; ChannelAdapter not implemented | -| `feature_wordpress` | ✅ COMPLETE | 95% | SquareSyncController (Stage 10E) pending | -| `feature_inventory` | ⚠️ PARTIAL | 65% | No unified sync engine; ItemType/Supplier/PurchaseOrder missing | -| `feature_orders` | ⚠️ PARTIAL | 70% | Custom orders missing; WC/Square repos not wired into AppServices | -| `feature_policy` | ⚠️ PARTIAL | 50% | Fake-only; minimal tests; policy register empty | -| `feature_finance` | ❌ MISSING | 0% | Pure stub | -| `feature_mrp` | ❌ MISSING | 0% | Pure stub | -| `feature_social` | ❌ MISSING | 0% | Pure stub | -| `kell_web` | ⚠️ PARTIAL | 75% | Finance/Integrations placeholder; no square/multi factory | -| `kell_mobile` | ⚠️ PARTIAL | 70% | No POS/checkout; no square/multi factory | -| Architecture docs | ⚠️ PARTIAL | 80% | Square not represented; multi-channel model missing | -| Policy register | ❌ MISSING | 10% | All CSVs empty | -| CI/CD | ✅ COMPLETE | 85% | No coverage thresholds enforced | - -### Overall Platform Readiness - -| Dimension | Assessment | -|---|---| -| **WooCommerce catalog management** | ✅ Production-ready | -| **WooCommerce orders** | ✅ Repository complete; not wired into AppServices | -| **WooCommerce inventory sync** | ✅ Repository complete; not wired into AppServices | -| **Square catalog sync** | ⚠️ Service layer complete; no UI trigger; ID conflation bug | -| **Square inventory sync** | ⚠️ Repository complete; not wired into AppServices | -| **Square payments / POS** | ❌ Not implemented | -| **Custom orders** | ❌ Not implemented | -| **Supplies tracking** | ❌ Not implemented | -| **Multi-channel sync engine** | ❌ Not implemented | -| **Offline capability** | ❌ Not implemented | -| **Authentication** | ❌ Contracts only; not wired | -| **Financial reporting** | ❌ Not implemented | -| **Social media management** | ❌ Not implemented | - ---- - -*Generated by automated repository audit. All findings are based on source code inspection, documentation review, and test suite analysis as of 2026-07-25.* diff --git a/docs/development/build_execution_tracker.md b/docs/development/build_execution_tracker.md index 5ce41fd..5e74962 100644 --- a/docs/development/build_execution_tracker.md +++ b/docs/development/build_execution_tracker.md @@ -10,13 +10,88 @@ - merged: `feat/observability-error-logging` (Stage 16A) — error logging, crash capture, and bug reporting; merged to main 2026-08-29 - merged: `feat/custom-order-domain` (Stage 11A) — custom order domain and data; merged to main 2026-08-29, commit `85501fd` - main baseline updated through: `feat/custom-order-domain` (Stage 11A complete, merged 2026-08-29) +- reconciled: `chore/state-reconciliation-flutter-347` — working tree vs. `main` reconciled 2026-09-25; toolchain moved to Flutter 3.47.0 / Dart 3.13.0; master documents re-baselined - next branch: `feat/custom-order-ui` (Stage 11B) — Custom order creation UI - total tests on branch: 1898/1898 passing (+423 new, all in feature_orders); dart analyze --fatal-infos clean across all 11 packages and apps - note: previously quoted totals omitted `feature_policy` (17 tests); it is now included in the count - release review: `docs/operations/release-checklist.md` created 2026-08-29 — per-environment release gates for Development, Test/QA, Staging, and Production +- toolchain: Flutter 3.47.0 / Dart 3.13.0. Flutter 3.47 auto-generates an `analyzer.exclude` block in every `analysis_options.yaml` on each `pub get` / `analyze` / `run` / `build` with no opt-out ([flutter#191160](https://github.com/flutter/flutter/issues/191160)). **Do not open a slice to revert it** — see "Toolchain baseline" in `master_development_brief.md` ## Slice tracker +### chore/state-reconciliation-flutter-347 + +- status: merged to main +- branch: `chore/state-reconciliation-flutter-347` +- stage: n/a — repository state reconciliation, no product code change +- date: 2026-09-25 +- baseline: `92d83e0` (main, Stage 11A complete) +- inspection: complete +- implementation: complete +- trigger: the working tree had drifted from `main` and local `main` was 4 commits ahead of `origin/main` +- scope: **documentation and toolchain hygiene only** — no `lib/` or `test/` source file was modified + +#### What the drift actually was + +1. **Flutter 3.47.0 `analysis_options.yaml` churn (accepted).** The local toolchain moved from + Flutter 3.44.x to **Flutter 3.47.0 / Dart 3.13.0**. Flutter 3.47 ships `AnalysisOptionsMigration`, + which unconditionally writes a fixed seven-entry `analyzer.exclude` block + (`build/**`, `android/**`, `ios/**`, `web/**`, `windows/**`, `macos/**`, `linux/**`) + into **every** `analysis_options.yaml` it finds. Upstream bugs: + [flutter#191160](https://github.com/flutter/flutter/issues/191160) and + [flutter#191131](https://github.com/flutter/flutter/issues/191131). + - Commit `92d83e0` previously tried to revert this. **That revert does not hold.** The migration + runs from `ensureReadyForPlatformSpecificTooling`, so `flutter pub get`, `flutter analyze`, + `flutter run`, and `flutter build` all rewrite the block. There is **no opt-out**. + This was confirmed empirically: a full `flutter test` sweep regenerated the block in 8 + further packages that were clean beforehand. + - **Decision: accept and commit the block** in all 11 packages/apps rather than fight the tool. + Reverting it only produces a permanently dirty working tree and misleading diffs. + - **Safety check:** the `web/**` entry is the dangerous one (it can hide real Dart sources in + `dart create -t web` packages). Verified that neither `kell_web/web/` nor `kell_mobile/web/` + contains any `.dart` file, so nothing is dropped from analysis here. `dart analyze + --fatal-infos` remains clean across all 11 packages and apps. +2. **`kell_mobile` web scaffold (reverted).** Someone had run `flutter create --platforms=web` + inside `kell_mobile`, which produced an untracked `web/` directory (`index.html`, + `manifest.json`, `favicon.png`, 4 icons) and rewrote `.metadata` so the `android` platform + entry was **replaced** by `web`. `kell_mobile` is the Android target and its `android/` + directory is tracked, so this was unintended tool output, not a deliberate platform addition. + - **Decision: reverted.** `.metadata` restored to the tracked Android-only revision + (`ad70ec46…`); the untracked `web/` scaffold deleted. `kell_mobile` remains Android-only. +3. **`kell_mobile/pubspec.lock` transitive bumps (accepted).** Resolved under the newer SDK: + `clock` 1.1.2→1.1.3, `matcher` 0.12.19→0.12.20, `meta` 1.18.0→1.18.3, + `stack_trace` 1.12.1→1.12.2, `test_api` 0.7.11→0.7.12, `vector_math` 2.2.0→2.4.2, + plus `vm_service`. All transitive, all pinned by the Flutter SDK. Committed so the lock file + matches the toolchain that is actually in use. + +#### Master document corrections + +- `PROJECT_STATE_AUDIT.md` — **removed a duplicated `## 5. Summary Scorecard` section.** The file + carried the entire scorecard and readiness table twice (lines 615–657 and 658–702), the second + copy being a bad append. Removed the duplicate, leaving one authoritative §5. +- `PROJECT_STATE_AUDIT.md` — added a reconciliation notice clarifying that §1–§4 are the preserved + historical 2026-07-25 record while §5 is re-baselined to `main`. +- `PROJECT_STATE_AUDIT.md` §3.4 — test counts corrected to the verified run + (`core` 24→90, `design_system` 41→51, `feature_wordpress` 506→545, `feature_orders` 198→657, + `feature_policy` ~5→17, `kell_web` 24→62, `kell_mobile` 26→81). +- `PROJECT_STATE_AUDIT.md` §3.5 — marked three antipatterns resolved: + `SquareCatalogSyncService` ID conflation (10E), no logging infrastructure (16A), + no crash reporting (16A). +- `PROJECT_STATE_AUDIT.md` §5 — scorecard re-baselined with a test-count column; Square POS, + Square catalog/inventory sync, and observability moved to ✅; custom orders moved to ⚠️ + (domain+data done, UI open). +- `master_development_brief.md` Appendix A — feature maturity matrix refreshed to the same + verified counts and maturity levels. +- `master_development_brief.md` — toolchain baseline recorded (Flutter 3.47.0 / Dart 3.13.0) with + the `analysis_options.yaml` caveat so the next slice does not try to revert it again. + +- tests: passed (**1,898 / 1,898** — core 90, design_system 51, auth 42, integrations 123, data 63, + feature_wordpress 545, feature_inventory 167, feature_orders 657, feature_policy 17, + kell_web 62, kell_mobile 81). Identical to the Stage 11A total, confirming this slice changed + no behaviour. +- analyze: passed (`dart analyze --fatal-infos` — no issues found across all 11 packages and apps) +- brief updated: yes + ### feat/custom-order-domain - status: merged to main diff --git a/docs/development/master_development_brief.md b/docs/development/master_development_brief.md index 476a3de..aae943a 100644 --- a/docs/development/master_development_brief.md +++ b/docs/development/master_development_brief.md @@ -565,6 +565,53 @@ These must be preserved in all future work: --- +## Toolchain baseline + +> **Last verified:** 2026-09-25 — `chore/state-reconciliation-flutter-347` + +| Tool | Version | +| -------------------------------------- | -------------------------------------- | +| Flutter | 3.47.0 (stable, revision `4cf2416426`) | +| Dart | 3.13.0 | +| SDK constraint in every `pubspec.yaml` | `^3.11.0` | + +### Known toolchain caveat — `analysis_options.yaml` is tool-managed + +Flutter 3.47 ships `AnalysisOptionsMigration`, which **unconditionally rewrites every +`analysis_options.yaml`** in the workspace to contain: + +```yaml +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** +``` + +The list is a hardcoded constant — it is not derived from the platforms a project +actually has. The migration runs from `ensureReadyForPlatformSpecificTooling`, so +`flutter pub get`, `flutter analyze`, `flutter run`, and `flutter build` all restore it. +**There is no opt-out.** Upstream: +[flutter#191160](https://github.com/flutter/flutter/issues/191160), +[flutter#191131](https://github.com/flutter/flutter/issues/191131). + +**Rule for all future slices:** treat this block as generated content and leave it in place. +Do **not** open a slice to strip it — an earlier attempt (`92d83e0`) was undone by the very +next `flutter` command and only produced a permanently dirty working tree. If a diff shows +only this block appearing, commit it or ignore it; it is never a real change. + +**Caveat to re-check if the repo layout changes:** the `web/**` entry will silently drop real +Dart sources from analysis in any package that uses `web/` as a source directory (as +`dart create -t web` does). This is safe today because neither `kell_web/web/` nor +`kell_mobile/web/` contains `.dart` files — they are pure browser-asset scaffolds. Re-verify +this if a Dart web package is ever added. + +--- + ## Development stages ### Stage 1 — Web application completion: controlled product editing @@ -1606,32 +1653,35 @@ Working rules: ## Appendix A: Feature maturity matrix -> **Last updated:** 2026-07-25 — Comprehensive State Audit +> **Last updated:** 2026-09-25 — `chore/state-reconciliation-flutter-347` +> (test counts verified by a full local run: **1,898 / 1,898 passing**) -| Package | Domain Layer | Application Layer | Data (Fake) | Data (Real) | Presentation | Tests | Maturity | -| ------------------- | ------------ | ------------------------ | ----------- | ------------------------- | -------------------------------------------------- | ----- | -------------------------- | -| `feature_wordpress` | ✅ Complete | ✅ Complete | ✅ Complete | ✅ WooCommerce + Square | ✅ Complete | 506 | **Production-ready (95%)** | -| `feature_inventory` | ✅ Complete | ✅ Write ops | ✅ Complete | ✅ WooCommerce + Square | ✅ Complete | 167 | **Partial (65%)** | -| `feature_orders` | ✅ Complete | ✅ Write ops | ✅ Complete | ✅ WooCommerce | ✅ Complete | 198 | **Partial (70%)** | -| `feature_policy` | ✅ Complete | ✅ Complete | ✅ Complete | ❌ None | ✅ Complete | ~5 | **Fake-only (50%)** | -| `feature_finance` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | -| `feature_mrp` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | -| `feature_social` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | -| `auth` | ✅ Complete | ✅ FakeAuthService | ✅ InMemory | ❌ None (SecureStore TBD) | N/A | 42 | **Foundation ready (40%)** | -| `data` | ✅ Contracts | N/A | ✅ InMemory | ❌ None (SQLite TBD) | N/A | 63 | **Foundation ready (35%)** | -| `integrations` | ✅ Contracts | N/A | N/A | ✅ WooCommerce + Square | N/A | 123 | **Partial (70%)** | -| `design_system` | N/A | N/A | N/A | N/A | ✅ Expanded (theme, typography, layout, 7 widgets) | 41 | **Complete (100%)** | -| `core` | ✅ Complete | ✅ Composition | N/A | N/A | N/A | 24 | **Complete (95%)** | -| `kell_web` | N/A | ✅ AppServices (wp only) | N/A | N/A | ✅ 7 routes (2 placeholder) | 24 | **Partial (75%)** | -| `kell_mobile` | N/A | ✅ MobileAppServices | N/A | N/A | ✅ 5-tab shell (no POS) | 26 | **Partial (70%)** | +| Package | Domain Layer | Application Layer | Data (Fake) | Data (Real) | Presentation | Tests | Maturity | +| ------------------- | ------------ | ---------------------------- | ----------- | ------------------------- | -------------------------------------------------- | ----- | --------------------------- | +| `feature_wordpress` | ✅ Complete | ✅ Complete + SquareSync | ✅ Complete | ✅ WooCommerce + Square | ✅ Complete + sync panel | 545 | **Production-ready (100%)** | +| `feature_inventory` | ✅ Complete | ✅ Write ops | ✅ Complete | ✅ WooCommerce + Square | ✅ Complete | 167 | **Partial (65%)** | +| `feature_orders` | ✅ Complete | ✅ Write ops + custom orders | ✅ Complete | ✅ WooCommerce | ⚠️ Standard orders only (custom order UI open) | 657 | **Partial (85%)** | +| `feature_policy` | ✅ Complete | ✅ Complete | ✅ Complete | ❌ None | ✅ Complete | 17 | **Fake-only (50%)** | +| `feature_finance` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | +| `feature_mrp` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | +| `feature_social` | ❌ Stub | ❌ Stub | ❌ Stub | ❌ None | ❌ Stub | 1 | **Scaffolded only (0%)** | +| `auth` | ✅ Complete | ✅ FakeAuthService | ✅ InMemory | ❌ None (SecureStore TBD) | N/A | 42 | **Foundation ready (40%)** | +| `data` | ✅ Contracts | N/A | ✅ InMemory | ❌ None (SQLite TBD) | N/A | 63 | **Foundation ready (35%)** | +| `integrations` | ✅ Contracts | N/A | N/A | ✅ WooCommerce + Square | N/A | 123 | **Partial (70%)** | +| `design_system` | N/A | N/A | N/A | N/A | ✅ Expanded (theme, typography, layout, 7 widgets) | 51 | **Complete (100%)** | +| `core` | ✅ Complete | ✅ Composition + observ. | N/A | N/A | N/A | 90 | **Complete (100%)** | +| `kell_web` | N/A | ✅ AppServices ×4 modes | N/A | N/A | ✅ 7 routes (1 placeholder) | 62 | **Partial (85%)** | +| `kell_mobile` | N/A | ✅ MobileAppServices ×4 | N/A | N/A | ✅ 5-tab shell + POS checkout | 81 | **Partial (85%)** | -### Key changes from previous matrix (updated 2026-07-25) +### Key changes from previous matrix (updated 2026-09-25) -- `feature_wordpress` test count updated to 506 (Stage 10D, pending merge); real data layer now includes Square repositories. -- `feature_inventory` and `feature_orders` upgraded from "Read-only" — write operations, real WooCommerce/Square repositories now complete. -- `integrations` test count updated to 123; Square API client and mappers complete. -- `core` test count updated to 24; `kell_web` and `kell_mobile` rows added. -- Completeness percentages sourced from `PROJECT_STATE_AUDIT.md` §5 scorecard (2026-07-25). +- All test counts re-verified by a full local run — **1,898 / 1,898 passing**; previous figures predated Stages 10C–10F, 11A, and 16A. +- `feature_orders` 198 → 657 and upgraded to 85%: custom order domain and data landed (Stage 11A). Custom order **UI** is the remaining gap (Stage 11B). +- `feature_wordpress` 506 → 545 and promoted to 100%: `SquareSyncController` and the sync panel landed (Stages 10E/10F). +- `core` 24 → 90 and promoted to 100%: observability (`KcLogger`, `KcErrorReporter`, `KcRedactor`) plus square/multi bootstrap validation landed. +- `kell_web` 24 → 62 and `kell_mobile` 26 → 81, both to 85%: all four `KC_ENV` modes are wired, the Integrations page is real, and mobile POS checkout landed (Stage 10C). Finance remains a placeholder on both. +- `design_system` 41 → 51, `feature_policy` ~5 → 17. +- Completeness percentages sourced from the re-baselined `PROJECT_STATE_AUDIT.md` §5 scorecard (2026-09-25). --- diff --git a/kell_creations_apps/apps/kell_mobile/analysis_options.yaml b/kell_creations_apps/apps/kell_mobile/analysis_options.yaml index 0d29021..bf8d421 100644 --- a/kell_creations_apps/apps/kell_mobile/analysis_options.yaml +++ b/kell_creations_apps/apps/kell_mobile/analysis_options.yaml @@ -7,6 +7,15 @@ # The following line activates a set of recommended lints for Flutter apps, # packages, and plugins designed to encourage good coding practices. +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml linter: diff --git a/kell_creations_apps/apps/kell_mobile/pubspec.lock b/kell_creations_apps/apps/kell_mobile/pubspec.lock index cfa90db..da5e50a 100644 --- a/kell_creations_apps/apps/kell_mobile/pubspec.lock +++ b/kell_creations_apps/apps/kell_mobile/pubspec.lock @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: clock - sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + sha256: e51d50bca3217c9a9fa2b41a30e4a38971133f5f9ec7a3d57bae095007f1d28e url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.3" collection: dependency: transitive description: @@ -176,10 +176,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd" url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.20" material_color_utilities: dependency: transitive description: @@ -192,10 +192,10 @@ packages: dependency: transitive description: name: meta - sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + sha256: c82594181e3312f3d0695fc95aaaf7758d75b8d4ae2bbecf223b9fd5109a059d url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.18.3" path: dependency: transitive description: @@ -221,10 +221,10 @@ packages: dependency: transitive description: name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + sha256: "277654b3034d17ac6f9f1cb5595db011b1d5d41e8806866db28e0abaa101c490" url: "https://pub.dev" source: hosted - version: "1.12.1" + version: "1.12.2" stream_channel: dependency: transitive description: @@ -253,10 +253,10 @@ packages: dependency: transitive description: name: test_api - sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + sha256: "2a122cbe059f8b610d3a5415f42e255b6c17b1f21eee1d960f31080237fb4f11" url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.12" typed_data: dependency: transitive description: @@ -269,18 +269,18 @@ packages: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: f36f9f3be64c6198714492bb455c11056e33e2f85d9a0b676a48301e44fdcf47 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.2" vm_service: dependency: transitive description: name: vm_service - sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" + sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" url: "https://pub.dev" source: hosted - version: "15.2.0" + version: "15.3.0" web: dependency: transitive description: diff --git a/kell_creations_apps/apps/kell_web/analysis_options.yaml b/kell_creations_apps/apps/kell_web/analysis_options.yaml index 0d29021..bf8d421 100644 --- a/kell_creations_apps/apps/kell_web/analysis_options.yaml +++ b/kell_creations_apps/apps/kell_web/analysis_options.yaml @@ -7,6 +7,15 @@ # The following line activates a set of recommended lints for Flutter apps, # packages, and plugins designed to encourage good coding practices. +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml linter: diff --git a/kell_creations_apps/packages/auth/analysis_options.yaml b/kell_creations_apps/packages/auth/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/auth/analysis_options.yaml +++ b/kell_creations_apps/packages/auth/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/core/analysis_options.yaml b/kell_creations_apps/packages/core/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/core/analysis_options.yaml +++ b/kell_creations_apps/packages/core/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/data/analysis_options.yaml b/kell_creations_apps/packages/data/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/data/analysis_options.yaml +++ b/kell_creations_apps/packages/data/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/design_system/analysis_options.yaml b/kell_creations_apps/packages/design_system/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/design_system/analysis_options.yaml +++ b/kell_creations_apps/packages/design_system/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/feature_inventory/analysis_options.yaml b/kell_creations_apps/packages/feature_inventory/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/feature_inventory/analysis_options.yaml +++ b/kell_creations_apps/packages/feature_inventory/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/feature_orders/analysis_options.yaml b/kell_creations_apps/packages/feature_orders/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/feature_orders/analysis_options.yaml +++ b/kell_creations_apps/packages/feature_orders/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/feature_policy/analysis_options.yaml b/kell_creations_apps/packages/feature_policy/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/feature_policy/analysis_options.yaml +++ b/kell_creations_apps/packages/feature_policy/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/feature_wordpress/analysis_options.yaml b/kell_creations_apps/packages/feature_wordpress/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/feature_wordpress/analysis_options.yaml +++ b/kell_creations_apps/packages/feature_wordpress/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at diff --git a/kell_creations_apps/packages/integrations/analysis_options.yaml b/kell_creations_apps/packages/integrations/analysis_options.yaml index a5744c1..534f26d 100644 --- a/kell_creations_apps/packages/integrations/analysis_options.yaml +++ b/kell_creations_apps/packages/integrations/analysis_options.yaml @@ -1,3 +1,12 @@ +analyzer: + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml # Additional information about this file can be found at