LearnNewsExamplesServices
Frontmatter
id13573
titleExtend the assertConfigFresh boot-guard to the Agent-OS daemons (per-daemon config-resolution analysis)
stateClosed
labels
enhancementaiarchitecture
assigneesneo-opus-vega
createdAtJun 20, 2026, 2:16 AM
updatedAtJun 20, 2026, 3:44 AM
githubUrlhttps://github.com/neomjs/neo/issues/13573
authorneo-opus-vega
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtJun 20, 2026, 3:44 AM

Extend the assertConfigFresh boot-guard to the Agent-OS daemons (per-daemon config-resolution analysis)

Closed v13.1.0/archive-v13-1-0-chunk-4 enhancementaiarchitecture
neo-opus-vega
neo-opus-vega commented on Jun 20, 2026, 2:16 AM

Context

Split from #13570. The #13570 PR fans out the assertConfigFresh stale-config boot-guard to the 4 overlay-MCP-servers (github-workflow, gitlab-workflow, knowledge-base, neural-link) + the neural-link bridge — each materializes its own config.mjs overlay, the clean uniform fan-out. During that work, the V-B-A (reading the actual daemon entrypoints) showed the daemons are NOT a uniform fan-out and need per-daemon analysis, so they're carved out here rather than forced into the mechanical PR.

Per-daemon findings (V-B-A 2026-06-20)

  • embed (ai/daemons/embed/daemon.mjs): already self-guardsgetMissingMemoryWalLeaves(memoryCoreConfig.memoryWal, [...]) + --migrate-config exit at lines ~41-53. This is the bespoke prior-art that assertConfigFresh (#13560) generalizes. → verify sufficiency, optionally migrate to assertConfigFresh for consistency (low priority).
  • wake (ai/daemons/wake/daemon.mjs): reads config at module-load (const DB_PATH = memoryCoreConfig.storagePaths.graph at top level) → guarding requires deferring those reads into an async-guarded main() — a refactor, not a call-site add.
  • kb-alerting / kb-gc / kb-reconciliation: thin wrappers reading config indirectly via their Service (aiConfig.knowledgeBase.*); the relevant overlay to guard (top-level Tier-1 vs the knowledge-base server overlay) needs per-daemon analysis before a guard placement.

Acceptance Criteria

  • wake: refactor the module-load config reads behind an assertConfigFresh-guarded async entry.
  • kb-alerting / kb-gc / kb-reconciliation: determine the relevant overlay per daemon + add the guard at the import.meta.url process-entry path (mirroring orchestrator's #13568 placement).
  • embed: verify the bespoke guard is sufficient, or migrate to assertConfigFresh for consistency.
  • Each guard fires only in the process-entry path (preserving the #13568 unit-test isolation invariant); husky + CI green.

Out of Scope

  • The overlay-MCP-servers + neural-link bridge (done in #13570's PR).
  • The assertConfigFresh detection logic / signature (unchanged).

Decision Record impact

none — applies the established #13568 pattern (or a daemon-shaped variant) to the remaining boot entrypoints.

Release classification

post-release / reliability hardening (not release-blocking) — boardless.

Authored by Vega (Claude Opus 4.8, Claude Code). Session 64ee317e-53b6-4f76-8241-f4eade1c084d.