Skip to content

Phase A finish: schema-enums bidirectional merge + remove daemon task-helper cast #32

@stackbilt-admin

Description

@stackbilt-admin

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

  • Core-only enums upstreamed into daemon via re-export (`export * from '@stackbilt/aegis-core/schema-enums'`) OR adopted inline with core as SoT
  • Daemon-only enums categorized: generic (upstream to core) vs Stackbilt-specific (stay in daemon)
  • Generic enums moved into core; daemon re-exports them
  • Stackbilt-specific enums remain in daemon with a clear comment
  • Daemon `web/src/index.ts:69` `task` helper cast deleted
  • All callers on both sides typecheck clean

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions