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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +72 -0
  3. package/bin/melete-server.mjs +345 -0
  4. package/bin/melete.mjs +165 -0
  5. package/dist/achievability.d.ts +38 -0
  6. package/dist/achievability.d.ts.map +1 -0
  7. package/dist/achievability.js +135 -0
  8. package/dist/achievability.js.map +1 -0
  9. package/dist/aegis.d.ts +52 -0
  10. package/dist/aegis.d.ts.map +1 -0
  11. package/dist/aegis.js +191 -0
  12. package/dist/aegis.js.map +1 -0
  13. package/dist/arms.d.ts +70 -0
  14. package/dist/arms.d.ts.map +1 -0
  15. package/dist/arms.js +399 -0
  16. package/dist/arms.js.map +1 -0
  17. package/dist/batch.d.ts +30 -0
  18. package/dist/batch.d.ts.map +1 -0
  19. package/dist/batch.js +151 -0
  20. package/dist/batch.js.map +1 -0
  21. package/dist/bench.d.ts +49 -0
  22. package/dist/bench.d.ts.map +1 -0
  23. package/dist/bench.js +124 -0
  24. package/dist/bench.js.map +1 -0
  25. package/dist/certify.d.ts +48 -0
  26. package/dist/certify.d.ts.map +1 -0
  27. package/dist/certify.js +125 -0
  28. package/dist/certify.js.map +1 -0
  29. package/dist/cliff.d.ts +41 -0
  30. package/dist/cliff.d.ts.map +1 -0
  31. package/dist/cliff.js +132 -0
  32. package/dist/cliff.js.map +1 -0
  33. package/dist/confidence.d.ts +38 -0
  34. package/dist/confidence.d.ts.map +1 -0
  35. package/dist/confidence.js +98 -0
  36. package/dist/confidence.js.map +1 -0
  37. package/dist/constrained.d.ts +59 -0
  38. package/dist/constrained.d.ts.map +1 -0
  39. package/dist/constrained.js +191 -0
  40. package/dist/constrained.js.map +1 -0
  41. package/dist/cortex.d.ts +56 -0
  42. package/dist/cortex.d.ts.map +1 -0
  43. package/dist/cortex.js +81 -0
  44. package/dist/cortex.js.map +1 -0
  45. package/dist/costaware.d.ts +49 -0
  46. package/dist/costaware.d.ts.map +1 -0
  47. package/dist/costaware.js +185 -0
  48. package/dist/costaware.js.map +1 -0
  49. package/dist/drift.d.ts +36 -0
  50. package/dist/drift.d.ts.map +1 -0
  51. package/dist/drift.js +157 -0
  52. package/dist/drift.js.map +1 -0
  53. package/dist/efficiency.d.ts +49 -0
  54. package/dist/efficiency.d.ts.map +1 -0
  55. package/dist/efficiency.js +143 -0
  56. package/dist/efficiency.js.map +1 -0
  57. package/dist/engine.d.ts +64 -0
  58. package/dist/engine.d.ts.map +1 -0
  59. package/dist/engine.js +130 -0
  60. package/dist/engine.js.map +1 -0
  61. package/dist/federated.d.ts +38 -0
  62. package/dist/federated.d.ts.map +1 -0
  63. package/dist/federated.js +121 -0
  64. package/dist/federated.js.map +1 -0
  65. package/dist/frontier.d.ts +51 -0
  66. package/dist/frontier.d.ts.map +1 -0
  67. package/dist/frontier.js +117 -0
  68. package/dist/frontier.js.map +1 -0
  69. package/dist/guardian.d.ts +46 -0
  70. package/dist/guardian.d.ts.map +1 -0
  71. package/dist/guardian.js +101 -0
  72. package/dist/guardian.js.map +1 -0
  73. package/dist/index.d.ts +90 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +189 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/interaction.d.ts +44 -0
  78. package/dist/interaction.d.ts.map +1 -0
  79. package/dist/interaction.js +167 -0
  80. package/dist/interaction.js.map +1 -0
  81. package/dist/interactive.d.ts +25 -0
  82. package/dist/interactive.d.ts.map +1 -0
  83. package/dist/interactive.js +75 -0
  84. package/dist/interactive.js.map +1 -0
  85. package/dist/inverse.d.ts +44 -0
  86. package/dist/inverse.d.ts.map +1 -0
  87. package/dist/inverse.js +141 -0
  88. package/dist/inverse.js.map +1 -0
  89. package/dist/ipshield.d.ts +62 -0
  90. package/dist/ipshield.d.ts.map +1 -0
  91. package/dist/ipshield.js +104 -0
  92. package/dist/ipshield.js.map +1 -0
  93. package/dist/journalist.d.ts +56 -0
  94. package/dist/journalist.d.ts.map +1 -0
  95. package/dist/journalist.js +132 -0
  96. package/dist/journalist.js.map +1 -0
  97. package/dist/lineage.d.ts +43 -0
  98. package/dist/lineage.d.ts.map +1 -0
  99. package/dist/lineage.js +112 -0
  100. package/dist/lineage.js.map +1 -0
  101. package/dist/metabrain.d.ts +59 -0
  102. package/dist/metabrain.d.ts.map +1 -0
  103. package/dist/metabrain.js +215 -0
  104. package/dist/metabrain.js.map +1 -0
  105. package/dist/mixedspace.d.ts +61 -0
  106. package/dist/mixedspace.d.ts.map +1 -0
  107. package/dist/mixedspace.js +267 -0
  108. package/dist/mixedspace.js.map +1 -0
  109. package/dist/multiobjective.d.ts +42 -0
  110. package/dist/multiobjective.d.ts.map +1 -0
  111. package/dist/multiobjective.js +123 -0
  112. package/dist/multiobjective.js.map +1 -0
  113. package/dist/noise.d.ts +45 -0
  114. package/dist/noise.d.ts.map +1 -0
  115. package/dist/noise.js +148 -0
  116. package/dist/noise.js.map +1 -0
  117. package/dist/noiserobust.d.ts +71 -0
  118. package/dist/noiserobust.d.ts.map +1 -0
  119. package/dist/noiserobust.js +215 -0
  120. package/dist/noiserobust.js.map +1 -0
  121. package/dist/oracle.d.ts +63 -0
  122. package/dist/oracle.d.ts.map +1 -0
  123. package/dist/oracle.js +106 -0
  124. package/dist/oracle.js.map +1 -0
  125. package/dist/poopt.d.ts +79 -0
  126. package/dist/poopt.d.ts.map +1 -0
  127. package/dist/poopt.js +148 -0
  128. package/dist/poopt.js.map +1 -0
  129. package/dist/portfolio.d.ts +51 -0
  130. package/dist/portfolio.d.ts.map +1 -0
  131. package/dist/portfolio.js +132 -0
  132. package/dist/portfolio.js.map +1 -0
  133. package/dist/prescription.d.ts +57 -0
  134. package/dist/prescription.d.ts.map +1 -0
  135. package/dist/prescription.js +131 -0
  136. package/dist/prescription.js.map +1 -0
  137. package/dist/prime.d.ts +85 -0
  138. package/dist/prime.d.ts.map +1 -0
  139. package/dist/prime.js +157 -0
  140. package/dist/prime.js.map +1 -0
  141. package/dist/provenance.d.ts +77 -0
  142. package/dist/provenance.d.ts.map +1 -0
  143. package/dist/provenance.js +155 -0
  144. package/dist/provenance.js.map +1 -0
  145. package/dist/rashomon.d.ts +40 -0
  146. package/dist/rashomon.d.ts.map +1 -0
  147. package/dist/rashomon.js +93 -0
  148. package/dist/rashomon.js.map +1 -0
  149. package/dist/reliability.d.ts +79 -0
  150. package/dist/reliability.d.ts.map +1 -0
  151. package/dist/reliability.js +197 -0
  152. package/dist/reliability.js.map +1 -0
  153. package/dist/replay.d.ts +62 -0
  154. package/dist/replay.d.ts.map +1 -0
  155. package/dist/replay.js +146 -0
  156. package/dist/replay.js.map +1 -0
  157. package/dist/replicate.d.ts +72 -0
  158. package/dist/replicate.d.ts.map +1 -0
  159. package/dist/replicate.js +103 -0
  160. package/dist/replicate.js.map +1 -0
  161. package/dist/resonance.d.ts +32 -0
  162. package/dist/resonance.d.ts.map +1 -0
  163. package/dist/resonance.js +190 -0
  164. package/dist/resonance.js.map +1 -0
  165. package/dist/sensitivity.d.ts +44 -0
  166. package/dist/sensitivity.d.ts.map +1 -0
  167. package/dist/sensitivity.js +109 -0
  168. package/dist/sensitivity.js.map +1 -0
  169. package/dist/server.d.ts +26 -0
  170. package/dist/server.d.ts.map +1 -0
  171. package/dist/server.js +1410 -0
  172. package/dist/server.js.map +1 -0
  173. package/dist/shape.d.ts +37 -0
  174. package/dist/shape.d.ts.map +1 -0
  175. package/dist/shape.js +170 -0
  176. package/dist/shape.js.map +1 -0
  177. package/dist/sloppiness.d.ts +44 -0
  178. package/dist/sloppiness.d.ts.map +1 -0
  179. package/dist/sloppiness.js +194 -0
  180. package/dist/sloppiness.js.map +1 -0
  181. package/dist/sovereign.d.ts +77 -0
  182. package/dist/sovereign.d.ts.map +1 -0
  183. package/dist/sovereign.js +144 -0
  184. package/dist/sovereign.js.map +1 -0
  185. package/dist/space.d.ts +38 -0
  186. package/dist/space.d.ts.map +1 -0
  187. package/dist/space.js +107 -0
  188. package/dist/space.js.map +1 -0
  189. package/dist/surprise.d.ts +43 -0
  190. package/dist/surprise.d.ts.map +1 -0
  191. package/dist/surprise.js +123 -0
  192. package/dist/surprise.js.map +1 -0
  193. package/dist/territory.d.ts +43 -0
  194. package/dist/territory.d.ts.map +1 -0
  195. package/dist/territory.js +102 -0
  196. package/dist/territory.js.map +1 -0
  197. package/dist/trace.d.ts +58 -0
  198. package/dist/trace.d.ts.map +1 -0
  199. package/dist/trace.js +0 -0
  200. package/dist/trace.js.map +1 -0
  201. package/dist/transfer.d.ts +46 -0
  202. package/dist/transfer.d.ts.map +1 -0
  203. package/dist/transfer.js +112 -0
  204. package/dist/transfer.js.map +1 -0
  205. package/dist/twin.d.ts +41 -0
  206. package/dist/twin.d.ts.map +1 -0
  207. package/dist/twin.js +116 -0
  208. package/dist/twin.js.map +1 -0
  209. package/examples/train.mjs +8 -0
  210. package/examples/tune.mjs +11 -0
  211. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipshield.d.ts","sourceRoot":"","sources":["../src/ipshield.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAwF,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACnI,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAI1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,0BAA0B,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IACjF,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,EAAE,IAAI,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,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;CAA8B,GAAG,YAAY,CAsBxQ;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAQrF;AAKD,wBAAgB,gBAAgB,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,CA6BrH"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * IP SHIELD — turn a discovery into a patent-grade evidence file. In pharma and materials, the value lives
3
+ * in PATENTS, and the fight is always "did you copy someone?" / "was this just a lucky fluke?" Melete already
4
+ * signs a verdict and can replay it; IP SHIELD packages that into an Automated IP Audit Trail: a single,
5
+ * timestamped, immutable, offline-verifiable document that proves a result was reached SYSTEMATICALLY — by a
6
+ * documented engine, with every step recorded and re-derivable, attributable to a named entity, at a fixed
7
+ * time. It's the difference between "trust us, we invented this" and "here is cryptographic, reproducible
8
+ * evidence of exactly how and when we discovered it."
9
+ *
10
+ * Honest by construction (DIAKRISIS): the trail is EVIDENCE for patent priority / prior-art defense /
11
+ * regulatory audit — systematic process, reproducibility, attribution, timestamp, tamper-evidence. It is
12
+ * NOT a legal determination of patentability or novelty (only a patent office / attorney decides that), and
13
+ * we say so in the document itself. It binds the result by hash; it does not expose the secret formula.
14
+ */
15
+ import { createHash, generateKeyPairSync, sign as edSign, verify as edVerify, createPublicKey } from "node:crypto";
16
+ import { sovereignAnalyze } from "./sovereign.js";
17
+ import { issueReplayToken } from "./replay.js";
18
+ function canonical(o) { if (o === null || typeof o !== "object")
19
+ return JSON.stringify(o); if (Array.isArray(o))
20
+ return "[" + o.map(canonical).join(",") + "]"; const k = Object.keys(o).sort(); return "{" + k.map((x) => JSON.stringify(x) + ":" + canonical(o[x])).join(",") + "}"; }
21
+ const hsh = (o) => createHash("sha256").update(canonical(o)).digest("hex");
22
+ const DISCLAIMER = "Evidence of a systematic, reproducible, signed discovery process (provenance + reproducibility + attribution + timestamp). NOT a legal determination of patentability or novelty — that is decided by a patent office / attorney.";
23
+ /** Build a signed, immutable IP audit trail for a discovery run. */
24
+ export function buildIpAuditTrail(obs, space, goal = "maximize", opts = { entity: "", claim: "" }) {
25
+ const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
26
+ const sgn = goal === "minimize" ? -1 : 1;
27
+ const best = hist.length ? hist.reduce((a, b) => (sgn * b.value > sgn * a.value ? b : a)) : { experiment: {}, value: NaN };
28
+ const dims = space?.dims ?? [];
29
+ const recipe = {};
30
+ dims.forEach((d) => { recipe[d.name] = +(+best.experiment[d.name]).toFixed(d.type === "int" ? 0 : 4); });
31
+ const verdict = sovereignAnalyze(hist, space, goal, { issuedAtMs: opts.issuedAtMs ?? 0 });
32
+ const token = issueReplayToken(hist, space, goal, { issuedAtMs: opts.issuedAtMs ?? 0 });
33
+ const body = {
34
+ standard: "melete-ip-audit-trail/v1",
35
+ entity: String(opts.entity ?? ""), claim: String(opts.claim ?? ""),
36
+ discoveryMethod: "Melete — The Sovereign Verifiable AI Analyst & Optimizer",
37
+ result: { recipe, value: Number.isFinite(best.value) ? +(+best.value).toPrecision(6) : NaN },
38
+ process: { experiments: hist.length, verdictHash: verdict.certify.payloadHash, replayVerdictHash: token.verdictHash },
39
+ disclaimer: DISCLAIMER,
40
+ issuedAtMs: Math.max(0, Math.floor(opts.issuedAtMs ?? 0)),
41
+ };
42
+ const immutableHash = hsh(body);
43
+ const kp = opts.keys ?? generateKeyPairSync("ed25519");
44
+ const signature = edSign(null, Buffer.from(immutableHash, "hex"), kp.privateKey).toString("base64");
45
+ return { ...body, immutableHash, signature, publicKeyPem: kp.publicKey.export({ type: "spki", format: "pem" }).toString(), algo: "ed25519+sha256" };
46
+ }
47
+ /** Re-verify an IP audit trail OFFLINE: signature + immutable-hash integrity. */
48
+ export function verifyIpAuditTrail(doc) {
49
+ try {
50
+ if (!doc || doc.standard !== "melete-ip-audit-trail/v1")
51
+ return { ok: false, reason: "not a melete-ip-audit-trail/v1" };
52
+ const { immutableHash, signature, publicKeyPem, algo, ...body } = doc;
53
+ void algo;
54
+ if (hsh(body) !== immutableHash)
55
+ return { ok: false, reason: "document altered after signing (hash mismatch)" };
56
+ const ok = edVerify(null, Buffer.from(immutableHash, "hex"), createPublicKey(publicKeyPem), Buffer.from(signature, "base64"));
57
+ return ok ? { ok: true, reason: "valid — systematic, reproducible, attributed, timestamped, tamper-evident" } : { ok: false, reason: "signature invalid" };
58
+ }
59
+ catch (e) {
60
+ return { ok: false, reason: "verify error: " + e.message.slice(0, 100) };
61
+ }
62
+ }
63
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
64
+ import { lcg } from "./space.js";
65
+ export function ipShieldGauntlet() {
66
+ const space = { dims: [{ name: "pH", type: "real", min: 3, max: 9 }, { name: "temp", type: "real", min: 20, max: 40 }] };
67
+ const f = (pH, t) => Math.exp(-(((pH - 6) ** 2) + ((t - 30) ** 2)) / 8);
68
+ const rnd = lcg(7);
69
+ const obs = [];
70
+ for (let i = 0; i < 50; i++) {
71
+ const pH = 3 + rnd() * 6, t = 20 + rnd() * 20;
72
+ obs.push({ experiment: { pH, temp: t }, value: f(pH, t) });
73
+ }
74
+ const kp = generateKeyPairSync("ed25519");
75
+ const doc = buildIpAuditTrail(obs, space, "maximize", { entity: "Acme Pharma Ltd", claim: "Stable formulation X for migraine relief", keys: kp, issuedAtMs: 1717000000000 });
76
+ const wellFormed = doc.standard === "melete-ip-audit-trail/v1" && doc.entity === "Acme Pharma Ltd" && !!doc.claim && doc.issuedAtMs === 1717000000000 && doc.process.experiments === 50 && !!doc.result.recipe.pH && !!doc.signature;
77
+ const verifies = verifyIpAuditTrail(doc).ok === true;
78
+ const tamperEntity = (() => { const d = JSON.parse(JSON.stringify(doc)); d.entity = "Rival Corp"; return verifyIpAuditTrail(d).ok === false; })();
79
+ const tamperResult = (() => { const d = JSON.parse(JSON.stringify(doc)); d.result.value = 0.123; return verifyIpAuditTrail(d).ok === false; })();
80
+ const hasDisclaimer = doc.disclaimer.indexOf("NOT a legal determination") >= 0;
81
+ // bound by hash, not the raw recipe spread across the process record (the verdict/replay are referenced by hash)
82
+ const bindsByHash = doc.process.verdictHash.length === 64 && doc.process.replayVerdictHash.length === 64;
83
+ const det = canonical(buildIpAuditTrail(obs, space, "maximize", { entity: "Acme Pharma Ltd", claim: "Stable formulation X for migraine relief", keys: kp, issuedAtMs: 1717000000000 })) === canonical(doc);
84
+ const total = (() => { try {
85
+ buildIpAuditTrail([], space, "maximize", { entity: "", claim: "" });
86
+ verifyIpAuditTrail(null);
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ } })();
92
+ const checks = [
93
+ { name: "WELL-FORMED-TRAIL", pass: wellFormed, detail: "entity + claim + timestamp + result recipe + experiment count + signature" },
94
+ { name: "VERIFIES-OFFLINE", pass: verifies, detail: "Ed25519 signature + immutable hash re-verify offline" },
95
+ { name: "TAMPER-ENTITY-CAUGHT", pass: tamperEntity, detail: "changing the claimant breaks the signature" },
96
+ { name: "TAMPER-RESULT-CAUGHT", pass: tamperResult, detail: "changing the discovered value breaks the signature" },
97
+ { name: "HONEST-DISCLAIMER", pass: hasDisclaimer, detail: "states it is evidence, NOT a legal patentability ruling" },
98
+ { name: "BINDS-BY-HASH", pass: bindsByHash, detail: "references the signed verdict + replay by hash (proof without exposing the secret)" },
99
+ { name: "DETERMINISTIC", pass: det, detail: "same run + keys + time → identical trail" },
100
+ { name: "TOTAL", pass: total, detail: "empty / null never throws" },
101
+ ];
102
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
103
+ }
104
+ //# sourceMappingURL=ipshield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipshield.js","sourceRoot":"","sources":["../src/ipshield.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * AI DATA-JOURNALIST + VERTICAL DEMOS — the Sci-Fi command center that turns a REAL Melete run into a
3
+ * plain-language, board-room "what just happened". A CTO doesn't get excited by a Lipschitz bound; they get
4
+ * excited seeing "throughput restored to 99.4%, signed offline" scroll across a command screen. This engine
5
+ * powers six one-click vertical live-demos: each runs the ACTUAL Melete engine on a domain-shaped objective,
6
+ * and narrate() reports the outcome using ONLY the run's real numbers — the recipe it found, the real score,
7
+ * the experiments it took, the signed token's id.
8
+ *
9
+ * Honest by construction (DIAKRISIS): the OPTIMISATION is 100% real (Melete genuinely searches the domain
10
+ * objective and signs the verdict); the ENVIRONMENT is a clearly-labeled SIMULATION shaped like that
11
+ * industry — there is NO live link to a satellite / NASA / a power grid (claiming that would be a lie). In
12
+ * production you connect your real telemetry/probe as the oracle. The narration NEVER invents a number: the
13
+ * gauntlet proves every figure it prints comes from the actual result.
14
+ */
15
+ import { type Space } from "./space.js";
16
+ import { type Goal } from "./engine.js";
17
+ export interface Vertical {
18
+ key: string;
19
+ emoji: string;
20
+ title: string;
21
+ sector: string;
22
+ space: Space;
23
+ objective: string;
24
+ goal: Goal;
25
+ scoreName: string;
26
+ scoreUnit: string;
27
+ knobsCopy: string;
28
+ scoreCopy: string;
29
+ realWorld: string;
30
+ }
31
+ /** Six industry verticals. Each `objective` is a domain-SHAPED simulated landscape (real math, real search). */
32
+ export declare const VERTICALS: Record<string, Vertical>;
33
+ export interface NarrateInput {
34
+ best: {
35
+ experiment: Record<string, number>;
36
+ value: number;
37
+ } | null;
38
+ evaluations: number;
39
+ vsStartPct?: number;
40
+ verdictHash?: string;
41
+ robust?: boolean;
42
+ }
43
+ /** Turn a REAL run result into a Sci-Fi command-center play-by-play — using only the run's real numbers. */
44
+ export declare function narrate(verticalKey: string, r: NarrateInput): {
45
+ lines: string[];
46
+ headline: string;
47
+ };
48
+ export declare function journalistGauntlet(): {
49
+ score: 0 | 100;
50
+ checks: Array<{
51
+ name: string;
52
+ pass: boolean;
53
+ detail: string;
54
+ }>;
55
+ };
56
+ //# sourceMappingURL=journalist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journalist.d.ts","sourceRoot":"","sources":["../src/journalist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAC1D,KAAK,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,gHAAgH;AAChH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAuD9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;AAEtL,4GAA4G;AAC5G,wBAAgB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAqBnG;AAGD,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,CAqCvH"}
@@ -0,0 +1,132 @@
1
+ /** Six industry verticals. Each `objective` is a domain-SHAPED simulated landscape (real math, real search). */
2
+ export const VERTICALS = {
3
+ aerospace: {
4
+ key: "aerospace", emoji: "📡", title: "Deep-Space Satellite Comms", sector: "Aerospace · SpaceX/NASA-class",
5
+ space: { dims: [{ name: "freqShift", type: "real", min: 130, max: 150 }, { name: "phaseAngle", type: "real", min: 0, max: 180 }, { name: "packetDepth", type: "int", min: 1, max: 16 }] },
6
+ objective: "100*Math.exp(-(Math.pow(freqShift-142.8,2)/30 + Math.pow(phaseAngle-120,2)/900 + Math.pow(packetDepth-4,2)/12))",
7
+ goal: "maximize", scoreName: "throughput", scoreUnit: "% of link capacity",
8
+ knobsCopy: "uplink frequency shift · antenna phase-array angle · packet interleave depth",
9
+ scoreCopy: "maximize throughput under cosmic-radiation noise",
10
+ realWorld: "connect your ground-station / satellite telemetry as the oracle",
11
+ },
12
+ genomics: {
13
+ key: "genomics", emoji: "💊", title: "Precision Drug Formulation", sector: "Pharma · Computational Genomics",
14
+ space: { dims: [{ name: "pH", type: "real", min: 3, max: 9 }, { name: "incubationC", type: "real", min: 30, max: 45 }, { name: "targetLen", type: "int", min: 8, max: 40 }] },
15
+ objective: "100*Math.exp(-(Math.pow(pH-6.2,2)/2 + Math.pow(incubationC-37.2,2)/8 + Math.pow(targetLen-22,2)/60))",
16
+ goal: "maximize", scoreName: "bioavailability", scoreUnit: "% absorbed (− toxicity)",
17
+ knobsCopy: "excipient pH · thermal incubation · genome-target length",
18
+ scoreCopy: "maximize bioavailability, minimize toxicity",
19
+ realWorld: "connect your assay readout / binding-affinity model as the oracle",
20
+ },
21
+ solar: {
22
+ key: "solar", emoji: "☀️", title: "Solar Grid & Micro-Inverter", sector: "Energy · IoT edge",
23
+ space: { dims: [{ name: "mpptFreqKHz", type: "real", min: 20, max: 60 }, { name: "chargeRate", type: "real", min: 0.1, max: 1 }, { name: "tiltAngle", type: "real", min: 0, max: 45 }] },
24
+ objective: "100*Math.exp(-(Math.pow(mpptFreqKHz-42.1,2)/120 + Math.pow(chargeRate-0.7,2)/0.2 + Math.pow(tiltAngle-31,2)/200))",
25
+ goal: "maximize", scoreName: "grid efficiency", scoreUnit: "% (− inverter heat)",
26
+ knobsCopy: "MPPT switching frequency · battery charge rate · PV tilt",
27
+ scoreCopy: "maximize power output, minimize inverter heat",
28
+ realWorld: "connect your inverter / grid IoT feed as the oracle",
29
+ },
30
+ ml: {
31
+ key: "ml", emoji: "🧠", title: "Air-Gapped LLM Tuning", sector: "Banking / Gov · ML",
32
+ space: { dims: [{ name: "lrScaleE3", type: "real", min: 1, max: 100 }, { name: "quantBits", type: "int", min: 4, max: 16 }, { name: "chunkSize", type: "int", min: 256, max: 4096 }] },
33
+ objective: "100*Math.exp(-(Math.pow(lrScaleE3-30,2)/400 + Math.pow(quantBits-8,2)/12 + Math.pow(chunkSize-2048,2)/700000))",
34
+ goal: "maximize", scoreName: "serving score", scoreUnit: "tokens/s · safety (− GPU cost)",
35
+ knobsCopy: "learning-rate scale · quantization bits · RAG chunk size",
36
+ scoreCopy: "maximize tokens/sec & compliance safety, minimize GPU cost",
37
+ realWorld: "connect your training/eval harness as the oracle (runs in your air-gapped node)",
38
+ },
39
+ database: {
40
+ key: "database", emoji: "💾", title: "DB & Linux Kernel Tuning", sector: "Cloud cost · infra",
41
+ space: { dims: [{ name: "tcpBufKB", type: "int", min: 16, max: 1024 }, { name: "threadAffinity", type: "int", min: 1, max: 32 }, { name: "sharedBufGB", type: "real", min: 0.5, max: 16 }] },
42
+ objective: "100*Math.exp(-(Math.pow(tcpBufKB-256,2)/40000 + Math.pow(threadAffinity-8,2)/80 + Math.pow(sharedBufGB-4,2)/20))",
43
+ goal: "maximize", scoreName: "throughput score", scoreUnit: "% (− latency & cloud $)",
44
+ knobsCopy: "TCP buffer size · kernel thread affinity · PostgreSQL shared buffers",
45
+ scoreCopy: "minimize query latency and monthly cloud spend",
46
+ realWorld: "connect your DB/kernel benchmark as the oracle (no reboot needed)",
47
+ },
48
+ devops: {
49
+ key: "devops", emoji: "🛡️", title: "DevOps Compliance Guardrail", sector: "Security · compliance",
50
+ space: { dims: [{ name: "iamTtlMin", type: "int", min: 5, max: 120 }, { name: "firewallSens", type: "real", min: 0, max: 1 }, { name: "payloadKB", type: "int", min: 1, max: 64 }] },
51
+ objective: "100*Math.exp(-(Math.pow(iamTtlMin-30,2)/1200 + Math.pow(firewallSens-0.82,2)/0.05 + Math.pow(payloadKB-16,2)/300))",
52
+ goal: "maximize", scoreName: "secure-flow score", scoreUnit: "% blocked (− deploy friction)",
53
+ knobsCopy: "IAM role TTL · firewall sensitivity · encrypted payload size",
54
+ scoreCopy: "maximize attack-block rate, minimize deployment friction",
55
+ realWorld: "connect your red-team suite / CI gate as the oracle",
56
+ },
57
+ };
58
+ /** Turn a REAL run result into a Sci-Fi command-center play-by-play — using only the run's real numbers. */
59
+ export function narrate(verticalKey, r) {
60
+ const v = VERTICALS[verticalKey];
61
+ if (!v || !r || !r.best || !r.best.experiment)
62
+ return { lines: ["awaiting telemetry…"], headline: "" };
63
+ const fmt = (name) => { const d = v.space.dims.find((x) => x.name === name); const val = +r.best.experiment[name]; return d.type === "int" ? String(Math.round(val)) : (Math.abs(val) < 1 ? val.toFixed(3) : val.toFixed(1)); };
64
+ const recipe = v.space.dims.map((d) => `${d.name}=${fmt(d.name)}`).join(" · ");
65
+ const score = (+r.best.value).toFixed(1);
66
+ const tok = r.verdictHash ? r.verdictHash.slice(0, 8).toUpperCase() : "—";
67
+ // only show a "% vs baseline" when it's a believable figure. On a bounded 0–100 score a random first
68
+ // try is ≈0, so a raw ratio explodes into a meaningless mega-% — never print that (it reads like a fake).
69
+ const gain = (typeof r.vsStartPct === "number" && r.vsStartPct > 0 && r.vsStartPct <= 500) ? ` (+${r.vsStartPct}% vs baseline)` : "";
70
+ const headline = `${v.emoji} ${v.scoreName} → ${score} ${v.scoreUnit}`;
71
+ const lines = [
72
+ `> MELETE AGENT online · sector: ${v.sector}`,
73
+ `> objective: ${v.scoreCopy}`,
74
+ `> searching ${v.space.dims.length} parameters across ${r.evaluations} experiments…`,
75
+ `> ✓ optimum locked: ${recipe}`,
76
+ `> ${v.scoreName} reached ${score} ${v.scoreUnit}${gain}${r.robust ? " · robust (survives real-world wobble)" : ""}`,
77
+ `> 🔏 cryptographic provenance token #${tok} generated offline`,
78
+ `> ⚠ simulated environment — in production: ${v.realWorld}`,
79
+ ];
80
+ return { lines, headline };
81
+ }
82
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
83
+ export function journalistGauntlet() {
84
+ const keys = Object.keys(VERTICALS);
85
+ const sixVerticals = keys.length === 6 && keys.every((k) => { const v = VERTICALS[k]; return v.space.dims.length >= 2 && !!v.objective && !!v.scoreName && !!v.realWorld; });
86
+ // every objective must evaluate to a finite number at its domain centre (so the engine can run it)
87
+ const objectivesValid = keys.every((k) => {
88
+ const v = VERTICALS[k];
89
+ const env = {};
90
+ v.space.dims.forEach((d) => { env[d.name] = ((d.min ?? 0) + (d.max ?? 1)) / 2; });
91
+ try {
92
+ const val = Function(...Object.keys(env), `"use strict";return (${v.objective});`)(...Object.values(env));
93
+ return Number.isFinite(val);
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ });
99
+ // narration cites ONLY real numbers from the result (no fabrication)
100
+ const v = VERTICALS.aerospace;
101
+ const res = { best: { experiment: { freqShift: 142.83, phaseAngle: 120.4, packetDepth: 4 }, value: 99.4 }, evaluations: 37, vsStartPct: 58.2, verdictHash: "abcd1234ef", robust: true };
102
+ const n = narrate("aerospace", res);
103
+ const joined = n.lines.join(" ");
104
+ const citesReal = joined.indexOf("99.4") >= 0 && joined.indexOf("37 experiments") >= 0 && joined.indexOf("freqShift=142.8") >= 0 && joined.indexOf("#ABCD1234") >= 0 && joined.indexOf("+58.2%") >= 0;
105
+ const noFabricatedScore = !/\b(99\.[0-8]|100\.0|88|95)\b/.test(joined.replace("99.4", "")) || true; // (informational; the strict check is citesReal)
106
+ const honestLabel = joined.indexOf("simulated environment") >= 0 && joined.indexOf("in production") >= 0;
107
+ const headlineOk = n.headline.indexOf("throughput") >= 0 && n.headline.indexOf("99.4") >= 0;
108
+ const allNarrate = keys.every((k) => { const vv = VERTICALS[k]; const exp = {}; vv.space.dims.forEach((d) => { exp[d.name] = ((d.min ?? 0) + (d.max ?? 1)) / 2; }); const out = narrate(k, { best: { experiment: exp, value: 88.8 }, evaluations: 20, verdictHash: "deadbeef00" }); return out.lines.length >= 6 && out.lines.join(" ").indexOf("88.8") >= 0; });
109
+ const det = JSON.stringify(narrate("aerospace", res)) === JSON.stringify(narrate("aerospace", res));
110
+ const total = (() => { try {
111
+ narrate("nope", res);
112
+ narrate("aerospace", { best: null, evaluations: 0 });
113
+ narrate("aerospace", null);
114
+ return true;
115
+ }
116
+ catch {
117
+ return false;
118
+ } })();
119
+ void noFabricatedScore;
120
+ const checks = [
121
+ { name: "SIX-VERTICALS", pass: sixVerticals, detail: `${keys.length} verticals, each with space + objective + score + production note` },
122
+ { name: "OBJECTIVES-RUNNABLE", pass: objectivesValid, detail: "every domain objective evaluates finite (the real engine can search it)" },
123
+ { name: "NARRATION-CITES-REAL-NUMBERS", pass: citesReal, detail: "play-by-play prints the actual recipe, score, experiment count, gain, token — nothing invented" },
124
+ { name: "HONEST-SIMULATED-LABEL", pass: honestLabel, detail: "every narration states it's a simulated environment + the real-world oracle to connect" },
125
+ { name: "HEADLINE-FROM-RESULT", pass: headlineOk, detail: `headline: "${n.headline}"` },
126
+ { name: "ALL-VERTICALS-NARRATE", pass: allNarrate, detail: "all 6 produce a ≥6-line briefing citing the real score" },
127
+ { name: "DETERMINISTIC", pass: det, detail: "same result → same narration" },
128
+ { name: "TOTAL", pass: total, detail: "unknown vertical / null result never throws" },
129
+ ];
130
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
131
+ }
132
+ //# sourceMappingURL=journalist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journalist.js","sourceRoot":"","sources":["../src/journalist.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * DISCOVERY BRAIN — the search, drawn as living roots. Every other view shows WHERE the optimum is; this
3
+ * shows HOW the search flowed to it. Each experiment becomes a node; each node reaches toward the nearest
4
+ * BETTER-scoring experiment, so the edges all flow uphill and converge — like dendrites of a brain, or roots
5
+ * seeking water — onto the single best point at the centre. The result is a branching map of the discovery
6
+ * itself: thin faint tendrils from the early random probes, thickening into bright trunks as the search
7
+ * homed in.
8
+ *
9
+ * The structure is a real, well-defined tree (a gradient-flow forest collapsed to the global best): follow
10
+ * any node's parent and the score strictly rises, so you always arrive at the optimum and never loop. That
11
+ * makes it both a striking visual AND an honest artefact — the branches are the actual improvement lineage
12
+ * of your run, not decoration.
13
+ *
14
+ * Honest by construction (DIAKRISIS): parent = the strictly-better experiment nearest in the (normalised)
15
+ * variable space; the root is exactly the best-scoring run. Layout positions are the first two normalised
16
+ * variables (a faithful projection, not an invented embedding). Deterministic; abstains on trivial data.
17
+ */
18
+ import { type Space } from "./space.js";
19
+ import { type Observation, type Goal } from "./engine.js";
20
+ export interface BrainNode {
21
+ i: number;
22
+ parent: number | null;
23
+ value: number;
24
+ x: number;
25
+ y: number;
26
+ depth: number;
27
+ }
28
+ export interface BrainTree {
29
+ root: number;
30
+ nodes: BrainNode[];
31
+ maxDepth: number;
32
+ }
33
+ /** Build the improvement-lineage tree: each node reaches toward the nearest strictly-better experiment. */
34
+ export declare function buildLineage(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal): BrainTree;
35
+ export declare function lineageGauntlet(): {
36
+ score: 0 | 100;
37
+ checks: Array<{
38
+ name: string;
39
+ pass: boolean;
40
+ detail: string;
41
+ }>;
42
+ };
43
+ //# sourceMappingURL=lineage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../src/lineage.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,SAAS;IAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AACnH,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAIjF,2GAA2G;AAC3G,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,GAAG,SAAS,CAgC9G;AAKD,wBAAgB,eAAe,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,CA2BpH"}
@@ -0,0 +1,112 @@
1
+ const dst = (a, c) => { let s = 0; for (let i = 0; i < a.length; i++)
2
+ s += (a[i] - c[i]) ** 2; return Math.sqrt(s); };
3
+ /** Build the improvement-lineage tree: each node reaches toward the nearest strictly-better experiment. */
4
+ export function buildLineage(obs, space, goal = "maximize") {
5
+ const dims = space?.dims ?? [];
6
+ const D = dims.length;
7
+ const hist = (obs ?? []).filter((o) => o && o.experiment && Number.isFinite(o.value));
8
+ const n = hist.length;
9
+ if (n === 0)
10
+ return { root: -1, nodes: [], maxDepth: 0 };
11
+ const sgn = goal === "minimize" ? -1 : 1;
12
+ const lo = (i) => dims[i]?.min ?? 0, hi = (i) => dims[i]?.max ?? 1;
13
+ 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)); });
14
+ const pts = hist.map((o) => toN(o.experiment));
15
+ const sv = hist.map((o) => sgn * o.value);
16
+ let root = 0;
17
+ for (let i = 1; i < n; i++)
18
+ if (sv[i] > sv[root])
19
+ root = i;
20
+ // parent(i) = nearest strictly-better node (root has none) → edges flow uphill, converge on the best
21
+ const parent = new Array(n).fill(null);
22
+ for (let i = 0; i < n; i++) {
23
+ if (i === root) {
24
+ parent[i] = null;
25
+ continue;
26
+ }
27
+ let best = -1, bestd = Infinity;
28
+ for (let j = 0; j < n; j++) {
29
+ if (j === i)
30
+ continue;
31
+ if (sv[j] > sv[i] + 1e-12) {
32
+ const dd = dst(pts[i], pts[j]);
33
+ if (dd < bestd) {
34
+ bestd = dd;
35
+ best = j;
36
+ }
37
+ }
38
+ }
39
+ parent[i] = best >= 0 ? best : root; // ties/degenerate → attach to the global best
40
+ }
41
+ // depth via parent chain (memoised) — guaranteed finite because score strictly rises each hop
42
+ const depth = new Array(n).fill(-1);
43
+ const depthOf = (i) => {
44
+ if (depth[i] >= 0)
45
+ return depth[i];
46
+ let d = 0, cur = i, guard = 0;
47
+ while (parent[cur] != null && guard++ < n + 1) {
48
+ cur = parent[cur];
49
+ d++;
50
+ }
51
+ return (depth[i] = d);
52
+ };
53
+ let maxDepth = 0;
54
+ const nodes = hist.map((o, i) => { const dp = depthOf(i); if (dp > maxDepth)
55
+ maxDepth = dp; return { i, parent: parent[i], value: o.value, x: pts[i][0] ?? 0.5, y: D > 1 ? (pts[i][1] ?? 0.5) : (i / Math.max(1, n - 1)), depth: dp }; });
56
+ return { root, nodes, maxDepth };
57
+ }
58
+ // ── gauntlet ──────────────────────────────────────────────────────────────────
59
+ import { lcg } from "./space.js";
60
+ export function lineageGauntlet() {
61
+ const space = { dims: [{ name: "x", type: "real", min: 0, max: 1 }, { name: "y", type: "real", min: 0, max: 1 }] };
62
+ const f = (x, y) => Math.exp(-(((x - 0.5) ** 2) + ((y - 0.5) ** 2)) / 0.2);
63
+ const rnd = lcg(11);
64
+ const obs = [];
65
+ for (let i = 0; i < 50; i++) {
66
+ const x = rnd(), y = rnd();
67
+ obs.push({ experiment: { x, y }, value: f(x, y) });
68
+ }
69
+ const t = buildLineage(obs, space, "maximize");
70
+ const rootIsBest = t.nodes[t.root] && t.nodes.every((nd) => nd.value <= t.nodes[t.root].value + 1e-12);
71
+ // every non-root has a parent with STRICTLY higher score
72
+ const uphill = t.nodes.every((nd) => nd.i === t.root ? nd.parent === null : (nd.parent != null && t.nodes[nd.parent].value > nd.value - 1e-12));
73
+ // following parents from ANY node reaches the root, with no cycle
74
+ let reaches = true;
75
+ for (const nd of t.nodes) {
76
+ let cur = nd.i, g = 0;
77
+ const seen = new Set();
78
+ while (t.nodes[cur].parent != null) {
79
+ if (seen.has(cur) || g++ > t.nodes.length) {
80
+ reaches = false;
81
+ break;
82
+ }
83
+ seen.add(cur);
84
+ cur = t.nodes[cur].parent;
85
+ }
86
+ if (cur !== t.root)
87
+ reaches = false;
88
+ }
89
+ const oneRoot = t.nodes.filter((nd) => nd.parent === null).length === 1;
90
+ const positions = t.nodes.every((nd) => nd.x >= 0 && nd.x <= 1 && nd.y >= 0 && nd.y <= 1);
91
+ const det = JSON.stringify(buildLineage(obs, space, "maximize")) === JSON.stringify(buildLineage(obs, space, "maximize"));
92
+ const total = (() => { try {
93
+ buildLineage([], space);
94
+ buildLineage(null, space);
95
+ buildLineage(obs, { dims: [] });
96
+ return true;
97
+ }
98
+ catch {
99
+ return false;
100
+ } })();
101
+ const checks = [
102
+ { name: "ROOT-IS-THE-BEST", pass: !!rootIsBest, detail: `root is the highest-scoring run (${t.nodes[t.root]?.value.toFixed(3)})` },
103
+ { name: "EDGES-FLOW-UPHILL", pass: uphill, detail: "every node's parent scores strictly higher" },
104
+ { name: "ALL-REACH-THE-ROOT", pass: reaches, detail: "follow any branch → arrive at the optimum, never loop" },
105
+ { name: "SINGLE-ROOT", pass: oneRoot, detail: "exactly one root (the best) — one tree, not a forest" },
106
+ { name: "POSITIONS-IN-RANGE", pass: positions, detail: "layout coords are the normalised variables (faithful projection)" },
107
+ { name: "DETERMINISTIC", pass: det, detail: "same run → same tree" },
108
+ { name: "TOTAL", pass: total, detail: "empty / null / no-dims never throws" },
109
+ ];
110
+ return { score: checks.every((c) => c.pass) ? 100 : 0, checks };
111
+ }
112
+ //# sourceMappingURL=lineage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineage.js","sourceRoot":"","sources":["../src/lineage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * FEDERATED META-BRAIN — the data flywheel that doesn't break sovereignty. The hard truth about a from-
3
+ * scratch optimizer: every customer starts cold, so the vendor never gets smarter and there's no moat. But
4
+ * you can't pool customers' raw data either — a pharma lab's secret recipe must never leave the building.
5
+ *
6
+ * The META-BRAIN squares that circle. After a run, each site shares only a privacy-safe LANDSCAPE
7
+ * FINGERPRINT — abstract shape/behaviour features (how rugged, how smooth, how many effective dimensions,
8
+ * the shape class, how concentrated the good region is) — and NEVER the optimum's coordinates or any
9
+ * measured value. The central registry learns which SEARCH STRATEGY suits each class of landscape. A new
10
+ * run whose fingerprint matches gets a recommended search profile (how much to explore vs exploit, how many
11
+ * seeds) instead of a blind default — so it converges faster. The more sites contribute, the sharper the
12
+ * strategy, and none of them leaked a secret.
13
+ *
14
+ * Honest by construction (DIAKRISIS): the fingerprint shares HOW a landscape behaves (to tune the search),
15
+ * NOT WHERE the answer is (that would leak the recipe) — the gauntlet proves no raw value or coordinate
16
+ * appears in what's shared. The benefit is MEASURED (the recommended profile beats the wrong one on that
17
+ * class), not a promised "5 instead of 20" — the gain depends on how well a new problem matches known ones,
18
+ * and is bounded. This is meta-learning of SEARCH STRATEGY, not a magic global oracle.
19
+ */
20
+ import { type Space, type Experiment } from "./space.js";
21
+ import { type Observation, type Goal } from "./engine.js";
22
+ export interface LandscapeFingerprint {
23
+ dims: number;
24
+ ruggedness: number;
25
+ smoothness: number;
26
+ effectiveDimsFrac: number;
27
+ concentration: number;
28
+ }
29
+ export interface SearchProfile {
30
+ seeds: number;
31
+ exploreWeight: number;
32
+ note: string;
33
+ }
34
+ export interface MetaEntry {
35
+ fingerprint: LandscapeFingerprint;
36
+ bestExploreWeight: number;
37
+ bestSeedsFrac: number;
38
+ n: number;
39
+ }
40
+ /** A privacy-safe summary of HOW a landscape behaves — never WHERE the optimum is, never a raw value. */
41
+ export declare function landscapeFingerprint(obs: ReadonlyArray<Observation>, space: Space, goal?: Goal): LandscapeFingerprint;
42
+ /** Recommend a search profile for a new run, learned from prior landscapes of the SAME behavioural class. */
43
+ export declare function recommendProfile(fp: LandscapeFingerprint, registry?: ReadonlyArray<MetaEntry>): SearchProfile;
44
+ /** Append a landscape's learned strategy to the registry — anonymised (fingerprint only). CRDT-style merge. */
45
+ export declare function contributeFingerprint(registry: ReadonlyArray<MetaEntry>, fp: LandscapeFingerprint, bestExploreWeight: number, bestSeedsFrac: number): MetaEntry[];
46
+ /** A minimal profile-driven search used to MEASURE that a recommended profile actually helps. */
47
+ export declare function profiledSearch(space: Space, oracle: (e: Experiment) => number, budget: number, profile: SearchProfile, goal?: Goal, seed?: number): {
48
+ best: Observation;
49
+ evaluations: number;
50
+ };
51
+ export declare function metabrainGauntlet(): {
52
+ score: 0 | 100;
53
+ checks: Array<{
54
+ name: string;
55
+ pass: boolean;
56
+ detail: string;
57
+ }>;
58
+ };
59
+ //# sourceMappingURL=metabrain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metabrain.d.ts","sourceRoot":"","sources":["../src/metabrain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAO,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AACD,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AACrF,MAAM,WAAW,SAAS;IAAG,WAAW,EAAE,oBAAoB,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;AAI7H,yGAAyG;AACzG,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,GAAE,IAAiB,GAAG,oBAAoB,CAkCjI;AAID,6GAA6G;AAC7G,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,oBAAoB,EAAE,QAAQ,GAAE,aAAa,CAAC,SAAS,CAAM,GAAG,aAAa,CAajH;AAED,+GAA+G;AAC/G,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,CASjK;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,GAAE,IAAiB,EAAE,IAAI,SAAI,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiBrM;AAKD,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,CAiDtH"}