@mneme-ai/core 2.87.0 → 2.89.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.d.ts.map +1 -1
- package/dist/agent_manifest.js +13 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/truth_gate/claims.d.ts.map +1 -1
- package/dist/truth_gate/claims.js +14 -0
- package/dist/truth_gate/claims.js.map +1 -1
- package/dist/truth_gate/probes.d.ts.map +1 -1
- package/dist/truth_gate/probes.js +72 -0
- package/dist/truth_gate/probes.js.map +1 -1
- package/dist/truth_kernel/aletheia.d.ts +135 -0
- package/dist/truth_kernel/aletheia.d.ts.map +1 -0
- package/dist/truth_kernel/aletheia.js +280 -0
- package/dist/truth_kernel/aletheia.js.map +1 -0
- package/dist/truth_kernel/aletheia.test.d.ts +15 -0
- package/dist/truth_kernel/aletheia.test.d.ts.map +1 -0
- package/dist/truth_kernel/aletheia.test.js +0 -0
- package/dist/truth_kernel/aletheia.test.js.map +1 -0
- package/dist/truth_kernel/lattice.d.ts +141 -0
- package/dist/truth_kernel/lattice.d.ts.map +1 -0
- package/dist/truth_kernel/lattice.js +315 -0
- package/dist/truth_kernel/lattice.js.map +1 -0
- package/dist/truth_kernel/lattice.test.d.ts +18 -0
- package/dist/truth_kernel/lattice.test.d.ts.map +1 -0
- package/dist/truth_kernel/lattice.test.js +175 -0
- package/dist/truth_kernel/lattice.test.js.map +1 -0
- package/package.json +80 -80
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.88.0 — ALETHEIA · the savant spine (Prove-or-Unknown).
|
|
3
|
+
*
|
|
4
|
+
* Identity manifesto: docs/ALETHEIA.md. ἀλήθεια = "truth as un-forgetting"
|
|
5
|
+
* (a- "not" + lḗthē "forgetting"); the opposite of the river Lethe, the native
|
|
6
|
+
* tongue of Mnemosyne — of whom Mneme is a daughter.
|
|
7
|
+
*
|
|
8
|
+
* THE SAVANT THESIS: an LLM is the generalist brain — fluent, abstracting,
|
|
9
|
+
* therefore lossy + hallucination-prone + forgetful. ALETHEIA is the opposite
|
|
10
|
+
* cognitive style: a savant that REFUSES to abstract. It consolidates Mneme's
|
|
11
|
+
* truth-family sensors into ONE 3-valued assertion channel — TRUE / FALSE /
|
|
12
|
+
* UNKNOWN — under a HARD discipline: if it cannot be proven, it says UNKNOWN and
|
|
13
|
+
* NEVER fills the gap (the anti-hallucination vow, enforced in code). Every
|
|
14
|
+
* definite verdict (TRUE/FALSE) carries a lineage proof tree + an Ed25519 NOTARY
|
|
15
|
+
* signature (Refusal 5: no assertion without signature + lineage).
|
|
16
|
+
*
|
|
17
|
+
* The code spine lives HERE in truth_kernel/ (the `aletheia/` module name is
|
|
18
|
+
* already taken by vendor-reputation scoring). ALETHEIA is built ON
|
|
19
|
+
* truth_kernel's sensor fusion (checkTruth) — it is the discipline layer, not a
|
|
20
|
+
* new truth engine. It is sensor-agnostic and NEVER throws.
|
|
21
|
+
*/
|
|
22
|
+
import { type SensorAdapter, type SensorVerdict } from "./index.js";
|
|
23
|
+
import { type NotaryReceipt } from "../notary/index.js";
|
|
24
|
+
import { type Contradiction } from "./lattice.js";
|
|
25
|
+
/** The savant verdict — the ONLY assertion channel. Three-valued by design:
|
|
26
|
+
* UNKNOWN is a first-class answer, never a fallback for "I'd rather guess". */
|
|
27
|
+
export type AletheiaVerdict = "TRUE" | "FALSE" | "UNKNOWN";
|
|
28
|
+
/** The Six Refusals — the "lesion". Identity is defined by what we give up. */
|
|
29
|
+
export declare const REFUSALS: readonly string[];
|
|
30
|
+
/** The Three Vows — what ALETHEIA does. */
|
|
31
|
+
export declare const VOWS: ReadonlyArray<{
|
|
32
|
+
vow: string;
|
|
33
|
+
meaning: string;
|
|
34
|
+
}>;
|
|
35
|
+
/** One node in the proof tree — a single sensor's contribution. */
|
|
36
|
+
export interface LineageNode {
|
|
37
|
+
sensor: string;
|
|
38
|
+
verdict: SensorVerdict;
|
|
39
|
+
confidence: number;
|
|
40
|
+
rationale?: string;
|
|
41
|
+
ms?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface AletheiaResult {
|
|
44
|
+
claim: string;
|
|
45
|
+
/** TRUE / FALSE / UNKNOWN — the disciplined verdict. */
|
|
46
|
+
verdict: AletheiaVerdict;
|
|
47
|
+
/** Fused probability the claim is true, 0..1 (from truth_kernel). */
|
|
48
|
+
pTrue: number;
|
|
49
|
+
/** 0..1 — how much the sensors disagreed. */
|
|
50
|
+
disagreement: number;
|
|
51
|
+
sensorsConsulted: number;
|
|
52
|
+
/** How many sensors carried truth information (the rest were INAPPLICABLE). */
|
|
53
|
+
informational: number;
|
|
54
|
+
/** The proof tree: every sensor's verdict + rationale. */
|
|
55
|
+
lineage: LineageNode[];
|
|
56
|
+
/** Human-readable evidence string. */
|
|
57
|
+
evidence: string;
|
|
58
|
+
/** Which Refusal governed the outcome (esp. #1 on UNKNOWN). null on a clean definite verdict. */
|
|
59
|
+
refusalApplied: string | null;
|
|
60
|
+
/** Ed25519 signature over {claim, verdict, lineage}. null ONLY if signing degraded. */
|
|
61
|
+
receipt: NotaryReceipt | null;
|
|
62
|
+
/** Present when opts.record persisted this to the Axiom Lattice: any existing
|
|
63
|
+
* ACTIVE truths this assertion CONTRADICTS (the loudest signal). [] = none. */
|
|
64
|
+
contradictions?: Contradiction[];
|
|
65
|
+
/** The Axiom Lattice node id when opts.record persisted this assertion. */
|
|
66
|
+
latticeNodeId?: string;
|
|
67
|
+
totalMs: number;
|
|
68
|
+
}
|
|
69
|
+
export interface AletheiaOpts {
|
|
70
|
+
/** Sensors to consult. Defaults to defaultAletheiaSensors(repoRoot). */
|
|
71
|
+
sensors?: readonly SensorAdapter[];
|
|
72
|
+
/** pTrue ≥ this (with low disagreement) ⇒ TRUE. Default 0.85 — a HIGH bar. */
|
|
73
|
+
proveThreshold?: number;
|
|
74
|
+
/** pTrue ≤ this (with low disagreement) ⇒ FALSE. Default 0.15. */
|
|
75
|
+
refuteThreshold?: number;
|
|
76
|
+
/** disagreement ≥ this ⇒ UNKNOWN regardless of pTrue. Default 0.5. */
|
|
77
|
+
maxDisagreement?: number;
|
|
78
|
+
perSensorTimeoutMs?: number;
|
|
79
|
+
/** Deterministic issue time for the receipt (tests). */
|
|
80
|
+
issuedAt?: number;
|
|
81
|
+
/** Skip the NOTARY signature (tests / offline). */
|
|
82
|
+
noSign?: boolean;
|
|
83
|
+
/** Persist this assertion to the Axiom Lattice (the living proof graph) +
|
|
84
|
+
* return any contradictions it raises against existing ACTIVE truths. */
|
|
85
|
+
record?: boolean;
|
|
86
|
+
/** When recording, declare the lattice node ids this claim's truth rests on
|
|
87
|
+
* (truth-maintenance edges — a later retraction cascades through them). */
|
|
88
|
+
dependsOn?: string[];
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Assert a claim through the savant spine. Fans out to the sensors, fuses with
|
|
92
|
+
* truth_kernel, applies the Prove-or-Unknown gate, attaches a lineage proof tree,
|
|
93
|
+
* and signs every definite verdict with a NOTARY receipt. Never throws.
|
|
94
|
+
*/
|
|
95
|
+
export declare function assertClaim(repoRoot: string, claim: string, opts?: AletheiaOpts): Promise<AletheiaResult>;
|
|
96
|
+
/** The default savant sensor pack: arithmetic (deterministic) + apoptosis
|
|
97
|
+
* (repo-grounded 7-witness) + humility (overconfidence guard). */
|
|
98
|
+
export declare function defaultAletheiaSensors(repoRoot: string): SensorAdapter[];
|
|
99
|
+
export interface GauntletCase {
|
|
100
|
+
claim: string;
|
|
101
|
+
/** Ground truth for scoring: TRUE / FALSE / UNPROVABLE (the spine must abstain). */
|
|
102
|
+
truth: "TRUE" | "FALSE" | "UNPROVABLE";
|
|
103
|
+
}
|
|
104
|
+
export interface SavantGauntletReport {
|
|
105
|
+
n: number;
|
|
106
|
+
/** Fraction that asserted a definite verdict that was WRONG, or asserted ANY
|
|
107
|
+
* definite verdict on an UNPROVABLE case (it should have said UNKNOWN). 0 = perfect. */
|
|
108
|
+
falseAssertionRate: number;
|
|
109
|
+
/** Fraction of signed verdicts whose receipt fails to re-verify. 0 = nothing forgotten. */
|
|
110
|
+
forgetRate: number;
|
|
111
|
+
/** Fraction of definite (TRUE/FALSE) verdicts that carry a signed lineage. 1 = fully provable. */
|
|
112
|
+
provability: number;
|
|
113
|
+
/** Fraction where the spine correctly abstained (UNKNOWN) on an UNPROVABLE case. */
|
|
114
|
+
abstentionRate: number;
|
|
115
|
+
results: Array<{
|
|
116
|
+
claim: string;
|
|
117
|
+
expected: GauntletCase["truth"];
|
|
118
|
+
verdict: AletheiaVerdict;
|
|
119
|
+
falseAssertion: boolean;
|
|
120
|
+
signed: boolean;
|
|
121
|
+
}>;
|
|
122
|
+
headline: string;
|
|
123
|
+
}
|
|
124
|
+
/** Run the Savant Gauntlet over labeled cases. Never throws. */
|
|
125
|
+
export declare function runSavantGauntlet(repoRoot: string, cases: readonly GauntletCase[], opts?: AletheiaOpts): Promise<SavantGauntletReport>;
|
|
126
|
+
/** The creed — the Six Refusals + Three Vows, for the savant.creed surface. */
|
|
127
|
+
export declare function creed(): {
|
|
128
|
+
refusals: readonly string[];
|
|
129
|
+
vows: ReadonlyArray<{
|
|
130
|
+
vow: string;
|
|
131
|
+
meaning: string;
|
|
132
|
+
}>;
|
|
133
|
+
thesis: string;
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=aletheia.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aletheia.d.ts","sourceRoot":"","sources":["../../src/truth_kernel/aletheia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.88.0 — ALETHEIA · the savant spine (Prove-or-Unknown).
|
|
3
|
+
*
|
|
4
|
+
* Identity manifesto: docs/ALETHEIA.md. ἀλήθεια = "truth as un-forgetting"
|
|
5
|
+
* (a- "not" + lḗthē "forgetting"); the opposite of the river Lethe, the native
|
|
6
|
+
* tongue of Mnemosyne — of whom Mneme is a daughter.
|
|
7
|
+
*
|
|
8
|
+
* THE SAVANT THESIS: an LLM is the generalist brain — fluent, abstracting,
|
|
9
|
+
* therefore lossy + hallucination-prone + forgetful. ALETHEIA is the opposite
|
|
10
|
+
* cognitive style: a savant that REFUSES to abstract. It consolidates Mneme's
|
|
11
|
+
* truth-family sensors into ONE 3-valued assertion channel — TRUE / FALSE /
|
|
12
|
+
* UNKNOWN — under a HARD discipline: if it cannot be proven, it says UNKNOWN and
|
|
13
|
+
* NEVER fills the gap (the anti-hallucination vow, enforced in code). Every
|
|
14
|
+
* definite verdict (TRUE/FALSE) carries a lineage proof tree + an Ed25519 NOTARY
|
|
15
|
+
* signature (Refusal 5: no assertion without signature + lineage).
|
|
16
|
+
*
|
|
17
|
+
* The code spine lives HERE in truth_kernel/ (the `aletheia/` module name is
|
|
18
|
+
* already taken by vendor-reputation scoring). ALETHEIA is built ON
|
|
19
|
+
* truth_kernel's sensor fusion (checkTruth) — it is the discipline layer, not a
|
|
20
|
+
* new truth engine. It is sensor-agnostic and NEVER throws.
|
|
21
|
+
*/
|
|
22
|
+
import { checkTruth } from "./index.js";
|
|
23
|
+
import { issueReceipt, verifyReceipt } from "../notary/index.js";
|
|
24
|
+
import { recordAssertion } from "./lattice.js";
|
|
25
|
+
/** The Six Refusals — the "lesion". Identity is defined by what we give up. */
|
|
26
|
+
export const REFUSALS = [
|
|
27
|
+
"No gap-filling — if it cannot be proven, answer UNKNOWN; never synthesize a plausible claim.",
|
|
28
|
+
"No forgetting / no lossy compression — never summarize until provenance is lost.",
|
|
29
|
+
"Trust nothing — including itself; every assertion must be independently re-verifiable.",
|
|
30
|
+
"Not a chatbot — no creative generation, no open-ended conversation (that is LLM territory).",
|
|
31
|
+
"No assertion without a signature + lineage.",
|
|
32
|
+
"No answer faster than it can be verified — slowness in service of truth is acceptable.",
|
|
33
|
+
];
|
|
34
|
+
/** The Three Vows — what ALETHEIA does. */
|
|
35
|
+
export const VOWS = [
|
|
36
|
+
{ vow: "Prove-or-Unknown", meaning: "Speak only what carries signed evidence; otherwise say 'unknown'." },
|
|
37
|
+
{ vow: "Never Forget", meaning: "Every fact is lossless, signed, and retrievable forever." },
|
|
38
|
+
{ vow: "Trust Nothing", meaning: "Everything is re-verifiable — including ALETHEIA's own memory." },
|
|
39
|
+
];
|
|
40
|
+
const DEFAULTS = { proveThreshold: 0.85, refuteThreshold: 0.15, maxDisagreement: 0.5 };
|
|
41
|
+
/**
|
|
42
|
+
* The Prove-or-Unknown gate — the discipline, in code. A claim becomes a definite
|
|
43
|
+
* TRUE/FALSE ONLY when the evidence clears a HIGH bar with low sensor conflict.
|
|
44
|
+
* Anything short of that — no informational sensor, sensors in conflict, or a
|
|
45
|
+
* probability in the murky middle — is UNKNOWN. UNKNOWN NEVER fills the gap.
|
|
46
|
+
*/
|
|
47
|
+
function proveOrUnknown(pTrue, disagreement, informational, opts) {
|
|
48
|
+
if (informational === 0) {
|
|
49
|
+
return { verdict: "UNKNOWN", refusalApplied: REFUSALS[0] }; // no evidence → no gap-fill
|
|
50
|
+
}
|
|
51
|
+
if (disagreement >= opts.maxDisagreement) {
|
|
52
|
+
return { verdict: "UNKNOWN", refusalApplied: REFUSALS[2] }; // sensors conflict → cannot prove
|
|
53
|
+
}
|
|
54
|
+
if (pTrue >= opts.proveThreshold)
|
|
55
|
+
return { verdict: "TRUE", refusalApplied: null };
|
|
56
|
+
if (pTrue <= opts.refuteThreshold)
|
|
57
|
+
return { verdict: "FALSE", refusalApplied: null };
|
|
58
|
+
return { verdict: "UNKNOWN", refusalApplied: REFUSALS[0] }; // not provable enough → unknown
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Assert a claim through the savant spine. Fans out to the sensors, fuses with
|
|
62
|
+
* truth_kernel, applies the Prove-or-Unknown gate, attaches a lineage proof tree,
|
|
63
|
+
* and signs every definite verdict with a NOTARY receipt. Never throws.
|
|
64
|
+
*/
|
|
65
|
+
export async function assertClaim(repoRoot, claim, opts = {}) {
|
|
66
|
+
const t0 = Date.now();
|
|
67
|
+
const sensors = opts.sensors ?? defaultAletheiaSensors(repoRoot);
|
|
68
|
+
const thresholds = {
|
|
69
|
+
proveThreshold: opts.proveThreshold ?? DEFAULTS.proveThreshold,
|
|
70
|
+
refuteThreshold: opts.refuteThreshold ?? DEFAULTS.refuteThreshold,
|
|
71
|
+
maxDisagreement: opts.maxDisagreement ?? DEFAULTS.maxDisagreement,
|
|
72
|
+
};
|
|
73
|
+
let tv;
|
|
74
|
+
try {
|
|
75
|
+
tv = await checkTruth({ claim, sensors, perSensorTimeoutMs: opts.perSensorTimeoutMs });
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// checkTruth is designed not to throw; this is plan-C insurance → honest UNKNOWN.
|
|
79
|
+
return {
|
|
80
|
+
claim, verdict: "UNKNOWN", pTrue: 0.5, disagreement: 0, sensorsConsulted: sensors.length,
|
|
81
|
+
informational: 0, lineage: [], evidence: "verification pipeline unavailable — UNKNOWN (never guess)",
|
|
82
|
+
refusalApplied: REFUSALS[5], receipt: null, totalMs: Date.now() - t0,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const lineage = tv.sensorOutputs.map((o) => ({
|
|
86
|
+
sensor: o.sensor, verdict: o.verdict, confidence: o.confidence, rationale: o.rationale, ms: o.ms,
|
|
87
|
+
}));
|
|
88
|
+
const informational = tv.sensorOutputs.filter((o) => o.verdict === "TRUE" || o.verdict === "FALSE").length;
|
|
89
|
+
const { verdict, refusalApplied } = proveOrUnknown(tv.pTrue, tv.disagreement, informational, thresholds);
|
|
90
|
+
const drivers = lineage.filter((n) => n.verdict === "TRUE" || n.verdict === "FALSE");
|
|
91
|
+
const evidence = verdict === "UNKNOWN"
|
|
92
|
+
? (informational === 0 ? "no sensor could prove or refute this — UNKNOWN (never guess)" : refusalApplied ?? "insufficient proof — UNKNOWN")
|
|
93
|
+
: (drivers.map((n) => `${n.sensor}: ${n.rationale ?? n.verdict}`).join(" · ") || `${tv.dominantSensor ?? "fused"} → ${verdict}`);
|
|
94
|
+
// Refusal 5: no assertion without a signature + lineage. We sign every definite
|
|
95
|
+
// verdict (and UNKNOWN too — an honest "I don't know" is also attestable).
|
|
96
|
+
let receipt = null;
|
|
97
|
+
if (!opts.noSign) {
|
|
98
|
+
try {
|
|
99
|
+
receipt = issueReceipt(repoRoot, {
|
|
100
|
+
kind: "claim-verdict",
|
|
101
|
+
subject: claim,
|
|
102
|
+
payload: { engine: "aletheia", verdict, pTrue: tv.pTrue, disagreement: tv.disagreement, lineage },
|
|
103
|
+
issuedAt: opts.issuedAt,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
receipt = null;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const result = {
|
|
111
|
+
claim, verdict, pTrue: tv.pTrue, disagreement: tv.disagreement,
|
|
112
|
+
sensorsConsulted: sensors.length, informational, lineage, evidence, refusalApplied, receipt,
|
|
113
|
+
totalMs: Date.now() - t0,
|
|
114
|
+
};
|
|
115
|
+
// Persist to the Axiom Lattice (living proof graph) + surface contradictions.
|
|
116
|
+
if (opts.record) {
|
|
117
|
+
try {
|
|
118
|
+
const rec = recordAssertion(repoRoot, {
|
|
119
|
+
claim, verdict, pTrue: tv.pTrue,
|
|
120
|
+
lineageSummary: lineage.filter((n) => n.verdict === "TRUE" || n.verdict === "FALSE").map((n) => n.sensor),
|
|
121
|
+
}, { dependsOn: opts.dependsOn, issuedAt: opts.issuedAt });
|
|
122
|
+
result.contradictions = rec.contradictions;
|
|
123
|
+
result.latticeNodeId = rec.node.id;
|
|
124
|
+
}
|
|
125
|
+
catch { /* lattice persistence is best-effort; the verdict stands */ }
|
|
126
|
+
}
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
// ════════════════════════════════════════════════════════════════════════
|
|
130
|
+
// Default sensor pack — real Mneme organs wired as truth sensors. Each is
|
|
131
|
+
// sensor-agnostic + dynamic-imported inside run() so the spine stays cycle-free
|
|
132
|
+
// and never throws (a failing organ degrades to UNCERTAIN).
|
|
133
|
+
// ════════════════════════════════════════════════════════════════════════
|
|
134
|
+
/** Deterministic arithmetic/structural sensor — the savant's "sees pixels" axis.
|
|
135
|
+
* Catches exact falsehoods (2+2=5) with full confidence; INAPPLICABLE otherwise. */
|
|
136
|
+
function arithmeticSensor() {
|
|
137
|
+
return {
|
|
138
|
+
id: "arithmetic",
|
|
139
|
+
weight: 2.0,
|
|
140
|
+
run: (claim) => {
|
|
141
|
+
const m = /(-?\d+(?:\.\d+)?)\s*([+\-*/])\s*(-?\d+(?:\.\d+)?)\s*=\s*(-?\d+(?:\.\d+)?)/.exec(claim);
|
|
142
|
+
if (!m)
|
|
143
|
+
return { sensor: "arithmetic", verdict: "INAPPLICABLE", confidence: 0 };
|
|
144
|
+
const a = parseFloat(m[1]), op = m[2], b = parseFloat(m[3]), c = parseFloat(m[4]);
|
|
145
|
+
const real = op === "+" ? a + b : op === "-" ? a - b : op === "*" ? a * b : b !== 0 ? a / b : NaN;
|
|
146
|
+
if (!Number.isFinite(real))
|
|
147
|
+
return { sensor: "arithmetic", verdict: "INAPPLICABLE", confidence: 0 };
|
|
148
|
+
const ok = Math.abs(real - c) < 1e-9;
|
|
149
|
+
return {
|
|
150
|
+
sensor: "arithmetic",
|
|
151
|
+
verdict: ok ? "TRUE" : "FALSE",
|
|
152
|
+
confidence: 1,
|
|
153
|
+
rationale: ok ? `${a} ${op} ${b} = ${c} ✓` : `${a} ${op} ${b} = ${real}, not ${c}`,
|
|
154
|
+
};
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
/** APOPTOSIS 7-witness sensor — the real truth detector grounded in the repo.
|
|
159
|
+
*
|
|
160
|
+
* CRITICAL discipline (Prove-or-Unknown): apoptosis is good at REFUTING — a
|
|
161
|
+
* NECROTIC/APOPTOTIC verdict is real evidence-of-falsehood. But its HEALTHY
|
|
162
|
+
* means only "no evidence AGAINST the claim was found" — which is NOT proof of
|
|
163
|
+
* truth (apoptosis defaults to HEALTHY for any claim it cannot ground, e.g. a
|
|
164
|
+
* future world-fact). Under the anti-hallucination vow, absence of refutation
|
|
165
|
+
* must NOT become a TRUE. So HEALTHY → INAPPLICABLE: this sensor can refute,
|
|
166
|
+
* it cannot prove on its own. (A positive-proof sensor like `arithmetic` — or a
|
|
167
|
+
* future file/symbol witness — supplies TRUE.) */
|
|
168
|
+
function apoptosisSensor(repoRoot) {
|
|
169
|
+
return {
|
|
170
|
+
id: "apoptosis",
|
|
171
|
+
weight: 1.5,
|
|
172
|
+
run: async (claim) => {
|
|
173
|
+
try {
|
|
174
|
+
const { detect } = await import("../apoptosis/index.js");
|
|
175
|
+
const rep = detect(repoRoot, claim);
|
|
176
|
+
const v = rep.verdict;
|
|
177
|
+
if (v === "NECROTIC" || v === "APOPTOTIC")
|
|
178
|
+
return { sensor: "apoptosis", verdict: "FALSE", confidence: 0.85, rationale: rep.headline };
|
|
179
|
+
if (v === "INFLAMED")
|
|
180
|
+
return { sensor: "apoptosis", verdict: "UNCERTAIN", confidence: 0.3, rationale: rep.headline };
|
|
181
|
+
// HEALTHY (or anything else): no evidence AGAINST ≠ proof FOR → carry no truth signal.
|
|
182
|
+
return { sensor: "apoptosis", verdict: "INAPPLICABLE", confidence: 0, rationale: `${rep.headline ?? v} (no refutation found — not proof of truth)` };
|
|
183
|
+
}
|
|
184
|
+
catch (e) {
|
|
185
|
+
return { sensor: "apoptosis", verdict: "UNCERTAIN", confidence: 0, rationale: `apoptosis unavailable: ${e.message?.slice(0, 60)}` };
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/** Epistemic-humility sensor — overconfidence detector. Low weight + never asserts
|
|
191
|
+
* truth on its own; an absolutist claim is nudged toward scrutiny, not toward FALSE.
|
|
192
|
+
* Mostly INAPPLICABLE (it measures phrasing, not facthood). */
|
|
193
|
+
function humilitySensor() {
|
|
194
|
+
return {
|
|
195
|
+
id: "humility",
|
|
196
|
+
weight: 0.4,
|
|
197
|
+
run: async (claim) => {
|
|
198
|
+
try {
|
|
199
|
+
const { humilityDensity } = await import("../apoptosis/epistemic_humility.js");
|
|
200
|
+
const r = humilityDensity(claim);
|
|
201
|
+
// Humility never proves a claim true/false — it only flags overconfident
|
|
202
|
+
// phrasing as a weak UNCERTAIN (so an absolutist claim can't sail to TRUE
|
|
203
|
+
// on confidence alone). Grounded / inapplicable phrasing carries no info.
|
|
204
|
+
if (r.verdict === "ALERT")
|
|
205
|
+
return { sensor: "humility", verdict: "UNCERTAIN", confidence: 0.2, rationale: r.detail };
|
|
206
|
+
return { sensor: "humility", verdict: "INAPPLICABLE", confidence: 0, rationale: r.detail };
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return { sensor: "humility", verdict: "INAPPLICABLE", confidence: 0 };
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/** The default savant sensor pack: arithmetic (deterministic) + apoptosis
|
|
215
|
+
* (repo-grounded 7-witness) + humility (overconfidence guard). */
|
|
216
|
+
export function defaultAletheiaSensors(repoRoot) {
|
|
217
|
+
return [arithmeticSensor(), apoptosisSensor(repoRoot), humilitySensor()];
|
|
218
|
+
}
|
|
219
|
+
/** Run the Savant Gauntlet over labeled cases. Never throws. */
|
|
220
|
+
export async function runSavantGauntlet(repoRoot, cases, opts = {}) {
|
|
221
|
+
const results = [];
|
|
222
|
+
let falseAssertions = 0;
|
|
223
|
+
let definite = 0;
|
|
224
|
+
let definiteSigned = 0;
|
|
225
|
+
let signed = 0;
|
|
226
|
+
let forgot = 0;
|
|
227
|
+
let abstainedCorrectly = 0;
|
|
228
|
+
let unprovable = 0;
|
|
229
|
+
for (const c of cases) {
|
|
230
|
+
const r = await assertClaim(repoRoot, c.claim, opts);
|
|
231
|
+
const isDefinite = r.verdict === "TRUE" || r.verdict === "FALSE";
|
|
232
|
+
// A false assertion: a definite verdict that doesn't match ground truth, OR any
|
|
233
|
+
// definite verdict on an UNPROVABLE case (the savant must abstain, not guess).
|
|
234
|
+
const falseAssertion = (c.truth === "UNPROVABLE" && isDefinite) ||
|
|
235
|
+
(c.truth === "TRUE" && r.verdict === "FALSE") ||
|
|
236
|
+
(c.truth === "FALSE" && r.verdict === "TRUE");
|
|
237
|
+
if (falseAssertion)
|
|
238
|
+
falseAssertions++;
|
|
239
|
+
if (isDefinite) {
|
|
240
|
+
definite++;
|
|
241
|
+
if (r.receipt)
|
|
242
|
+
definiteSigned++;
|
|
243
|
+
}
|
|
244
|
+
if (r.receipt) {
|
|
245
|
+
signed++;
|
|
246
|
+
try {
|
|
247
|
+
const ok = verifyReceipt(r.receipt).valid;
|
|
248
|
+
if (!ok)
|
|
249
|
+
forgot++;
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
forgot++;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
if (c.truth === "UNPROVABLE") {
|
|
256
|
+
unprovable++;
|
|
257
|
+
if (r.verdict === "UNKNOWN")
|
|
258
|
+
abstainedCorrectly++;
|
|
259
|
+
}
|
|
260
|
+
results.push({ claim: c.claim, expected: c.truth, verdict: r.verdict, falseAssertion, signed: !!r.receipt });
|
|
261
|
+
}
|
|
262
|
+
const n = cases.length;
|
|
263
|
+
const falseAssertionRate = n === 0 ? 0 : falseAssertions / n;
|
|
264
|
+
const forgetRate = signed === 0 ? 0 : forgot / signed;
|
|
265
|
+
const provability = definite === 0 ? 1 : definiteSigned / definite;
|
|
266
|
+
const abstentionRate = unprovable === 0 ? 1 : abstainedCorrectly / unprovable;
|
|
267
|
+
const headline = `SAVANT GAUNTLET · false-assert ${(falseAssertionRate * 100).toFixed(0)}% · forget ${(forgetRate * 100).toFixed(0)}% · provable ${(provability * 100).toFixed(0)}% · abstained ${(abstentionRate * 100).toFixed(0)}% (n=${n})`;
|
|
268
|
+
return { n, falseAssertionRate, forgetRate, provability, abstentionRate, results, headline };
|
|
269
|
+
}
|
|
270
|
+
/** The creed — the Six Refusals + Three Vows, for the savant.creed surface. */
|
|
271
|
+
export function creed() {
|
|
272
|
+
return {
|
|
273
|
+
refusals: REFUSALS,
|
|
274
|
+
vows: VOWS,
|
|
275
|
+
thesis: "ALETHEIA is the savant prosthesis for the LLM's structural disability: it refuses to abstract, " +
|
|
276
|
+
"so it perceives + retains the exact, verifiable structure LLMs compress away. Superhuman ONLY on " +
|
|
277
|
+
"truth · memory · structure — and that narrowness is the moat. Prove-or-Unknown: never fill the gap.",
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=aletheia.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aletheia.js","sourceRoot":"","sources":["../../src/truth_kernel/aletheia.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.88.0 — ALETHEIA savant spine tests (Prove-or-Unknown discipline).
|
|
3
|
+
*
|
|
4
|
+
* A1 provable arithmetic → TRUE + signed + lineage
|
|
5
|
+
* A2 arithmetic falsehood → FALSE + signed + lineage cites the refutation
|
|
6
|
+
* A3 unprovable claim → UNKNOWN, refusal #1 applied, NEVER fills the gap
|
|
7
|
+
* A4 Prove-or-Unknown gate: high-conf→definite · conflict→UNKNOWN · murky→UNKNOWN
|
|
8
|
+
* A5 Refusal 5 — every verdict carries a re-verifiable signature + lineage
|
|
9
|
+
* A6 never throws (a throwing sensor degrades; fuzz stays total) + always 3-valued
|
|
10
|
+
* A7 Savant Gauntlet — false-assert 0% · forget 0% · provable 100% · abstained 100%
|
|
11
|
+
* A8 creed = 6 refusals + 3 vows
|
|
12
|
+
* A9 tamper-evidence — a flipped receipt fails re-verification (forget detection)
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=aletheia.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aletheia.test.d.ts","sourceRoot":"","sources":["../../src/truth_kernel/aletheia.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aletheia.test.js","sourceRoot":"","sources":["../../src/truth_kernel/aletheia.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.89.0 — 💎 THE AXIOM LATTICE · ALETHEIA's living proof graph.
|
|
3
|
+
*
|
|
4
|
+
* The savant doesn't just answer one claim and forget it (that was v2.88). A real
|
|
5
|
+
* savant — Padgett "sees frames connected by lines", never forgets, and CANNOT
|
|
6
|
+
* hold two opposing truths. The Axiom Lattice is that faculty made real: a
|
|
7
|
+
* persistent, hash-chained, Ed25519-signed graph of every assertion ALETHEIA has
|
|
8
|
+
* made — offline-verifiable, tamper-evident, self-correcting.
|
|
9
|
+
*
|
|
10
|
+
* It realises three savant axes + two vows at once:
|
|
11
|
+
* • Graph perception — claims are nodes; lineage + dependency are edges.
|
|
12
|
+
* • Anti-abstraction — lossless: the exact claim + verdict + proof, never summarised away.
|
|
13
|
+
* • Proof, not belief — `whyTrue` walks the lineage back to bedrock (deterministic) sensors.
|
|
14
|
+
* • Never Forget — append-only, hash-chained, signed; retrievable forever.
|
|
15
|
+
* • Trust Nothing — `verifyLattice` re-verifies every node + the chain, OFFLINE.
|
|
16
|
+
*
|
|
17
|
+
* Two superhuman behaviours no LLM can do structurally:
|
|
18
|
+
* 1. CONTRADICTION DETECTION — recording a claim that opposes an existing TRUE
|
|
19
|
+
* surfaces the conflict as the LOUDEST signal (the savant can't hold both).
|
|
20
|
+
* 2. RETRACTION CASCADE (truth-maintenance) — when a claim is refuted, every
|
|
21
|
+
* claim that DEPENDED on it is automatically marked PENDING_REVERIFY + a
|
|
22
|
+
* signed retraction frame is written. Change one fact → the multiverse knows.
|
|
23
|
+
*
|
|
24
|
+
* Built on NOTARY (signing/chain) — no new crypto. Never throws.
|
|
25
|
+
*/
|
|
26
|
+
import { type NotaryReceipt } from "../notary/index.js";
|
|
27
|
+
import type { AletheiaVerdict } from "./aletheia.js";
|
|
28
|
+
export type NodeStatus = "ACTIVE" | "RETRACTED" | "PENDING_REVERIFY";
|
|
29
|
+
export interface LatticeNode {
|
|
30
|
+
/** Stable id = sha256(seq|claim|verdict)[:16]. */
|
|
31
|
+
id: string;
|
|
32
|
+
seq: number;
|
|
33
|
+
claim: string;
|
|
34
|
+
/** Normalised subject for clustering + contradiction detection. */
|
|
35
|
+
subject: string;
|
|
36
|
+
verdict: AletheiaVerdict;
|
|
37
|
+
pTrue: number;
|
|
38
|
+
/** Sensor ids that drove the verdict (the proof). */
|
|
39
|
+
lineageSummary: string[];
|
|
40
|
+
/** Ids of other lattice nodes this claim's truth rests on (truth-maintenance edges). */
|
|
41
|
+
dependsOn: string[];
|
|
42
|
+
status: NodeStatus;
|
|
43
|
+
at: number;
|
|
44
|
+
/** Previous node's receiptId — the hash chain. */
|
|
45
|
+
prev: string | null;
|
|
46
|
+
/** The full NOTARY receipt (signature over the claim+verdict payload). null only
|
|
47
|
+
* if signing degraded. Embedded so the lattice verifies OFFLINE + editing the
|
|
48
|
+
* node body is detectable against the signed payload. */
|
|
49
|
+
receipt: NotaryReceipt | null;
|
|
50
|
+
}
|
|
51
|
+
export interface Contradiction {
|
|
52
|
+
kind: "opposite-verdict" | "negation-pair" | "value-conflict";
|
|
53
|
+
/** Existing node id. */
|
|
54
|
+
existing: string;
|
|
55
|
+
/** The incoming claim text. */
|
|
56
|
+
incoming: string;
|
|
57
|
+
detail: string;
|
|
58
|
+
}
|
|
59
|
+
/** Normalise a claim's SUBJECT: lowercase, strip negation + values + stopwords,
|
|
60
|
+
* token-sort. Two claims about the same thing collapse to the same key, so a
|
|
61
|
+
* contradiction (same subject, opposing verdict/value) becomes detectable. */
|
|
62
|
+
export declare function normalizeSubject(claim: string): string;
|
|
63
|
+
/** Read every lattice node. Never throws — a corrupt line is skipped. */
|
|
64
|
+
export declare function readLattice(repoRoot: string): LatticeNode[];
|
|
65
|
+
/**
|
|
66
|
+
* Detect contradictions between an incoming (claim, verdict) and the ACTIVE
|
|
67
|
+
* nodes already in the lattice. Three modes, strongest first. Never throws.
|
|
68
|
+
*/
|
|
69
|
+
export declare function detectContradictions(repoRoot: string, claim: string, verdict: AletheiaVerdict): Contradiction[];
|
|
70
|
+
export interface RecordInput {
|
|
71
|
+
claim: string;
|
|
72
|
+
verdict: AletheiaVerdict;
|
|
73
|
+
pTrue: number;
|
|
74
|
+
/** Sensor ids that drove the verdict. */
|
|
75
|
+
lineageSummary?: string[];
|
|
76
|
+
}
|
|
77
|
+
export interface RecordResult {
|
|
78
|
+
node: LatticeNode;
|
|
79
|
+
contradictions: Contradiction[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Append a signed, hash-chained node to the lattice. Detects contradictions vs
|
|
83
|
+
* the existing ACTIVE truths FIRST (the loudest signal) and returns them.
|
|
84
|
+
* Lossless (Refusal 2). Never throws — degrades to an unsigned node if NOTARY fails.
|
|
85
|
+
*/
|
|
86
|
+
export declare function recordAssertion(repoRoot: string, input: RecordInput, opts?: {
|
|
87
|
+
dependsOn?: string[];
|
|
88
|
+
issuedAt?: number;
|
|
89
|
+
now?: number;
|
|
90
|
+
}): RecordResult;
|
|
91
|
+
export interface WhyResult {
|
|
92
|
+
found: boolean;
|
|
93
|
+
node?: LatticeNode;
|
|
94
|
+
/** Human-readable proof path: this claim ← its sensors / dependency claims ← bedrock. */
|
|
95
|
+
proof: string[];
|
|
96
|
+
}
|
|
97
|
+
/** Walk the proof of a claim: its lineage (sensors) + its dependency nodes, back
|
|
98
|
+
* toward bedrock (deterministic sensors like `arithmetic` are axioms). Never throws. */
|
|
99
|
+
export declare function whyTrue(repoRoot: string, claimOrId: string): WhyResult;
|
|
100
|
+
export interface RetractResult {
|
|
101
|
+
retracted: string[];
|
|
102
|
+
/** Node ids marked PENDING_REVERIFY because they depended on a retracted node. */
|
|
103
|
+
cascade: string[];
|
|
104
|
+
retractionReceiptId: string | null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Retract a claim and CASCADE: every ACTIVE node that (transitively) depended on
|
|
108
|
+
* it is marked PENDING_REVERIFY — its proof rested on a now-refuted fact, so it
|
|
109
|
+
* must be re-verified before it can be trusted again. Writes a signed retraction
|
|
110
|
+
* frame. The truth-maintenance heart of the savant. Never throws.
|
|
111
|
+
*/
|
|
112
|
+
export declare function retract(repoRoot: string, claimOrId: string, reason: string, opts?: {
|
|
113
|
+
issuedAt?: number;
|
|
114
|
+
}): RetractResult;
|
|
115
|
+
export interface LatticeStatus {
|
|
116
|
+
nodes: number;
|
|
117
|
+
active: number;
|
|
118
|
+
retracted: number;
|
|
119
|
+
pending: number;
|
|
120
|
+
openContradictions: number;
|
|
121
|
+
chainValid: boolean;
|
|
122
|
+
}
|
|
123
|
+
/** Live lattice status: counts + open contradictions among ACTIVE truths + chain integrity. */
|
|
124
|
+
export declare function latticeStatus(repoRoot: string): LatticeStatus;
|
|
125
|
+
export interface VerifyLatticeResult {
|
|
126
|
+
ok: boolean;
|
|
127
|
+
nodes: number;
|
|
128
|
+
/** seq of the first broken link, if any. */
|
|
129
|
+
brokenAt?: number;
|
|
130
|
+
/** node ids whose NOTARY signature failed, OR whose body was tampered vs the signed payload. */
|
|
131
|
+
badSignatures: string[];
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Re-verify the entire lattice OFFLINE: for every signed node (1) its NOTARY
|
|
135
|
+
* receipt's Ed25519 signature is valid, (2) the node's claim/verdict MATCH the
|
|
136
|
+
* signed payload (so editing the jsonl body is caught), and (3) each node's
|
|
137
|
+
* `prev` matches the predecessor's receiptId (the chain is intact). This is the
|
|
138
|
+
* savant's "Trust Nothing — including itself". Never throws.
|
|
139
|
+
*/
|
|
140
|
+
export declare function verifyLattice(repoRoot: string): VerifyLatticeResult;
|
|
141
|
+
//# sourceMappingURL=lattice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lattice.d.ts","sourceRoot":"","sources":["../../src/truth_kernel/lattice.ts"],"names":[],"mappings":"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"}
|