Context
aegis-oss#18 (dependency model migration) Phases 1–4 closed 2026-04-03. Phase A (contract wiring) per `project_daemon_kernel_shadow` memory has sub-phases A.1 and A.2 done, but A.3 + A.4 are outstanding.
Status beacon still present in daemon `web/src/index.ts:69`:
```ts
// Daemon's EdgeEnv is a superset of core's — safe to cast task functions
const task = (t: Omit<ScheduledTaskPlugin, 'run'> & { run: (...args: any[]) => Promise }): ScheduledTaskPlugin => t as ScheduledTaskPlugin;
```
This cast is the TODO beacon — its removal signals Phase A complete. It remains because the symptom below is unresolved.
Root cause: schema-enums bidirectional drift
`web/src/schema-enums.ts` is duplicated between daemon and core. Content diverges in both directions:
Core has, daemon lacks (should be adopted in daemon or re-exported):
- `EDGE_RELATIONS` / `EdgeRelation`
- `NODE_TYPES` extended set (`module`, `function`, `class`, `interface`, `type_alias`) — daemon only has the 7-item base
- `FEEDBACK_SOURCES` / `FeedbackSource`
Daemon has, core lacks (should be upstreamed into core, since they describe generic substrates):
- `JOB_STATUSES` + `TERMINAL_JOB_STATUSES` (CC task tracking — generic concurrency primitive, not Stackbilt-specific)
- `SPRINT_STAGES` + `RISK_LEVELS` (sprint backlog substrate)
- `SCHEDULED_CONTENT_TYPES` + `SCHEDULED_CONTENT_STATUSES`
- `MEDIA_SOURCE_TYPES` + `MEDIA_FORMATS` + `MEDIA_STATUSES`
- `ALERT_SEVERITIES`
Some of those last groups (media queue, scheduled content) may be daemon-specific and stay daemon-only. That's the judgment call per enum.
Acceptance criteria
Out of scope
- Phase C shadow files (router.ts, dispatch.ts, board.ts, argus-actions.ts supersets) — separate epic
- Phase D llm-providers adoption — aegis-oss#24
References
- Memory: `project_daemon_kernel_shadow.md` section "Phase A"
- Daemon `web/src/types.ts:43` — `Env extends CoreEnv` correctly wired (A.1 done)
- aegis-oss#18 — closed parent epic
Context
aegis-oss#18 (dependency model migration) Phases 1–4 closed 2026-04-03. Phase A (contract wiring) per `project_daemon_kernel_shadow` memory has sub-phases A.1 and A.2 done, but A.3 + A.4 are outstanding.
Status beacon still present in daemon `web/src/index.ts:69`:
```ts
// Daemon's EdgeEnv is a superset of core's — safe to cast task functions
const task = (t: Omit<ScheduledTaskPlugin, 'run'> & { run: (...args: any[]) => Promise }): ScheduledTaskPlugin => t as ScheduledTaskPlugin;
```
This cast is the TODO beacon — its removal signals Phase A complete. It remains because the symptom below is unresolved.
Root cause: schema-enums bidirectional drift
`web/src/schema-enums.ts` is duplicated between daemon and core. Content diverges in both directions:
Core has, daemon lacks (should be adopted in daemon or re-exported):
Daemon has, core lacks (should be upstreamed into core, since they describe generic substrates):
Some of those last groups (media queue, scheduled content) may be daemon-specific and stay daemon-only. That's the judgment call per enum.
Acceptance criteria
Out of scope
References