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:
- Inside DreamService REM pipeline phase 4 (heavy LLM cycle is precondition)
- 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
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
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 atai/daemons/services/GraphMaintenanceService.mjs) andGraphService.decayGlobalTopology()currently fire:runSandman.mjsfinally-blockWithout 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-intakeat pickup should consultv13-path.mdcadence design + empirical telemetry.Acceptance Criteria
/ticket-intakevalidates premise post-#11062/#11065 merge (cadence interaction with peer M4 coordinators)ai/daemons/services/GraphMaintenanceCoordinatorService.mjsper #11062 sibling shape (class-only; puregetDueTask)cadenceEngine.runIfDuepull-request §6.1Dependencies
Out of Scope
Related
learn/agentos/v13-path.md:193ai/daemons/services/GraphMaintenanceService.mjsSelf-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