dsh-biocore 0.5.1 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +10 -0
- package/lib/py/bridge.py +98 -0
- package/package.json +1 -1
- package/python/biocore_memory/adapters/dsh_cli.py +56 -2
- package/python/biocore_memory/core/config.py +274 -142
- package/python/biocore_memory/engine.py +3346 -2738
- package/python/biocore_memory/engine_helpers.py +15 -1
- package/python/biocore_memory/event/activation.py +118 -0
- package/python/biocore_memory/event/chains.py +112 -0
- package/python/biocore_memory/event/claims.py +486 -0
- package/python/biocore_memory/event/compaction.py +240 -0
- package/python/biocore_memory/event/consistency.py +10 -99
- package/python/biocore_memory/event/event_graph.py +100 -0
- package/python/biocore_memory/event/events.py +926 -0
- package/python/biocore_memory/event/facts.py +150 -0
- package/python/biocore_memory/event/json_tolerant.py +73 -0
- package/python/biocore_memory/event/keynorm.py +380 -0
- package/python/biocore_memory/event/rolling.py +211 -0
- package/python/biocore_memory/event/segment.py +164 -0
- package/python/biocore_memory/event/segment_adaptive.py +114 -0
- package/python/biocore_memory/event/timerender.py +68 -0
- package/python/biocore_memory/evict/consequence.py +10 -14
- package/python/biocore_memory/index/entities.py +11 -51
- package/python/biocore_memory/recall/activation.py +144 -0
- package/python/biocore_memory/recall/api.py +5 -2
- package/python/biocore_memory/recall/cover.py +134 -0
- package/python/biocore_memory/recall/embedding.py +555 -50
- package/python/biocore_memory/recall/point_expand.py +169 -0
- package/python/biocore_memory/recall/providers.py +442 -0
- package/python/biocore_memory/recall/segments.py +111 -0
- package/python/biocore_memory/space.py +967 -24
- package/python/biocore_memory/space_learning.py +347 -0
- package/python/biocore_memory/store/dedupe.py +5 -42
- package/python/biocore_memory/store/json_store.py +81 -2
- package/python/biocore_memory/store/near_dup.py +250 -0
- package/python/biocore_memory/store/sql_store.py +665 -0
- package/python/biocore_memory/store/versioning.py +291 -0
- package/python/biocore_model/entity_graph.py +13 -7
- package/python/biocore_model/tests/conftest.py +58 -0
- package/python/biocore_model/tests/test_appraisal.py +23 -9
- package/python/biocore_model/tests/test_appraisal_v2.py +140 -0
- package/python/biocore_model/tests/test_batch_b.py +310 -0
- package/python/biocore_model/tests/test_batch_d.py +244 -0
- package/python/biocore_model/tests/test_batch_e.py +210 -0
- package/python/biocore_model/tests/test_batch_registry.py +272 -0
- package/python/biocore_model/tests/test_bio_tick.py +50 -5
- package/python/biocore_model/tests/test_damping_needs_split.py +144 -0
- package/python/biocore_model/tests/test_dimensions.py +249 -0
- package/python/biocore_model/tests/test_dimensions_conflict.py +192 -0
- package/python/biocore_model/tests/test_expression.py +254 -0
- package/python/biocore_model/tests/test_governance.py +180 -181
- package/python/biocore_model/tests/test_learning_eval.py +142 -0
- package/python/biocore_model/tests/test_module_monitor.py +172 -0
- package/python/biocore_model/tests/test_paper_alignment.py +138 -0
- package/python/biocore_model/tests/test_perception_batch.py +371 -0
- package/python/biocore_model/tests/test_perception_batch_a2.py +304 -0
- package/python/biocore_model/tests/test_proposal_split.py +214 -0
- package/python/biocore_model/tests/test_runtime_pipeline.py +3 -6
- package/python/biocore_model/tests/test_source_split.py +170 -0
- package/python/biocore_model/tests/test_space.py +240 -0
- package/python/biocore_model/tests/test_spatial_recall.py +288 -0
- package/python/biocore_model/tests/test_surprise_priority.py +143 -0
- package/python/biocore_model/tests/test_timescales.py +181 -0
- package/python/biocore_runtime/extensions.py +2 -2
- package/python/biocore_runtime/pipeline.py +3996 -183
- package/python/biocore_runtime/rerank.py +51 -84
- package/python/biocore_model/tests/test_autonomy_self.py +0 -153
- package/python/biocore_model/tests/test_memory_inject.py +0 -211
- package/python/data/signals.json +0 -15307
|
@@ -1,142 +1,274 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""All memory-layer thresholds/defaults in one place."""
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
SCHEMA_VERSION = 1
|
|
6
|
-
MAX_VERSIONS = 8
|
|
7
|
-
TOMBSTONE_LIMIT = 100
|
|
8
|
-
DEFAULT_BUDGET = 3
|
|
9
|
-
MAX_BUDGET = 5
|
|
10
|
-
|
|
11
|
-
# recall fusion / tiers (M2). [engineering] no fitting source; .50/.30/.10/.10
|
|
12
|
-
# is the single口径 now (the old "0.6/0.4" comment and the task's .4/.3/.2/.1
|
|
13
|
-
# are retired, code unchanged).
|
|
14
|
-
CUE_WEIGHT = 0.50
|
|
15
|
-
SEM_WEIGHT = 0.30
|
|
16
|
-
IMPORTANCE_WEIGHT = 0.10
|
|
17
|
-
TIME_BONUS = 0.10
|
|
18
|
-
HIGH_TIER = 0.55
|
|
19
|
-
MID_TIER = 0.35
|
|
20
|
-
|
|
21
|
-
# source credibility gate (separate from importance)
|
|
22
|
-
SOURCE_MIN_CONFIDENCE = 0.55
|
|
23
|
-
SOURCE_CONFIDENCE_DEFAULT = 0.70
|
|
24
|
-
|
|
25
|
-
# memory value formula (deterministic; trust is NOT part of value)
|
|
26
|
-
# [engineering] product definition, no behavioural data behind the weights.
|
|
27
|
-
VALUE_BASE = 0.20
|
|
28
|
-
VALUE_W_INTENSITY = 0.30
|
|
29
|
-
VALUE_W_VALENCE = 0.20
|
|
30
|
-
VALUE_W_SELF = 0.15
|
|
31
|
-
VALUE_W_MAINLINE = 0.15
|
|
32
|
-
VALUE_W_ROUTINE = 0.20
|
|
33
|
-
|
|
34
|
-
# eviction weights (read-only score) [engineering]
|
|
35
|
-
EVICT_W_SALIENCE = 0.30
|
|
36
|
-
EVICT_W_POSITION = 0.20
|
|
37
|
-
EVICT_W_REDUNDANCY = 0.20
|
|
38
|
-
EVICT_W_CONFIDENCE = 0.15
|
|
39
|
-
EVICT_W_STALENESS = 0.15
|
|
40
|
-
|
|
41
|
-
# identity write-back gate
|
|
42
|
-
SAME_DIRECTION_MIN = 3
|
|
43
|
-
MAX_STEP = 0.02
|
|
44
|
-
MAJOR_EVENT_STEP = 0.02
|
|
45
|
-
|
|
46
|
-
# thread card
|
|
47
|
-
THREAD_TTL = 21600.0
|
|
48
|
-
THREAD_LIMIT = 3
|
|
49
|
-
|
|
50
|
-
# memory-point gate (OR): value >= MIN_VALUE or importance >= MIN_IMPORTANCE or self >= MIN_SELF
|
|
51
|
-
# (event centrality / emotional intensity; self-reference effect; engineering thresholds)
|
|
52
|
-
MEMORY_POINT_MIN_VALUE = 0.60 # [engineering]
|
|
53
|
-
MEMORY_POINT_MIN_SELF = 0.45
|
|
54
|
-
MEMORY_POINT_MIN_IMPORTANCE = 0.75
|
|
55
|
-
|
|
56
|
-
# engine wiring knobs (all read by MemoryEngine only)
|
|
57
|
-
RATE_LIMIT_PER_MIN = 30
|
|
58
|
-
COMPRESS_MAX_CHARS = 200
|
|
59
|
-
AUDIT_TAIL = 50
|
|
60
|
-
COOC_MAX_ENTRIES = 400
|
|
61
|
-
# after-turn auto consolidation: every N successful remember() calls
|
|
62
|
-
CONSOLIDATE_AUTO_TURNS = 10
|
|
63
|
-
|
|
64
|
-
# recall -> affect feedback (task-218): a recalled memory nudges the live
|
|
65
|
-
# affect a little. Engine owns the state; recall/feedback.py owns the guards.
|
|
66
|
-
# [engineering] gain / step / cooldown / floor are hand-set (see PAPER-MAP.md).
|
|
67
|
-
FEEDBACK_MAX_STEP = 0.02 # per-turn cap on |delta valence| and |delta arousal|
|
|
68
|
-
FEEDBACK_GAIN = 0.50 # share of (recalled - current) that flows back
|
|
69
|
-
FEEDBACK_COOLDOWN = 1800.0 # same entry: no second feedback inside 30 minutes
|
|
70
|
-
FEEDBACK_NEG_FLOOR = -0.40 # at/below this valence a further negative pull is dropped
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
#
|
|
74
|
-
#
|
|
75
|
-
#
|
|
76
|
-
#
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""All memory-layer thresholds/defaults in one place."""
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
SCHEMA_VERSION = 1
|
|
6
|
+
MAX_VERSIONS = 8
|
|
7
|
+
TOMBSTONE_LIMIT = 100
|
|
8
|
+
DEFAULT_BUDGET = 3
|
|
9
|
+
MAX_BUDGET = 5
|
|
10
|
+
|
|
11
|
+
# recall fusion / tiers (M2). [engineering] no fitting source; .50/.30/.10/.10
|
|
12
|
+
# is the single口径 now (the old "0.6/0.4" comment and the task's .4/.3/.2/.1
|
|
13
|
+
# are retired, code unchanged).
|
|
14
|
+
CUE_WEIGHT = 0.50
|
|
15
|
+
SEM_WEIGHT = 0.30
|
|
16
|
+
IMPORTANCE_WEIGHT = 0.10
|
|
17
|
+
TIME_BONUS = 0.10
|
|
18
|
+
HIGH_TIER = 0.55
|
|
19
|
+
MID_TIER = 0.35
|
|
20
|
+
|
|
21
|
+
# source credibility gate (separate from importance)
|
|
22
|
+
SOURCE_MIN_CONFIDENCE = 0.55
|
|
23
|
+
SOURCE_CONFIDENCE_DEFAULT = 0.70
|
|
24
|
+
|
|
25
|
+
# memory value formula (deterministic; trust is NOT part of value)
|
|
26
|
+
# [engineering] product definition, no behavioural data behind the weights.
|
|
27
|
+
VALUE_BASE = 0.20
|
|
28
|
+
VALUE_W_INTENSITY = 0.30
|
|
29
|
+
VALUE_W_VALENCE = 0.20
|
|
30
|
+
VALUE_W_SELF = 0.15
|
|
31
|
+
VALUE_W_MAINLINE = 0.15
|
|
32
|
+
VALUE_W_ROUTINE = 0.20
|
|
33
|
+
|
|
34
|
+
# eviction weights (read-only score) [engineering]
|
|
35
|
+
EVICT_W_SALIENCE = 0.30
|
|
36
|
+
EVICT_W_POSITION = 0.20
|
|
37
|
+
EVICT_W_REDUNDANCY = 0.20
|
|
38
|
+
EVICT_W_CONFIDENCE = 0.15
|
|
39
|
+
EVICT_W_STALENESS = 0.15
|
|
40
|
+
|
|
41
|
+
# identity write-back gate
|
|
42
|
+
SAME_DIRECTION_MIN = 3
|
|
43
|
+
MAX_STEP = 0.02
|
|
44
|
+
MAJOR_EVENT_STEP = 0.02
|
|
45
|
+
|
|
46
|
+
# thread card
|
|
47
|
+
THREAD_TTL = 21600.0
|
|
48
|
+
THREAD_LIMIT = 3
|
|
49
|
+
|
|
50
|
+
# memory-point gate (OR): value >= MIN_VALUE or importance >= MIN_IMPORTANCE or self >= MIN_SELF
|
|
51
|
+
# (event centrality / emotional intensity; self-reference effect; engineering thresholds)
|
|
52
|
+
MEMORY_POINT_MIN_VALUE = 0.60 # [engineering]
|
|
53
|
+
MEMORY_POINT_MIN_SELF = 0.45
|
|
54
|
+
MEMORY_POINT_MIN_IMPORTANCE = 0.75
|
|
55
|
+
|
|
56
|
+
# engine wiring knobs (all read by MemoryEngine only)
|
|
57
|
+
RATE_LIMIT_PER_MIN = 30
|
|
58
|
+
COMPRESS_MAX_CHARS = 200
|
|
59
|
+
AUDIT_TAIL = 50
|
|
60
|
+
COOC_MAX_ENTRIES = 400
|
|
61
|
+
# after-turn auto consolidation: every N successful remember() calls
|
|
62
|
+
CONSOLIDATE_AUTO_TURNS = 10
|
|
63
|
+
|
|
64
|
+
# recall -> affect feedback (task-218): a recalled memory nudges the live
|
|
65
|
+
# affect a little. Engine owns the state; recall/feedback.py owns the guards.
|
|
66
|
+
# [engineering] gain / step / cooldown / floor are hand-set (see PAPER-MAP.md).
|
|
67
|
+
FEEDBACK_MAX_STEP = 0.02 # per-turn cap on |delta valence| and |delta arousal|
|
|
68
|
+
FEEDBACK_GAIN = 0.50 # share of (recalled - current) that flows back
|
|
69
|
+
FEEDBACK_COOLDOWN = 1800.0 # same entry: no second feedback inside 30 minutes
|
|
70
|
+
FEEDBACK_NEG_FLOOR = -0.40 # at/below this valence a further negative pull is dropped
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
# ---------------------------------------------------------------- spatial ranking
|
|
74
|
+
# distance = sum(w_axis * d_axis) over the five memory axes.
|
|
75
|
+
# Equal weights are a NEUTRAL engineering default: no axis is privileged and
|
|
76
|
+
# nothing here was fitted to data. A store overrides them with
|
|
77
|
+
# flags["spatial_weights"] or BIOCORE_SPATIAL_WEIGHTS (JSON).
|
|
78
|
+
SPATIAL_WEIGHTS = {"semantic": 0.20, "time": 0.20, "affect": 0.20,
|
|
79
|
+
"social": 0.20, "activation": 0.20}
|
|
80
|
+
|
|
81
|
+
# Time is numeric only: ts and query_ts are compared, text is never scanned
|
|
82
|
+
# for date or cue words. There is no temporal word list anywhere in the core.
|
|
83
|
+
|
|
84
|
+
# spatial_select (default OFF) is the candidate stage in front of the ordinary
|
|
85
|
+
# scoring fusion: the WHOLE store is ranked by weighted five-axis distance and
|
|
86
|
+
# only the nearest SPATIAL_SELECT_DEPTH entries are handed to the existing
|
|
87
|
+
# scorer. This is the usual two-stage shape of approximate/exact hybrid search
|
|
88
|
+
# (Malkov & Yashunin 2018, HNSW: a bounded candidate list, then exact scoring;
|
|
89
|
+
# VLDB 2025 hybrid querying on vectors: the vector stage proposes candidates,
|
|
90
|
+
# the structured conditions still decide). 20 is an engineering candidate cap,
|
|
91
|
+
# not a fitted constant; a store can override it with flags["spatial_depth"]
|
|
92
|
+
# or BIOCORE_SPATIAL_DEPTH.
|
|
93
|
+
SPATIAL_SELECT_DEPTH = 20
|
|
94
|
+
|
|
95
|
+
# spatial_index (default ON): above SPATIAL_INDEX_THRESHOLD entries the semantic
|
|
96
|
+
# axis is bucketed by the sign pattern of the first SPATIAL_INDEX_PREFIX dims
|
|
97
|
+
# (LSH, Indyk & Motwani 1998). The bucket is a PRUNING structure, not an
|
|
98
|
+
# approximation: every bucket keeps a unit centroid and a radius, and
|
|
99
|
+
# |x - t| >= |c - t| - |x - c| with 1 - cos = |x - t|^2 / 2 for unit vectors
|
|
100
|
+
# lower-bounds the semantic distance of every member, so a bucket whose bound
|
|
101
|
+
# cannot beat the k-th best is skipped safely and the bucketed answer stays
|
|
102
|
+
# identical to the exact one. Below the threshold the exact traversal runs.
|
|
103
|
+
SPATIAL_INDEX_THRESHOLD = 5000
|
|
104
|
+
SPATIAL_INDEX_PREFIX = 8
|
|
105
|
+
|
|
106
|
+
# spatial_standardize (default ON): each axis distance is divided by the
|
|
107
|
+
# store's own standard deviation for that axis (Mahalanobis 1936), so an axis
|
|
108
|
+
# with a wide spread cannot outvote a narrow one just because of its units.
|
|
109
|
+
# An axis whose distances do not vary (std < SPATIAL_DEAD_AXIS_STD) is dead
|
|
110
|
+
# and gets weight 0 -- only dimensions that actually vary carry information
|
|
111
|
+
# (Kriegeskorte & Kievit 2013). Below SPATIAL_STANDARDIZE_MIN_SAMPLE entries
|
|
112
|
+
# the statistics are not trusted and the equal-weight raw sum is kept.
|
|
113
|
+
SPATIAL_STANDARDIZE_MIN_SAMPLE = 30
|
|
114
|
+
SPATIAL_DEAD_AXIS_STD = 0.01
|
|
115
|
+
|
|
116
|
+
# spatial_event_expand (default OFF): event segmentation (Zacks 2007) cuts a
|
|
117
|
+
# session into segments at change points -- a gap longer than the window, a
|
|
118
|
+
# different topic, or a different set of people. The coordinates stay per
|
|
119
|
+
# entry; the segment is only an extra dimension a recall can widen by.
|
|
120
|
+
EVENT_WINDOW_SECONDS = 600
|
|
121
|
+
|
|
122
|
+
# near_dup_time (default ON): a changed fact arrives as a near duplicate of the
|
|
123
|
+
# stored memory. Plus topic/entity overlap, plus different numbers/dates, marks
|
|
124
|
+
# the older one superseded. No keyword list, no version key.
|
|
125
|
+
# The threshold belongs to the MEASURE, not to the mechanism: a cosine of 0.9
|
|
126
|
+
# and a Jaccard of 0.75 are not the same test, so one number cannot serve both.
|
|
127
|
+
# Cosine: 0.90 (AGM-conservative -- a missed mark is cheaper than a wrong one).
|
|
128
|
+
# Jaccard: 0.75 (a Chinese paraphrase pair measures ~0.79; 0.85 would miss it).
|
|
129
|
+
# A store overrides each with flags["near_dup_cosine"] / ["near_dup_jaccard"]
|
|
130
|
+
# or BIOCORE_NEAR_DUP_COSINE / BIOCORE_NEAR_DUP_JACCARD.
|
|
131
|
+
NEAR_DUP_COSINE = 0.90
|
|
132
|
+
NEAR_DUP_JACCARD = 0.75
|
|
133
|
+
|
|
134
|
+
# activation_rank (default OFF): one retrieval score built from quantities the
|
|
135
|
+
# core already has. ACT-R base-level activation (Anderson 2004):
|
|
136
|
+
# B_i = ln(sum_k (now - t_k)^(-d))
|
|
137
|
+
# d = 0.5 is the classic ACT-R decay (paper); the PPR weight and the
|
|
138
|
+
# specificity weight are engineering defaults (no paper fixes them).
|
|
139
|
+
ACTIVATION_DECAY = 0.5 # paper: ACT-R, Anderson 2004
|
|
140
|
+
ACTIVATION_PPR_LAMBDA = 0.2 # engineering
|
|
141
|
+
ACTIVATION_SPEC_MU = 0.2 # engineering
|
|
142
|
+
ACTIVATION_SEEDS = 5 # engineering: seeds = current top-5
|
|
143
|
+
ACTIVATION_NEIGHBOURS = 5 # engineering: nearest neighbours for rho
|
|
144
|
+
|
|
145
|
+
# recall_depth (default 5 = the current behaviour, byte for byte). Above 5 the
|
|
146
|
+
# recall carries a wider pool through activation / rerank and only then cuts to
|
|
147
|
+
# top_k and runs MMR, so the sorting stages see more than the final k.
|
|
148
|
+
# 5 is the historical budget; 40 is the engineering cap the lead set.
|
|
149
|
+
RECALL_DEPTH_DEFAULT = 5 # engineering: current behaviour
|
|
150
|
+
RECALL_DEPTH_MAX = 40 # engineering
|
|
151
|
+
|
|
152
|
+
# point_expand (default OFF): hits first, then the neighbours of each hit
|
|
153
|
+
# inside its own event segment. POINT_EXPAND_RADIUS is how far +/- the hit
|
|
154
|
+
# grows (1 = one memory either side); POINT_EXPAND_TOKENS is the block budget.
|
|
155
|
+
POINT_EXPAND_RADIUS = 1
|
|
156
|
+
POINT_EXPAND_TOKENS = 1500
|
|
157
|
+
|
|
158
|
+
# spatial_cover_select (default OFF): choose k from the pool by spread, not by
|
|
159
|
+
# rank. MMR's redundancy term is the five-axis space distance; lambda 0.3
|
|
160
|
+
# balances relevance against coverage. The pool is the existing top-N.
|
|
161
|
+
SPATIAL_COVER_LAMBDA = 0.3
|
|
162
|
+
SPATIAL_COVER_POOL = 20
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
# Per-mechanism flags: safety/read-path filters default ON; every optional
|
|
167
|
+
# mechanism defaults OFF and must keep the old code path when disabled.
|
|
168
|
+
# A flags.json in the data directory overrides these booleans at engine start
|
|
169
|
+
# (and MemoryEngine.set_flags(..., persist=True) rewrites it).
|
|
170
|
+
FLAGS = {
|
|
171
|
+
# safety / read-path (default ON)
|
|
172
|
+
# GA-03: keep engine default ON. DSH private mode disables it per-store via
|
|
173
|
+
# <dsh store>/flags.json; the shared engine must not be relaxed globally.
|
|
174
|
+
"security": True, # store/security.should_reject before write
|
|
175
|
+
"provenance": True, # provenance hash tag + chained tombstones
|
|
176
|
+
"source_filter": True, # low-confidence candidates are counted/dropped
|
|
177
|
+
"temporal_filter": True, # honour valid_at/invalid_at on recall
|
|
178
|
+
"dedupe": True, # remember-side L0-L3 dedupe
|
|
179
|
+
# arXiv 2610.36308: same-key version resolution (default ON; the old
|
|
180
|
+
# behaviour is "nothing extracted, nothing marked, nothing filtered").
|
|
181
|
+
"memory_versioning": True,
|
|
182
|
+
# Howard & Kahana 2002: rank by the weighted sum of the five axes
|
|
183
|
+
# (default ON; OFF falls back to the old lexicographic order_key).
|
|
184
|
+
"spatial_weighted": True,
|
|
185
|
+
# Full-store candidate selection before the scoring fusion (default OFF;
|
|
186
|
+
# OFF keeps the old recall path byte for byte -- nothing is pre-selected).
|
|
187
|
+
"spatial_select": False,
|
|
188
|
+
# Semantic sign-pattern bucketing above SPATIAL_INDEX_THRESHOLD entries
|
|
189
|
+
# (default ON: it is exact, so it can only save work, never change a row).
|
|
190
|
+
"spatial_index": True,
|
|
191
|
+
# Per-axis standardisation + dead-axis removal (default ON; OFF is the
|
|
192
|
+
# equal-weight raw sum, byte for byte the old ordering).
|
|
193
|
+
"spatial_standardize": True,
|
|
194
|
+
# Usage feedback + axis-weight learning (both default ON; OFF keeps the
|
|
195
|
+
# equal 0.2 weights and writes no feedback rows).
|
|
196
|
+
"spatial_feedback": True,
|
|
197
|
+
"spatial_learn": True,
|
|
198
|
+
# Event-expanded recall: a hit also brings its segment neighbours.
|
|
199
|
+
"spatial_event_expand": False,
|
|
200
|
+
# activation_rank: B_i + semantic + PPR + specificity (default OFF).
|
|
201
|
+
"activation_rank": False,
|
|
202
|
+
# activation_update: a returned hit bumps hits / last_hit (default ON).
|
|
203
|
+
"activation_update": True,
|
|
204
|
+
# Near-duplicate, newer wins (default ON; OFF marks nothing at all).
|
|
205
|
+
"near_dup_time": True,
|
|
206
|
+
# Date prefix on injected memories (default ON; OFF is the old text).
|
|
207
|
+
"memory_date_prefix": True,
|
|
208
|
+
# Recall by event segment (default OFF; OFF is the per-entry path).
|
|
209
|
+
"segment_recall": False,
|
|
210
|
+
# Point-expand: hits first, then their neighbours (default OFF).
|
|
211
|
+
"point_expand": False,
|
|
212
|
+
# point_expand_rerank: expand, then rerank the pool (ON) / inject after (OFF).
|
|
213
|
+
"point_expand_rerank": True,
|
|
214
|
+
# Coverage select: pick k by five-axis spread instead of rank (default OFF).
|
|
215
|
+
"spatial_cover_select": False,
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
"relay": True, # relay card
|
|
219
|
+
"thread": True, # thread card / TTL expiry
|
|
220
|
+
"embedding": True, # optional embedding provider
|
|
221
|
+
# attention / model features (default OFF)
|
|
222
|
+
"slots": False,
|
|
223
|
+
"boundary": False, # slots/boundary.py event-boundary switching
|
|
224
|
+
"three_channel": False,
|
|
225
|
+
"eviction_readonly": False,
|
|
226
|
+
"identity": False,
|
|
227
|
+
"identity_writeback": False,
|
|
228
|
+
"due_hints": False,
|
|
229
|
+
# recall extensions (default OFF)
|
|
230
|
+
"bm25": False,
|
|
231
|
+
"bm25_multi": False,
|
|
232
|
+
"ppr": False,
|
|
233
|
+
"mmr": False,
|
|
234
|
+
"mood_recall": False,
|
|
235
|
+
"affect_encoding": False,
|
|
236
|
+
"memory_feedback": False, # task-218: recalled affect nudges the live affect
|
|
237
|
+
"preference_drift": False, # task-219: repeated topics drift value_order weights
|
|
238
|
+
"complexity": False,
|
|
239
|
+
"constraints": False,
|
|
240
|
+
"tiering": False,
|
|
241
|
+
"entity_boost": False,
|
|
242
|
+
"inhibition": False,
|
|
243
|
+
"retrieval_practice": False,
|
|
244
|
+
"compress": False, # output-only summary, never mutates the store
|
|
245
|
+
"source_consistency": False, # source-rank marking/downweight on recall
|
|
246
|
+
# eviction extension modules (default OFF)
|
|
247
|
+
"heat": False,
|
|
248
|
+
"consequence": False,
|
|
249
|
+
"tiering_exec": False,
|
|
250
|
+
"apply_evictions": False, # tick() may really soft-delete archived entries
|
|
251
|
+
"deletion_audit": False, # derived-data coverage audit after forget()
|
|
252
|
+
"adaptive_evict": False, # adaptive_score replaces the tick eviction score
|
|
253
|
+
|
|
254
|
+
# write-path extensions (default OFF)
|
|
255
|
+
"consistency": False, # old/new fact conflict annotation on remember
|
|
256
|
+
"rate_limit": False,
|
|
257
|
+
"audit": False,
|
|
258
|
+
"permissions": False,
|
|
259
|
+
"notes": False,
|
|
260
|
+
"media": False,
|
|
261
|
+
"notes_link": False,
|
|
262
|
+
"ledger": False,
|
|
263
|
+
# index / graph
|
|
264
|
+
"graph": False,
|
|
265
|
+
"cue_writeback": True, # store cue_index fields on each new entry (index-only, no recall change)
|
|
266
|
+
# consolidation modules (default OFF)
|
|
267
|
+
"consolidate_auto": False, # after-turn auto consolidate every CONSOLIDATE_AUTO_TURNS remembers
|
|
268
|
+
"consolidate_gated": False,
|
|
269
|
+
"consolidate_tree": False,
|
|
270
|
+
"consolidate_reflection": False,
|
|
271
|
+
"consolidate_neighbors": False,
|
|
272
|
+
"consolidate_writeback": False,
|
|
273
|
+
"narrative": False, # identity narrative update at consolidate end
|
|
274
|
+
}
|