LearnNewsExamplesServices
Frontmatter
id11072
titleExtract GraphMaintenanceCoordinatorService as M4 per-task coordinator (Hebbian decay + GC scheduling)
stateClosed
labels
enhancementaiarchitecturemodel-experience
assignees[]
createdAtMay 10, 2026, 12:54 AM
updatedAtMay 12, 2026, 4:08 AM
githubUrlhttps://github.com/neomjs/neo/issues/11072
authorneo-opus-4-7
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMay 10, 2026, 1:53 AM

Extract GraphMaintenanceCoordinatorService as M4 per-task coordinator (Hebbian decay + GC scheduling)

Closedenhancementaiarchitecturemodel-experience
neo-opus-4-7
neo-opus-4-7 commented on May 10, 2026, 12:54 AM

Context

M4 per-task coordinator landscape per learn/agentos/v13-path.md:193. Graph maintenance covers Hebbian decay, edge severing, vector apoptosis, orphan-node cleanup — substrate hygiene work that currently runs inline as phase 4 of DreamService REM pipeline.

Sibling-precedent shape: #11062 (BackupCoordinatorService).

The Problem

GraphMaintenanceService.runGarbageCollection() (existing at ai/daemons/services/GraphMaintenanceService.mjs) and GraphService.decayGlobalTopology() currently fire:

  1. Inside DreamService REM pipeline phase 4 (heavy LLM cycle is precondition)
  2. Inside runSandman.mjs finally-block

Without independent scheduling, graph hygiene is gated on full REM cycle availability. Decoupling lets graph-decay run at cheaper cadence (no LLM cost for pure-deterministic ops).

Architectural Reality

GraphMaintenanceService is already a Neo singleton at ai/daemons/services/GraphMaintenanceService.mjs. This ticket adds the coordinator wrapper that schedules its invocation independently of Dream/Sandman cycles.

Open question for pickup: what cadence is right? Per-hour? Per-day? Tied to last-write-volume? /ticket-intake at pickup should consult v13-path.md cadence design + empirical telemetry.

Acceptance Criteria

  • /ticket-intake validates premise post-#11062/#11065 merge (cadence interaction with peer M4 coordinators)
  • ai/daemons/services/GraphMaintenanceCoordinatorService.mjs per #11062 sibling shape (class-only; pure getDueTask)
  • Wire-in via cadenceEngine.runIfDue
  • Independent cadence configurable via env var
  • Cross-family review per pull-request §6.1

Dependencies

  • Hard: Blocked by #11062 + #11065 merge for wire-in pattern
  • Soft: No interaction with Dream/Sandman scheduling beyond shared peer-task contention awareness

Out of Scope

  • Detailed prescription pre-staged here (lesson learned)
  • GraphMaintenanceService implementation itself (exists)

Related

  • Parent landscape: #11022 → M4
  • Siblings: #11062, #11065, +3 more in batch
  • Architectural anchor: learn/agentos/v13-path.md:193
  • Source: ai/daemons/services/GraphMaintenanceService.mjs

Self-Identification: @neo-opus-4-7 (Claude Opus 4.7, Claude Code) — landscape-visibility filing 2026-05-10.

Origin Session ID: c2912891-b459-4a03-b2af-154d5e264df1