You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
| Prototype Recomputation |❌ Missing|`daydreamer/PrototypeRecomputer.ts` (planned)| Recalculate volume/shelf medoids and centroids; recompute salience for affected entries; run tier-quota promotion/eviction |
119
-
| Full Neighbor Graph Recalc |❌ Missing|`daydreamer/FullNeighborRecalc.ts`(planned) | Rebuild bounded neighbor lists for dirty volumes; batch size bounded by O(√(t log t)) per idle cycle; recompute salience after recalc. **Note:** Currently planned as `FullMetroidRecalc` — this is a naming error; see TODO P0-X. |
| Cluster Stability |❌ Missing|`daydreamer/ClusterStability.ts`(planned) | Detect/trigger split/merge for unstable clusters; run lightweight label propagation for community detection; store community labels in PageActivity |
121
+
| Cluster Stability |✅ Complete|`daydreamer/ClusterStability.ts`| Lightweight label propagation for community detection; stores community labels in PageActivity; detects oversized and empty communities|
122
122
123
-
**Daydreamer Status:**0/6 complete (0%)
123
+
**Daydreamer Status:**4/6 complete (66%)
124
124
125
125
**Note:** Not a v1 blocker — system can ship without background consolidation (manual recalc only). Community detection is required before graph-community quota enforcement is active.
126
126
@@ -311,34 +311,35 @@ This document tracks the implementation status of each major module in CORTEX. I
311
311
312
312
**Goal:** Idle maintenance keeps memory healthy, community-aware hotpath coverage stays diverse, and privacy-safe interest sharing is available.
- After LTP/LTD: recompute σ(v) for all nodes whose incident edges changed (via `SalienceEngine.batchComputeSalience`)
532
532
- Run promotion/eviction sweep for changed nodes via `SalienceEngine.runPromotionSweep`
533
533
- Update `MetadataStore.putEdges`
534
534
535
-
-[]**P2-B2:** Add Hebbian test coverage
535
+
-[x]**P2-B2:** Add Hebbian test coverage
536
536
-`tests/daydreamer/HebbianUpdater.test.ts`
537
537
- Test strengthen increases weight
538
538
- Test decay decreases weight
@@ -548,15 +548,15 @@ These items add idle background maintenance and privacy-safe interest sharing. T
548
548
549
549
**Why:** Incremental fast semantic neighbor insert is approximate; need periodic full recalc. Recalc batch size must be bounded by H(t)-derived maintenance budget to avoid blocking the idle loop.
- Query `MetadataStore.needsNeighborRecalc(volumeId)` for dirty volumes; prioritise dirtiest first
553
553
- Load all pages in volume; compute pairwise similarities
554
554
- Bound batch: process at most `HotpathPolicy.computeCapacity(graphMass)` pairwise comparisons per idle cycle (O(√(t log t)))
555
555
- Select policy-derived max neighbors for each page; update `MetadataStore.putSemanticNeighbors`
556
556
- Clear dirty flag via `MetadataStore.clearNeighborRecalcFlag`
557
557
- Recompute σ(v) for affected nodes via `SalienceEngine.batchComputeSalience`; run promotion sweep
558
558
559
-
-[]**P2-C2:** Add neighbor graph recalc test coverage
559
+
-[x]**P2-C2:** Add neighbor graph recalc test coverage
560
560
-`tests/daydreamer/FullNeighborRecalc.test.ts`
561
561
- Test dirty flag cleared after recalc
562
562
- Test neighbor quality improved vs fast insert
@@ -571,14 +571,14 @@ These items add idle background maintenance and privacy-safe interest sharing. T
571
571
572
572
**Why:** Keep volume/shelf prototypes accurate as pages/books change. Prototype updates change which entries should occupy the volume and shelf tier quotas.
- Recompute volume medoids (select medoid page per volume)
576
576
- Recompute volume centroids (average of book embeddings)
577
577
- Recompute shelf routing prototypes
578
578
- Update vectors in `VectorStore` (append new, update offsets)
579
579
- After recomputing each level: recompute salience for affected representative entries via `SalienceEngine`; run tier-quota promotion/eviction for that tier
580
580
581
-
-[]**P2-D2:** Add prototype recomputer test coverage
581
+
-[x]**P2-D2:** Add prototype recomputer test coverage
582
582
-`tests/daydreamer/PrototypeRecomputer.test.ts`
583
583
- Test medoid selection algorithm
584
584
- Test centroid computation
@@ -592,7 +592,7 @@ These items add idle background maintenance and privacy-safe interest sharing. T
592
592
593
593
**Why:** Validate Daydreamer improves system health and hotpath stays consistent.
- Run queries (generate edge traversals and PageActivity updates)
598
598
- Run Daydreamer for N passes
@@ -609,20 +609,20 @@ These items add idle background maintenance and privacy-safe interest sharing. T
609
609
610
610
**Why:** Without community detection, a single dense topic can fill the entire page-tier quota, crowding out unrelated memories. Community quotas ensure the hotpath is both hot (high salience) and diverse (topic-representative).
611
611
612
-
-[]**P2-F1:** Add community detection to `daydreamer/ClusterStability.ts`
612
+
-[x]**P2-F1:** Add community detection to `daydreamer/ClusterStability.ts`
613
613
- Implement lightweight label propagation on the semantic neighbor graph
614
614
- Run during idle passes when dirty-volume flags indicate meaningful structural change
615
615
- Store community labels in `PageActivity.communityId` via `MetadataStore.putPageActivity`
616
616
- Rerun when graph topology changes significantly (post-split, post-merge, post-full-recalc)
617
617
618
-
-[]**P2-F2:** Wire community labels into `SalienceEngine` promotion/eviction
618
+
-[x]**P2-F2:** Wire community labels into `SalienceEngine` promotion/eviction
619
619
-`selectEvictionTarget` uses `communityId` to find weakest resident in the community bucket
620
620
- Promotion checks community quota remaining before admitting
621
621
- If community quota is full: candidate must beat weakest resident in that community
622
622
- If community is unknown (`communityId` not yet set): place node in temporary pending pool borrowing from page-tier budget
623
623
- Empty communities release their slots back to the page-tier budget
624
624
625
-
-[]**P2-F3:** Add community-aware eviction tests
625
+
-[x]**P2-F3:** Add community-aware eviction tests
626
626
-`tests/daydreamer/ClusterStability.test.ts`
627
627
- Test that a single dense community cannot consume all page-tier hotpath slots
628
628
- Test that a new community (previously unknown) receives at least one slot
@@ -637,31 +637,31 @@ These items add idle background maintenance and privacy-safe interest sharing. T
637
637
638
638
**Why:** When knowledge gaps are detected, CORTEX must be able to broadcast the incomplete Metroid as a curiosity probe to connected peers. Peers respond with relevant fragments, enabling collaborative learning. Additionally, interest sharing is a core product value for both app and library surfaces. v1 must share public-interest graph sections while preventing personal data leakage.
0 commit comments