melete-ai 0.88.2
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/LICENSE +21 -0
- package/README.md +72 -0
- package/bin/melete-server.mjs +345 -0
- package/bin/melete.mjs +165 -0
- package/dist/achievability.d.ts +38 -0
- package/dist/achievability.d.ts.map +1 -0
- package/dist/achievability.js +135 -0
- package/dist/achievability.js.map +1 -0
- package/dist/aegis.d.ts +52 -0
- package/dist/aegis.d.ts.map +1 -0
- package/dist/aegis.js +191 -0
- package/dist/aegis.js.map +1 -0
- package/dist/arms.d.ts +70 -0
- package/dist/arms.d.ts.map +1 -0
- package/dist/arms.js +399 -0
- package/dist/arms.js.map +1 -0
- package/dist/batch.d.ts +30 -0
- package/dist/batch.d.ts.map +1 -0
- package/dist/batch.js +151 -0
- package/dist/batch.js.map +1 -0
- package/dist/bench.d.ts +49 -0
- package/dist/bench.d.ts.map +1 -0
- package/dist/bench.js +124 -0
- package/dist/bench.js.map +1 -0
- package/dist/certify.d.ts +48 -0
- package/dist/certify.d.ts.map +1 -0
- package/dist/certify.js +125 -0
- package/dist/certify.js.map +1 -0
- package/dist/cliff.d.ts +41 -0
- package/dist/cliff.d.ts.map +1 -0
- package/dist/cliff.js +132 -0
- package/dist/cliff.js.map +1 -0
- package/dist/confidence.d.ts +38 -0
- package/dist/confidence.d.ts.map +1 -0
- package/dist/confidence.js +98 -0
- package/dist/confidence.js.map +1 -0
- package/dist/constrained.d.ts +59 -0
- package/dist/constrained.d.ts.map +1 -0
- package/dist/constrained.js +191 -0
- package/dist/constrained.js.map +1 -0
- package/dist/cortex.d.ts +56 -0
- package/dist/cortex.d.ts.map +1 -0
- package/dist/cortex.js +81 -0
- package/dist/cortex.js.map +1 -0
- package/dist/costaware.d.ts +49 -0
- package/dist/costaware.d.ts.map +1 -0
- package/dist/costaware.js +185 -0
- package/dist/costaware.js.map +1 -0
- package/dist/drift.d.ts +36 -0
- package/dist/drift.d.ts.map +1 -0
- package/dist/drift.js +157 -0
- package/dist/drift.js.map +1 -0
- package/dist/efficiency.d.ts +49 -0
- package/dist/efficiency.d.ts.map +1 -0
- package/dist/efficiency.js +143 -0
- package/dist/efficiency.js.map +1 -0
- package/dist/engine.d.ts +64 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +130 -0
- package/dist/engine.js.map +1 -0
- package/dist/federated.d.ts +38 -0
- package/dist/federated.d.ts.map +1 -0
- package/dist/federated.js +121 -0
- package/dist/federated.js.map +1 -0
- package/dist/frontier.d.ts +51 -0
- package/dist/frontier.d.ts.map +1 -0
- package/dist/frontier.js +117 -0
- package/dist/frontier.js.map +1 -0
- package/dist/guardian.d.ts +46 -0
- package/dist/guardian.d.ts.map +1 -0
- package/dist/guardian.js +101 -0
- package/dist/guardian.js.map +1 -0
- package/dist/index.d.ts +90 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +189 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +44 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +167 -0
- package/dist/interaction.js.map +1 -0
- package/dist/interactive.d.ts +25 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +75 -0
- package/dist/interactive.js.map +1 -0
- package/dist/inverse.d.ts +44 -0
- package/dist/inverse.d.ts.map +1 -0
- package/dist/inverse.js +141 -0
- package/dist/inverse.js.map +1 -0
- package/dist/ipshield.d.ts +62 -0
- package/dist/ipshield.d.ts.map +1 -0
- package/dist/ipshield.js +104 -0
- package/dist/ipshield.js.map +1 -0
- package/dist/journalist.d.ts +56 -0
- package/dist/journalist.d.ts.map +1 -0
- package/dist/journalist.js +132 -0
- package/dist/journalist.js.map +1 -0
- package/dist/lineage.d.ts +43 -0
- package/dist/lineage.d.ts.map +1 -0
- package/dist/lineage.js +112 -0
- package/dist/lineage.js.map +1 -0
- package/dist/metabrain.d.ts +59 -0
- package/dist/metabrain.d.ts.map +1 -0
- package/dist/metabrain.js +215 -0
- package/dist/metabrain.js.map +1 -0
- package/dist/mixedspace.d.ts +61 -0
- package/dist/mixedspace.d.ts.map +1 -0
- package/dist/mixedspace.js +267 -0
- package/dist/mixedspace.js.map +1 -0
- package/dist/multiobjective.d.ts +42 -0
- package/dist/multiobjective.d.ts.map +1 -0
- package/dist/multiobjective.js +123 -0
- package/dist/multiobjective.js.map +1 -0
- package/dist/noise.d.ts +45 -0
- package/dist/noise.d.ts.map +1 -0
- package/dist/noise.js +148 -0
- package/dist/noise.js.map +1 -0
- package/dist/noiserobust.d.ts +71 -0
- package/dist/noiserobust.d.ts.map +1 -0
- package/dist/noiserobust.js +215 -0
- package/dist/noiserobust.js.map +1 -0
- package/dist/oracle.d.ts +63 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +106 -0
- package/dist/oracle.js.map +1 -0
- package/dist/poopt.d.ts +79 -0
- package/dist/poopt.d.ts.map +1 -0
- package/dist/poopt.js +148 -0
- package/dist/poopt.js.map +1 -0
- package/dist/portfolio.d.ts +51 -0
- package/dist/portfolio.d.ts.map +1 -0
- package/dist/portfolio.js +132 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/prescription.d.ts +57 -0
- package/dist/prescription.d.ts.map +1 -0
- package/dist/prescription.js +131 -0
- package/dist/prescription.js.map +1 -0
- package/dist/prime.d.ts +85 -0
- package/dist/prime.d.ts.map +1 -0
- package/dist/prime.js +157 -0
- package/dist/prime.js.map +1 -0
- package/dist/provenance.d.ts +77 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +155 -0
- package/dist/provenance.js.map +1 -0
- package/dist/rashomon.d.ts +40 -0
- package/dist/rashomon.d.ts.map +1 -0
- package/dist/rashomon.js +93 -0
- package/dist/rashomon.js.map +1 -0
- package/dist/reliability.d.ts +79 -0
- package/dist/reliability.d.ts.map +1 -0
- package/dist/reliability.js +197 -0
- package/dist/reliability.js.map +1 -0
- package/dist/replay.d.ts +62 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +146 -0
- package/dist/replay.js.map +1 -0
- package/dist/replicate.d.ts +72 -0
- package/dist/replicate.d.ts.map +1 -0
- package/dist/replicate.js +103 -0
- package/dist/replicate.js.map +1 -0
- package/dist/resonance.d.ts +32 -0
- package/dist/resonance.d.ts.map +1 -0
- package/dist/resonance.js +190 -0
- package/dist/resonance.js.map +1 -0
- package/dist/sensitivity.d.ts +44 -0
- package/dist/sensitivity.d.ts.map +1 -0
- package/dist/sensitivity.js +109 -0
- package/dist/sensitivity.js.map +1 -0
- package/dist/server.d.ts +26 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1410 -0
- package/dist/server.js.map +1 -0
- package/dist/shape.d.ts +37 -0
- package/dist/shape.d.ts.map +1 -0
- package/dist/shape.js +170 -0
- package/dist/shape.js.map +1 -0
- package/dist/sloppiness.d.ts +44 -0
- package/dist/sloppiness.d.ts.map +1 -0
- package/dist/sloppiness.js +194 -0
- package/dist/sloppiness.js.map +1 -0
- package/dist/sovereign.d.ts +77 -0
- package/dist/sovereign.d.ts.map +1 -0
- package/dist/sovereign.js +144 -0
- package/dist/sovereign.js.map +1 -0
- package/dist/space.d.ts +38 -0
- package/dist/space.d.ts.map +1 -0
- package/dist/space.js +107 -0
- package/dist/space.js.map +1 -0
- package/dist/surprise.d.ts +43 -0
- package/dist/surprise.d.ts.map +1 -0
- package/dist/surprise.js +123 -0
- package/dist/surprise.js.map +1 -0
- package/dist/territory.d.ts +43 -0
- package/dist/territory.d.ts.map +1 -0
- package/dist/territory.js +102 -0
- package/dist/territory.js.map +1 -0
- package/dist/trace.d.ts +58 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +0 -0
- package/dist/trace.js.map +1 -0
- package/dist/transfer.d.ts +46 -0
- package/dist/transfer.d.ts.map +1 -0
- package/dist/transfer.js +112 -0
- package/dist/transfer.js.map +1 -0
- package/dist/twin.d.ts +41 -0
- package/dist/twin.d.ts.map +1 -0
- package/dist/twin.js +116 -0
- package/dist/twin.js.map +1 -0
- package/examples/train.mjs +8 -0
- package/examples/tune.mjs +11 -0
- package/package.json +56 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/shape.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RESPONSE SHAPE — what does your optimum actually look like? "Find the best setting" hides a question that
|
|
3
|
+
* changes everything you do next: is the best a sharp PEAK (one precise spot, hold it tight), a RIDGE (a
|
|
4
|
+
* whole LINE of settings that all work equally well — huge freedom), a SADDLE (improving one knob forces
|
|
5
|
+
* another to get worse — proceed carefully), a PLATEAU (broad and flat — almost anything nearby is fine), or
|
|
6
|
+
* a BOWL/EDGE (the best the data shows is at a boundary — push the limits further)? Knowing the shape tells
|
|
7
|
+
* you how much to trust the optimum, how tightly to hold it, and where to explore.
|
|
8
|
+
*
|
|
9
|
+
* SHAPE fits the response curvature (the Hessian) around your data and reads the SIGNS and magnitudes of its
|
|
10
|
+
* eigenvalues — the geometry of the surface. All curving down → a peak. One flat direction → a ridge. Mixed
|
|
11
|
+
* up-and-down → a saddle. All curving up (for a maximiser) → you're climbing toward an edge. It's the same
|
|
12
|
+
* eigen-geometry physicists use to classify critical points, turned into one plain word.
|
|
13
|
+
*
|
|
14
|
+
* Honest by construction (DIAKRISIS): a LOCAL second-order picture, valid where your data concentrates;
|
|
15
|
+
* eigenvalue signs are read with a small dead-band so near-zero curvatures are honestly called "flat". It
|
|
16
|
+
* abstains when there isn't enough data to fit a curvature.
|
|
17
|
+
*/
|
|
18
|
+
import { type Space } from "./space.js";
|
|
19
|
+
import { type Observation, type Goal } from "./engine.js";
|
|
20
|
+
export type ShapeKind = "peak" | "ridge" | "saddle" | "plateau" | "bowl" | "unknown";
|
|
21
|
+
export interface ShapeReport {
|
|
22
|
+
shape: ShapeKind;
|
|
23
|
+
curvatures: number[];
|
|
24
|
+
flatDirections: number;
|
|
25
|
+
note: string;
|
|
26
|
+
}
|
|
27
|
+
/** Classify the geometric shape of the response around the data (peak / ridge / saddle / plateau / bowl). */
|
|
28
|
+
export declare function analyzeShape(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal): ShapeReport;
|
|
29
|
+
export declare function shapeGauntlet(): {
|
|
30
|
+
score: 0 | 100;
|
|
31
|
+
checks: Array<{
|
|
32
|
+
name: string;
|
|
33
|
+
pass: boolean;
|
|
34
|
+
detail: string;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=shape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAmB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AACrF,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AA8BD,6GAA6G;AAC7G,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,GAAG,WAAW,CAgDhH;AAKD,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAuBlH"}
|
package/dist/shape.js
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
function solve(A, b) {
|
|
2
|
+
const n = b.length;
|
|
3
|
+
const M = A.map((r, i) => r.concat([b[i]]));
|
|
4
|
+
for (let col = 0; col < n; col++) {
|
|
5
|
+
let piv = col;
|
|
6
|
+
for (let r = col + 1; r < n; r++)
|
|
7
|
+
if (Math.abs(M[r][col]) > Math.abs(M[piv][col]))
|
|
8
|
+
piv = r;
|
|
9
|
+
const t = M[col];
|
|
10
|
+
M[col] = M[piv];
|
|
11
|
+
M[piv] = t;
|
|
12
|
+
const d = M[col][col];
|
|
13
|
+
if (Math.abs(d) < 1e-12)
|
|
14
|
+
continue;
|
|
15
|
+
for (let r = 0; r < n; r++) {
|
|
16
|
+
if (r === col)
|
|
17
|
+
continue;
|
|
18
|
+
const f = M[r][col] / d;
|
|
19
|
+
if (f === 0)
|
|
20
|
+
continue;
|
|
21
|
+
for (let c = col; c <= n; c++)
|
|
22
|
+
M[r][c] -= f * M[col][c];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const x = new Array(n).fill(0);
|
|
26
|
+
for (let i = 0; i < n; i++) {
|
|
27
|
+
const d = M[i][i];
|
|
28
|
+
x[i] = Math.abs(d) > 1e-12 ? M[i][n] / d : 0;
|
|
29
|
+
}
|
|
30
|
+
return x;
|
|
31
|
+
}
|
|
32
|
+
function jacobiValues(A) {
|
|
33
|
+
const n = A.length;
|
|
34
|
+
const a = A.map((r) => r.slice());
|
|
35
|
+
for (let sweep = 0; sweep < 100; sweep++) {
|
|
36
|
+
let off = 0;
|
|
37
|
+
for (let p = 0; p < n; p++)
|
|
38
|
+
for (let q = p + 1; q < n; q++)
|
|
39
|
+
off += a[p][q] * a[p][q];
|
|
40
|
+
if (off < 1e-18)
|
|
41
|
+
break;
|
|
42
|
+
for (let p = 0; p < n; p++)
|
|
43
|
+
for (let q = p + 1; q < n; q++) {
|
|
44
|
+
if (Math.abs(a[p][q]) < 1e-20)
|
|
45
|
+
continue;
|
|
46
|
+
const theta = (a[q][q] - a[p][p]) / (2 * a[p][q]);
|
|
47
|
+
const t = Math.sign(theta || 1) / (Math.abs(theta) + Math.sqrt(theta * theta + 1));
|
|
48
|
+
const c = 1 / Math.sqrt(t * t + 1), s = t * c;
|
|
49
|
+
for (let i = 0; i < n; i++) {
|
|
50
|
+
const aip = a[i][p], aiq = a[i][q];
|
|
51
|
+
a[i][p] = c * aip - s * aiq;
|
|
52
|
+
a[i][q] = s * aip + c * aiq;
|
|
53
|
+
}
|
|
54
|
+
for (let i = 0; i < n; i++) {
|
|
55
|
+
const api = a[p][i], aqi = a[q][i];
|
|
56
|
+
a[p][i] = c * api - s * aqi;
|
|
57
|
+
a[q][i] = s * api + c * aqi;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return a.map((_, i) => a[i][i]);
|
|
62
|
+
}
|
|
63
|
+
/** Classify the geometric shape of the response around the data (peak / ridge / saddle / plateau / bowl). */
|
|
64
|
+
export function analyzeShape(obs, space, goal = "maximize") {
|
|
65
|
+
const dims = space?.dims ?? [];
|
|
66
|
+
const D = dims.length;
|
|
67
|
+
const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
|
|
68
|
+
const n = hist.length;
|
|
69
|
+
const nFeat = 1 + 2 * D + (D * (D - 1)) / 2;
|
|
70
|
+
if (D < 2 || n < nFeat + 4)
|
|
71
|
+
return { shape: "unknown", curvatures: [], flatDirections: 0, note: `need ≈${nFeat + 4}+ measurements and ≥2 variables to read the shape (have ${n})` };
|
|
72
|
+
const sgn = goal === "minimize" ? -1 : 1;
|
|
73
|
+
const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
|
|
74
|
+
const toN = (e) => dims.map((d, i) => { const sp = hi(i) - lo(i) || 1; return Math.max(0, Math.min(1, ((+e[d.name] || 0) - lo(i)) / sp)); });
|
|
75
|
+
const X = hist.map((o) => toN(o.experiment));
|
|
76
|
+
const y = hist.map((o) => sgn * o.value); // analyse in maximisation space: a good optimum curves DOWN
|
|
77
|
+
const pairs = [];
|
|
78
|
+
for (let i = 0; i < D; i++)
|
|
79
|
+
for (let j = i + 1; j < D; j++)
|
|
80
|
+
pairs.push([i, j]);
|
|
81
|
+
const feat = (x) => { const f = [1]; for (let k = 0; k < D; k++)
|
|
82
|
+
f.push(x[k]); for (let k = 0; k < D; k++)
|
|
83
|
+
f.push(x[k] * x[k]); for (const [i, j] of pairs)
|
|
84
|
+
f.push(x[i] * x[j]); return f; };
|
|
85
|
+
const F = X.map(feat);
|
|
86
|
+
const m = F[0].length;
|
|
87
|
+
const XtX = Array.from({ length: m }, () => new Array(m).fill(0));
|
|
88
|
+
const Xty = new Array(m).fill(0);
|
|
89
|
+
for (let r = 0; r < n; r++) {
|
|
90
|
+
const f = F[r];
|
|
91
|
+
for (let a = 0; a < m; a++) {
|
|
92
|
+
Xty[a] += f[a] * y[r];
|
|
93
|
+
for (let b = 0; b < m; b++)
|
|
94
|
+
XtX[a][b] += f[a] * f[b];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
for (let a = 0; a < m; a++)
|
|
98
|
+
XtX[a][a] += 1e-7;
|
|
99
|
+
const coef = solve(XtX, Xty);
|
|
100
|
+
const H = Array.from({ length: D }, () => new Array(D).fill(0));
|
|
101
|
+
for (let k = 0; k < D; k++)
|
|
102
|
+
H[k][k] = 2 * coef[1 + D + k];
|
|
103
|
+
let pi = 1 + 2 * D;
|
|
104
|
+
for (const [i, j] of pairs) {
|
|
105
|
+
H[i][j] = H[j][i] = coef[pi++];
|
|
106
|
+
}
|
|
107
|
+
const ev = jacobiValues(H);
|
|
108
|
+
const maxAbs = Math.max(1e-12, ...ev.map((v) => Math.abs(v)));
|
|
109
|
+
const r = ev.map((v) => v / maxAbs).sort((a, b) => b - a); // normalised eigenvalues, descending
|
|
110
|
+
const band = 0.08;
|
|
111
|
+
const nPos = r.filter((v) => v > band).length;
|
|
112
|
+
const nNeg = r.filter((v) => v < -band).length;
|
|
113
|
+
const nZero = r.length - nPos - nNeg;
|
|
114
|
+
// in maximisation space: concave (negative) curvature = a real optimum direction
|
|
115
|
+
let shape;
|
|
116
|
+
if (nPos >= 1 && nNeg >= 1)
|
|
117
|
+
shape = "saddle";
|
|
118
|
+
else if (nZero === D)
|
|
119
|
+
shape = "plateau";
|
|
120
|
+
else if (nPos === D)
|
|
121
|
+
shape = "bowl"; // convex up → best is at a boundary
|
|
122
|
+
else if (nZero >= 1)
|
|
123
|
+
shape = "ridge"; // a flat (free) direction alongside curved ones
|
|
124
|
+
else
|
|
125
|
+
shape = "peak"; // all curving down → a clean optimum point
|
|
126
|
+
const note = {
|
|
127
|
+
peak: "a sharp PEAK — one precise sweet spot; hold the settings tight.",
|
|
128
|
+
ridge: `a RIDGE — ${nZero} whole direction${nZero > 1 ? "s" : ""} of settings score about the same; you have real freedom along it (pick the cheapest).`,
|
|
129
|
+
saddle: "a SADDLE — improving one direction makes another worse; proceed carefully, the optimum is a trade-off.",
|
|
130
|
+
plateau: "a PLATEAU — broad and flat; almost any nearby setting works about as well.",
|
|
131
|
+
bowl: "an EDGE/BOWL — the best your data shows sits at a boundary; push the limits further to keep improving.",
|
|
132
|
+
unknown: "",
|
|
133
|
+
}[shape];
|
|
134
|
+
return { shape, curvatures: r.map((v) => +v.toFixed(3)), flatDirections: nZero, note };
|
|
135
|
+
}
|
|
136
|
+
// ── gauntlet ──────────────────────────────────────────────────────────────────
|
|
137
|
+
import { lcg } from "./space.js";
|
|
138
|
+
export function shapeGauntlet() {
|
|
139
|
+
const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
|
|
140
|
+
const sample = (f, seed) => { const r = lcg(seed); const o = []; for (let i = 0; i < 70; i++) {
|
|
141
|
+
const x = r(), y = r();
|
|
142
|
+
o.push({ experiment: { x, y }, value: f(x, y) });
|
|
143
|
+
} return o; };
|
|
144
|
+
const peak = analyzeShape(sample((x, y) => -(((x - 0.5) ** 2) + ((y - 0.5) ** 2)), 3), space, "maximize");
|
|
145
|
+
const ridge = analyzeShape(sample((x, y) => -((x + y - 1) ** 2), 4), space, "maximize");
|
|
146
|
+
const saddle = analyzeShape(sample((x, y) => ((x - 0.5) ** 2) - ((y - 0.5) ** 2), 5), space, "maximize");
|
|
147
|
+
const bowl = analyzeShape(sample((x, y) => ((x - 0.5) ** 2) + ((y - 0.5) ** 2), 6), space, "maximize");
|
|
148
|
+
const det = JSON.stringify(analyzeShape(sample((x, y) => -(((x - 0.5) ** 2) + ((y - 0.5) ** 2)), 3), space, "maximize")) === JSON.stringify(peak);
|
|
149
|
+
const abstains = analyzeShape(sample((x, y) => x, 3).slice(0, 5), space, "maximize").shape === "unknown";
|
|
150
|
+
const total = (() => { try {
|
|
151
|
+
analyzeShape([], space);
|
|
152
|
+
analyzeShape(null, space);
|
|
153
|
+
analyzeShape(sample((x, y) => x, 1), { dims: [{ name: "x", type: "real", min: 0, max: 1 }] });
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
return false;
|
|
158
|
+
} })();
|
|
159
|
+
const checks = [
|
|
160
|
+
{ name: "PEAK", pass: peak.shape === "peak", detail: `-(x²+y²) → "${peak.shape}" (curvatures ${peak.curvatures})` },
|
|
161
|
+
{ name: "RIDGE", pass: ridge.shape === "ridge" && ridge.flatDirections === 1, detail: `-(x+y)² → "${ridge.shape}", ${ridge.flatDirections} flat direction` },
|
|
162
|
+
{ name: "SADDLE", pass: saddle.shape === "saddle", detail: `x²−y² → "${saddle.shape}" (mixed curvature)` },
|
|
163
|
+
{ name: "BOWL/EDGE", pass: bowl.shape === "bowl", detail: `x²+y² (maximise) → "${bowl.shape}" — best at a boundary` },
|
|
164
|
+
{ name: "DETERMINISTIC", pass: det, detail: "same data → same shape" },
|
|
165
|
+
{ name: "ABSTAINS-WHEN-THIN", pass: abstains, detail: "too few measurements → unknown" },
|
|
166
|
+
{ name: "TOTAL", pass: total, detail: "empty / null / 1-D never throws" },
|
|
167
|
+
];
|
|
168
|
+
return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=shape.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SLOPPINESS — the rarest lens: how many knobs do you REALLY have? Borrowed from "sloppy models" in systems
|
|
3
|
+
* biology and physics (Sethna, Transtrum), an idea almost no optimizer ships. You think you're tuning five
|
|
4
|
+
* variables; the response often cares about only two or three COMBINATIONS of them, and is nearly flat along
|
|
5
|
+
* the rest. Those flat ("sloppy") directions are freedom: you can set them however is cheapest, fastest, or
|
|
6
|
+
* safest without hurting the result. The steep ("stiff") directions are the ones you must hold precisely.
|
|
7
|
+
*
|
|
8
|
+
* SLOPPINESS fits the response curvature (the Hessian) around your data, eigen-decomposes it, and reads off
|
|
9
|
+
* the spectrum: each eigenvector is a combination of your variables, each eigenvalue is how sharply the
|
|
10
|
+
* result changes along it. A spectrum spanning orders of magnitude = a sloppy system: a few stiff
|
|
11
|
+
* directions matter, the rest are free. The headline is the EFFECTIVE DIMENSIONALITY — "you have 5 knobs
|
|
12
|
+
* but only 2 combinations truly move the needle."
|
|
13
|
+
*
|
|
14
|
+
* Honest by construction (DIAKRISIS): this is a LOCAL quadratic (Hessian) picture, valid where your data
|
|
15
|
+
* concentrates; eigenvectors are reported as the literal variable loadings, stiffness as the eigenvalue
|
|
16
|
+
* ratio to the stiffest. It abstains when there isn't enough data to fit a curvature.
|
|
17
|
+
*/
|
|
18
|
+
import { type Space } from "./space.js";
|
|
19
|
+
import { type Observation, type Goal } from "./engine.js";
|
|
20
|
+
export interface SloppyDirection {
|
|
21
|
+
stiffness: number;
|
|
22
|
+
kind: "stiff" | "sloppy";
|
|
23
|
+
loadings: Array<{
|
|
24
|
+
name: string;
|
|
25
|
+
weight: number;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
export interface SloppinessReport {
|
|
29
|
+
effectiveDims: number;
|
|
30
|
+
totalDims: number;
|
|
31
|
+
directions: SloppyDirection[];
|
|
32
|
+
note: string;
|
|
33
|
+
}
|
|
34
|
+
/** Analyse how many independent combinations of variables actually matter (stiff) vs are free (sloppy). */
|
|
35
|
+
export declare function analyzeSloppiness(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal): SloppinessReport;
|
|
36
|
+
export declare function sloppinessGauntlet(): {
|
|
37
|
+
score: 0 | 100;
|
|
38
|
+
checks: Array<{
|
|
39
|
+
name: string;
|
|
40
|
+
pass: boolean;
|
|
41
|
+
detail: string;
|
|
42
|
+
}>;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=sloppiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sloppiness.d.ts","sourceRoot":"","sources":["../src/sloppiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAmB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,WAAW,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE;AACnI,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAoCD,2GAA2G;AAC3G,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,GAAG,gBAAgB,CA2C1H;AAOD,wBAAgB,kBAAkB,IAAI;IAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAwCvH"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
function solve(A, b) {
|
|
2
|
+
const n = b.length;
|
|
3
|
+
const M = A.map((r, i) => r.concat([b[i]]));
|
|
4
|
+
for (let col = 0; col < n; col++) {
|
|
5
|
+
let piv = col;
|
|
6
|
+
for (let r = col + 1; r < n; r++)
|
|
7
|
+
if (Math.abs(M[r][col]) > Math.abs(M[piv][col]))
|
|
8
|
+
piv = r;
|
|
9
|
+
const t = M[col];
|
|
10
|
+
M[col] = M[piv];
|
|
11
|
+
M[piv] = t;
|
|
12
|
+
const d = M[col][col];
|
|
13
|
+
if (Math.abs(d) < 1e-12)
|
|
14
|
+
continue;
|
|
15
|
+
for (let r = 0; r < n; r++) {
|
|
16
|
+
if (r === col)
|
|
17
|
+
continue;
|
|
18
|
+
const f = M[r][col] / d;
|
|
19
|
+
if (f === 0)
|
|
20
|
+
continue;
|
|
21
|
+
for (let c = col; c <= n; c++)
|
|
22
|
+
M[r][c] -= f * M[col][c];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const x = new Array(n).fill(0);
|
|
26
|
+
for (let i = 0; i < n; i++) {
|
|
27
|
+
const d = M[i][i];
|
|
28
|
+
x[i] = Math.abs(d) > 1e-12 ? M[i][n] / d : 0;
|
|
29
|
+
}
|
|
30
|
+
return x;
|
|
31
|
+
}
|
|
32
|
+
/** Jacobi eigenvalue decomposition of a symmetric DxD matrix → {values, vectors(columns)}. */
|
|
33
|
+
function jacobiEig(A) {
|
|
34
|
+
const n = A.length;
|
|
35
|
+
const a = A.map((r) => r.slice());
|
|
36
|
+
const V = Array.from({ length: n }, (_, i) => Array.from({ length: n }, (_, j) => (i === j ? 1 : 0)));
|
|
37
|
+
for (let sweep = 0; sweep < 100; sweep++) {
|
|
38
|
+
let off = 0;
|
|
39
|
+
for (let p = 0; p < n; p++)
|
|
40
|
+
for (let q = p + 1; q < n; q++)
|
|
41
|
+
off += a[p][q] * a[p][q];
|
|
42
|
+
if (off < 1e-18)
|
|
43
|
+
break;
|
|
44
|
+
for (let p = 0; p < n; p++)
|
|
45
|
+
for (let q = p + 1; q < n; q++) {
|
|
46
|
+
if (Math.abs(a[p][q]) < 1e-20)
|
|
47
|
+
continue;
|
|
48
|
+
const theta = (a[q][q] - a[p][p]) / (2 * a[p][q]);
|
|
49
|
+
const t = Math.sign(theta || 1) / (Math.abs(theta) + Math.sqrt(theta * theta + 1));
|
|
50
|
+
const c = 1 / Math.sqrt(t * t + 1), s = t * c;
|
|
51
|
+
for (let i = 0; i < n; i++) {
|
|
52
|
+
const aip = a[i][p], aiq = a[i][q];
|
|
53
|
+
a[i][p] = c * aip - s * aiq;
|
|
54
|
+
a[i][q] = s * aip + c * aiq;
|
|
55
|
+
}
|
|
56
|
+
for (let i = 0; i < n; i++) {
|
|
57
|
+
const api = a[p][i], aqi = a[q][i];
|
|
58
|
+
a[p][i] = c * api - s * aqi;
|
|
59
|
+
a[q][i] = s * api + c * aqi;
|
|
60
|
+
}
|
|
61
|
+
for (let i = 0; i < n; i++) {
|
|
62
|
+
const vip = V[i][p], viq = V[i][q];
|
|
63
|
+
V[i][p] = c * vip - s * viq;
|
|
64
|
+
V[i][q] = s * vip + c * viq;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const values = a.map((_, i) => a[i][i]);
|
|
69
|
+
const vectors = V; // column j is the eigenvector for values[j]
|
|
70
|
+
return { values, vectors };
|
|
71
|
+
}
|
|
72
|
+
/** Analyse how many independent combinations of variables actually matter (stiff) vs are free (sloppy). */
|
|
73
|
+
export function analyzeSloppiness(obs, space, goal = "maximize") {
|
|
74
|
+
const dims = space?.dims ?? [];
|
|
75
|
+
const D = dims.length;
|
|
76
|
+
const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
|
|
77
|
+
const n = hist.length;
|
|
78
|
+
const nFeat = 1 + 2 * D + (D * (D - 1)) / 2;
|
|
79
|
+
if (D < 2 || n < nFeat + 4) {
|
|
80
|
+
return { effectiveDims: NaN, totalDims: D, directions: [], note: `need ≈${nFeat + 4}+ measurements and ≥2 variables to read sloppiness (have ${n}, ${D}D)` };
|
|
81
|
+
}
|
|
82
|
+
const lo = (i) => dims[i].min ?? 0, hi = (i) => dims[i].max ?? 1;
|
|
83
|
+
const toN = (e) => dims.map((d, i) => { const sp = hi(i) - lo(i) || 1; return Math.max(0, Math.min(1, ((+e[d.name] || 0) - lo(i)) / sp)); });
|
|
84
|
+
const X = hist.map((o) => toN(o.experiment));
|
|
85
|
+
const y = hist.map((o) => o.value);
|
|
86
|
+
// quadratic feature map: 1, x_k, x_k², x_i x_j (i<j)
|
|
87
|
+
const pairs = [];
|
|
88
|
+
for (let i = 0; i < D; i++)
|
|
89
|
+
for (let j = i + 1; j < D; j++)
|
|
90
|
+
pairs.push([i, j]);
|
|
91
|
+
const feat = (x) => { const f = [1]; for (let k = 0; k < D; k++)
|
|
92
|
+
f.push(x[k]); for (let k = 0; k < D; k++)
|
|
93
|
+
f.push(x[k] * x[k]); for (const [i, j] of pairs)
|
|
94
|
+
f.push(x[i] * x[j]); return f; };
|
|
95
|
+
const F = X.map(feat);
|
|
96
|
+
const m = F[0].length;
|
|
97
|
+
const XtX = Array.from({ length: m }, () => new Array(m).fill(0));
|
|
98
|
+
const Xty = new Array(m).fill(0);
|
|
99
|
+
for (let r = 0; r < n; r++) {
|
|
100
|
+
const f = F[r];
|
|
101
|
+
for (let a = 0; a < m; a++) {
|
|
102
|
+
Xty[a] += f[a] * y[r];
|
|
103
|
+
for (let b = 0; b < m; b++)
|
|
104
|
+
XtX[a][b] += f[a] * f[b];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
for (let a = 0; a < m; a++)
|
|
108
|
+
XtX[a][a] += 1e-7;
|
|
109
|
+
const coef = solve(XtX, Xty);
|
|
110
|
+
// assemble the Hessian H (symmetric): coef(x_k²)=½H_kk → H_kk=2·coef ; coef(x_i x_j)=H_ij
|
|
111
|
+
const H = Array.from({ length: D }, () => new Array(D).fill(0));
|
|
112
|
+
for (let k = 0; k < D; k++)
|
|
113
|
+
H[k][k] = 2 * coef[1 + D + k];
|
|
114
|
+
let pi = 1 + 2 * D;
|
|
115
|
+
for (const [i, j] of pairs) {
|
|
116
|
+
H[i][j] = H[j][i] = coef[pi++];
|
|
117
|
+
}
|
|
118
|
+
const { values, vectors } = jacobiEig(H);
|
|
119
|
+
// sort eigen-directions by |eigenvalue| descending (stiffest first)
|
|
120
|
+
const idx = values.map((_, i) => i).sort((a, b) => Math.abs(values[b]) - Math.abs(values[a]));
|
|
121
|
+
const absMax = Math.max(1e-12, Math.abs(values[idx[0]]));
|
|
122
|
+
const directions = idx.map((ix) => {
|
|
123
|
+
const stiff = Math.abs(values[ix]) / absMax;
|
|
124
|
+
const loadings = dims.map((d, k) => ({ name: d.name, weight: +vectors[k][ix].toFixed(3) })).sort((a, b) => Math.abs(b.weight) - Math.abs(a.weight));
|
|
125
|
+
return { stiffness: +stiff.toFixed(4), kind: stiff >= 0.05 ? "stiff" : "sloppy", loadings };
|
|
126
|
+
});
|
|
127
|
+
const effectiveDims = directions.filter((d) => d.kind === "stiff").length;
|
|
128
|
+
const sloppy = directions.filter((d) => d.kind === "sloppy").length;
|
|
129
|
+
const topCombo = directions[0].loadings.filter((l) => Math.abs(l.weight) > 0.25).map((l) => `${l.weight > 0 ? "" : "−"}${l.name}`).join(" & ");
|
|
130
|
+
const note = sloppy === 0
|
|
131
|
+
? `all ${D} of your variables matter independently — no free directions to exploit`
|
|
132
|
+
: `only ${effectiveDims} of ${D} combinations truly move the result (the stiffest ≈ ${topCombo}); the other ${sloppy} ${sloppy === 1 ? "direction is" : "directions are"} sloppy — set them however is cheapest/easiest`;
|
|
133
|
+
return { effectiveDims, totalDims: D, directions, note };
|
|
134
|
+
}
|
|
135
|
+
// ── gauntlet ──────────────────────────────────────────────────────────────────
|
|
136
|
+
import { lcg } from "./space.js";
|
|
137
|
+
const cos = (a, b) => { let d = 0, na = 0, nb = 0; for (let i = 0; i < a.length; i++) {
|
|
138
|
+
d += a[i] * b[i];
|
|
139
|
+
na += a[i] * a[i];
|
|
140
|
+
nb += b[i] * b[i];
|
|
141
|
+
} return Math.abs(d) / (Math.sqrt(na * nb) || 1); };
|
|
142
|
+
export function sloppinessGauntlet() {
|
|
143
|
+
const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
|
|
144
|
+
// SLOPPY system: response depends only on (x+y) → one stiff direction (1,1), one sloppy (1,−1)
|
|
145
|
+
const fSloppy = (x, y) => -((x + y - 1) ** 2);
|
|
146
|
+
const r1 = lcg(7);
|
|
147
|
+
const o1 = [];
|
|
148
|
+
for (let i = 0; i < 60; i++) {
|
|
149
|
+
const x = r1(), y = r1();
|
|
150
|
+
o1.push({ experiment: { x, y }, value: fSloppy(x, y) });
|
|
151
|
+
}
|
|
152
|
+
const s1 = analyzeSloppiness(o1, space, "maximize");
|
|
153
|
+
const stiffVec = s1.directions[0] ? [s1.directions[0].loadings.find((l) => l.name === "x").weight, s1.directions[0].loadings.find((l) => l.name === "y").weight] : [0, 0];
|
|
154
|
+
const recoversStiff = cos(stiffVec, [1, 1]) > 0.95; // stiffest direction ≈ (x+y)
|
|
155
|
+
const findsSloppy = s1.effectiveDims === 1 && s1.directions.some((d) => d.kind === "sloppy");
|
|
156
|
+
// ISOTROPIC system: f = -(x²+y²) → both directions equally stiff → effectiveDims 2, no sloppy
|
|
157
|
+
const fIso = (x, y) => -(((x - 0.5) ** 2) + ((y - 0.5) ** 2));
|
|
158
|
+
const r2 = lcg(3);
|
|
159
|
+
const o2 = [];
|
|
160
|
+
for (let i = 0; i < 60; i++) {
|
|
161
|
+
const x = r2(), y = r2();
|
|
162
|
+
o2.push({ experiment: { x, y }, value: fIso(x, y) });
|
|
163
|
+
}
|
|
164
|
+
const s2 = analyzeSloppiness(o2, space, "maximize");
|
|
165
|
+
const isotropicBothStiff = s2.effectiveDims === 2 && s2.directions.every((d) => d.kind === "stiff");
|
|
166
|
+
// SPECTRUM ordered: stiffness descending, top = 1.0
|
|
167
|
+
const ordered = s1.directions.length === 2 && s1.directions[0].stiffness >= s1.directions[1].stiffness && Math.abs(s1.directions[0].stiffness - 1) < 1e-6;
|
|
168
|
+
// the sloppy direction of the (x+y) system is ≈ (1,−1)
|
|
169
|
+
const sloppyDir = s1.directions[1] ? [s1.directions[1].loadings.find((l) => l.name === "x").weight, s1.directions[1].loadings.find((l) => l.name === "y").weight] : [0, 0];
|
|
170
|
+
const sloppyIsAntidiag = cos(sloppyDir, [1, -1]) > 0.95;
|
|
171
|
+
const det = JSON.stringify(analyzeSloppiness(o1, space, "maximize")) === JSON.stringify(analyzeSloppiness(o1, space, "maximize"));
|
|
172
|
+
const abstains = analyzeSloppiness(o1.slice(0, 5), space, "maximize").note.indexOf("need") >= 0;
|
|
173
|
+
const total = (() => { try {
|
|
174
|
+
analyzeSloppiness([], space);
|
|
175
|
+
analyzeSloppiness(null, space);
|
|
176
|
+
analyzeSloppiness(o1, { dims: [{ name: "x", type: "real", min: 0, max: 1 }] });
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return false;
|
|
181
|
+
} })();
|
|
182
|
+
const checks = [
|
|
183
|
+
{ name: "RECOVERS-STIFF-COMBO", pass: recoversStiff, detail: `(x+y)-only response → stiffest direction ≈ x & y together (cos ${cos(stiffVec, [1, 1]).toFixed(3)})` },
|
|
184
|
+
{ name: "FINDS-SLOPPY-FREEDOM", pass: findsSloppy, detail: `effective dims ${s1.effectiveDims}/2 — one sloppy (free) direction found` },
|
|
185
|
+
{ name: "SLOPPY-DIRECTION-CORRECT", pass: sloppyIsAntidiag, detail: `the free direction ≈ x−y (cos ${cos(sloppyDir, [1, -1]).toFixed(3)})` },
|
|
186
|
+
{ name: "ISOTROPIC-ALL-STIFF", pass: isotropicBothStiff, detail: `f=-(x²+y²) → both matter, effective dims ${s2.effectiveDims}/2, no free direction` },
|
|
187
|
+
{ name: "SPECTRUM-ORDERED", pass: ordered, detail: "directions sorted stiffest-first, normalised to 1.0" },
|
|
188
|
+
{ name: "DETERMINISTIC", pass: det, detail: "same data → same spectrum" },
|
|
189
|
+
{ name: "ABSTAINS-WHEN-THIN", pass: abstains, detail: "too few measurements → no claim" },
|
|
190
|
+
{ name: "TOTAL", pass: total, detail: "empty / null / 1-D never throws" },
|
|
191
|
+
];
|
|
192
|
+
return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=sloppiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sloppiness.js","sourceRoot":"","sources":["../src/sloppiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SOVEREIGN — the ecosystem spine. Melete is "The Sovereign Verifiable AI Analyst & Optimizer": you bring a
|
|
3
|
+
* system you can MEASURE (an ML pipeline, an infra/DB/network config, a process, a simulation), and in ONE
|
|
4
|
+
* call Melete plays four roles end-to-end and hands back a single, signed, offline-verifiable verdict:
|
|
5
|
+
*
|
|
6
|
+
* ① DISCOVER — find the best setting in the fewest experiments
|
|
7
|
+
* ② DECIDE — the Φ brain's safety-first verdict + AEGIS's ROBUST (survives-the-real-world) answer
|
|
8
|
+
* ③ DIAGNOSE — the analyst's plain-language read: which knobs matter, where the cliffs are, the shape,
|
|
9
|
+
* the achievable ceiling, the family of equally-good recipes
|
|
10
|
+
* ④ CERTIFY — an Ed25519-signed PROVENANCE certificate: a tamper-evident record of WHAT was tested and
|
|
11
|
+
* the result reached, verifiable offline with the embedded public key, no Melete needed
|
|
12
|
+
*
|
|
13
|
+
* This is the product face (one call, one verdict — usable) AND the moat (sovereign + a signed, vendor-
|
|
14
|
+
* neutral verdict FORMAT others must speak to audit it). It runs entirely on the caller's machine.
|
|
15
|
+
*
|
|
16
|
+
* Honest by construction (DIAKRISIS): "verifiable" means PROVENANCE + REPRODUCIBILITY — the certificate
|
|
17
|
+
* proves, offline, exactly what was measured and the result found, and that the signed payload wasn't
|
|
18
|
+
* altered. It is NOT a proof that the customer's code is bug-free or exploit-free (that is undecidable in
|
|
19
|
+
* general and we refuse to fake it). Every facet of the verdict comes from an independently-tested engine.
|
|
20
|
+
*/
|
|
21
|
+
import { type KeyObject } from "node:crypto";
|
|
22
|
+
import { type Space } from "./space.js";
|
|
23
|
+
import { type Observation, type Goal } from "./engine.js";
|
|
24
|
+
export interface SovereignCertificate {
|
|
25
|
+
standard: "melete-sovereign-verdict/v1";
|
|
26
|
+
payloadHash: string;
|
|
27
|
+
signature: string;
|
|
28
|
+
publicKeyPem: string;
|
|
29
|
+
algo: "ed25519+sha256";
|
|
30
|
+
issuedAtMs: number;
|
|
31
|
+
}
|
|
32
|
+
export interface SovereignVerdict {
|
|
33
|
+
product: "Melete — The Sovereign Verifiable AI Analyst & Optimizer";
|
|
34
|
+
discover: {
|
|
35
|
+
best: Observation | null;
|
|
36
|
+
evaluations: number;
|
|
37
|
+
goal: Goal;
|
|
38
|
+
};
|
|
39
|
+
decide: {
|
|
40
|
+
processIQ: number;
|
|
41
|
+
grade: string;
|
|
42
|
+
decision: string;
|
|
43
|
+
briefing: string;
|
|
44
|
+
};
|
|
45
|
+
diagnose: {
|
|
46
|
+
shape: unknown;
|
|
47
|
+
cliffs: unknown;
|
|
48
|
+
sloppiness: unknown;
|
|
49
|
+
achievability: unknown;
|
|
50
|
+
options: unknown;
|
|
51
|
+
};
|
|
52
|
+
certify: SovereignCertificate;
|
|
53
|
+
verdict: string;
|
|
54
|
+
}
|
|
55
|
+
/** Run the full Sovereign analysis on a finished (or in-progress) run and sign the verdict. */
|
|
56
|
+
export declare function sovereignAnalyze(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal, opts?: {
|
|
57
|
+
target?: number;
|
|
58
|
+
keys?: {
|
|
59
|
+
privateKey: KeyObject;
|
|
60
|
+
publicKey: KeyObject;
|
|
61
|
+
};
|
|
62
|
+
issuedAtMs?: number;
|
|
63
|
+
}): SovereignVerdict;
|
|
64
|
+
/** Re-verify a Sovereign Verdict OFFLINE: recompute the payload hash + check the Ed25519 signature. */
|
|
65
|
+
export declare function verifySovereign(v: SovereignVerdict): {
|
|
66
|
+
ok: boolean;
|
|
67
|
+
reason: string;
|
|
68
|
+
};
|
|
69
|
+
export declare function sovereignGauntlet(): {
|
|
70
|
+
score: 0 | 100;
|
|
71
|
+
checks: Array<{
|
|
72
|
+
name: string;
|
|
73
|
+
pass: boolean;
|
|
74
|
+
detail: string;
|
|
75
|
+
}>;
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=sovereign.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sovereign.d.ts","sourceRoot":"","sources":["../src/sovereign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAA0G,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACrJ,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAQ1D,MAAM,WAAW,oBAAoB;IAAG,QAAQ,EAAE,6BAA6B,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAC3L,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,0DAA0D,CAAC;IACpE,QAAQ,EAAE;QAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IACxE,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,QAAQ,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC7G,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,gBAAgB,CAiCtO;AAED,uGAAuG;AACvG,wBAAgB,eAAe,CAAC,CAAC,EAAE,gBAAgB,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAUpF;AAOD,wBAAgB,iBAAiB,IAAI;IAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC;IAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAqCtH"}
|