- Status: Accepted
- Date: 2026-06-12
- Partially superseded by ADR 0009 on 2026-09-14: only the Cookle app presentation bullets. All other boundaries remain in force. The decision below records the original adoption state.
ADR 0010 records the later companion evaluation. Current non-adoption follows each surface's role and verified limitations rather than a blanket exclusion from future work.
MHPlatform 1.9 and MHUI 1.5 clarified consumer boundaries for the shared package foundation used by Cookle and sibling apps.
MHPlatform now treats MHPlatform as the full-app composition umbrella,
MHPlatformCore as the shared-library default, and surface adapters as
consumers that should call app-owned shared APIs before adding direct platform
products.
MHUI now separates MHDesign metrics from the full MHUI styled surface and
explicitly keeps generic helpers and thin host-app presentation shortcuts
outside the package.
Cookle already has the matching app shape: app-owned adapters call shared
*Operations facades, repository-owned tests live in
CookleLibrary/Tests/Default, and
MCP-first verification is the Apple evidence surface.
Cookle adopts the current package consumer boundaries without forcing full package-surface parity.
Cookleremains the full-appMHPlatformadopter.CookleLibraryremains onMHPlatformCoreand stays offMHPlatform,MHAppRuntime, app-runtime split products, MHUI, and MHDesign.CooklelinksMHDesignas a metrics-only dependency for shared spacing and radius values.Cookledoes not link the fullMHUIproduct until the app intentionally adopts package-owned styled primitives.Widgets,Watch, and App Intents callCookleLibraryAPIs first and stay off app-runtime and presentation package umbrellas by default.- Cookle does not keep a generic utility package dependency. Generic helpers and thin host-app presentation shortcuts are not migrated into MHUI.
- Repository static rules guard the package consumer boundary alongside the Operations and test-posture boundaries.
Cookle can consume newer MHPlatform and MHUI releases while preserving its own domain and UI boundaries.
Shared package updates should be evaluated by responsibility:
- platform runtime and app composition concerns belong in the app target
- reusable business behavior belongs behind
CookleLibraryOperations facades - shared visual metrics can come from
MHDesign - Cookle-specific screen composition stays in Cookle views and screen models
- generic helpers stay app/shared-library-owned unless they become a stable platform-foundation contract
Future refactors should remove local glue only when the package now owns the same durable responsibility. They should not replace Cookle domain adapters or screen behavior solely because a sibling package exposes a similarly named API.