@mneme-ai/core 2.101.0 → 2.102.0
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/dist/agent_manifest.js +1 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/hydra/dormancy.d.ts +86 -0
- package/dist/hydra/dormancy.d.ts.map +1 -0
- package/dist/hydra/dormancy.js +130 -0
- package/dist/hydra/dormancy.js.map +1 -0
- package/dist/hydra/dormancy.test.d.ts +2 -0
- package/dist/hydra/dormancy.test.d.ts.map +1 -0
- package/dist/hydra/dormancy.test.js +66 -0
- package/dist/hydra/dormancy.test.js.map +1 -0
- package/dist/hydra/index.d.ts +1 -0
- package/dist/hydra/index.d.ts.map +1 -1
- package/dist/hydra/index.js +1 -0
- package/dist/hydra/index.js.map +1 -1
- package/dist/truth_gate/probes.d.ts.map +1 -1
- package/dist/truth_gate/probes.js +24 -0
- package/dist/truth_gate/probes.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.102.0 — HYDRA · EPIGENETIC DORMANCY ("sleep state" + JIT revival).
|
|
3
|
+
*
|
|
4
|
+
* The image's "Epigenetic Sleep State" + "JIT Context Revival
|
|
5
|
+
* (Demethylation)", made real and measurable. Borrowed from biology only
|
|
6
|
+
* as a NAME: deep-sea extremophiles silence genes under pressure without
|
|
7
|
+
* editing their DNA, and re-express them when the environment pokes.
|
|
8
|
+
*
|
|
9
|
+
* Here, codebook entries the atrophy clock has proven COLD are METHYLATED —
|
|
10
|
+
* moved out of the active working set into a cold, signed dormant store, so
|
|
11
|
+
* the active footprint shrinks (the enterprise-scale win: most knowledge
|
|
12
|
+
* sleeps, the working set stays small). On demand they DEMETHYLATE —
|
|
13
|
+
* revive BYTE-EXACT, and a full revive reconstructs the original codebook
|
|
14
|
+
* with an identical canonical hash. The whole split is Ed25519-signed, so a
|
|
15
|
+
* third party verifies offline that nothing was lost or forged across the
|
|
16
|
+
* sleep/wake cycle.
|
|
17
|
+
*
|
|
18
|
+
* This is NOT fortune-telling and NOT lossy: it is deterministic tiered
|
|
19
|
+
* memory with a cryptographic lossless-revival proof. Three booleans that
|
|
20
|
+
* cannot lie: revive-exact ∧ shrinks ∧ signed-binds. Every function is
|
|
21
|
+
* total (108-error rule) — garbage in → safest result, never a throw.
|
|
22
|
+
*/
|
|
23
|
+
import { sha256Hex } from "./engine.js";
|
|
24
|
+
import { buildCodebook } from "./analytic.js";
|
|
25
|
+
import { canonicalizeCodebook } from "./attest.js";
|
|
26
|
+
import { issueReceipt, verifyReceipt } from "../notary/receipt.js";
|
|
27
|
+
function bytesOf(entries) {
|
|
28
|
+
let n = 0;
|
|
29
|
+
for (const e of entries)
|
|
30
|
+
n += Buffer.byteLength(e.phrase, "utf8") + 8;
|
|
31
|
+
return n;
|
|
32
|
+
}
|
|
33
|
+
function phrasesOf(cb) {
|
|
34
|
+
return (cb?.entries ?? []).filter((e) => e && typeof e.phrase === "string").map((e) => ({ phrase: e.phrase, hits: e.hits, gain: e.gain }));
|
|
35
|
+
}
|
|
36
|
+
/** Rebuild a codebook from a phrase set, bound to the original corpus hash. */
|
|
37
|
+
function rebuild(open, close, phrases, corpusHash) {
|
|
38
|
+
const cb = buildCodebook(open, close, phrases, "");
|
|
39
|
+
cb.corpusHash = corpusHash;
|
|
40
|
+
return cb;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* METHYLATE — split a codebook into a hot ACTIVE set and a cold DORMANT
|
|
44
|
+
* store, based on which symbols a trust map marks stale/quarantined.
|
|
45
|
+
* Signed. Total; never throws.
|
|
46
|
+
*/
|
|
47
|
+
export function methylate(repoRoot, cb, trustMap, at) {
|
|
48
|
+
// 108-error rule: a malformed codebook normalizes to an empty one rather
|
|
49
|
+
// than throwing — memory tiering must never crash the host.
|
|
50
|
+
const safeCb = (cb && Array.isArray(cb.entries))
|
|
51
|
+
? cb
|
|
52
|
+
: { v: 1, open: "", close: "", corpusHash: "", entries: [] };
|
|
53
|
+
const open = safeCb.open ?? "", close = safeCb.close ?? "", corpusHash = safeCb.corpusHash ?? "";
|
|
54
|
+
const active = [], dormant = [];
|
|
55
|
+
for (const e of safeCb.entries) {
|
|
56
|
+
if (!e || typeof e.phrase !== "string")
|
|
57
|
+
continue;
|
|
58
|
+
const lvl = trustMap && trustMap[e.sym];
|
|
59
|
+
if (lvl === "stale" || lvl === "quarantined")
|
|
60
|
+
dormant.push({ phrase: e.phrase, hits: e.hits, gain: e.gain });
|
|
61
|
+
else
|
|
62
|
+
active.push({ phrase: e.phrase, hits: e.hits, gain: e.gain });
|
|
63
|
+
}
|
|
64
|
+
const originalHash = sha256Hex(canonicalizeCodebook(safeCb));
|
|
65
|
+
const activeHash = sha256Hex(canonicalizeCodebook(rebuild(open, close, active, corpusHash)));
|
|
66
|
+
const dormantHash = sha256Hex(JSON.stringify(dormant.map((d) => d.phrase).sort()));
|
|
67
|
+
const receipt = issueReceipt(repoRoot, {
|
|
68
|
+
kind: "memory-capsule",
|
|
69
|
+
subject: `hydra-dormancy:${originalHash.slice(0, 16)}`,
|
|
70
|
+
payload: { originalHash, activeHash, dormantHash, dormantCount: dormant.length },
|
|
71
|
+
includePayload: true,
|
|
72
|
+
issuedAt: at,
|
|
73
|
+
});
|
|
74
|
+
return {
|
|
75
|
+
v: 1, open, close, corpusHash, originalHash, active, dormant,
|
|
76
|
+
activeBytes: bytesOf(active), dormantBytes: bytesOf(dormant), fullBytes: bytesOf([...active, ...dormant]),
|
|
77
|
+
receipt,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* DEMETHYLATE — revive dormant entries. With no `phrases` arg, revive ALL
|
|
82
|
+
* (a full wake → byte-exact reconstruction of the original codebook). With
|
|
83
|
+
* a phrase list, revive only those (partial wake). Total; never throws.
|
|
84
|
+
*/
|
|
85
|
+
export function demethylate(m, phrases) {
|
|
86
|
+
try {
|
|
87
|
+
if (!m || m.v !== 1 || !Array.isArray(m.active) || !Array.isArray(m.dormant))
|
|
88
|
+
return { ok: false, codebook: null, exact: false, reason: "malformed methylation" };
|
|
89
|
+
const wake = phrases === undefined ? m.dormant : m.dormant.filter((d) => phrases.includes(d.phrase));
|
|
90
|
+
const merged = [...m.active, ...wake];
|
|
91
|
+
const cb = rebuild(m.open, m.close, merged, m.corpusHash);
|
|
92
|
+
const isFull = phrases === undefined || wake.length === m.dormant.length;
|
|
93
|
+
const exact = isFull && sha256Hex(canonicalizeCodebook(cb)) === m.originalHash;
|
|
94
|
+
return { ok: true, codebook: cb, exact, reason: isFull ? (exact ? "full revive — byte-exact" : "full revive but hash diverged") : `partial revive (${wake.length}/${m.dormant.length})` };
|
|
95
|
+
}
|
|
96
|
+
catch (e) {
|
|
97
|
+
return { ok: false, codebook: null, exact: false, reason: `threw: ${e.message}` };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Prove the sleep/wake invariants. Total. */
|
|
101
|
+
export function dormancyGauntlet(repoRoot, cb, trustMap, at) {
|
|
102
|
+
try {
|
|
103
|
+
// Nothing to prove on a malformed codebook → score 0 (not a vacuous pass).
|
|
104
|
+
if (!cb || !Array.isArray(cb.entries))
|
|
105
|
+
return { reviveExact: false, shrinks: false, signedBinds: false, deterministic: false, stable: true, activeBytes: 0, fullBytes: 0, dormantCount: 0, score: 0 };
|
|
106
|
+
const m = methylate(repoRoot, cb, trustMap, at);
|
|
107
|
+
const rev = demethylate(m);
|
|
108
|
+
const reviveExact = rev.exact;
|
|
109
|
+
const shrinks = m.dormant.length === 0 ? true : m.activeBytes < m.fullBytes;
|
|
110
|
+
const sig = verifyReceipt(m.receipt);
|
|
111
|
+
const payload = m.receipt.payload;
|
|
112
|
+
const signedBinds = sig.valid && payload?.originalHash === m.originalHash && payload?.dormantCount === m.dormant.length;
|
|
113
|
+
const m2 = methylate(repoRoot, cb, trustMap, at);
|
|
114
|
+
const deterministic = m.originalHash === m2.originalHash && m.activeBytes === m2.activeBytes && m.dormant.length === m2.dormant.length;
|
|
115
|
+
let stable = true;
|
|
116
|
+
try {
|
|
117
|
+
demethylate(null);
|
|
118
|
+
methylate(repoRoot, null, {}, at);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
stable = false;
|
|
122
|
+
}
|
|
123
|
+
const perfect = reviveExact && shrinks && signedBinds && deterministic && stable;
|
|
124
|
+
return { reviveExact, shrinks, signedBinds, deterministic, stable, activeBytes: m.activeBytes, fullBytes: m.fullBytes, dormantCount: m.dormant.length, score: perfect ? 100 : 0 };
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return { reviveExact: false, shrinks: false, signedBinds: false, deterministic: false, stable: false, activeBytes: 0, fullBytes: 0, dormantCount: 0, score: 0 };
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=dormancy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dormancy.js","sourceRoot":"","sources":["../../src/hydra/dormancy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dormancy.test.d.ts","sourceRoot":"","sources":["../../src/hydra/dormancy.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { forgeCodebook, sha256Hex } from "./index.js";
|
|
3
|
+
import { canonicalizeCodebook } from "./attest.js";
|
|
4
|
+
import { methylate, demethylate, dormancyGauntlet } from "./dormancy.js";
|
|
5
|
+
const CORPUS = "alpha beta gamma delta epsilon. alpha beta gamma delta epsilon. zeta eta theta iota kappa. zeta eta theta iota kappa. ".repeat(8);
|
|
6
|
+
function setup() {
|
|
7
|
+
const cb = forgeCodebook(CORPUS, { minHits: 2 }).codebook;
|
|
8
|
+
// mark half the entries stale (cold).
|
|
9
|
+
const trustMap = {};
|
|
10
|
+
cb.entries.forEach((e, i) => { if (i % 2 === 0)
|
|
11
|
+
trustMap[e.sym] = "stale"; });
|
|
12
|
+
return { cb, trustMap };
|
|
13
|
+
}
|
|
14
|
+
describe("v2.102 HYDRA EPIGENETIC DORMANCY — sleep state + JIT revival", () => {
|
|
15
|
+
it("methylate shrinks the active set; full demethylate is BYTE-EXACT", () => {
|
|
16
|
+
const { cb, trustMap } = setup();
|
|
17
|
+
const m = methylate(process.cwd(), cb, trustMap, 1700000000000);
|
|
18
|
+
expect(m.dormant.length).toBeGreaterThan(0);
|
|
19
|
+
expect(m.activeBytes).toBeLessThan(m.fullBytes); // working set shrank
|
|
20
|
+
const rev = demethylate(m); // full wake
|
|
21
|
+
expect(rev.exact).toBe(true);
|
|
22
|
+
expect(sha256Hex(canonicalizeCodebook(rev.codebook))).toBe(m.originalHash);
|
|
23
|
+
});
|
|
24
|
+
it("partial demethylate revives only the requested dormant entries", () => {
|
|
25
|
+
const { cb, trustMap } = setup();
|
|
26
|
+
const m = methylate(process.cwd(), cb, trustMap, 1700000000000);
|
|
27
|
+
const one = m.dormant[0].phrase;
|
|
28
|
+
const rev = demethylate(m, [one]);
|
|
29
|
+
expect(rev.ok).toBe(true);
|
|
30
|
+
expect(rev.exact).toBe(false); // not a full revive
|
|
31
|
+
expect(rev.codebook.entries.some((e) => e.phrase === one)).toBe(true);
|
|
32
|
+
// a still-dormant phrase is NOT in the partial revive
|
|
33
|
+
const stillAsleep = m.dormant[1]?.phrase;
|
|
34
|
+
if (stillAsleep)
|
|
35
|
+
expect(rev.codebook.entries.some((e) => e.phrase === stillAsleep)).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
it("the split is Ed25519-signed and binds the original/dormant counts", () => {
|
|
38
|
+
const { cb, trustMap } = setup();
|
|
39
|
+
const g = dormancyGauntlet(process.cwd(), cb, trustMap, 1700000000000);
|
|
40
|
+
expect(g.signedBinds).toBe(true);
|
|
41
|
+
});
|
|
42
|
+
it("dormancy gauntlet scores 100 (reviveExact ∧ shrinks ∧ signedBinds ∧ deterministic)", () => {
|
|
43
|
+
const { cb, trustMap } = setup();
|
|
44
|
+
const g = dormancyGauntlet(process.cwd(), cb, trustMap, 1700000000000);
|
|
45
|
+
expect(g.reviveExact).toBe(true);
|
|
46
|
+
expect(g.shrinks).toBe(true);
|
|
47
|
+
expect(g.signedBinds).toBe(true);
|
|
48
|
+
expect(g.deterministic).toBe(true);
|
|
49
|
+
expect(g.stable).toBe(true);
|
|
50
|
+
expect(g.score).toBe(100);
|
|
51
|
+
});
|
|
52
|
+
it("nothing dormant ⇒ active == full, still byte-exact (no over-claim)", () => {
|
|
53
|
+
const { cb } = setup();
|
|
54
|
+
const m = methylate(process.cwd(), cb, {}, 1700000000000); // nothing stale
|
|
55
|
+
expect(m.dormant.length).toBe(0);
|
|
56
|
+
expect(m.activeBytes).toBe(m.fullBytes);
|
|
57
|
+
expect(demethylate(m).exact).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it("STABILITY — total on garbage", () => {
|
|
60
|
+
expect(() => methylate(process.cwd(), null, {}, 0)).not.toThrow();
|
|
61
|
+
expect(demethylate(null).ok).toBe(false);
|
|
62
|
+
expect(demethylate({ v: 99 }).ok).toBe(false);
|
|
63
|
+
expect(dormancyGauntlet(process.cwd(), null, {}, 0).score).toBe(0);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=dormancy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dormancy.test.js","sourceRoot":"","sources":["../../src/hydra/dormancy.test.ts"],"names":[],"mappings":"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"}
|
package/dist/hydra/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export * from "./attest.js";
|
|
|
24
24
|
export * from "./guard.js";
|
|
25
25
|
export * from "./chain.js";
|
|
26
26
|
export * from "./chain_guard.js";
|
|
27
|
+
export * from "./dormancy.js";
|
|
27
28
|
import type { Codebook } from "./engine.js";
|
|
28
29
|
import { type ForgeOpts, type ForgeResult, type Gauntlet } from "./analytic.js";
|
|
29
30
|
import { type EnergyCert } from "./attest.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hydra/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hydra/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAE9B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAA2B,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzG,OAAO,EAAsD,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,yBAAyB,CAAC;IAChC,CAAC,EAAE,CAAC,CAAC;IACL,QAAQ,EAAE,QAAQ,CAAC;IACnB,gDAAgD;IAChD,OAAO,EAAE,aAAa,CAAC;IACvB,qEAAqE;IACrE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,GAAG,gBAAgB,CAavF;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG,aAAa,EAAE,CAMxD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,gBAAgB,CAQ/G"}
|
package/dist/hydra/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export * from "./attest.js";
|
|
|
24
24
|
export * from "./guard.js";
|
|
25
25
|
export * from "./chain.js";
|
|
26
26
|
export * from "./chain_guard.js";
|
|
27
|
+
export * from "./dormancy.js";
|
|
27
28
|
import { sha256Hex } from "./engine.js";
|
|
28
29
|
import { forgeCodebook, gauntlet } from "./analytic.js";
|
|
29
30
|
import { signCodebook, mintEnergyCert, canonicalizeCodebook } from "./attest.js";
|
package/dist/hydra/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hydra/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hydra/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAG9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAmD,MAAM,eAAe,CAAC;AACzG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAmB,MAAM,aAAa,CAAC;AAsBlG,MAAM,UAAU,gBAAgB,CAAC,EAAY,EAAE,OAAsB;IACnE,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,CAAC,EAAE,CAAC;QACJ,QAAQ,EAAE,EAAE;QACZ,OAAO;QACP,OAAO,EAAE;YACP,IAAI,EAAE,4HAA4H;YAClI,UAAU,EAAE,EAAE,CAAC,IAAI;YACnB,WAAW,EAAE,EAAE,CAAC,KAAK;SACtB;QACD,YAAY,EAAE,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,UAAU,CAAC,EAAY;IACrC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;QACrF,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAU,EAAE,OAAkB,EAAE;IAC3F,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"probes.d.ts","sourceRoot":"","sources":["../../src/truth_gate/probes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA+2FnE,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,KAAK,CAAU,CAAC;AAEvD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAEvD;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAQlF"}
|
|
@@ -386,6 +386,30 @@ const probes = [
|
|
|
386
386
|
}
|
|
387
387
|
},
|
|
388
388
|
},
|
|
389
|
+
{
|
|
390
|
+
id: "probe.hydra.epigenetic_dormancy",
|
|
391
|
+
kind: "boolean",
|
|
392
|
+
description: "HYDRA EPIGENETIC DORMANCY (v2.102.0 — the image's 'Epigenetic Sleep State' + 'JIT Revival/Demethylation', made real): cold codebook entries are METHYLATED (moved out of the active working set into a cold signed store, so the active footprint shrinks — the enterprise-scale win) and DEMETHYLATE byte-exact on demand (a full revive reconstructs the original codebook with an identical canonical hash). Deterministic tiered memory with a cryptographic lossless-revival proof — NOT lossy, NOT fortune-telling. Three booleans that can't lie: revive-exact ∧ shrinks ∧ signed-binds (Ed25519). This probe sleeps half a forged codebook and asserts the dormancy gauntlet = 100 + stability.",
|
|
393
|
+
run: async (ctx) => {
|
|
394
|
+
const t0 = Date.now();
|
|
395
|
+
void ctx;
|
|
396
|
+
try {
|
|
397
|
+
const H = await import("../hydra/index.js");
|
|
398
|
+
const corpus = "alpha beta gamma delta epsilon. alpha beta gamma delta epsilon. zeta eta theta iota kappa. zeta eta theta iota kappa. ".repeat(8);
|
|
399
|
+
const cb = H.forgeCodebook(corpus, { minHits: 2 }).codebook;
|
|
400
|
+
const trustMap = {};
|
|
401
|
+
cb.entries.forEach((e, i) => { if (i % 2 === 0)
|
|
402
|
+
trustMap[e.sym] = "stale"; });
|
|
403
|
+
const g = H.dormancyGauntlet(process.cwd(), cb, trustMap, 1700000000000);
|
|
404
|
+
const stableOnGarbage = H.dormancyGauntlet(process.cwd(), null, {}, 0).score === 0;
|
|
405
|
+
const ok = g.score === 100 && g.reviveExact && g.shrinks && g.signedBinds && g.deterministic && stableOnGarbage;
|
|
406
|
+
return { value: ok ? 1 : 0, evidence: `score=${g.score} reviveExact=${g.reviveExact} shrinks=${g.shrinks} signedBinds=${g.signedBinds} dormant=${g.dormantCount} active=${g.activeBytes}/${g.fullBytes}B stableOnGarbage=${stableOnGarbage}`, dtMs: Date.now() - t0 };
|
|
407
|
+
}
|
|
408
|
+
catch (e) {
|
|
409
|
+
return { value: 0, evidence: `threw: ${e.message}`, dtMs: Date.now() - t0 };
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
},
|
|
389
413
|
{
|
|
390
414
|
id: "probe.hydra.temporal_guarded_replay",
|
|
391
415
|
kind: "boolean",
|