Task App -> OmniKernel adoption checklist
Source of truth:
docs/todo/FEAT-task-app-omnikernel-adoption.md
Implementation checklist
- Locate or restore the real task-app source tree
- Source confirmed in
examples/task-system-app/apps/task-system-app/src/ - No implementation work performed in
dist/
- Source confirmed in
- Introduce an explicit adapter module/service layer
- Added
apps/task-system-app/src/omni-task-app/ - Mapping logic kept out of controllers and GraphQL resolvers
- Added
- Map containers to
OmniCollectionEntity- Projects persist through Omni collections
- Human-facing fields mapped via title/slug/summary/payload
- Map tasks to
OmniRecordEntity- Tasks persist with
kind = 'task' - Task-specific fields live in disciplined
payload - No
OmniTaskEntityintroduced
- Tasks persist with
- Map external refs to
OmniExternalRefEntity- Task refs use
internalType = record - Provider/account/container/externalId preserved
- Task refs use
- Use canonical Omni relations only
containsfor collection membershipreferencesfor task cross-linksrelated_tofor loose task associations- No
belongs_tointroduced
- Add Omni-only modeling for the remaining task-app concepts
- Events now persist as
OmniRecordEntity(kind='event') - Sync states now persist as
OmniRecordEntity(kind='sync-state')
- Events now persist as
- Wire real OmniKernel-backed REST read paths
GET /tasks?projectId=...GET /projects/:id/tasksGET /eventsGET /sync-statesGET /external-refs
- Wire real OmniKernel-backed REST write paths
POST/PUT /projectsPOST/PUT /tasksPOST/PUT /eventsPOST/PUT /sync-statesPOST/PUT /external-refs
- Remove legacy task-app storage usage
- Removed task-app dependence on legacy task-system entities/tables for runtime persistence
- Removed dual write to legacy task tables
- Task app now uses Omni entities/repositories only
- Switch GraphQL task-app API to Omni-backed resolvers
- Added local GraphQL-compatible
TaskSystem_*resolvers backed by Omni services - Preserved the outward GraphQL contract while replacing the storage backend
- Added Omni-backed relation resolution for
project.tasks,project.events,task.project,event.project
- Added local GraphQL-compatible
- Add tests for mapping layer
task-app-omni.mapper.spec.ts
- Add tests for collection membership flow
task-app-omni.integration.spec.ts
- Add tests for relation flow
task-app-omni.integration.spec.ts- Covers
referencesandrelated_to
- Add tests for GraphQL compatibility
test/task-system.graphql.e2e-spec.ts- create/read/update/delete paths now run on Omni-backed resolvers
- join/sort/pagination compatibility preserved
- Add docs/checklist updates for the migration
examples/task-system-app/README.mddocs/todo/FEAT-task-app-omnikernel-adoption.checklist.md
- Run repo validation relevant to this switchover
npm run lint✅npm test -- --runInBand --no-watchman✅npm run test:e2e -- --runInBand --no-watchman✅npm run build✅- Combined pipeline run ✅
Current focus
- Initial Omni adoption slice
- Full GraphQL switchover
- Remove dual write / legacy persistence
- Full pipeline green
- Re-align the implementation to CRUD-Gen-native wiring
- replace manual REST controllers with
crudRestControllerFactorywhere possible - replace manual GraphQL CRUD resolvers with
resolverFactory/CrudGenDependencyFactorywhere possible - keep custom code only in Omni-backed service overrides and relation-specific extensions
- preserve Omni-only persistence while restoring CRUD-Gen as the standard API surface
- replace manual REST controllers with
Notes
- The task app now uses Omni entities as its only persistence substrate.
- GraphQL compatibility is preserved intentionally even though the backend implementation is no longer the legacy task-system module.