Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/neurostack/synthesize.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,13 @@
DEFAULT_MIN_SIBLINGS = 3
# Live-calibrated on the prod embedder (embeddinggemma:300m) against the real
# memory store: 0.35-0.55 chains dense early-harvest noise into 100+ member
# mega-clusters; 0.65 yields coherent 4-15 member topic groups. Paraphrases
# mega-clusters; 0.65 still cross-linked unrelated topics (one cluster mixed
# neurostack-cloud, KPI-dashboard, AFD, firewall and Citrix observations) and
# pulled credential-bearing rows along; 0.75 yields tight same-topic groups
# whose live learnings read well (issue #111, run of 2026-08-23). Paraphrases
# (~0.93) are handled earlier by harvest dedup — synthesis clusters are the
# same-topic tier.
SIBLING_THRESHOLD = 0.65
SIBLING_THRESHOLD = 0.75
# Hard per-cluster member ceiling: one learning cannot faithfully preserve the
# facts of an unbounded heap, and the prompt must stay bounded. Oversized
# clusters keep the anchor plus its most similar members; the rest stay
Expand Down
2 changes: 1 addition & 1 deletion tests/test_synthesize.py
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ def test_missing_embeddings_counted_not_dropped(self, in_memory_db):
assert len(clusters) == 1

def test_threshold_default_live_calibrated(self):
assert SIBLING_THRESHOLD == 0.65
assert SIBLING_THRESHOLD == 0.75

def test_oversized_cluster_capped_keeps_anchor_and_most_similar(
self, in_memory_db):
Expand Down
Loading