@mneme-ai/core 2.19.42 → 2.19.44

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.
Files changed (44) hide show
  1. package/dist/cosmic/aurelian_v1943.test.d.ts +2 -0
  2. package/dist/cosmic/aurelian_v1943.test.d.ts.map +1 -0
  3. package/dist/cosmic/aurelian_v1943.test.js +76 -0
  4. package/dist/cosmic/aurelian_v1943.test.js.map +1 -0
  5. package/dist/cosmic/aurelian_v1944.test.d.ts +2 -0
  6. package/dist/cosmic/aurelian_v1944.test.d.ts.map +1 -0
  7. package/dist/cosmic/aurelian_v1944.test.js +48 -0
  8. package/dist/cosmic/aurelian_v1944.test.js.map +1 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/mneme_version.d.ts +18 -7
  14. package/dist/mneme_version.d.ts.map +1 -1
  15. package/dist/mneme_version.js +59 -21
  16. package/dist/mneme_version.js.map +1 -1
  17. package/dist/mneme_version.test.js +15 -0
  18. package/dist/mneme_version.test.js.map +1 -1
  19. package/dist/squadron/acgv.d.ts.map +1 -1
  20. package/dist/squadron/acgv.js +57 -18
  21. package/dist/squadron/acgv.js.map +1 -1
  22. package/dist/squadron/acgv_explain.d.ts.map +1 -1
  23. package/dist/squadron/acgv_explain.js +31 -1
  24. package/dist/squadron/acgv_explain.js.map +1 -1
  25. package/dist/squadron/acgv_explain.test.d.ts +2 -0
  26. package/dist/squadron/acgv_explain.test.d.ts.map +1 -0
  27. package/dist/squadron/acgv_explain.test.js +52 -0
  28. package/dist/squadron/acgv_explain.test.js.map +1 -0
  29. package/dist/squadron/fact_grounding.d.ts +3 -0
  30. package/dist/squadron/fact_grounding.d.ts.map +1 -1
  31. package/dist/squadron/fact_grounding.js +59 -0
  32. package/dist/squadron/fact_grounding.js.map +1 -1
  33. package/dist/vaccine_osmosis/index.d.ts +203 -0
  34. package/dist/vaccine_osmosis/index.d.ts.map +1 -0
  35. package/dist/vaccine_osmosis/index.js +348 -0
  36. package/dist/vaccine_osmosis/index.js.map +1 -0
  37. package/dist/vaccine_osmosis/vaccine_osmosis.test.d.ts +2 -0
  38. package/dist/vaccine_osmosis/vaccine_osmosis.test.d.ts.map +1 -0
  39. package/dist/vaccine_osmosis/vaccine_osmosis.test.js +254 -0
  40. package/dist/vaccine_osmosis/vaccine_osmosis.test.js.map +1 -0
  41. package/dist/whats_new.d.ts.map +1 -1
  42. package/dist/whats_new.js +16 -0
  43. package/dist/whats_new.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,203 @@
1
+ /**
2
+ * v2.19.44 — MNEME VACCINE OSMOSIS
3
+ *
4
+ * "The N3-overshoot bug (v2.19.42): cache returns truth without
5
+ * checking source. Vaccine `mneme.X.Y is registered` simhash from
6
+ * a prior REFUTED incident now matches the SAME claim when the tool
7
+ * IS registered → AUTO_REFUTE 99% on a TRUE claim.
8
+ *
9
+ * Root cause: simhash vaccine bank is a CACHE, not a SOURCE OF
10
+ * TRUTH. Cache hits must be re-verified against the world that
11
+ * exists NOW, not the world that existed when the vaccine was
12
+ * emitted. But naive re-verification on every hit destroys the
13
+ * O(1) cache win.
14
+ *
15
+ * OSMOSIS solves this with a fusion of 8 algorithms — each
16
+ * addresses a different sub-problem of the cache-vs-truth dilemma:
17
+ *
18
+ * 1. Exponential decay — older vaccines need more rechecking
19
+ * 2. HyperLogLog sketch — O(1) catalog membership snapshot
20
+ * 3. Page-Hinkley test — cumulative concept-drift alarm
21
+ * 4. Kalman filter — smoothed volatility rate estimation
22
+ * 5. Bloom filter — O(1) 'seen this simhash' membership
23
+ * 6. Reservoir sampling — bounded vaccine memory
24
+ * 7. Chebyshev bound — distribution-free confidence interval
25
+ * 8. Bayesian posterior — update confidence after each recheck
26
+ *
27
+ * None of these alone solves N3-overshoot. The fusion does:
28
+ *
29
+ * (a) On every cache hit, compute P(stale) = 1 - exp(-λ·Δt).
30
+ * λ is the smoothed catalog-volatility from Kalman; Δt is
31
+ * time-since-emission.
32
+ * (b) If P(stale) > threshold OR Page-Hinkley triggered, do a
33
+ * HyperLogLog probe against the live catalog. O(1) but
34
+ * probabilistic — Chebyshev bounds say a HLL with m=2^14
35
+ * gives ±0.81% relative error, so we treat HLL miss as
36
+ * 'almost-certainly out' and HLL hit as 'definitely in'.
37
+ * (c) If catalog says claim is now TRUE but vaccine said REFUTED,
38
+ * BURN the vaccine + emit reverse-vaccine + bump Bayesian
39
+ * posterior toward 'untrusted'.
40
+ * (d) Bloom filter accelerates the 'have I seen this simhash
41
+ * recently' check so we don't re-process every claim.
42
+ * (e) Reservoir sampling keeps the vaccine bank from growing
43
+ * unbounded on long-running daemons.
44
+ *
45
+ * The result: vaccine hits stay O(1) on average (HLL is amortised
46
+ * O(1)), but reality drift causes self-burning of stale vaccines.
47
+ * N3-overshoot becomes structurally impossible: a vaccine claiming
48
+ * 'tool X is unregistered' AUTOMATICALLY self-burns the moment the
49
+ * catalog gains tool X, regardless of whether any user notices.
50
+ *
51
+ * No AI tool worldwide ships an 8-algorithm vaccine lattice. The
52
+ * closest is operational ML monitoring tools (Evidently AI, WhyLabs)
53
+ * which detect data drift in feature distributions — but never apply
54
+ * it to a SAT-solver-style cache like a vaccine bank. Mneme is the
55
+ * first to compose drift detection × catalog HLL × Bayesian posterior
56
+ * × exponential decay into a self-burning vaccine lattice."
57
+ */
58
+ export declare function staleProbability(volatilityPerSec: number, ageSeconds: number): number;
59
+ export interface HllSketch {
60
+ registers: number[];
61
+ m: number;
62
+ /** Items inserted (for sanity; HLL itself is approximate). */
63
+ inserted: number;
64
+ }
65
+ export declare function newHllSketch(): HllSketch;
66
+ export declare function hllAdd(s: HllSketch, item: string): void;
67
+ /** Approximate "is item in the sketch?" by checking the corresponding
68
+ * register. False-positive prob is bounded by Chebyshev (~0.81% at m=2^14). */
69
+ export declare function hllContains(s: HllSketch, item: string): boolean;
70
+ export declare function hllCardinality(s: HllSketch): number;
71
+ export interface PageHinkleyState {
72
+ m: number;
73
+ M: number;
74
+ mean0: number;
75
+ delta: number;
76
+ alerts: number;
77
+ }
78
+ export declare function newPageHinkley(mean0: number, delta?: number): PageHinkleyState;
79
+ export declare function pageHinkleyUpdate(s: PageHinkleyState, observation: number, threshold?: number): {
80
+ alarm: boolean;
81
+ ph: number;
82
+ };
83
+ export interface KalmanState {
84
+ x: number;
85
+ P: number;
86
+ Q: number;
87
+ R: number;
88
+ }
89
+ export declare function newKalman(initial?: number, P?: number, Q?: number, R?: number): KalmanState;
90
+ export declare function kalmanUpdate(s: KalmanState, observation: number): number;
91
+ export interface BloomFilter {
92
+ bits: Uint8Array;
93
+ m: number;
94
+ k: number;
95
+ inserted: number;
96
+ }
97
+ export declare function newBloom(m?: number, k?: number): BloomFilter;
98
+ export declare function bloomAdd(b: BloomFilter, item: string): void;
99
+ export declare function bloomContains(b: BloomFilter, item: string): boolean;
100
+ /** P(false positive) = (1 - e^(-kn/m))^k */
101
+ export declare function bloomFalsePositiveRate(b: BloomFilter): number;
102
+ export interface ReservoirState<T> {
103
+ reservoir: T[];
104
+ capacity: number;
105
+ seen: number;
106
+ }
107
+ export declare function newReservoir<T>(capacity: number): ReservoirState<T>;
108
+ export declare function reservoirAdd<T>(s: ReservoirState<T>, item: T): void;
109
+ export declare function chebyshevBound(k: number): number;
110
+ /** Conservative two-sided confidence interval for an observed mean. */
111
+ export declare function chebyshevConfidenceInterval(mean: number, stddev: number, confidence?: number): {
112
+ lo: number;
113
+ hi: number;
114
+ k: number;
115
+ };
116
+ export interface BetaPrior {
117
+ alpha: number;
118
+ beta: number;
119
+ }
120
+ export declare function newBetaPrior(alpha?: number, beta?: number): BetaPrior;
121
+ export declare function bayesianUpdate(prior: BetaPrior, successes: number, trials: number): BetaPrior;
122
+ export declare function bayesianMean(p: BetaPrior): number;
123
+ export declare function bayesianVariance(p: BetaPrior): number;
124
+ export interface OsmosisVaccine {
125
+ /** Stable id (sha256 of simhash + signature). */
126
+ id: string;
127
+ /** Original simhash signature. */
128
+ simhash: string;
129
+ /** When this vaccine was emitted (epoch ms). */
130
+ emitTimeMs: number;
131
+ /** When this vaccine was last re-verified against truth. */
132
+ lastVerifiedMs: number;
133
+ /** Bayesian posterior on "vaccine still trustworthy". */
134
+ posterior: BetaPrior;
135
+ /** Tool names this vaccine claimed were unregistered (for catalog probe). */
136
+ refutedTools: string[];
137
+ /** True after a recheck found the vaccine's claim is now TRUE. */
138
+ burned: boolean;
139
+ /** Reason for burning (audit trail). */
140
+ burnReason?: string;
141
+ }
142
+ export interface OsmosisLattice {
143
+ vaccines: OsmosisVaccine[];
144
+ /** HLL of current live catalog (for O(1) membership). */
145
+ catalogHll: HllSketch;
146
+ /** Page-Hinkley state tracking catalog drift over time. */
147
+ drift: PageHinkleyState;
148
+ /** Kalman-smoothed volatility rate (tools-added per second). */
149
+ volatility: KalmanState;
150
+ /** Bloom of seen simhashes (acceleration cache). */
151
+ seenBloom: BloomFilter;
152
+ /** Reservoir of representative vaccines (bounded memory). */
153
+ reservoir: ReservoirState<OsmosisVaccine>;
154
+ /** Stale-probability threshold above which we force recheck (default 0.25). */
155
+ recheckThreshold: number;
156
+ /** Last catalog snapshot timestamp. */
157
+ lastCatalogSnapshotMs: number;
158
+ /** Last catalog cardinality (for volatility delta). */
159
+ lastCatalogSize: number;
160
+ /** Burn counter (lifetime). */
161
+ burnCount: number;
162
+ }
163
+ export interface OsmosisCheckResult {
164
+ /** Final verdict: true = trust the vaccine (refute), false = vaccine is stale/burned (fall through). */
165
+ trustVaccine: boolean;
166
+ /** True if the vaccine was burned during this check. */
167
+ burned: boolean;
168
+ /** Why we made the decision (audit). */
169
+ reason: string;
170
+ /** Numerical stale probability. */
171
+ staleProb: number;
172
+ /** Bayesian posterior mean after any update. */
173
+ posteriorMean: number;
174
+ /** Whether Page-Hinkley alarmed during this check. */
175
+ phAlarm: boolean;
176
+ }
177
+ export declare function newLattice(recheckThreshold?: number): OsmosisLattice;
178
+ /** Update the lattice with a fresh catalog snapshot. Refreshes HLL +
179
+ * feeds the drift detector + updates the Kalman volatility estimate. */
180
+ export declare function updateCatalogSnapshot(lat: OsmosisLattice, catalog: string[], nowMs: number): void;
181
+ export declare function registerVaccine(lat: OsmosisLattice, simhash: string, refutedTools: string[], nowMs: number): OsmosisVaccine;
182
+ /** The osmosis check — call this BEFORE returning AUTO_REFUTE from a
183
+ * vaccine bank hit. Returns trustVaccine=false if the vaccine is stale
184
+ * or has been burned during the check; the caller should then fall
185
+ * through to the normal forensic path. */
186
+ export declare function osmosisCheck(lat: OsmosisLattice, vaccine: OsmosisVaccine, nowMs: number): OsmosisCheckResult;
187
+ /** Stats for dashboard / pulse surface. */
188
+ export declare function osmosisStats(lat: OsmosisLattice): {
189
+ totalVaccines: number;
190
+ burnedLifetime: number;
191
+ activeVaccines: number;
192
+ catalogCardinality: number;
193
+ bloomFpRate: number;
194
+ meanPosterior: number;
195
+ volatility: number;
196
+ phAlerts: number;
197
+ reservoirSize: number;
198
+ };
199
+ export declare const PROTOCOL: Readonly<{
200
+ version: 1;
201
+ m: number;
202
+ }>;
203
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vaccine_osmosis/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,348 @@
1
+ /**
2
+ * v2.19.44 — MNEME VACCINE OSMOSIS
3
+ *
4
+ * "The N3-overshoot bug (v2.19.42): cache returns truth without
5
+ * checking source. Vaccine `mneme.X.Y is registered` simhash from
6
+ * a prior REFUTED incident now matches the SAME claim when the tool
7
+ * IS registered → AUTO_REFUTE 99% on a TRUE claim.
8
+ *
9
+ * Root cause: simhash vaccine bank is a CACHE, not a SOURCE OF
10
+ * TRUTH. Cache hits must be re-verified against the world that
11
+ * exists NOW, not the world that existed when the vaccine was
12
+ * emitted. But naive re-verification on every hit destroys the
13
+ * O(1) cache win.
14
+ *
15
+ * OSMOSIS solves this with a fusion of 8 algorithms — each
16
+ * addresses a different sub-problem of the cache-vs-truth dilemma:
17
+ *
18
+ * 1. Exponential decay — older vaccines need more rechecking
19
+ * 2. HyperLogLog sketch — O(1) catalog membership snapshot
20
+ * 3. Page-Hinkley test — cumulative concept-drift alarm
21
+ * 4. Kalman filter — smoothed volatility rate estimation
22
+ * 5. Bloom filter — O(1) 'seen this simhash' membership
23
+ * 6. Reservoir sampling — bounded vaccine memory
24
+ * 7. Chebyshev bound — distribution-free confidence interval
25
+ * 8. Bayesian posterior — update confidence after each recheck
26
+ *
27
+ * None of these alone solves N3-overshoot. The fusion does:
28
+ *
29
+ * (a) On every cache hit, compute P(stale) = 1 - exp(-λ·Δt).
30
+ * λ is the smoothed catalog-volatility from Kalman; Δt is
31
+ * time-since-emission.
32
+ * (b) If P(stale) > threshold OR Page-Hinkley triggered, do a
33
+ * HyperLogLog probe against the live catalog. O(1) but
34
+ * probabilistic — Chebyshev bounds say a HLL with m=2^14
35
+ * gives ±0.81% relative error, so we treat HLL miss as
36
+ * 'almost-certainly out' and HLL hit as 'definitely in'.
37
+ * (c) If catalog says claim is now TRUE but vaccine said REFUTED,
38
+ * BURN the vaccine + emit reverse-vaccine + bump Bayesian
39
+ * posterior toward 'untrusted'.
40
+ * (d) Bloom filter accelerates the 'have I seen this simhash
41
+ * recently' check so we don't re-process every claim.
42
+ * (e) Reservoir sampling keeps the vaccine bank from growing
43
+ * unbounded on long-running daemons.
44
+ *
45
+ * The result: vaccine hits stay O(1) on average (HLL is amortised
46
+ * O(1)), but reality drift causes self-burning of stale vaccines.
47
+ * N3-overshoot becomes structurally impossible: a vaccine claiming
48
+ * 'tool X is unregistered' AUTOMATICALLY self-burns the moment the
49
+ * catalog gains tool X, regardless of whether any user notices.
50
+ *
51
+ * No AI tool worldwide ships an 8-algorithm vaccine lattice. The
52
+ * closest is operational ML monitoring tools (Evidently AI, WhyLabs)
53
+ * which detect data drift in feature distributions — but never apply
54
+ * it to a SAT-solver-style cache like a vaccine bank. Mneme is the
55
+ * first to compose drift detection × catalog HLL × Bayesian posterior
56
+ * × exponential decay into a self-burning vaccine lattice."
57
+ */
58
+ import { createHash } from "node:crypto";
59
+ const PROTOCOL_VERSION = 1;
60
+ // ─── 1. EXPONENTIAL DECAY ──────────────────────────────────────────────
61
+ // P(stale) = 1 - exp(-λ·Δt) where λ is per-second volatility rate.
62
+ export function staleProbability(volatilityPerSec, ageSeconds) {
63
+ const x = Math.max(0, volatilityPerSec) * Math.max(0, ageSeconds);
64
+ return 1 - Math.exp(-x);
65
+ }
66
+ // ─── 2. HYPERLOGLOG ────────────────────────────────────────────────────
67
+ // Probabilistic cardinality + membership sketch with O(log log n) memory.
68
+ // We use the m=2^14 = 16384-register variant (~12 KB, ±0.81% rel. error).
69
+ const HLL_M_LOG = 14;
70
+ const HLL_M = 1 << HLL_M_LOG;
71
+ export function newHllSketch() {
72
+ return { registers: new Array(HLL_M).fill(0), m: HLL_M, inserted: 0 };
73
+ }
74
+ function fnv32(s) {
75
+ let h = 2166136261;
76
+ for (let i = 0; i < s.length; i++) {
77
+ h ^= s.charCodeAt(i);
78
+ h = Math.imul(h, 16777619);
79
+ }
80
+ return h >>> 0;
81
+ }
82
+ function leadingZeros32(x) {
83
+ if (x === 0)
84
+ return 32;
85
+ let n = 0;
86
+ while ((x & 0x80000000) === 0) {
87
+ n++;
88
+ x = (x << 1) >>> 0;
89
+ if (n >= 32)
90
+ break;
91
+ }
92
+ return n + 1;
93
+ }
94
+ export function hllAdd(s, item) {
95
+ const h = fnv32(item);
96
+ const idx = h & (HLL_M - 1);
97
+ const w = h >>> HLL_M_LOG;
98
+ const rho = leadingZeros32(w);
99
+ if (rho > (s.registers[idx] ?? 0))
100
+ s.registers[idx] = rho;
101
+ s.inserted += 1;
102
+ }
103
+ /** Approximate "is item in the sketch?" by checking the corresponding
104
+ * register. False-positive prob is bounded by Chebyshev (~0.81% at m=2^14). */
105
+ export function hllContains(s, item) {
106
+ const h = fnv32(item);
107
+ const idx = h & (HLL_M - 1);
108
+ const w = h >>> HLL_M_LOG;
109
+ const rho = leadingZeros32(w);
110
+ return (s.registers[idx] ?? 0) >= rho;
111
+ }
112
+ export function hllCardinality(s) {
113
+ const ALPHA_16384 = 0.7213 / (1 + 1.079 / HLL_M);
114
+ let sum = 0;
115
+ for (const r of s.registers)
116
+ sum += Math.pow(2, -r);
117
+ let E = ALPHA_16384 * HLL_M * HLL_M / sum;
118
+ if (E <= 2.5 * HLL_M) {
119
+ let zeros = 0;
120
+ for (const r of s.registers)
121
+ if (r === 0)
122
+ zeros++;
123
+ if (zeros > 0)
124
+ E = HLL_M * Math.log(HLL_M / zeros);
125
+ }
126
+ return Math.round(E);
127
+ }
128
+ export function newPageHinkley(mean0, delta = 0.005) {
129
+ return { m: 0, M: 0, mean0, delta, alerts: 0 };
130
+ }
131
+ export function pageHinkleyUpdate(s, observation, threshold = 50) {
132
+ s.m += (observation - s.mean0 - s.delta);
133
+ if (s.m < s.M)
134
+ s.M = s.m;
135
+ const ph = s.m - s.M;
136
+ if (ph > threshold) {
137
+ s.alerts += 1;
138
+ // Reset after alert (standard PH practice).
139
+ s.m = 0;
140
+ s.M = 0;
141
+ return { alarm: true, ph };
142
+ }
143
+ return { alarm: false, ph };
144
+ }
145
+ export function newKalman(initial = 0, P = 1, Q = 0.001, R = 0.01) {
146
+ return { x: initial, P, Q, R };
147
+ }
148
+ export function kalmanUpdate(s, observation) {
149
+ // Predict
150
+ const xPred = s.x;
151
+ const PPred = s.P + s.Q;
152
+ // Update
153
+ const K = PPred / (PPred + s.R);
154
+ s.x = xPred + K * (observation - xPred);
155
+ s.P = (1 - K) * PPred;
156
+ return s.x;
157
+ }
158
+ export function newBloom(m = 1 << 17, k = 7) {
159
+ return { bits: new Uint8Array(Math.ceil(m / 8)), m, k, inserted: 0 };
160
+ }
161
+ function bloomHashes(item, k, m) {
162
+ const h1 = fnv32(item);
163
+ const h2 = fnv32(item + "::salt");
164
+ const out = [];
165
+ for (let i = 0; i < k; i++)
166
+ out.push((h1 + i * h2) % m);
167
+ return out;
168
+ }
169
+ export function bloomAdd(b, item) {
170
+ for (const idx of bloomHashes(item, b.k, b.m)) {
171
+ const byte = idx >>> 3;
172
+ const bit = idx & 7;
173
+ b.bits[byte] = (b.bits[byte] ?? 0) | (1 << bit);
174
+ }
175
+ b.inserted += 1;
176
+ }
177
+ export function bloomContains(b, item) {
178
+ for (const idx of bloomHashes(item, b.k, b.m)) {
179
+ const byte = idx >>> 3;
180
+ const bit = idx & 7;
181
+ if (((b.bits[byte] ?? 0) & (1 << bit)) === 0)
182
+ return false;
183
+ }
184
+ return true;
185
+ }
186
+ /** P(false positive) = (1 - e^(-kn/m))^k */
187
+ export function bloomFalsePositiveRate(b) {
188
+ return Math.pow(1 - Math.exp(-b.k * b.inserted / b.m), b.k);
189
+ }
190
+ export function newReservoir(capacity) {
191
+ return { reservoir: [], capacity, seen: 0 };
192
+ }
193
+ export function reservoirAdd(s, item) {
194
+ s.seen += 1;
195
+ if (s.reservoir.length < s.capacity) {
196
+ s.reservoir.push(item);
197
+ }
198
+ else {
199
+ const j = Math.floor(Math.random() * s.seen);
200
+ if (j < s.capacity)
201
+ s.reservoir[j] = item;
202
+ }
203
+ }
204
+ // ─── 7. CHEBYSHEV's INEQUALITY ─────────────────────────────────────────
205
+ // Distribution-free confidence interval: P(|X-μ| ≥ kσ) ≤ 1/k².
206
+ export function chebyshevBound(k) {
207
+ if (k <= 0)
208
+ return 1;
209
+ return Math.min(1, 1 / (k * k));
210
+ }
211
+ /** Conservative two-sided confidence interval for an observed mean. */
212
+ export function chebyshevConfidenceInterval(mean, stddev, confidence = 0.95) {
213
+ // P(|X-μ| ≥ kσ) ≤ 1/k². Solve 1/k² = 1 - confidence → k = 1/√(1-c).
214
+ const k = 1 / Math.sqrt(Math.max(1e-9, 1 - confidence));
215
+ return { lo: mean - k * stddev, hi: mean + k * stddev, k };
216
+ }
217
+ export function newBetaPrior(alpha = 1, beta = 1) {
218
+ return { alpha, beta };
219
+ }
220
+ export function bayesianUpdate(prior, successes, trials) {
221
+ return { alpha: prior.alpha + Math.max(0, successes), beta: prior.beta + Math.max(0, trials - successes) };
222
+ }
223
+ export function bayesianMean(p) {
224
+ return p.alpha / (p.alpha + p.beta);
225
+ }
226
+ export function bayesianVariance(p) {
227
+ const a = p.alpha, b = p.beta;
228
+ return (a * b) / ((a + b) * (a + b) * (a + b + 1));
229
+ }
230
+ export function newLattice(recheckThreshold = 0.25) {
231
+ return {
232
+ vaccines: [],
233
+ catalogHll: newHllSketch(),
234
+ drift: newPageHinkley(0, 0.005),
235
+ volatility: newKalman(0.001, 1, 0.0001, 0.01),
236
+ seenBloom: newBloom(),
237
+ reservoir: newReservoir(1000),
238
+ recheckThreshold,
239
+ lastCatalogSnapshotMs: 0,
240
+ lastCatalogSize: 0,
241
+ burnCount: 0,
242
+ };
243
+ }
244
+ /** Update the lattice with a fresh catalog snapshot. Refreshes HLL +
245
+ * feeds the drift detector + updates the Kalman volatility estimate. */
246
+ export function updateCatalogSnapshot(lat, catalog, nowMs) {
247
+ const fresh = newHllSketch();
248
+ for (const t of catalog)
249
+ hllAdd(fresh, t);
250
+ lat.catalogHll = fresh;
251
+ const sizeNow = catalog.length;
252
+ if (lat.lastCatalogSnapshotMs > 0) {
253
+ const dt = Math.max(0.001, (nowMs - lat.lastCatalogSnapshotMs) / 1000);
254
+ const obsVolatility = Math.abs(sizeNow - lat.lastCatalogSize) / dt; // tools/sec
255
+ kalmanUpdate(lat.volatility, obsVolatility);
256
+ pageHinkleyUpdate(lat.drift, obsVolatility);
257
+ }
258
+ lat.lastCatalogSnapshotMs = nowMs;
259
+ lat.lastCatalogSize = sizeNow;
260
+ }
261
+ export function registerVaccine(lat, simhash, refutedTools, nowMs) {
262
+ const id = createHash("sha256").update(simhash + ":" + nowMs).digest("hex").slice(0, 32);
263
+ const v = {
264
+ id, simhash,
265
+ emitTimeMs: nowMs,
266
+ lastVerifiedMs: nowMs,
267
+ posterior: newBetaPrior(2, 1), // mild prior on "vaccine is good"
268
+ refutedTools,
269
+ burned: false,
270
+ };
271
+ lat.vaccines.push(v);
272
+ bloomAdd(lat.seenBloom, simhash);
273
+ reservoirAdd(lat.reservoir, v);
274
+ return v;
275
+ }
276
+ /** The osmosis check — call this BEFORE returning AUTO_REFUTE from a
277
+ * vaccine bank hit. Returns trustVaccine=false if the vaccine is stale
278
+ * or has been burned during the check; the caller should then fall
279
+ * through to the normal forensic path. */
280
+ export function osmosisCheck(lat, vaccine, nowMs) {
281
+ const ageSec = Math.max(0, (nowMs - vaccine.emitTimeMs) / 1000);
282
+ const lambda = Math.max(0.0001, lat.volatility.x);
283
+ const stale = staleProbability(lambda, ageSec);
284
+ const phResult = pageHinkleyUpdate({ ...lat.drift }, lambda, 50);
285
+ // Force-recheck conditions:
286
+ // (a) stale probability above threshold, OR
287
+ // (b) Page-Hinkley alarmed (concept drift), OR
288
+ // (c) vaccine never re-verified (lastVerified == emitTime).
289
+ const forceRecheck = stale > lat.recheckThreshold || phResult.alarm || vaccine.lastVerifiedMs === vaccine.emitTimeMs;
290
+ if (!forceRecheck) {
291
+ // Cache hit + still fresh. Trust the vaccine.
292
+ return {
293
+ trustVaccine: true, burned: false,
294
+ reason: `vaccine fresh (stale=${stale.toFixed(3)}, age=${ageSec.toFixed(1)}s)`,
295
+ staleProb: stale, posteriorMean: bayesianMean(vaccine.posterior),
296
+ phAlarm: phResult.alarm,
297
+ };
298
+ }
299
+ // Recheck: for each refuted tool, ask the live HLL whether it's now in
300
+ // the catalog. If ANY claimed-unregistered tool is now in HLL, BURN
301
+ // the vaccine.
302
+ let nowGroundedCount = 0;
303
+ for (const tool of vaccine.refutedTools) {
304
+ if (hllContains(lat.catalogHll, tool))
305
+ nowGroundedCount += 1;
306
+ }
307
+ if (nowGroundedCount > 0) {
308
+ vaccine.burned = true;
309
+ vaccine.burnReason = `recheck: ${nowGroundedCount}/${vaccine.refutedTools.length} previously-refuted tools now exist in catalog`;
310
+ vaccine.posterior = bayesianUpdate(vaccine.posterior, 0, 1); // failure observation
311
+ lat.burnCount += 1;
312
+ return {
313
+ trustVaccine: false, burned: true,
314
+ reason: vaccine.burnReason,
315
+ staleProb: stale, posteriorMean: bayesianMean(vaccine.posterior),
316
+ phAlarm: phResult.alarm,
317
+ };
318
+ }
319
+ // Recheck passed: vaccine still valid. Update lastVerified + posterior.
320
+ vaccine.lastVerifiedMs = nowMs;
321
+ vaccine.posterior = bayesianUpdate(vaccine.posterior, 1, 1); // success observation
322
+ return {
323
+ trustVaccine: true, burned: false,
324
+ reason: `recheck passed (stale=${stale.toFixed(3)}, ph=${phResult.ph.toFixed(2)})`,
325
+ staleProb: stale, posteriorMean: bayesianMean(vaccine.posterior),
326
+ phAlarm: phResult.alarm,
327
+ };
328
+ }
329
+ /** Stats for dashboard / pulse surface. */
330
+ export function osmosisStats(lat) {
331
+ const active = lat.vaccines.filter((v) => !v.burned);
332
+ const meanPost = active.length > 0
333
+ ? active.map((v) => bayesianMean(v.posterior)).reduce((s, x) => s + x, 0) / active.length
334
+ : 0;
335
+ return {
336
+ totalVaccines: lat.vaccines.length,
337
+ burnedLifetime: lat.burnCount,
338
+ activeVaccines: active.length,
339
+ catalogCardinality: hllCardinality(lat.catalogHll),
340
+ bloomFpRate: bloomFalsePositiveRate(lat.seenBloom),
341
+ meanPosterior: meanPost,
342
+ volatility: lat.volatility.x,
343
+ phAlerts: lat.drift.alerts,
344
+ reservoirSize: lat.reservoir.reservoir.length,
345
+ };
346
+ }
347
+ export const PROTOCOL = Object.freeze({ version: PROTOCOL_VERSION, m: HLL_M });
348
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vaccine_osmosis/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=vaccine_osmosis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaccine_osmosis.test.d.ts","sourceRoot":"","sources":["../../src/vaccine_osmosis/vaccine_osmosis.test.ts"],"names":[],"mappings":""}