Modules Program Status (Track 1 -> Track 2)
Date: 2026-03-16
Scope
This document tracks progress for the agreed execution order:
- Lifecycle hardening
- Domain cutover workstream
Current Overall Status
- Track 1 (lifecycle hardening): done.
- Track 2 (domain cutover): done for the Products/Sponsors/Tasks/Teams wave.
Track 1: Lifecycle Hardening
Completed
- Implemented true rollback apply behavior that avoids destructive uninstall/recreate collisions.
- Added plan provenance tracking in lifecycle plans:
sourceCanonicalVersionnow captured at plan creation time.
- Added plan drift protection at apply time:
- apply now verifies current installed canonical version matches the plan source version.
- Hardened rollback semantics:
- no-op rollback when already at target canonical version.
- rollback resolves target manifest by canonical version.
- Maintained upgrade compatibility:
- upgrade planning remains valid even when an exact target canonical manifest is not currently materialized in known manifests.
Validation
- Package typecheck passed:
pnpm tsc --noEmit --project configs/tsconfig.src-packages.json
- Lifecycle integration suite passed:
pnpm -s exec vitest run --project integration-tests-node-postgresql integration-tests/modules-lifecycle.workflow.test.ts --silent
Newly Confirmed
- Added lifecycle drift regression coverage in integration workflow tests.
- Apply-time drift enforcement now rejects stale plans when installed canonical version changes after planning.
- API lifecycle planning now exposes explicit plan metadata:
- source/target canonical provenance
- selected manifest version
- version graph snapshot (canonical -> manifest versions)
- created/expiry timestamps
- Materialized lifecycle plans now enforce retention via expiry policy (15 minute TTL).
- Version graph semantics are now deterministic when multiple manifest versions coexist under a canonical version (highest semantic version selected).
Remaining (Track 1)
- None.
Track 2: Domain Cutover
Completed Prep Work
- Story/test-data/model-type alignment and import-path modernization were completed as part of workspace typecheck cleanup.
- Full workspace typecheck passes (
pnpm typecheck).
Remaining Core Delivery (Main Track 2)
- None for the four-domain cutover wave scope.
Current Track 2 Findings (Products Slice)
- Router wiring exists for products in root API router.
- Products domain service token/provider path is implemented (
productServiceToken, provider registered in server app providers). - Products API now exposes canonical
get,list,put, anddelprocedures. - Products hooks now call canonical tRPC mutations (
trpc.products.put,trpc.products.del) instead of local mock persistence. - Entity edit plumbing now passes selected entity context into edit mutations, enabling id-targeted
putsemantics in products/sponsors hooks. - Products-targeted integration coverage now exists in
integration-tests/products.router.test.tsand passes. - Products UI component verification now exists in
packages/ui-domain-entities-components/products/tests/ProductsPage.test.tsxand passes.
Current Track 2 Findings (Sponsors Slice)
- Sponsors domain service token/provider path is implemented and registered in server app providers.
- Sponsors API now exposes canonical
get,list,put, anddelprocedures. - Sponsors hooks now call canonical tRPC mutations (
trpc.sponsors.put,trpc.sponsors.del) with id-aware edit behavior. - Sponsors-targeted integration coverage now exists in
integration-tests/sponsors.router.test.tsand passes. - Sponsors UI component verification now exists in
packages/ui-domain-sponsors-components/tests/SponsorsPage.test.tsxand passes.
Current Track 2 Findings (Tasks Slice)
- Tasks API now exposes canonical
get,list,put, anddelprocedures. - Tasks hooks now call canonical tRPC mutations (
trpc.tasks.put,trpc.tasks.del) with id-aware edit behavior. - Tasks-targeted integration coverage now exists in
integration-tests/tasks.router.test.tsand passes. - Tasks UI component verification now exists in
packages/ui-domain-tasks-components/tests/TasksPage.test.tsxand passes.
Current Track 2 Findings (Teams Slice)
- Teams API now exposes canonical
get,list,put, anddelprocedures. - Teams hooks now call canonical tRPC mutations (
trpc.teams.put,trpc.teams.del) with id-aware edit behavior. - Teams-targeted integration workflow coverage now exists in
integration-tests/teams.router.workflow.test.tsand passes. - Teams membership router now includes concrete
removeMemberandcancelInvitationprocedures, and Teams membership UI hook now uses canonical tRPC mutations for those actions. - Teams membership backend hardening is now implemented end-to-end:
inviteByEmailresolves existing users by email instead of placeholder IDs.inviteToTeamis implemented as userId-based invitation flow.- membership finalize path now uses canonical predicate-based statement creation (no placeholder predicate IDs).
- Teams UI component test suite is passing in browser project:
packages/ui-domain-teams-components/tests/TeamDialogs.test.tsxpackages/ui-domain-teams-components/tests/TeamFields.test.tsxpackages/ui-domain-teams-components/tests/TeamsTable.test.tsx
- Cross-domain targeted integration rerun is passing for Products/Sponsors/Tasks/Teams + Teams membership workflow.
- Cross-domain component verification rerun is passing for Products/Sponsors/Tasks/Teams.
- Domain-slice legacy alias cleanup for Products/Sponsors/Tasks/Teams is complete.
Remaining (Track 2)
- None for the four-domain wave scope.
Immediate Next (Track 2)
- Program:
- Keep these suites in regression runs as ongoing sentries (
pnpm test:regression:track1-closeout, wired into CI integration job).
- Keep these suites in regression runs as ongoing sentries (
Risks and Constraints
- Lifecycle versioning behavior still depends on available known manifests at runtime.
- Domain cutover risk is primarily stale import paths and partial model drift in stories/tests/fixtures; mitigated by strict typecheck gates.
Recommended Next Actions
- Continue running the closeout sentry regression in routine CI and release checks.
- Start the next planned program wave outside Track 1/Track 2 closeout scope.