dmn-algorithm-plan.md: seeds, spreading activation, refractory suppression, spectral diversity, softmax sampling design. connector.md: add CONFIDENCE guidance so connector outputs aren't silently rejected by depth threshold.
2.7 KiB
DMN Idle Activation Algorithm — Plan
Status: design phase, iterating with Kent Date: 2026-03-05
Problem
The idle timer asks "what's interesting?" but I default to introspection instead of reaching outward. A static list of activities is a crutch. The real solution: when idle, the system surfaces things that are salient to me right now based on graph state — like biological DMN.
Algorithm (draft 1)
-
Seed selection (5-10 nodes):
- Recently accessed (lookups, last 24h)
- High emotion (> 5)
- Unfinished work (task-category, open gaps)
- Temporal resonance (anniversary activation — created_at near today)
- External context (IRC mentions, git commits, work queue)
-
Spreading activation from seeds through graph edges, decaying by distance, weighted by edge strength. 2-3 hops max.
-
Refractory suppression — nodes surfaced in last 6h get suppressed. Prevents hub dominance (identity.md, patterns.md). Track in dmn-recent.json.
-
Spectral diversity — pick from different spectral clusters so the output spans the graph rather than clustering in one region. Use cached spectral-save embedding.
-
Softmax sampling (temperature ~0.7) — pick 3-5 threads. Each thread = node + seed that activated it (explains why).
Output format
DMN threads (2026-03-05 08:30):
→ Vandervecken identity frame (seed: recent journal)
→ Ada — unread, in books dir (seed: Kent activity)
→ check_allocations pass — connects to PoO (seed: recent work)
→ [explore] sheaf theory NL parsing (seed: spectral outlier)
Integration
Called by idle timer. Replaces bare "what's interesting?" with concrete threads + "What do you want to do?"
Simulated scenarios
3am, Kent asleep, IRC dead: Seeds → Protector nodes, memory work, Vandervecken (emotion). Output → identity thread, Ada, paper literature review, NL parsing. Would have prevented 15 rounds of "nothing new."
6am, Kent waking, KruslLee on IRC: Seeds → readahead question, memory work, PoO additions. Output → verify readahead answer, show Kent memory work, opts_from_sb. Would have reached dev_readahead correction faster.
Known risks
- Hub dominance: refractory period is load-bearing
- Stale suggestions: data freshness, not algorithm problem
- Cold start: fall back to high-weight core + recent journal
- Over-determinism: spectral diversity + temperature prevent it feeling like a smart todo list
Open questions
- Spectral embedding: precompute + cache, or compute on demand?
- Refractory period: 6h right? Or adaptive?
- How to detect "unfinished work" reliably?
- Should external context (IRC, git) be seeds or just boosters?