@mneme-ai/core 2.30.0 → 2.32.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 +22 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/flywheel/controller.d.ts +51 -0
- package/dist/flywheel/controller.d.ts.map +1 -0
- package/dist/flywheel/controller.js +186 -0
- package/dist/flywheel/controller.js.map +1 -0
- package/dist/flywheel/flywheel.test.d.ts +2 -0
- package/dist/flywheel/flywheel.test.d.ts.map +1 -0
- package/dist/flywheel/flywheel.test.js +264 -0
- package/dist/flywheel/flywheel.test.js.map +1 -0
- package/dist/flywheel/fuse.d.ts +16 -0
- package/dist/flywheel/fuse.d.ts.map +1 -0
- package/dist/flywheel/fuse.js +132 -0
- package/dist/flywheel/fuse.js.map +1 -0
- package/dist/flywheel/harvest.d.ts +31 -0
- package/dist/flywheel/harvest.d.ts.map +1 -0
- package/dist/flywheel/harvest.js +286 -0
- package/dist/flywheel/harvest.js.map +1 -0
- package/dist/flywheel/index.d.ts +26 -0
- package/dist/flywheel/index.d.ts.map +1 -0
- package/dist/flywheel/index.js +19 -0
- package/dist/flywheel/index.js.map +1 -0
- package/dist/flywheel/liveness.d.ts +34 -0
- package/dist/flywheel/liveness.d.ts.map +1 -0
- package/dist/flywheel/liveness.js +63 -0
- package/dist/flywheel/liveness.js.map +1 -0
- package/dist/flywheel/personal_cheatsheet.d.ts +34 -0
- package/dist/flywheel/personal_cheatsheet.d.ts.map +1 -0
- package/dist/flywheel/personal_cheatsheet.js +95 -0
- package/dist/flywheel/personal_cheatsheet.js.map +1 -0
- package/dist/flywheel/prescribe.d.ts +20 -0
- package/dist/flywheel/prescribe.d.ts.map +1 -0
- package/dist/flywheel/prescribe.js +119 -0
- package/dist/flywheel/prescribe.js.map +1 -0
- package/dist/flywheel/reciprocity.d.ts +36 -0
- package/dist/flywheel/reciprocity.d.ts.map +1 -0
- package/dist/flywheel/reciprocity.js +113 -0
- package/dist/flywheel/reciprocity.js.map +1 -0
- package/dist/flywheel/types.d.ts +117 -0
- package/dist/flywheel/types.d.ts.map +1 -0
- package/dist/flywheel/types.js +25 -0
- package/dist/flywheel/types.js.map +1 -0
- package/dist/flywheel/vendor_bulletin.d.ts +44 -0
- package/dist/flywheel/vendor_bulletin.d.ts.map +1 -0
- package/dist/flywheel/vendor_bulletin.js +118 -0
- package/dist/flywheel/vendor_bulletin.js.map +1 -0
- 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 +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -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 +38 -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 +103 -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,CA2J9C,CAAC"}
|
|
@@ -139,5 +139,43 @@ 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
|
+
},
|
|
170
|
+
// ── v2.32.0 FLYWHEEL claim ─────────────────────────────────────────
|
|
171
|
+
{
|
|
172
|
+
id: "claim.flywheel.health_known",
|
|
173
|
+
source: "v2.32.0 release notes",
|
|
174
|
+
text: "FLYWHEEL self-audit health is a known non-negative number on first install (or improves to ≥ 0 after first run)",
|
|
175
|
+
kind: "numeric",
|
|
176
|
+
asserted: { value: 0, op: ">=", unit: "score" },
|
|
177
|
+
probeId: "probe.flywheel.health",
|
|
178
|
+
severity: "info",
|
|
179
|
+
},
|
|
142
180
|
];
|
|
143
181
|
//# sourceMappingURL=claims.js.map
|