@mneme-ai/core 2.30.0 → 2.31.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 +1 -1
- 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/hgp/hgp.test.d.ts +2 -0
- package/dist/hgp/hgp.test.d.ts.map +1 -0
- package/dist/hgp/hgp.test.js +198 -0
- package/dist/hgp/hgp.test.js.map +1 -0
- package/dist/hgp/hgp_id.d.ts +18 -0
- package/dist/hgp/hgp_id.d.ts.map +1 -0
- package/dist/hgp/hgp_id.js +41 -0
- package/dist/hgp/hgp_id.js.map +1 -0
- package/dist/hgp/index.d.ts +12 -0
- package/dist/hgp/index.d.ts.map +1 -0
- package/dist/hgp/index.js +10 -0
- package/dist/hgp/index.js.map +1 -0
- package/dist/hgp/registry.d.ts +64 -0
- package/dist/hgp/registry.d.ts.map +1 -0
- package/dist/hgp/registry.js +221 -0
- package/dist/hgp/registry.js.map +1 -0
- package/dist/hgp/severity.d.ts +19 -0
- package/dist/hgp/severity.d.ts.map +1 -0
- package/dist/hgp/severity.js +46 -0
- package/dist/hgp/severity.js.map +1 -0
- package/dist/hgp/types.d.ts +60 -0
- package/dist/hgp/types.d.ts.map +1 -0
- package/dist/hgp/types.js +11 -0
- package/dist/hgp/types.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/rewind/engine.d.ts +65 -0
- package/dist/rewind/engine.d.ts.map +1 -0
- package/dist/rewind/engine.js +473 -0
- package/dist/rewind/engine.js.map +1 -0
- package/dist/rewind/index.d.ts +13 -0
- package/dist/rewind/index.d.ts.map +1 -0
- package/dist/rewind/index.js +11 -0
- package/dist/rewind/index.js.map +1 -0
- package/dist/rewind/intent_class.d.ts +35 -0
- package/dist/rewind/intent_class.d.ts.map +1 -0
- package/dist/rewind/intent_class.js +141 -0
- package/dist/rewind/intent_class.js.map +1 -0
- package/dist/rewind/rewind.test.d.ts +2 -0
- package/dist/rewind/rewind.test.d.ts.map +1 -0
- package/dist/rewind/rewind.test.js +176 -0
- package/dist/rewind/rewind.test.js.map +1 -0
- package/dist/rewind/types.d.ts +140 -0
- package/dist/rewind/types.d.ts.map +1 -0
- package/dist/rewind/types.js +11 -0
- package/dist/rewind/types.js.map +1 -0
- package/dist/squadron/acgv_vaccine.d.ts.map +1 -1
- package/dist/squadron/acgv_vaccine.js +15 -0
- package/dist/squadron/acgv_vaccine.js.map +1 -1
- package/dist/truth_gate/claims.d.ts.map +1 -1
- package/dist/truth_gate/claims.js +28 -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 +73 -1
- package/dist/truth_gate/probes.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.31.0 — REWIND intent-class fingerprint.
|
|
3
|
+
*
|
|
4
|
+
* The wild fusion idea: cluster past commits by (category × surface ×
|
|
5
|
+
* sizeBucket × topic-simhash). Vendor regression isn't binary "got
|
|
6
|
+
* worse overall" — it's per-intent-class. A new vendor release may
|
|
7
|
+
* crush feat-on-core-Medium tasks while regressing on fix-on-tests-
|
|
8
|
+
* Large. The card surfaces both per-class so the user gets actionable
|
|
9
|
+
* forensics, not just a single dropped number.
|
|
10
|
+
*
|
|
11
|
+
* Intent class is deterministic — same commits → same class. That's
|
|
12
|
+
* the "time-capsule" property: pin once, fire at every vendor release,
|
|
13
|
+
* compare apples-to-apples.
|
|
14
|
+
*/
|
|
15
|
+
import { createHash } from "node:crypto";
|
|
16
|
+
import { simhash64 } from "../squadron/acgv_vaccine.js";
|
|
17
|
+
const CATEGORY_RX = /^(feat|fix|docs|refactor|chore|test|build|perf|style|ci|revert|merge)\b/i;
|
|
18
|
+
const SURFACE_RULES = [
|
|
19
|
+
{ surface: "tests", rx: /(^|\/)tests?\// },
|
|
20
|
+
{ surface: "docs", rx: /(^|\/)(docs?|README|CHANGELOG)/i },
|
|
21
|
+
{ surface: "core", rx: /(^|\/)packages\/core\// },
|
|
22
|
+
{ surface: "mcp", rx: /(^|\/)packages\/mcp\// },
|
|
23
|
+
{ surface: "embeddings", rx: /(^|\/)packages\/embeddings\// },
|
|
24
|
+
{ surface: "cli", rx: /(^|\/)packages\/cli\// },
|
|
25
|
+
{ surface: "correlator", rx: /(^|\/)packages\/correlator\// },
|
|
26
|
+
{ surface: "scripts", rx: /(^|\/)scripts?\// },
|
|
27
|
+
{ surface: "ci", rx: /\.github\// },
|
|
28
|
+
];
|
|
29
|
+
export function classifyCategory(subject) {
|
|
30
|
+
const m = subject.match(CATEGORY_RX);
|
|
31
|
+
return (m?.[1] ?? "other").toLowerCase();
|
|
32
|
+
}
|
|
33
|
+
export function classifySurface(files) {
|
|
34
|
+
if (files.length === 0)
|
|
35
|
+
return "other";
|
|
36
|
+
const counts = {};
|
|
37
|
+
for (const f of files) {
|
|
38
|
+
let matched = "other";
|
|
39
|
+
for (const r of SURFACE_RULES) {
|
|
40
|
+
if (r.rx.test(f)) {
|
|
41
|
+
matched = r.surface;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
counts[matched] = (counts[matched] ?? 0) + 1;
|
|
46
|
+
}
|
|
47
|
+
let best = "other";
|
|
48
|
+
let bestCount = -1;
|
|
49
|
+
for (const [k, v] of Object.entries(counts)) {
|
|
50
|
+
if (v > bestCount) {
|
|
51
|
+
best = k;
|
|
52
|
+
bestCount = v;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return best;
|
|
56
|
+
}
|
|
57
|
+
export function classifySize(diffLines) {
|
|
58
|
+
if (diffLines < 20)
|
|
59
|
+
return "S";
|
|
60
|
+
if (diffLines < 200)
|
|
61
|
+
return "M";
|
|
62
|
+
if (diffLines < 2000)
|
|
63
|
+
return "L";
|
|
64
|
+
return "XL";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Build an intent fingerprint. Same (category, surface, sizeBucket,
|
|
68
|
+
* topic-simhash) → same intentClass key.
|
|
69
|
+
*
|
|
70
|
+
* topic-simhash uses subject + top file path (lower-cased) so commits
|
|
71
|
+
* that touch the SAME area for the SAME reason cluster together even
|
|
72
|
+
* if the message wording varies.
|
|
73
|
+
*/
|
|
74
|
+
export function buildFingerprint(subject, files, diffLines) {
|
|
75
|
+
const category = classifyCategory(subject);
|
|
76
|
+
const surface = classifySurface(files);
|
|
77
|
+
const sizeBucket = classifySize(diffLines);
|
|
78
|
+
const topFile = files[0] ?? "";
|
|
79
|
+
const topic = simhash64(`${subject.toLowerCase()} ${topFile.toLowerCase()}`);
|
|
80
|
+
// Intent class key = HMAC-stable hash of the 4 components.
|
|
81
|
+
const intentClass = createHash("sha256")
|
|
82
|
+
.update(`${category}|${surface}|${sizeBucket}|${topic}`)
|
|
83
|
+
.digest("hex")
|
|
84
|
+
.slice(0, 12);
|
|
85
|
+
return { category, surface, sizeBucket, intentClass };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Score a vendor reply against an accepted diff using a deterministic
|
|
89
|
+
* token-Jaccard fallback (3-char tokens) — same scoring as HONEST
|
|
90
|
+
* MIRROR for cross-primitive consistency. The caller may supply an
|
|
91
|
+
* embedder for higher-fidelity cosine similarity; absence is fine.
|
|
92
|
+
*/
|
|
93
|
+
export function correctnessScore(reply, acceptedDiff, embed) {
|
|
94
|
+
return scoreWithEmbed(reply, acceptedDiff, embed);
|
|
95
|
+
}
|
|
96
|
+
async function scoreWithEmbed(reply, acceptedDiff, embed) {
|
|
97
|
+
if (embed) {
|
|
98
|
+
try {
|
|
99
|
+
const vecs = await embed([reply, acceptedDiff]);
|
|
100
|
+
if (vecs.length === 2)
|
|
101
|
+
return clamp01(cosine(vecs[0], vecs[1]));
|
|
102
|
+
}
|
|
103
|
+
catch { /* fall through */ }
|
|
104
|
+
}
|
|
105
|
+
// Token-Jaccard fallback with 3-char min so single tokens like "x"
|
|
106
|
+
// don't collapse the score; same rule as HONEST MIRROR calibration.
|
|
107
|
+
const ta = tokenize(reply);
|
|
108
|
+
const tb = tokenize(acceptedDiff);
|
|
109
|
+
if (ta.size === 0 && tb.size === 0)
|
|
110
|
+
return 0;
|
|
111
|
+
let inter = 0;
|
|
112
|
+
for (const t of ta)
|
|
113
|
+
if (tb.has(t))
|
|
114
|
+
inter++;
|
|
115
|
+
const union = ta.size + tb.size - inter;
|
|
116
|
+
return union === 0 ? 0 : inter / union;
|
|
117
|
+
}
|
|
118
|
+
function tokenize(t) {
|
|
119
|
+
const set = new Set();
|
|
120
|
+
for (const tok of t.toLowerCase().split(/[^a-z0-9]+/g)) {
|
|
121
|
+
if (tok.length >= 3)
|
|
122
|
+
set.add(tok);
|
|
123
|
+
}
|
|
124
|
+
return set;
|
|
125
|
+
}
|
|
126
|
+
function cosine(a, b) {
|
|
127
|
+
let dot = 0, na = 0, nb = 0;
|
|
128
|
+
const len = Math.min(a.length, b.length);
|
|
129
|
+
for (let i = 0; i < len; i++) {
|
|
130
|
+
const av = a[i];
|
|
131
|
+
const bv = b[i];
|
|
132
|
+
dot += av * bv;
|
|
133
|
+
na += av * av;
|
|
134
|
+
nb += bv * bv;
|
|
135
|
+
}
|
|
136
|
+
if (na === 0 || nb === 0)
|
|
137
|
+
return 0;
|
|
138
|
+
return dot / (Math.sqrt(na) * Math.sqrt(nb));
|
|
139
|
+
}
|
|
140
|
+
function clamp01(n) { return Math.max(0, Math.min(1, n)); }
|
|
141
|
+
//# sourceMappingURL=intent_class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent_class.js","sourceRoot":"","sources":["../../src/rewind/intent_class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewind.test.d.ts","sourceRoot":"","sources":["../../src/rewind/rewind.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
// v2.31.0 — REWIND discrete root tests (BUG IMMUNITY).
|
|
2
|
+
import { describe, it, expect, beforeEach } from "vitest";
|
|
3
|
+
import { mkdtempSync, mkdirSync, writeFileSync, existsSync } from "node:fs";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import { tmpdir } from "node:os";
|
|
6
|
+
import { join, dirname } from "node:path";
|
|
7
|
+
import { buildFingerprint, classifyCategory, classifySurface, classifySize, sealCapsule, verifyCapsule, runRewind, verifyCard, renderMarkdownCard, listCards, __resetRewindChainForTest, } from "./index.js";
|
|
8
|
+
function makeRepo() {
|
|
9
|
+
const dir = mkdtempSync(join(tmpdir(), "rewind-test-"));
|
|
10
|
+
const init = spawnSync("git", ["init", "-q"], { cwd: dir, encoding: "utf8" });
|
|
11
|
+
if (init.status !== 0)
|
|
12
|
+
throw new Error("git init failed: " + init.stderr);
|
|
13
|
+
spawnSync("git", ["config", "user.email", "test@example.com"], { cwd: dir });
|
|
14
|
+
spawnSync("git", ["config", "user.name", "Test User"], { cwd: dir });
|
|
15
|
+
spawnSync("git", ["config", "commit.gpgsign", "false"], { cwd: dir });
|
|
16
|
+
spawnSync("git", ["config", "tag.gpgsign", "false"], { cwd: dir });
|
|
17
|
+
return dir;
|
|
18
|
+
}
|
|
19
|
+
function commit(dir, file, body, subject) {
|
|
20
|
+
const full = join(dir, file);
|
|
21
|
+
const parent = dirname(full);
|
|
22
|
+
if (!existsSync(parent))
|
|
23
|
+
mkdirSync(parent, { recursive: true });
|
|
24
|
+
writeFileSync(full, body);
|
|
25
|
+
const add = spawnSync("git", ["add", "--", file], { cwd: dir, encoding: "utf8" });
|
|
26
|
+
if (add.status !== 0)
|
|
27
|
+
throw new Error("git add failed: " + add.stderr);
|
|
28
|
+
const env = { ...process.env, GIT_COMMITTER_NAME: "Test User", GIT_COMMITTER_EMAIL: "test@example.com", GIT_AUTHOR_NAME: "Test User", GIT_AUTHOR_EMAIL: "test@example.com" };
|
|
29
|
+
const r = spawnSync("git", ["-c", "commit.gpgsign=false", "commit", "-q", "--no-verify", "-m", subject], { cwd: dir, encoding: "utf8", env });
|
|
30
|
+
if (r.status !== 0)
|
|
31
|
+
throw new Error("git commit failed: " + r.stderr + " :: " + r.stdout);
|
|
32
|
+
}
|
|
33
|
+
describe("intent fingerprint", () => {
|
|
34
|
+
it("classifyCategory extracts conventional commit prefix", () => {
|
|
35
|
+
expect(classifyCategory("feat: add foo")).toBe("feat");
|
|
36
|
+
expect(classifyCategory("fix(parser): handle null")).toBe("fix");
|
|
37
|
+
expect(classifyCategory("docs(readme): update")).toBe("docs");
|
|
38
|
+
expect(classifyCategory("no prefix here")).toBe("other");
|
|
39
|
+
});
|
|
40
|
+
it("classifySurface picks the most-touched area", () => {
|
|
41
|
+
expect(classifySurface(["packages/core/src/foo.ts"])).toBe("core");
|
|
42
|
+
expect(classifySurface(["tests/regression/x.test.ts"])).toBe("tests");
|
|
43
|
+
expect(classifySurface(["docs/FUNCTIONS-EN.md"])).toBe("docs");
|
|
44
|
+
expect(classifySurface(["packages/mcp/src/server.ts", "packages/mcp/src/x.ts", "tests/y.test.ts"]))
|
|
45
|
+
.toBe("mcp");
|
|
46
|
+
expect(classifySurface([])).toBe("other");
|
|
47
|
+
});
|
|
48
|
+
it("classifySize buckets diff lines", () => {
|
|
49
|
+
expect(classifySize(0)).toBe("S");
|
|
50
|
+
expect(classifySize(19)).toBe("S");
|
|
51
|
+
expect(classifySize(20)).toBe("M");
|
|
52
|
+
expect(classifySize(199)).toBe("M");
|
|
53
|
+
expect(classifySize(200)).toBe("L");
|
|
54
|
+
expect(classifySize(1999)).toBe("L");
|
|
55
|
+
expect(classifySize(2000)).toBe("XL");
|
|
56
|
+
});
|
|
57
|
+
it("buildFingerprint is deterministic for same inputs", () => {
|
|
58
|
+
const f1 = buildFingerprint("feat: x", ["packages/core/src/x.ts"], 50);
|
|
59
|
+
const f2 = buildFingerprint("feat: x", ["packages/core/src/x.ts"], 50);
|
|
60
|
+
expect(f1.intentClass).toBe(f2.intentClass);
|
|
61
|
+
expect(f1.category).toBe("feat");
|
|
62
|
+
expect(f1.surface).toBe("core");
|
|
63
|
+
expect(f1.sizeBucket).toBe("M");
|
|
64
|
+
});
|
|
65
|
+
it("buildFingerprint produces different class for different intent", () => {
|
|
66
|
+
const f1 = buildFingerprint("feat: x", ["packages/core/src/x.ts"], 50);
|
|
67
|
+
const f2 = buildFingerprint("fix: y", ["tests/y.test.ts"], 5);
|
|
68
|
+
expect(f1.intentClass).not.toBe(f2.intentClass);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
describe("sealCapsule + verifyCapsule", () => {
|
|
72
|
+
let repo;
|
|
73
|
+
beforeEach(() => { repo = makeRepo(); __resetRewindChainForTest(); });
|
|
74
|
+
it("returns empty capsule when no commits", () => {
|
|
75
|
+
const cap = sealCapsule(repo, "HEAD", 5, 1);
|
|
76
|
+
expect(cap.commitCount).toBe(0);
|
|
77
|
+
expect(cap.commits).toEqual([]);
|
|
78
|
+
expect(verifyCapsule(cap).ok).toBe(true);
|
|
79
|
+
});
|
|
80
|
+
it("seals commits + HMAC verifies", () => {
|
|
81
|
+
commit(repo, "a.ts", "console.log('a');", "feat(core): add a");
|
|
82
|
+
commit(repo, "b.ts", "console.log('b');", "fix(core): handle b");
|
|
83
|
+
commit(repo, "c.ts", "// test", "test(core): cover c-edge case");
|
|
84
|
+
const cap = sealCapsule(repo, "HEAD", 3, 0);
|
|
85
|
+
expect(cap.commitCount).toBeGreaterThan(0);
|
|
86
|
+
expect(cap.hmac).toMatch(/^[a-f0-9]{64}$/);
|
|
87
|
+
expect(verifyCapsule(cap).ok).toBe(true);
|
|
88
|
+
});
|
|
89
|
+
it("tampered capsule fails verify", () => {
|
|
90
|
+
commit(repo, "a.ts", "x", "feat: real subject here");
|
|
91
|
+
const cap = sealCapsule(repo, "HEAD", 1, 0);
|
|
92
|
+
const tampered = { ...cap, commits: [{ ...cap.commits[0], subject: "EVIL TAMPER" }] };
|
|
93
|
+
expect(verifyCapsule(tampered).ok).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
it("filters chore(release) commits out of capsule", () => {
|
|
96
|
+
commit(repo, "v.ts", "x", "chore(release): v9.9.9");
|
|
97
|
+
commit(repo, "real.ts", "x", "feat(core): real feature land here");
|
|
98
|
+
const cap = sealCapsule(repo, "HEAD", 5, 0);
|
|
99
|
+
for (const c of cap.commits) {
|
|
100
|
+
expect(c.subject.toLowerCase()).not.toContain("chore(release)");
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("runRewind", () => {
|
|
105
|
+
let repo;
|
|
106
|
+
beforeEach(() => { repo = makeRepo(); __resetRewindChainForTest(); });
|
|
107
|
+
it("returns NEW status when no prior card exists", async () => {
|
|
108
|
+
commit(repo, "a.ts", "console.log(1);", "feat(core): add deterministic answer here");
|
|
109
|
+
const replay = async () => ({
|
|
110
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "console.log(1);", confidence: 0.8, dtMs: 5,
|
|
111
|
+
});
|
|
112
|
+
const r = await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, replay);
|
|
113
|
+
expect(r.cards.length).toBe(1);
|
|
114
|
+
expect(r.cards[0].regression.status).toBe("new");
|
|
115
|
+
expect(r.cards[0].headline).toMatch(/REWIND/);
|
|
116
|
+
});
|
|
117
|
+
it("detects regression when prior vendor version scored higher", async () => {
|
|
118
|
+
commit(repo, "a.ts", "console.log(1);", "feat(core): well-known answer pattern here");
|
|
119
|
+
const goodReplay = async () => ({
|
|
120
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "console.log(1);", confidence: 0.9, dtMs: 5,
|
|
121
|
+
});
|
|
122
|
+
await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, goodReplay);
|
|
123
|
+
// Second run: same vendor, NEW version, with a clearly worse answer.
|
|
124
|
+
const badReplay = async () => ({
|
|
125
|
+
vendor: "mock-a", vendorVersion: "2.0",
|
|
126
|
+
answer: "totally unrelated nonsense xyz",
|
|
127
|
+
confidence: 0.5, dtMs: 5,
|
|
128
|
+
});
|
|
129
|
+
const r2 = await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, badReplay);
|
|
130
|
+
expect(r2.cards[0].regression.status).toMatch(/regression|stable/);
|
|
131
|
+
expect(r2.cards[0].regression.comparedToVersion).toBe("1.0");
|
|
132
|
+
});
|
|
133
|
+
it("HMAC chain verify passes for fresh card", async () => {
|
|
134
|
+
commit(repo, "a.ts", "x", "feat(core): real subject of work");
|
|
135
|
+
const replay = async () => ({
|
|
136
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "x", confidence: 0.5, dtMs: 5,
|
|
137
|
+
});
|
|
138
|
+
const r = await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, replay);
|
|
139
|
+
expect(verifyCard(r.cards[0]).ok).toBe(true);
|
|
140
|
+
});
|
|
141
|
+
it("listCards returns the persisted ledger entries", async () => {
|
|
142
|
+
commit(repo, "a.ts", "x", "feat(core): real subject");
|
|
143
|
+
const replay = async () => ({
|
|
144
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "x", confidence: 0.5, dtMs: 5,
|
|
145
|
+
});
|
|
146
|
+
await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, replay);
|
|
147
|
+
const cards = listCards(repo);
|
|
148
|
+
expect(cards.length).toBeGreaterThan(0);
|
|
149
|
+
expect(cards[0].vendor).toBe("mock-a");
|
|
150
|
+
});
|
|
151
|
+
it("renderMarkdownCard renders a non-empty card", async () => {
|
|
152
|
+
commit(repo, "a.ts", "x", "feat(core): real work");
|
|
153
|
+
const replay = async () => ({
|
|
154
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "x", confidence: 0.5, dtMs: 5,
|
|
155
|
+
});
|
|
156
|
+
const r = await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, replay);
|
|
157
|
+
const md = renderMarkdownCard(r.cards[0]);
|
|
158
|
+
expect(md).toMatch(/REWIND/);
|
|
159
|
+
expect(md).toMatch(/mock-a/);
|
|
160
|
+
expect(md).toMatch(/correctness/);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe("HMAC card tamper", () => {
|
|
164
|
+
it("verifyCard rejects mutated card", async () => {
|
|
165
|
+
const repo = makeRepo();
|
|
166
|
+
commit(repo, "a.ts", "x", "feat(core): real subject");
|
|
167
|
+
const replay = async () => ({
|
|
168
|
+
vendor: "mock-a", vendorVersion: "1.0", answer: "x", confidence: 0.5, dtMs: 5,
|
|
169
|
+
});
|
|
170
|
+
__resetRewindChainForTest();
|
|
171
|
+
const r = await runRewind(repo, { vendors: ["mock-a"], range: "HEAD", count: 1, seed: 0 }, replay);
|
|
172
|
+
const tampered = { ...r.cards[0], meanCorrectness: 0.99 };
|
|
173
|
+
expect(verifyCard(tampered).ok).toBe(false);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=rewind.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewind.test.js","sourceRoot":"","sources":["../../src/rewind/rewind.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.31.0 — REWIND types.
|
|
3
|
+
*
|
|
4
|
+
* Time-Capsule Regression Replay: pin a set of past git commits as a
|
|
5
|
+
* Capsule (intent-classified, HMAC-anchored), then re-fire that exact
|
|
6
|
+
* capsule at every vendor release to track regression / improvement
|
|
7
|
+
* over time. Composes with HONEST MIRROR — REWIND adds the
|
|
8
|
+
* vendor-version dimension + the persistent Capsule (HM is one-shot).
|
|
9
|
+
*/
|
|
10
|
+
export interface IntentFingerprint {
|
|
11
|
+
/** feat / fix / docs / refactor / chore / test / build / perf / style / ci */
|
|
12
|
+
category: string;
|
|
13
|
+
/** core / mcp / docs / tests / scripts / cli / embeddings / other */
|
|
14
|
+
surface: string;
|
|
15
|
+
/** S (< 20 lines) / M (< 200) / L (< 2000) / XL */
|
|
16
|
+
sizeBucket: "S" | "M" | "L" | "XL";
|
|
17
|
+
/** 64-bit simhash of "category surface sizeBucket subject" — used to bucket */
|
|
18
|
+
intentClass: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CapsuleCommit {
|
|
21
|
+
/** Truncated commit SHA (first 7). */
|
|
22
|
+
sha: string;
|
|
23
|
+
/** ISO timestamp of the original commit. */
|
|
24
|
+
at: string;
|
|
25
|
+
/** Scrubbed commit subject — used as the eval prompt. */
|
|
26
|
+
subject: string;
|
|
27
|
+
/** Scrubbed commit body (often empty). */
|
|
28
|
+
body: string;
|
|
29
|
+
/** Accepted answer = the diff text, scrubbed + truncated to 8KB. */
|
|
30
|
+
acceptedDiff: string;
|
|
31
|
+
/** Files touched (paths only — no content). */
|
|
32
|
+
files: string[];
|
|
33
|
+
fingerprint: IntentFingerprint;
|
|
34
|
+
}
|
|
35
|
+
export interface Capsule {
|
|
36
|
+
/** Stable ID = sha256(seed + repoRoot + commit SHAs joined). */
|
|
37
|
+
id: string;
|
|
38
|
+
spec: {
|
|
39
|
+
name: "MNEME-REWIND-CAPSULE";
|
|
40
|
+
version: "1.0";
|
|
41
|
+
};
|
|
42
|
+
/** When the capsule was sealed. */
|
|
43
|
+
sealedAt: string;
|
|
44
|
+
/** Git range the capsule was sampled from, e.g. "HEAD~100..HEAD". */
|
|
45
|
+
range: string;
|
|
46
|
+
commitCount: number;
|
|
47
|
+
/** Aggregated count per intent class — used for regression bucketing. */
|
|
48
|
+
intentDistribution: Record<string, number>;
|
|
49
|
+
commits: CapsuleCommit[];
|
|
50
|
+
/** Capsule HMAC over the canonical body. */
|
|
51
|
+
hmac: string;
|
|
52
|
+
bodyDigest: string;
|
|
53
|
+
}
|
|
54
|
+
export interface VendorCallResult {
|
|
55
|
+
vendor: string;
|
|
56
|
+
/** Vendor self-reported version / model id (immutable per release). */
|
|
57
|
+
vendorVersion: string;
|
|
58
|
+
/** Reproduced answer (free-text — the vendor's attempt at the diff/explanation). */
|
|
59
|
+
answer: string;
|
|
60
|
+
/** Self-reported confidence 0..1. */
|
|
61
|
+
confidence: number;
|
|
62
|
+
dtMs: number;
|
|
63
|
+
error?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface RewindReplayFn {
|
|
66
|
+
(input: {
|
|
67
|
+
vendor: string;
|
|
68
|
+
/** The capsule's intent subject — vendor sees this as a normal task. */
|
|
69
|
+
prompt: string;
|
|
70
|
+
/** Original commit timestamp (preserved so the vendor sees the realistic context). */
|
|
71
|
+
artifactTimestamp: string;
|
|
72
|
+
}): Promise<VendorCallResult>;
|
|
73
|
+
}
|
|
74
|
+
export interface IntentClassScore {
|
|
75
|
+
intentClass: string;
|
|
76
|
+
/** Number of commits in this class. */
|
|
77
|
+
n: number;
|
|
78
|
+
/** Mean similarity 0..1 between vendor answer + accepted diff. */
|
|
79
|
+
meanCorrectness: number;
|
|
80
|
+
/** Mean self-reported confidence 0..1. */
|
|
81
|
+
meanConfidence: number;
|
|
82
|
+
}
|
|
83
|
+
export interface RegressionVerdict {
|
|
84
|
+
/** "regression" | "stable" | "improvement" | "new" */
|
|
85
|
+
status: "regression" | "stable" | "improvement" | "new";
|
|
86
|
+
/** Delta versus prior card for the same vendor (different version). */
|
|
87
|
+
deltaCorrectness: number;
|
|
88
|
+
/** Worst-hit intent class — what the new version got worse at. */
|
|
89
|
+
worstIntentClass?: {
|
|
90
|
+
intentClass: string;
|
|
91
|
+
deltaCorrectness: number;
|
|
92
|
+
};
|
|
93
|
+
/** Best-hit intent class — what the new version got better at. */
|
|
94
|
+
bestIntentClass?: {
|
|
95
|
+
intentClass: string;
|
|
96
|
+
deltaCorrectness: number;
|
|
97
|
+
};
|
|
98
|
+
/** Comparator card seq (so the user can replay the comparison). */
|
|
99
|
+
comparedToSeq?: number;
|
|
100
|
+
comparedToVersion?: string;
|
|
101
|
+
}
|
|
102
|
+
export interface VendorRegressionCard {
|
|
103
|
+
spec: {
|
|
104
|
+
name: "MNEME-REWIND-CARD";
|
|
105
|
+
version: "1.0";
|
|
106
|
+
};
|
|
107
|
+
capsuleId: string;
|
|
108
|
+
vendor: string;
|
|
109
|
+
vendorVersion: string;
|
|
110
|
+
runAt: string;
|
|
111
|
+
totalMs: number;
|
|
112
|
+
/** Overall correctness across all commits. */
|
|
113
|
+
meanCorrectness: number;
|
|
114
|
+
/** Overall confidence across all commits. */
|
|
115
|
+
meanConfidence: number;
|
|
116
|
+
/** Calibration delta = confidence − correctness. Positive = over-confident. */
|
|
117
|
+
meanCalibrationDelta: number;
|
|
118
|
+
perIntentClass: IntentClassScore[];
|
|
119
|
+
regression: RegressionVerdict;
|
|
120
|
+
/** Human-readable headline. */
|
|
121
|
+
headline: string;
|
|
122
|
+
/** Suggested Aletheia weight 0.1..0.95 — feedback into CONCLAVE. */
|
|
123
|
+
suggestedAletheiaWeight: number;
|
|
124
|
+
hmac: string;
|
|
125
|
+
seq: number;
|
|
126
|
+
bodyDigest: string;
|
|
127
|
+
}
|
|
128
|
+
export interface RewindOptions {
|
|
129
|
+
vendors: string[];
|
|
130
|
+
/** Git range to sample, default "HEAD~100..HEAD". */
|
|
131
|
+
range?: string;
|
|
132
|
+
/** Override sample count (default 20). 0 = all. */
|
|
133
|
+
count?: number;
|
|
134
|
+
/** Deterministic seed (default Date.now()). */
|
|
135
|
+
seed?: number;
|
|
136
|
+
/** Reuse an existing sealed capsule by id (so the SAME prompts are
|
|
137
|
+
* fired at every new vendor release — that's the time-capsule). */
|
|
138
|
+
reuseCapsuleId?: string;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rewind/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.31.0 — REWIND types.
|
|
3
|
+
*
|
|
4
|
+
* Time-Capsule Regression Replay: pin a set of past git commits as a
|
|
5
|
+
* Capsule (intent-classified, HMAC-anchored), then re-fire that exact
|
|
6
|
+
* capsule at every vendor release to track regression / improvement
|
|
7
|
+
* over time. Composes with HONEST MIRROR — REWIND adds the
|
|
8
|
+
* vendor-version dimension + the persistent Capsule (HM is one-shot).
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rewind/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acgv_vaccine.d.ts","sourceRoot":"","sources":["../../src/squadron/acgv_vaccine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;CAClB;AAOD;;sDAEsD;AACtD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB9C;AAED;yCACyC;AACzC,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AASD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAe3D;AAED;8DAC8D;AAC9D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAazF;AAED;sDACsD;AACtD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,UAAU,
|
|
1
|
+
{"version":3,"file":"acgv_vaccine.d.ts","sourceRoot":"","sources":["../../src/squadron/acgv_vaccine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,OAAO,EAAE,OAAO,CAAC;CAClB;AAOD;;sDAEsD;AACtD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAsB9C;AAED;yCACyC;AACzC,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAU5D;AASD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CAe3D;AAED;8DAC8D;AAC9D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAazF;AAED;sDACsD;AACtD,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,UAAU,CAoCZ"}
|
|
@@ -140,6 +140,21 @@ export function emitVaccine(repoRoot, claim, signature) {
|
|
|
140
140
|
appendFileSync(vaccinePath(repoRoot), JSON.stringify(vaccine) + "\n", "utf8");
|
|
141
141
|
}
|
|
142
142
|
catch { /* best-effort */ }
|
|
143
|
+
// v2.31.0 — HGP composition. Best-effort: every refuted claim also
|
|
144
|
+
// becomes a Hallucination Genome Project record (deterministic
|
|
145
|
+
// CVE-style HGP-ID). Vendor attribution is unavailable from this
|
|
146
|
+
// call-site; downstream callers can use the HGP API directly with
|
|
147
|
+
// vendor info when known. We import lazily to avoid cycles +
|
|
148
|
+
// swallow any failure so vaccine emission stays the hard path.
|
|
149
|
+
try {
|
|
150
|
+
void import("../hgp/index.js").then((hgp) => {
|
|
151
|
+
try {
|
|
152
|
+
hgp.recordHallucination(repoRoot, { claim, signature });
|
|
153
|
+
}
|
|
154
|
+
catch { /* best-effort */ }
|
|
155
|
+
}).catch(() => { });
|
|
156
|
+
}
|
|
157
|
+
catch { /* best-effort */ }
|
|
143
158
|
return vaccine;
|
|
144
159
|
}
|
|
145
160
|
//# sourceMappingURL=acgv_vaccine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acgv_vaccine.js","sourceRoot":"","sources":["../../src/squadron/acgv_vaccine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"acgv_vaccine.js","sourceRoot":"","sources":["../../src/squadron/acgv_vaccine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,KAAK,CAiJ9C,CAAC"}
|
|
@@ -139,5 +139,33 @@ export const CLAIM_CATALOG = [
|
|
|
139
139
|
probeId: "probe.honest_mirror.recent_calibration",
|
|
140
140
|
severity: "info",
|
|
141
141
|
},
|
|
142
|
+
// ── v2.31.0 REWIND + HGP claims ────────────────────────────────────
|
|
143
|
+
{
|
|
144
|
+
id: "claim.rewind.card_count_known",
|
|
145
|
+
source: "v2.31.0 release notes",
|
|
146
|
+
text: "REWIND VendorRegressionCard ledger exists (or is honestly empty on first install)",
|
|
147
|
+
kind: "numeric",
|
|
148
|
+
asserted: { value: 0, op: ">=", unit: "cards" },
|
|
149
|
+
probeId: "probe.rewind.card_count",
|
|
150
|
+
severity: "info",
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: "claim.hgp.registry_size_known",
|
|
154
|
+
source: "v2.31.0 release notes",
|
|
155
|
+
text: "HGP local registry has a non-negative count of distinct HGP-IDs (zero on first install is honest)",
|
|
156
|
+
kind: "numeric",
|
|
157
|
+
asserted: { value: 0, op: ">=", unit: "ids" },
|
|
158
|
+
probeId: "probe.hgp.registry_size",
|
|
159
|
+
severity: "info",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
id: "claim.hgp.federation_default_off",
|
|
163
|
+
source: "v2.31.0 release notes",
|
|
164
|
+
text: "HGP federation is opt-in / private-by-default (CONSENT FABRIC)",
|
|
165
|
+
kind: "numeric",
|
|
166
|
+
asserted: { value: 0, op: "=", unit: "boolean" },
|
|
167
|
+
probeId: "probe.hgp.federation_default_off",
|
|
168
|
+
severity: "block",
|
|
169
|
+
},
|
|
142
170
|
];
|
|
143
171
|
//# sourceMappingURL=claims.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/truth_gate/claims.ts"],"names":[],"mappings":"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"}
|