6 Commits
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
63a35eceeb |
feat(stage-16a): error logging, crash capture, and bug reporting
Closes the two findings the release committee review identified as absolute gaps: the platform had no structured logging and no crash reporting, so runtime errors were invisible in every environment and operators had no way to report a defect with evidence attached. Addresses PROJECT_STATE_AUDIT.md findings P3.4 (structured logging infrastructure) and P3.5 (crash reporting integration), plus the "No logging infrastructure" and "No crash reporting" architectural risks in section 3.4. core — new observability layer (packages/core/lib/src/observability/): - KcLogLevel: five ordered severities (debug/info/warning/error/fatal) with numeric severity, label, isAtLeast() threshold comparison, and fromString(). - KcLogRecord: immutable structured record (level, source, message, timestamp, unmodifiable context, error, stackTrace) with format(), toJson(), isFailure. - KcRedactor: credential redaction over 14 sensitive key fragments, recursing through nested maps and lists. Applied to every logged context map and every bug report diagnostics map. - KcLogSink contract plus three implementations: KcConsoleLogSink (silent in release by default), KcInMemoryLogSink (bounded ring buffer supplying bug report evidence), KcMultiLogSink (fan-out that tolerates a failing sink). - KcLogger: the logging facade. Drops sub-threshold records, redacts context, and swallows sink exceptions so observability can never break a business operation. Provides forSource() for subsystem-scoped child loggers. - KcErrorReporter: installs FlutterError.onError and PlatformDispatcher.instance.onError, and provides runGuarded() to wrap runApp. restore() resets global state so tests stay isolated. - KcBugSeverity and KcBugReport: the report model with redacted diagnostics, hasFailureEvidence, toJson() for transmission, and toMarkdown() for export. - KcBugReportSink contract plus KcInMemoryBugReportSink. - KcBugReportService: validates input, attaches the recent log tail as evidence, logs the submission outcome, and returns a failure result rather than throwing when the tracker is unreachable. - KcObservability: assembles logger, evidence buffer, and bug report service together. Building them independently is the most likely way to produce empty bug reports, so this bundle guarantees they share one buffer. design_system: - KcBugReportDialog and KcBugReportDraft: the shared operator reporting form with inline validation, severity selection, optional reporter identity, and an explicit statement that logs are attached and credentials are never included. Kept free of a core dependency so design_system stays dependency-free. Application wiring (kell_web and kell_mobile): - AppServices and MobileAppServices hold a KcObservability; all four factories (fake/wordpress/square/multi) stamp their environment label so reports are attributable to the mode that produced them. - Both main.dart entry points install the global error handlers before the first frame and wrap runApp in a guarded zone, then emit a startup record capturing the effective environment and whether a fake-mode credential fallback occurred. - "Report a problem" action added to the AppShell and MobileShell app bars, capturing the active screen (and tab index on mobile). Documentation: - docs/operations/release-checklist.md (new): per-environment release gates for Development, Test/QA, Staging, and Production. Each environment inherits the prior one's gates and adds its own, with build commands, functional and observability verification, a sign-off record, rollback triggers, and the open blocker register. - master_development_brief.md: Stage 16A manifest, corrected baseline, Stage 16C defined for the deferred scope (retry/rate limiting, remote sink, health dashboard, analytics). Marked the square()/multi() factory and ID conflation debt items resolved (fixed in Stage 10E but still listed as open). - build_execution_tracker.md: Stage 16A slice entry. - PRD.md: milestone table brought current; observability added to infrastructure requirements. Added a scoped markdownlint-disable for MD011 because the PRD's "(text)[cite: n]" citation markers are indistinguishable from reversed links and were silently corrupted by markdownlint --fix during this review. - mkdocs.yml and operations/index.md: register the release checklist. Corrections made during review: - The documented test total of 1,458 omitted feature_policy's 17 tests. The true grand total is 1,475; both figures are now documented with the reason. Validation: - 85 new tests: 56 core, 10 design_system, 10 kell_web, 9 kell_mobile. - 1,475/1,475 passing across all 11 packages and apps. - dart analyze --fatal-infos clean across all 11 packages and apps. - markdownlint clean on all five modified/created documents. Known limitations (tracked as Stage 16C): - Logs and bug reports are held in-process only. There is no remote sink, so diagnostics are lost on restart and are unavailable off-device. - Usage analytics and the per-channel integration health dashboard are not implemented; IntegrationHealthCheck remains a contract with no implementation. |
|
|
|
9b2dd15ee2 | feat(integrations): Stage 10A — Square API client and authentication | |
|
|
bda93640e4 |
feat(auth): Stage 8C - authentication foundation
- Add KcUser/KcUserRole domain models with copyWith, equality, toString - Add AuthState sealed hierarchy (unauthenticated, loading, authenticated, error) - Add AuthService abstract contract (signIn, signOut, refreshSession, stream) - Add AuthException with optional HTTP statusCode - Add CredentialStore abstract contract with CredentialKeys constants - Add InMemoryCredentialStore implementation - Add FakeAuthService with role-based sign-in simulation - Add KcAppEnvironment.square to core enum with SQ label - Add KcBootstrap square case (falls back to fake until Stage 10A) - Update kell_web and kell_mobile shell environment badges for square case - Add integrations dependency to kell_web and kell_mobile pubspec.yaml - Add auth to run_all_tests.sh TESTABLE and ANALYZABLE lists - Add 42 auth tests (42/42 passing) - Add 1 new core test for square bootstrap fallback (21/21 passing) - Update master_development_brief.md: Stage 8C complete, Stage 8 complete - Total: 764/764 tests passing, dart analyze clean Stage 8 (infrastructure package activation) is now complete. Next: feat/wc-orders-integration (Stage 9A) |
|
|
|
65466ba513 |
feat(mobile): Stage 5A — Android app shell and bootstrap
Validate Docs / validate-docs (push) Successful in 3m31s
Details
Flutter Analyze / Dart Analyze (push) Has been cancelled
Details
Flutter Test / Flutter Tests (push) Has been cancelled
Details
Replace default Flutter counter template in kell_mobile with a fully integrated mobile operations platform shell reusing shared packages. Mobile app shell: - MobileAppServices extending KcAppServices with fake()/wp() factories - KellMobileApp with KcAppScope<MobileAppServices>, KcTheme, env badge - MobileShell with 5-tab NavigationBar (Dashboard, Inventory, Orders, Publishing, More) using IndexedStack for state preservation - KcBootstrap entry point with --dart-define environment variables Dashboard: - DashboardSummary value object with fromData()/empty() constructors - GetDashboardSummary use case aggregating inventory, orders, publishing - DashboardController (ChangeNotifier) with loading/error/summary state - MobileDashboardPage with GridView summary cards using design system widgets (KcSectionHeader, KcSummaryCard, KcEmptyState) Placeholder pages: - FinancePlaceholderPage, IntegrationsPlaceholderPage for More tab - Feature tab pages delegate to shared feature presentation layers Infrastructure: - pubspec.yaml references all shared packages (core, design_system, feature_inventory, feature_orders, feature_policy, feature_wordpress) - SDK constraint corrected from ^3.11.4 to ^3.11.0 across all 14 pubspec.yaml files to match installed Dart SDK 3.11.3 Tests: - 6 new kell_mobile widget tests: shell loading, summary cards, environment badge, navigation bar destinations, tab switching, More menu - All existing tests remain passing (24/24 kell_web, 294/294 feature_wordpress) Documentation: - master_development_brief.md: Stage 5A marked complete, next branch updated to feat/android-publishing-surface (Stage 5B), kell_mobile platform description updated - build_execution_tracker.md: Stage 5A entry added with full file list |
|
|
|
9eafc68fec |
feat(core): extract shared composition pattern into core package (Stage 4B)
Validate Docs / validate-docs (push) Successful in 1m13s
Details
Extract AppConfig/AppEnvironment, AppServices, Bootstrap, and AppScope into core package as KcAppConfig, KcAppServices, KcBootstrap, and KcAppScope generic abstractions. New core composition types: - KcAppConfig: runtime config from --dart-define (KC_ENV, WC credentials) - KcAppEnvironment: enum for fake/wordpress environments - KcAppServices: abstract base for app service containers - KcServiceFactory<T>: generic factory for fake/wordpress service creation - KcBootstrap: shared bootstrap with env switch and WP credential fallback - KcAppScope<T>: InheritedWidget exposing typed services + config to tree kell_web backward compatibility: - AppConfig/AppEnvironment are now typedefs to Kc-prefixed types - AppServices extends KcAppServices with concrete repositories - AppScope extends KcAppScope<AppServices> with direct InheritedWidget lookup - Bootstrap delegates to KcBootstrap.run with app-specific factory Tests: 20 new core tests, all 379 tests passing (core 20, design_system 41, feature_wordpress 294, kell_web 24). dart analyze clean. |
|
|
|
59548cedbd |
Add Flutter app and package monorepo scaffold
Publish Docs / publish-docs (push) Successful in 59s
Details
|