@mneme-ai/core 2.19.46 → 2.19.48

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 (68) hide show
  1. package/dist/chronosheaf/aczel.d.ts +72 -0
  2. package/dist/chronosheaf/aczel.d.ts.map +1 -0
  3. package/dist/chronosheaf/aczel.js +161 -0
  4. package/dist/chronosheaf/aczel.js.map +1 -0
  5. package/dist/chronosheaf/base_space.d.ts +125 -0
  6. package/dist/chronosheaf/base_space.d.ts.map +1 -0
  7. package/dist/chronosheaf/base_space.js +216 -0
  8. package/dist/chronosheaf/base_space.js.map +1 -0
  9. package/dist/chronosheaf/chronosheaf.test.d.ts +12 -0
  10. package/dist/chronosheaf/chronosheaf.test.d.ts.map +1 -0
  11. package/dist/chronosheaf/chronosheaf.test.js +360 -0
  12. package/dist/chronosheaf/chronosheaf.test.js.map +1 -0
  13. package/dist/chronosheaf/free_energy.d.ts +109 -0
  14. package/dist/chronosheaf/free_energy.d.ts.map +1 -0
  15. package/dist/chronosheaf/free_energy.js +142 -0
  16. package/dist/chronosheaf/free_energy.js.map +1 -0
  17. package/dist/chronosheaf/index.d.ts +39 -0
  18. package/dist/chronosheaf/index.d.ts.map +1 -0
  19. package/dist/chronosheaf/index.js +30 -0
  20. package/dist/chronosheaf/index.js.map +1 -0
  21. package/dist/chronosheaf/live_update.d.ts +221 -0
  22. package/dist/chronosheaf/live_update.d.ts.map +1 -0
  23. package/dist/chronosheaf/live_update.js +332 -0
  24. package/dist/chronosheaf/live_update.js.map +1 -0
  25. package/dist/chronosheaf/live_update.test.d.ts +16 -0
  26. package/dist/chronosheaf/live_update.test.d.ts.map +1 -0
  27. package/dist/chronosheaf/live_update.test.js +405 -0
  28. package/dist/chronosheaf/live_update.test.js.map +1 -0
  29. package/dist/chronosheaf/pain_catalog.d.ts +50 -0
  30. package/dist/chronosheaf/pain_catalog.d.ts.map +1 -0
  31. package/dist/chronosheaf/pain_catalog.js +108 -0
  32. package/dist/chronosheaf/pain_catalog.js.map +1 -0
  33. package/dist/chronosheaf/persistence.d.ts +79 -0
  34. package/dist/chronosheaf/persistence.d.ts.map +1 -0
  35. package/dist/chronosheaf/persistence.js +173 -0
  36. package/dist/chronosheaf/persistence.js.map +1 -0
  37. package/dist/chronosheaf/rg_flow.d.ts +81 -0
  38. package/dist/chronosheaf/rg_flow.d.ts.map +1 -0
  39. package/dist/chronosheaf/rg_flow.js +146 -0
  40. package/dist/chronosheaf/rg_flow.js.map +1 -0
  41. package/dist/chronosheaf/sheaf.d.ts +116 -0
  42. package/dist/chronosheaf/sheaf.d.ts.map +1 -0
  43. package/dist/chronosheaf/sheaf.js +278 -0
  44. package/dist/chronosheaf/sheaf.js.map +1 -0
  45. package/dist/chronosheaf/tropical.d.ts +98 -0
  46. package/dist/chronosheaf/tropical.d.ts.map +1 -0
  47. package/dist/chronosheaf/tropical.js +140 -0
  48. package/dist/chronosheaf/tropical.js.map +1 -0
  49. package/dist/chronosheaf/wasserstein.d.ts +75 -0
  50. package/dist/chronosheaf/wasserstein.d.ts.map +1 -0
  51. package/dist/chronosheaf/wasserstein.js +189 -0
  52. package/dist/chronosheaf/wasserstein.js.map +1 -0
  53. package/dist/cosmic/aurelian_v1947.test.d.ts +2 -0
  54. package/dist/cosmic/aurelian_v1947.test.d.ts.map +1 -0
  55. package/dist/cosmic/aurelian_v1947.test.js +34 -0
  56. package/dist/cosmic/aurelian_v1947.test.js.map +1 -0
  57. package/dist/cosmic/aurelian_v1948.test.d.ts +2 -0
  58. package/dist/cosmic/aurelian_v1948.test.d.ts.map +1 -0
  59. package/dist/cosmic/aurelian_v1948.test.js +62 -0
  60. package/dist/cosmic/aurelian_v1948.test.js.map +1 -0
  61. package/dist/index.d.ts +1 -0
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +8 -0
  64. package/dist/index.js.map +1 -1
  65. package/dist/whats_new.d.ts.map +1 -1
  66. package/dist/whats_new.js +16 -0
  67. package/dist/whats_new.js.map +1 -1
  68. package/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ /**
2
+ * v2.19.47 — CHRONOSHEAF P2-a · sheaf cohomology over ℝ-valued presheaves.
3
+ *
4
+ * Math foundation (Leray / Grothendieck / Čech):
5
+ *
6
+ * For a base space X (we model as a finite set of "sites"), an open
7
+ * cover U = {U₀, U₁, ...}, and a presheaf F : Open(X)ᵒᵖ → Vec_ℝ,
8
+ * the Čech complex is
9
+ *
10
+ * Č^p(U, F) = ⊕_{i₀<…<i_p} F(U_{i₀} ∩ … ∩ U_{i_p})
11
+ *
12
+ * with coboundary
13
+ *
14
+ * (δσ)_{i₀…i_{p+1}} = Σ_{k=0}^{p+1} (−1)^k · ρ(σ_{i₀…î_k…i_{p+1}})
15
+ *
16
+ * and the p-th Čech cohomology
17
+ *
18
+ * H^p(U, F) = ker δ^p / im δ^{p−1}.
19
+ *
20
+ * We focus on H¹: dim H¹(U, F) = (number of independent 1-cocycles)
21
+ * − (number of independent 1-coboundaries). H¹ ≠ 0 ⟺ there exist
22
+ * local sections that agree pairwise on overlaps but cannot be glued
23
+ * into a single global section — the canonical "local OK, global
24
+ * contradiction" signal CHRONOSHEAF chases.
25
+ *
26
+ * Implementation strategy (performance + accuracy):
27
+ *
28
+ * We restrict to ℝ-valued (scalar) sections per site — sufficient
29
+ * for the AI-memory use case where each verifier returns a single
30
+ * number per overlap (a "claim value"). For overlaps the restriction
31
+ * map is the identity on ℝ.
32
+ *
33
+ * The δ⁰ matrix is the signed incidence of pairs to sites:
34
+ *
35
+ * δ⁰[ij, k] = +1 if k == j, −1 if k == i, 0 otherwise
36
+ *
37
+ * For overlaps with NO triple overlap (most code-base covers), every
38
+ * 1-cochain is automatically a cocycle (ker δ¹ = whole space), so
39
+ *
40
+ * dim H¹ = E − rank(δ⁰)
41
+ *
42
+ * where E is the number of pairs and rank(δ⁰) = N − c (vertices N
43
+ * minus connected components c of the nerve 1-skeleton). This
44
+ * reduces to a graph-theoretic computation that runs in O(N + E).
45
+ *
46
+ * When triple overlaps exist we compute δ¹ explicitly and rank-reduce
47
+ * via integer Gaussian elimination (O(min(E,T)² · max(E,T))) — fast
48
+ * enough for a Mneme catalog cover of a few hundred sites.
49
+ *
50
+ * Composes with PAIN-001 (time-direction), PAIN-004 (self-reference
51
+ * via reflexive cover), PAIN-005 (interface-coherence as global section).
52
+ */
53
+ export type Site = string;
54
+ export interface SheafCover {
55
+ /** Sites (open sets) — identified by string keys. */
56
+ sites: ReadonlyArray<Site>;
57
+ /** Pairwise overlaps as unordered pairs [i, j] with i < j (by sites index). */
58
+ overlaps: ReadonlyArray<[Site, Site]>;
59
+ /** Optional triple overlaps [i, j, k] with i < j < k. */
60
+ triples?: ReadonlyArray<[Site, Site, Site]>;
61
+ }
62
+ /** Section on each site (the 0-cochain): site → real value. */
63
+ export type Section0 = ReadonlyMap<Site, number>;
64
+ /** Section on each overlap (the 1-cochain): pair-key → real value. */
65
+ export type Section1 = ReadonlyMap<string, number>;
66
+ export interface SheafResult {
67
+ /** Number of 1-cochains (= |overlaps|). */
68
+ cochainDim: number;
69
+ /** rank δ⁰ — dim image of 0→1 coboundary. */
70
+ rankDelta0: number;
71
+ /** Estimated dim ker δ¹. With no triples = |overlaps|. */
72
+ kerDelta1: number;
73
+ /** dim H¹ = ker δ¹ − im δ⁰. ≥0 by construction. */
74
+ h1: number;
75
+ /** True when H¹ > 0 — pairwise OK but globally inconsistent. */
76
+ hasObstruction: boolean;
77
+ /** Minimal witnesses: 1-cochains that are cocycles but not coboundaries. */
78
+ obstructions: Array<{
79
+ pair: [Site, Site];
80
+ value: number;
81
+ }>;
82
+ /** Connected components of the nerve 1-skeleton (auxiliary). */
83
+ components: number;
84
+ }
85
+ /**
86
+ * Compute δ⁰(σ) for a 0-cochain σ — returns 1-cochain on every overlap.
87
+ * (δ⁰σ)_{ij} = σ_j − σ_i.
88
+ */
89
+ export declare function delta0(cover: SheafCover, sigma0: Section0): Section1;
90
+ /**
91
+ * Compute δ¹(σ) for a 1-cochain σ — returns 2-cochain on every triple.
92
+ * (δ¹σ)_{ijk} = σ_{jk} − σ_{ik} + σ_{ij}.
93
+ */
94
+ export declare function delta1(cover: SheafCover, sigma1: Section1): Map<string, number>;
95
+ /** Check the cocycle condition δ¹σ = 0 on all triples. */
96
+ export declare function isCocycle(cover: SheafCover, sigma1: Section1, tol?: number): boolean;
97
+ /**
98
+ * Compute dim H¹(U, F) by reducing to graph connectivity when triples
99
+ * are absent + Gaussian elimination when they're present.
100
+ */
101
+ export declare function cohomologyH1(cover: SheafCover): SheafResult;
102
+ /**
103
+ * Given a presheaf assignment (each site → numeric "claim value"), check
104
+ * whether the implied pairwise differences glue: returns the same
105
+ * SheafResult plus the gluing-residual vector.
106
+ *
107
+ * residual_{ij} = (claim_j - claim_i) restricted to U_i ∩ U_j
108
+ *
109
+ * If H¹ = 0, the residual lies in im δ⁰ → there exists a global section
110
+ * (effectively the user's claim values are all consistent). If H¹ > 0,
111
+ * the residual carries a non-trivial cocycle component.
112
+ */
113
+ export declare function gluingDiagnostic(cover: SheafCover, claimPerSite: Section0): SheafResult & {
114
+ residual: Section1;
115
+ };
116
+ //# sourceMappingURL=sheaf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheaf.d.ts","sourceRoot":"","sources":["../../src/chronosheaf/sheaf.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,MAAM,MAAM,IAAI,GAAG,MAAM,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,qDAAqD;IACrD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACtC,yDAAyD;IACzD,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;CAC7C;AAED,+DAA+D;AAC/D,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAEjD,sEAAsE;AACtE,MAAM,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,cAAc,EAAE,OAAO,CAAC;IACxB,4EAA4E;IAC5E,YAAY,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;CACpB;AAkCD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CASpE;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAO,GAAG,OAAO,CAKlF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAkD3D;AAiDD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,GAAG,WAAW,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAIhH"}
@@ -0,0 +1,278 @@
1
+ /**
2
+ * v2.19.47 — CHRONOSHEAF P2-a · sheaf cohomology over ℝ-valued presheaves.
3
+ *
4
+ * Math foundation (Leray / Grothendieck / Čech):
5
+ *
6
+ * For a base space X (we model as a finite set of "sites"), an open
7
+ * cover U = {U₀, U₁, ...}, and a presheaf F : Open(X)ᵒᵖ → Vec_ℝ,
8
+ * the Čech complex is
9
+ *
10
+ * Č^p(U, F) = ⊕_{i₀<…<i_p} F(U_{i₀} ∩ … ∩ U_{i_p})
11
+ *
12
+ * with coboundary
13
+ *
14
+ * (δσ)_{i₀…i_{p+1}} = Σ_{k=0}^{p+1} (−1)^k · ρ(σ_{i₀…î_k…i_{p+1}})
15
+ *
16
+ * and the p-th Čech cohomology
17
+ *
18
+ * H^p(U, F) = ker δ^p / im δ^{p−1}.
19
+ *
20
+ * We focus on H¹: dim H¹(U, F) = (number of independent 1-cocycles)
21
+ * − (number of independent 1-coboundaries). H¹ ≠ 0 ⟺ there exist
22
+ * local sections that agree pairwise on overlaps but cannot be glued
23
+ * into a single global section — the canonical "local OK, global
24
+ * contradiction" signal CHRONOSHEAF chases.
25
+ *
26
+ * Implementation strategy (performance + accuracy):
27
+ *
28
+ * We restrict to ℝ-valued (scalar) sections per site — sufficient
29
+ * for the AI-memory use case where each verifier returns a single
30
+ * number per overlap (a "claim value"). For overlaps the restriction
31
+ * map is the identity on ℝ.
32
+ *
33
+ * The δ⁰ matrix is the signed incidence of pairs to sites:
34
+ *
35
+ * δ⁰[ij, k] = +1 if k == j, −1 if k == i, 0 otherwise
36
+ *
37
+ * For overlaps with NO triple overlap (most code-base covers), every
38
+ * 1-cochain is automatically a cocycle (ker δ¹ = whole space), so
39
+ *
40
+ * dim H¹ = E − rank(δ⁰)
41
+ *
42
+ * where E is the number of pairs and rank(δ⁰) = N − c (vertices N
43
+ * minus connected components c of the nerve 1-skeleton). This
44
+ * reduces to a graph-theoretic computation that runs in O(N + E).
45
+ *
46
+ * When triple overlaps exist we compute δ¹ explicitly and rank-reduce
47
+ * via integer Gaussian elimination (O(min(E,T)² · max(E,T))) — fast
48
+ * enough for a Mneme catalog cover of a few hundred sites.
49
+ *
50
+ * Composes with PAIN-001 (time-direction), PAIN-004 (self-reference
51
+ * via reflexive cover), PAIN-005 (interface-coherence as global section).
52
+ */
53
+ /** Key for an unordered pair (canonical i<j by lex order of strings). */
54
+ function pairKey(a, b) {
55
+ return a < b ? `${a}${b}` : `${b}${a}`;
56
+ }
57
+ /** Union-Find for connected components. */
58
+ class UnionFind {
59
+ parent = new Map();
60
+ rank = new Map();
61
+ add(x) { if (!this.parent.has(x)) {
62
+ this.parent.set(x, x);
63
+ this.rank.set(x, 0);
64
+ } }
65
+ find(x) {
66
+ let root = x;
67
+ while (this.parent.get(root) !== root)
68
+ root = this.parent.get(root);
69
+ let cur = x;
70
+ while (cur !== root) {
71
+ const next = this.parent.get(cur);
72
+ this.parent.set(cur, root);
73
+ cur = next;
74
+ }
75
+ return root;
76
+ }
77
+ union(a, b) {
78
+ const ra = this.find(a);
79
+ const rb = this.find(b);
80
+ if (ra === rb)
81
+ return;
82
+ const r1 = this.rank.get(ra) ?? 0;
83
+ const r2 = this.rank.get(rb) ?? 0;
84
+ if (r1 < r2)
85
+ this.parent.set(ra, rb);
86
+ else if (r1 > r2)
87
+ this.parent.set(rb, ra);
88
+ else {
89
+ this.parent.set(rb, ra);
90
+ this.rank.set(ra, r1 + 1);
91
+ }
92
+ }
93
+ countComponents() {
94
+ const roots = new Set();
95
+ for (const k of this.parent.keys())
96
+ roots.add(this.find(k));
97
+ return roots.size;
98
+ }
99
+ }
100
+ /**
101
+ * Compute δ⁰(σ) for a 0-cochain σ — returns 1-cochain on every overlap.
102
+ * (δ⁰σ)_{ij} = σ_j − σ_i.
103
+ */
104
+ export function delta0(cover, sigma0) {
105
+ const out = new Map();
106
+ for (const [a, b] of cover.overlaps) {
107
+ const va = sigma0.get(a) ?? 0;
108
+ const vb = sigma0.get(b) ?? 0;
109
+ const key = pairKey(a, b);
110
+ out.set(key, (a < b ? vb - va : va - vb));
111
+ }
112
+ return out;
113
+ }
114
+ /**
115
+ * Compute δ¹(σ) for a 1-cochain σ — returns 2-cochain on every triple.
116
+ * (δ¹σ)_{ijk} = σ_{jk} − σ_{ik} + σ_{ij}.
117
+ */
118
+ export function delta1(cover, sigma1) {
119
+ const out = new Map();
120
+ if (!cover.triples)
121
+ return out;
122
+ for (const [i, j, k] of cover.triples) {
123
+ const get = (a, b) => {
124
+ const v = sigma1.get(pairKey(a, b)) ?? 0;
125
+ return a < b ? v : -v;
126
+ };
127
+ const tripleKey = [i, j, k].sort().join("");
128
+ out.set(tripleKey, get(j, k) - get(i, k) + get(i, j));
129
+ }
130
+ return out;
131
+ }
132
+ /** Check the cocycle condition δ¹σ = 0 on all triples. */
133
+ export function isCocycle(cover, sigma1, tol = 1e-9) {
134
+ if (!cover.triples)
135
+ return true;
136
+ const d = delta1(cover, sigma1);
137
+ for (const v of d.values())
138
+ if (Math.abs(v) > tol)
139
+ return false;
140
+ return true;
141
+ }
142
+ /**
143
+ * Compute dim H¹(U, F) by reducing to graph connectivity when triples
144
+ * are absent + Gaussian elimination when they're present.
145
+ */
146
+ export function cohomologyH1(cover) {
147
+ // Build connected components of the nerve 1-skeleton.
148
+ const uf = new UnionFind();
149
+ for (const s of cover.sites)
150
+ uf.add(s);
151
+ for (const [a, b] of cover.overlaps) {
152
+ uf.add(a);
153
+ uf.add(b);
154
+ uf.union(a, b);
155
+ }
156
+ const components = uf.countComponents();
157
+ const E = cover.overlaps.length;
158
+ const N = cover.sites.length;
159
+ // rank δ⁰ = N - c (number of independent edges in a spanning forest).
160
+ const rankDelta0 = Math.max(0, N - components);
161
+ // dim ker δ¹: when no triples, every 1-cochain is a cocycle → ker = E.
162
+ // When triples exist, we count rank δ¹ and ker = E - rank δ¹.
163
+ let kerDelta1 = E;
164
+ if (cover.triples && cover.triples.length > 0) {
165
+ const rankD1 = rankOfDelta1(cover);
166
+ kerDelta1 = Math.max(0, E - rankD1);
167
+ }
168
+ const h1 = Math.max(0, kerDelta1 - rankDelta0);
169
+ // Minimal obstruction witnesses: pairs whose value is the largest
170
+ // contributors to H¹. We approximate via cycle space of the multigraph:
171
+ // any edge NOT in a spanning forest is part of an independent cycle and
172
+ // contributes to H¹ when there are no triple overlaps to kill it.
173
+ const inForest = new Set();
174
+ const uf2 = new UnionFind();
175
+ for (const s of cover.sites)
176
+ uf2.add(s);
177
+ const obstructions = [];
178
+ for (const [a, b] of cover.overlaps) {
179
+ uf2.add(a);
180
+ uf2.add(b);
181
+ if (uf2.find(a) !== uf2.find(b)) {
182
+ uf2.union(a, b);
183
+ inForest.add(pairKey(a, b));
184
+ }
185
+ else {
186
+ // This edge closes a cycle → contributes to H¹ when triples don't kill it.
187
+ obstructions.push({ pair: [a, b], value: 1 });
188
+ }
189
+ }
190
+ return {
191
+ cochainDim: E,
192
+ rankDelta0,
193
+ kerDelta1,
194
+ h1,
195
+ hasObstruction: h1 > 0,
196
+ obstructions: obstructions.slice(0, h1),
197
+ components,
198
+ };
199
+ }
200
+ /**
201
+ * Rank of δ¹ via integer Gaussian elimination on the {-1, 0, +1}
202
+ * matrix indexed by triples (rows) × pairs (columns).
203
+ */
204
+ function rankOfDelta1(cover) {
205
+ const triples = cover.triples ?? [];
206
+ if (triples.length === 0)
207
+ return 0;
208
+ const pairCols = new Map();
209
+ cover.overlaps.forEach((p, idx) => pairCols.set(pairKey(p[0], p[1]), idx));
210
+ const rows = [];
211
+ for (const [i, j, k] of triples) {
212
+ const row = new Array(cover.overlaps.length).fill(0);
213
+ const sign = (a, b) => (a < b ? 1 : -1);
214
+ const col = (a, b) => pairCols.get(pairKey(a, b)) ?? -1;
215
+ const cij = col(i, j);
216
+ if (cij >= 0)
217
+ row[cij] += sign(i, j);
218
+ const cjk = col(j, k);
219
+ if (cjk >= 0)
220
+ row[cjk] += sign(j, k);
221
+ const cik = col(i, k);
222
+ if (cik >= 0)
223
+ row[cik] -= sign(i, k);
224
+ rows.push(row);
225
+ }
226
+ return gaussianRank(rows);
227
+ }
228
+ /** Row-reduce + return rank. Pure integer arithmetic in this code path. */
229
+ function gaussianRank(rows) {
230
+ if (rows.length === 0)
231
+ return 0;
232
+ const m = rows.length;
233
+ const n = rows[0].length;
234
+ const A = rows.map((r) => [...r]);
235
+ let rank = 0;
236
+ let col = 0;
237
+ for (let row = 0; row < m && col < n; col++) {
238
+ let pivot = -1;
239
+ for (let r = row; r < m; r++)
240
+ if ((A[r][col] ?? 0) !== 0) {
241
+ pivot = r;
242
+ break;
243
+ }
244
+ if (pivot < 0)
245
+ continue;
246
+ [A[row], A[pivot]] = [A[pivot], A[row]];
247
+ const piv = A[row][col];
248
+ for (let r = 0; r < m; r++) {
249
+ if (r === row)
250
+ continue;
251
+ const factor = (A[r][col] ?? 0) / piv;
252
+ if (factor === 0)
253
+ continue;
254
+ for (let c = col; c < n; c++)
255
+ A[r][c] = (A[r][c] ?? 0) - factor * (A[row][c] ?? 0);
256
+ }
257
+ rank++;
258
+ row++;
259
+ }
260
+ return rank;
261
+ }
262
+ /**
263
+ * Given a presheaf assignment (each site → numeric "claim value"), check
264
+ * whether the implied pairwise differences glue: returns the same
265
+ * SheafResult plus the gluing-residual vector.
266
+ *
267
+ * residual_{ij} = (claim_j - claim_i) restricted to U_i ∩ U_j
268
+ *
269
+ * If H¹ = 0, the residual lies in im δ⁰ → there exists a global section
270
+ * (effectively the user's claim values are all consistent). If H¹ > 0,
271
+ * the residual carries a non-trivial cocycle component.
272
+ */
273
+ export function gluingDiagnostic(cover, claimPerSite) {
274
+ const h1 = cohomologyH1(cover);
275
+ const residual = delta0(cover, claimPerSite);
276
+ return { ...h1, residual };
277
+ }
278
+ //# sourceMappingURL=sheaf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheaf.js","sourceRoot":"","sources":["../../src/chronosheaf/sheaf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * v2.19.47 — CHRONOSHEAF P2-f · tropical semiring (max-plus algebra).
3
+ *
4
+ * Math foundation (Maslov / Litvinov / Pin):
5
+ *
6
+ * The tropical (max-plus) semiring (ℝ ∪ {−∞}, ⊕, ⊗) replaces
7
+ *
8
+ * a ⊕ b = max(a, b)
9
+ * a ⊗ b = a + b
10
+ * 0_⊕ = −∞
11
+ * 1_⊗ = 0
12
+ *
13
+ * Linear algebra over this semiring computes shortest / longest paths
14
+ * in weighted graphs WITHOUT iteration: matrix product A ⊗ B has
15
+ * entry (A ⊗ B)_{ij} = max_k (A_{ik} + B_{kj}). The "tropical
16
+ * polynomial" min/max of sums is exactly the Bellman-Ford fixed
17
+ * point. Inference in tropical algebra is shortest-path inference
18
+ * in polyhedral fans — and the BOTTLENECK edge (the one that
19
+ * determines the max) is always uniquely identifiable: there is
20
+ * ONE critical edge whose perturbation perturbs the result, the
21
+ * rest are slack. This makes tropical inference INTERPRETABLE in
22
+ * a way that real-number ML rarely is.
23
+ *
24
+ * AI-memory mapping (PAIN-005 interface-coherence + PAIN-006
25
+ * confidence):
26
+ *
27
+ * Verifier chains compose tropically. If verifier A returns confidence
28
+ * c_A and B returns c_B and we combine sequentially, the
29
+ * bottleneck is min(c_A, c_B) — exactly a tropical operation. The
30
+ * critical edge tells you which verifier is the weakest link, which
31
+ * gives an interpretable explanation for any composite confidence
32
+ * number (PAIN-006 fix: instead of "60%" we say "60% limited by
33
+ * verifier B which scored 60%; raise B to raise overall").
34
+ *
35
+ * Implementation: graph as adjacency map; Bellman-Ford with critical-
36
+ * edge tracking. Pure-function; O(V·E).
37
+ */
38
+ export declare const TROPICAL_ZERO: number;
39
+ export declare const TROPICAL_ONE = 0;
40
+ /** Tropical addition: a ⊕ b = max(a, b). */
41
+ export declare function tropicalAdd(a: number, b: number): number;
42
+ /** Tropical multiplication: a ⊗ b = a + b. */
43
+ export declare function tropicalMul(a: number, b: number): number;
44
+ /** Graph for tropical shortest/longest path. */
45
+ export interface TropicalGraph {
46
+ nodes: ReadonlyArray<string>;
47
+ /** Directed edges: from → [{to, weight}]. */
48
+ edges: ReadonlyMap<string, ReadonlyArray<{
49
+ to: string;
50
+ weight: number;
51
+ label?: string;
52
+ }>>;
53
+ }
54
+ export interface TropicalPathResult {
55
+ source: string;
56
+ target: string;
57
+ /** Optimal value (sum of weights along the best path). */
58
+ value: number;
59
+ /** Sequence of nodes in the path. */
60
+ path: string[];
61
+ /** Sequence of edges with their weights. */
62
+ edges: Array<{
63
+ from: string;
64
+ to: string;
65
+ weight: number;
66
+ label?: string;
67
+ }>;
68
+ /** The CRITICAL (bottleneck) edge — the one whose perturbation changes the result. */
69
+ criticalEdge: {
70
+ from: string;
71
+ to: string;
72
+ weight: number;
73
+ label?: string;
74
+ } | null;
75
+ }
76
+ /**
77
+ * Longest-path computation (semiring with ⊕ = max). For shortest-path,
78
+ * negate all weights first. We do not allow positive cycles (would
79
+ * diverge); throws if detected.
80
+ */
81
+ export declare function tropicalLongestPath(graph: TropicalGraph, source: string, target: string): TropicalPathResult | null;
82
+ /**
83
+ * Verifier chain composition. Each verifier outputs a confidence
84
+ * c ∈ [0, 1]; chain confidence = min over the chain (worst-link).
85
+ * Returns the chain value PLUS the critical verifier so we can
86
+ * explain WHY confidence is what it is (PAIN-006 interpretability).
87
+ */
88
+ export declare function verifierChainConfidence(chain: ReadonlyArray<{
89
+ id: string;
90
+ confidence: number;
91
+ }>): {
92
+ chainConfidence: number;
93
+ criticalVerifier: {
94
+ id: string;
95
+ confidence: number;
96
+ } | null;
97
+ };
98
+ //# sourceMappingURL=tropical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tropical.d.ts","sourceRoot":"","sources":["../../src/chronosheaf/tropical.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,eAAO,MAAM,aAAa,QAAY,CAAC;AACvC,eAAO,MAAM,YAAY,IAAK,CAAC;AAE/B,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAA2B;AACpF,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAkB;AAE3E,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3F;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,sFAAsF;IACtF,YAAY,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACnF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CA8DnH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,GACvD;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAK1F"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * v2.19.47 — CHRONOSHEAF P2-f · tropical semiring (max-plus algebra).
3
+ *
4
+ * Math foundation (Maslov / Litvinov / Pin):
5
+ *
6
+ * The tropical (max-plus) semiring (ℝ ∪ {−∞}, ⊕, ⊗) replaces
7
+ *
8
+ * a ⊕ b = max(a, b)
9
+ * a ⊗ b = a + b
10
+ * 0_⊕ = −∞
11
+ * 1_⊗ = 0
12
+ *
13
+ * Linear algebra over this semiring computes shortest / longest paths
14
+ * in weighted graphs WITHOUT iteration: matrix product A ⊗ B has
15
+ * entry (A ⊗ B)_{ij} = max_k (A_{ik} + B_{kj}). The "tropical
16
+ * polynomial" min/max of sums is exactly the Bellman-Ford fixed
17
+ * point. Inference in tropical algebra is shortest-path inference
18
+ * in polyhedral fans — and the BOTTLENECK edge (the one that
19
+ * determines the max) is always uniquely identifiable: there is
20
+ * ONE critical edge whose perturbation perturbs the result, the
21
+ * rest are slack. This makes tropical inference INTERPRETABLE in
22
+ * a way that real-number ML rarely is.
23
+ *
24
+ * AI-memory mapping (PAIN-005 interface-coherence + PAIN-006
25
+ * confidence):
26
+ *
27
+ * Verifier chains compose tropically. If verifier A returns confidence
28
+ * c_A and B returns c_B and we combine sequentially, the
29
+ * bottleneck is min(c_A, c_B) — exactly a tropical operation. The
30
+ * critical edge tells you which verifier is the weakest link, which
31
+ * gives an interpretable explanation for any composite confidence
32
+ * number (PAIN-006 fix: instead of "60%" we say "60% limited by
33
+ * verifier B which scored 60%; raise B to raise overall").
34
+ *
35
+ * Implementation: graph as adjacency map; Bellman-Ford with critical-
36
+ * edge tracking. Pure-function; O(V·E).
37
+ */
38
+ export const TROPICAL_ZERO = -Infinity; // 0 in (R∪{-∞}, ⊕)
39
+ export const TROPICAL_ONE = 0; // 1 in (R∪{-∞}, ⊗)
40
+ /** Tropical addition: a ⊕ b = max(a, b). */
41
+ export function tropicalAdd(a, b) { return Math.max(a, b); }
42
+ /** Tropical multiplication: a ⊗ b = a + b. */
43
+ export function tropicalMul(a, b) { return a + b; }
44
+ /**
45
+ * Longest-path computation (semiring with ⊕ = max). For shortest-path,
46
+ * negate all weights first. We do not allow positive cycles (would
47
+ * diverge); throws if detected.
48
+ */
49
+ export function tropicalLongestPath(graph, source, target) {
50
+ // Bellman-Ford on the max-plus semiring.
51
+ const dist = new Map();
52
+ const pred = new Map();
53
+ for (const n of graph.nodes)
54
+ dist.set(n, TROPICAL_ZERO);
55
+ dist.set(source, TROPICAL_ONE);
56
+ const V = graph.nodes.length;
57
+ let changed = true;
58
+ let iters = 0;
59
+ while (changed && iters < V) {
60
+ changed = false;
61
+ iters++;
62
+ for (const [u, out] of graph.edges) {
63
+ const du = dist.get(u) ?? TROPICAL_ZERO;
64
+ if (du === TROPICAL_ZERO)
65
+ continue;
66
+ for (const { to, weight, label } of out) {
67
+ const candidate = tropicalMul(du, weight);
68
+ const dv = dist.get(to) ?? TROPICAL_ZERO;
69
+ if (candidate > dv) {
70
+ dist.set(to, candidate);
71
+ const p = { from: u, weight };
72
+ if (label !== undefined)
73
+ p.label = label;
74
+ pred.set(to, p);
75
+ changed = true;
76
+ }
77
+ }
78
+ }
79
+ }
80
+ // Detect positive cycles: one more pass; if anything improves, throw.
81
+ for (const [u, out] of graph.edges) {
82
+ const du = dist.get(u) ?? TROPICAL_ZERO;
83
+ if (du === TROPICAL_ZERO)
84
+ continue;
85
+ for (const { to, weight } of out) {
86
+ if (tropicalMul(du, weight) > (dist.get(to) ?? TROPICAL_ZERO)) {
87
+ throw new Error(`tropicalLongestPath: positive cycle reachable through ${u}→${to}`);
88
+ }
89
+ }
90
+ }
91
+ const targetVal = dist.get(target);
92
+ if (targetVal === undefined || targetVal === TROPICAL_ZERO)
93
+ return null;
94
+ // Reconstruct path.
95
+ const reverseNodes = [target];
96
+ const reverseEdges = [];
97
+ let cur = target;
98
+ let safety = 0;
99
+ while (cur !== source && safety++ < V + 1) {
100
+ const p = pred.get(cur);
101
+ if (!p)
102
+ return null;
103
+ const edge = { from: p.from, to: cur, weight: p.weight };
104
+ if (p.label !== undefined)
105
+ edge.label = p.label;
106
+ reverseEdges.push(edge);
107
+ reverseNodes.push(p.from);
108
+ cur = p.from;
109
+ }
110
+ const path = reverseNodes.reverse();
111
+ const edges = reverseEdges.reverse();
112
+ // Critical edge: the one with the smallest weight along the path
113
+ // (the bottleneck under min-of-sums). Equivalently, the edge whose
114
+ // ε-perturbation perturbs the path value 1:1 (slack-free edge).
115
+ let critical = null;
116
+ let minWeight = Infinity;
117
+ for (const e of edges) {
118
+ if (e.weight < minWeight) {
119
+ minWeight = e.weight;
120
+ critical = e;
121
+ }
122
+ }
123
+ return { source, target, value: targetVal, path, edges, criticalEdge: critical };
124
+ }
125
+ /**
126
+ * Verifier chain composition. Each verifier outputs a confidence
127
+ * c ∈ [0, 1]; chain confidence = min over the chain (worst-link).
128
+ * Returns the chain value PLUS the critical verifier so we can
129
+ * explain WHY confidence is what it is (PAIN-006 interpretability).
130
+ */
131
+ export function verifierChainConfidence(chain) {
132
+ if (chain.length === 0)
133
+ return { chainConfidence: 1, criticalVerifier: null };
134
+ let worst = chain[0];
135
+ for (const v of chain)
136
+ if (v.confidence < worst.confidence)
137
+ worst = v;
138
+ return { chainConfidence: worst.confidence, criticalVerifier: worst };
139
+ }
140
+ //# sourceMappingURL=tropical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tropical.js","sourceRoot":"","sources":["../../src/chronosheaf/tropical.ts"],"names":[],"mappings":"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"}