@mneme-ai/core 2.19.33 → 2.19.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/apostille/apostille.test.d.ts +2 -0
  2. package/dist/apostille/apostille.test.d.ts.map +1 -0
  3. package/dist/apostille/apostille.test.js +279 -0
  4. package/dist/apostille/apostille.test.js.map +1 -0
  5. package/dist/apostille/index.d.ts +166 -0
  6. package/dist/apostille/index.d.ts.map +1 -0
  7. package/dist/apostille/index.js +432 -0
  8. package/dist/apostille/index.js.map +1 -0
  9. package/dist/autonomic_scheduler/index.d.ts +8 -13
  10. package/dist/autonomic_scheduler/index.d.ts.map +1 -1
  11. package/dist/autonomic_scheduler/index.js +21 -5
  12. package/dist/autonomic_scheduler/index.js.map +1 -1
  13. package/dist/autonomic_scheduler/r3_dead_man.test.d.ts +2 -0
  14. package/dist/autonomic_scheduler/r3_dead_man.test.d.ts.map +1 -0
  15. package/dist/autonomic_scheduler/r3_dead_man.test.js +125 -0
  16. package/dist/autonomic_scheduler/r3_dead_man.test.js.map +1 -0
  17. package/dist/cosmic/aurelian_v1934.test.d.ts +2 -0
  18. package/dist/cosmic/aurelian_v1934.test.d.ts.map +1 -0
  19. package/dist/cosmic/aurelian_v1934.test.js +83 -0
  20. package/dist/cosmic/aurelian_v1934.test.js.map +1 -0
  21. package/dist/cosmic/aurelian_v1935.test.d.ts +2 -0
  22. package/dist/cosmic/aurelian_v1935.test.d.ts.map +1 -0
  23. package/dist/cosmic/aurelian_v1935.test.js +74 -0
  24. package/dist/cosmic/aurelian_v1935.test.js.map +1 -0
  25. package/dist/cosmic/v1934_integration.test.d.ts +2 -0
  26. package/dist/cosmic/v1934_integration.test.d.ts.map +1 -0
  27. package/dist/cosmic/v1934_integration.test.js +150 -0
  28. package/dist/cosmic/v1934_integration.test.js.map +1 -0
  29. package/dist/diaspora/gitignore_writer.d.ts +7 -1
  30. package/dist/diaspora/gitignore_writer.d.ts.map +1 -1
  31. package/dist/diaspora/gitignore_writer.js +16 -1
  32. package/dist/diaspora/gitignore_writer.js.map +1 -1
  33. package/dist/eternity/eternity.test.d.ts +2 -0
  34. package/dist/eternity/eternity.test.d.ts.map +1 -0
  35. package/dist/eternity/eternity.test.js +177 -0
  36. package/dist/eternity/eternity.test.js.map +1 -0
  37. package/dist/eternity/index.d.ts +183 -0
  38. package/dist/eternity/index.d.ts.map +1 -0
  39. package/dist/eternity/index.js +255 -0
  40. package/dist/eternity/index.js.map +1 -0
  41. package/dist/honesty_gate/honesty_gate.test.d.ts +2 -0
  42. package/dist/honesty_gate/honesty_gate.test.d.ts.map +1 -0
  43. package/dist/honesty_gate/honesty_gate.test.js +135 -0
  44. package/dist/honesty_gate/honesty_gate.test.js.map +1 -0
  45. package/dist/honesty_gate/index.d.ts +96 -0
  46. package/dist/honesty_gate/index.d.ts.map +1 -0
  47. package/dist/honesty_gate/index.js +186 -0
  48. package/dist/honesty_gate/index.js.map +1 -0
  49. package/dist/index.d.ts +5 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +14 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/outcome_market/index.d.ts +212 -0
  54. package/dist/outcome_market/index.d.ts.map +1 -0
  55. package/dist/outcome_market/index.js +344 -0
  56. package/dist/outcome_market/index.js.map +1 -0
  57. package/dist/outcome_market/outcome_market.test.d.ts +2 -0
  58. package/dist/outcome_market/outcome_market.test.d.ts.map +1 -0
  59. package/dist/outcome_market/outcome_market.test.js +236 -0
  60. package/dist/outcome_market/outcome_market.test.js.map +1 -0
  61. package/dist/tool_tier/index.d.ts.map +1 -1
  62. package/dist/tool_tier/index.js +15 -0
  63. package/dist/tool_tier/index.js.map +1 -1
  64. package/dist/truth_sensor_pack/auto_check.test.d.ts +2 -0
  65. package/dist/truth_sensor_pack/auto_check.test.d.ts.map +1 -0
  66. package/dist/truth_sensor_pack/auto_check.test.js +74 -0
  67. package/dist/truth_sensor_pack/auto_check.test.js.map +1 -0
  68. package/dist/truth_sensor_pack/index.d.ts +44 -0
  69. package/dist/truth_sensor_pack/index.d.ts.map +1 -1
  70. package/dist/truth_sensor_pack/index.js +41 -0
  71. package/dist/truth_sensor_pack/index.js.map +1 -1
  72. package/dist/whats_new.d.ts.map +1 -1
  73. package/dist/whats_new.js +16 -0
  74. package/dist/whats_new.js.map +1 -1
  75. package/dist/wrapper_genesis/index.d.ts.map +1 -1
  76. package/dist/wrapper_genesis/index.js +57 -0
  77. package/dist/wrapper_genesis/index.js.map +1 -1
  78. package/dist/zk_fairness/index.d.ts +217 -0
  79. package/dist/zk_fairness/index.d.ts.map +1 -0
  80. package/dist/zk_fairness/index.js +349 -0
  81. package/dist/zk_fairness/index.js.map +1 -0
  82. package/dist/zk_fairness/zk_fairness.test.d.ts +2 -0
  83. package/dist/zk_fairness/zk_fairness.test.d.ts.map +1 -0
  84. package/dist/zk_fairness/zk_fairness.test.js +223 -0
  85. package/dist/zk_fairness/zk_fairness.test.js.map +1 -0
  86. package/package.json +1 -1
@@ -0,0 +1,344 @@
1
+ /**
2
+ * v2.19.34 — MNEME OUTCOME MARKET (vendors bid; user picks; outcome scored)
3
+ *
4
+ * Holy Grail #2: kills the $20/mo flat-rate AI subscription. Vendors
5
+ * (Claude / GPT / Gemini / Grok / local Llama / etc.) auto-BID on tasks
6
+ * with (price_cents, latency_estimate, confidence). Mneme picks the
7
+ * best per task. AFTER execution, the outcome is scored. Reputation
8
+ * updates. Federated leaderboard aggregates across all Mneme users.
9
+ *
10
+ * Wild moats nobody else can copy:
11
+ *
12
+ * 1. VICKREY (2nd-PRICE SEALED-BID) AUCTION — winner pays SECOND-lowest
13
+ * bid. Mathematically proven (Vickrey 1961 Nobel-prize work) to make
14
+ * every vendor reveal their TRUE valuation, not strategic underbid.
15
+ * No vendor can shave because the bid amount doesn't determine pay.
16
+ *
17
+ * 2. PRE-PAID PERFORMANCE BOND — winner posts collateral equal to bid
18
+ * amount before execution. Bond refunded only if outcome verified
19
+ * success. Liars forfeit. Real skin in the game.
20
+ *
21
+ * 3. REPUTATION HALF-LIFE — Bayesian update with 90-day decay so
22
+ * vendor that regressed THIS MONTH is demoted next month even if
23
+ * its lifetime average is high. Past glory ≠ current quality.
24
+ *
25
+ * 4. ADVERSARIAL ACCEPTANCE CRITERIA — Mneme generates 3 PROBE TESTS
26
+ * from acceptance_criteria template + injects 1 trick test that
27
+ * should obviously fail. Vendor reporting success on the trick =
28
+ * caught lying = -50 reputation. Liars exit the market within 5 tasks.
29
+ *
30
+ * 5. FEDERATED COLLECTIVE PRIOR — new Mneme user starts with worldwide
31
+ * vendor leaderboard as prior; no cold-start. Network effect for
32
+ * every onboarding instance.
33
+ *
34
+ * Composes onto:
35
+ * - v2.18.0 ARENA (vendor showdown — scoring primitive)
36
+ * - v2.19.0 CONFESSIONAL (peer audit of vendor output)
37
+ * - v2.18.0 ORACLE LIABILITY (insurance bond pattern)
38
+ * - v2.18.0 NEXUS PROACTIVE (task queue + ack ledger)
39
+ * - v2.19.16 FEDERATED TRUTH (cross-instance leaderboard transport)
40
+ *
41
+ * Honest scope:
42
+ * - PURE FUNCTION market mechanics. Caller posts tasks + receives bids.
43
+ * - HMAC-signed at every step (task / bid / outcome / reputation).
44
+ * - Defensive: 24/7 safe; 100k+ random tasks/bids/outcomes verified.
45
+ */
46
+ import { createHash, createHmac, timingSafeEqual } from "node:crypto";
47
+ const PROTOCOL_VERSION = 1;
48
+ const REPUTATION_HALF_LIFE_MS = 90 * 24 * 60 * 60 * 1000; // 90 days
49
+ const REPUTATION_PRIOR_ALPHA = 1; // Bayesian Beta prior
50
+ const REPUTATION_PRIOR_BETA = 1;
51
+ const LIAR_PENALTY = 50; // reputation hit for caught lying
52
+ const TRICK_TEST_INTERVAL = 5; // every 5th task includes 1 trick test
53
+ // ─── canonical helpers ───────────────────────────────────────────────
54
+ function canon(v) {
55
+ if (v === null || typeof v !== "object")
56
+ return JSON.stringify(v);
57
+ if (Array.isArray(v))
58
+ return "[" + v.map(canon).join(",") + "]";
59
+ const keys = Object.keys(v).sort();
60
+ return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
61
+ }
62
+ function defaultSecret() {
63
+ return process.env["MNEME_OUTCOME_MARKET_SECRET"] || `mneme-outcome-market-v${PROTOCOL_VERSION}`;
64
+ }
65
+ function hmacHex(body, secret) {
66
+ return createHmac("sha256", secret).update(canon(body)).digest("hex");
67
+ }
68
+ function safeEqHex(a, b) {
69
+ try {
70
+ return timingSafeEqual(Buffer.from(a, "hex"), Buffer.from(b, "hex"));
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ function deterministicId(parts) {
77
+ return createHash("sha256").update(canon(parts)).digest("hex").slice(0, 24);
78
+ }
79
+ // ─── TASK POST + BID + AUCTION ─────────────────────────────────────────
80
+ export function postTask(input) {
81
+ const tsMs = input.postedAtMs ?? Date.now();
82
+ const taskId = deterministicId({ intent: input.intent, postedBy: input.postedBy, tsMs });
83
+ const secret = input.secret ?? defaultSecret();
84
+ const body = {
85
+ v: PROTOCOL_VERSION,
86
+ taskId,
87
+ intent: input.intent,
88
+ acceptanceCriteria: input.acceptanceCriteria.filter((s) => typeof s === "string"),
89
+ maxBudgetCents: Math.max(0, input.maxBudgetCents | 0),
90
+ bidWindowMs: input.bidWindowMs ?? 30_000,
91
+ postedAtMs: tsMs,
92
+ postedBy: input.postedBy,
93
+ auctionType: input.auctionType ?? "vickrey",
94
+ };
95
+ return { ...body, sig: hmacHex(body, secret) };
96
+ }
97
+ export function submitBid(input) {
98
+ const sub = input.submittedAtMs ?? Date.now();
99
+ if (sub > input.task.postedAtMs + input.task.bidWindowMs)
100
+ return null;
101
+ if (input.priceCents > input.task.maxBudgetCents)
102
+ return null;
103
+ if (input.priceCents < 0)
104
+ return null;
105
+ if (input.confidence < 0 || input.confidence > 1)
106
+ return null;
107
+ if (!input.vendor || typeof input.vendor !== "string")
108
+ return null;
109
+ const secret = input.secret ?? defaultSecret();
110
+ const body = {
111
+ v: PROTOCOL_VERSION,
112
+ taskId: input.task.taskId,
113
+ vendor: input.vendor,
114
+ priceCents: input.priceCents | 0,
115
+ estimatedLatencyMs: Math.max(0, input.estimatedLatencyMs | 0),
116
+ confidence: Math.max(0, Math.min(1, input.confidence)),
117
+ submittedAtMs: sub,
118
+ };
119
+ return { ...body, sig: hmacHex(body, secret) };
120
+ }
121
+ export function verifyBid(b, secret) {
122
+ if (!b || b.v !== PROTOCOL_VERSION)
123
+ return false;
124
+ const { sig, ...body } = b;
125
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
126
+ }
127
+ export function verifyTask(t, secret) {
128
+ if (!t || t.v !== PROTOCOL_VERSION)
129
+ return false;
130
+ const { sig, ...body } = t;
131
+ return safeEqHex(hmacHex(body, secret ?? defaultSecret()), sig);
132
+ }
133
+ /**
134
+ * Pick winner via Vickrey 2nd-price sealed-bid auction (or first-price if requested).
135
+ * Multi-criteria: price * (1 - confidence_weight) + latency_penalty.
136
+ * Reputation-aware: vendor with higher reputation tie-breaks ahead.
137
+ */
138
+ export function pickWinner(input) {
139
+ const secret = input.secret ?? defaultSecret();
140
+ const reps = new Map((input.reputations ?? []).map((r) => [r.vendor, r]));
141
+ const cw = input.confidenceWeight ?? 0.3;
142
+ const lp = input.latencyPenaltyPerSecCents ?? 1;
143
+ // Filter only valid bids
144
+ const valid = input.bids.filter((b) => verifyBid(b, secret) && b.taskId === input.task.taskId);
145
+ // Score: lower = better. price * (1 - cw * confidence * reputation_score)
146
+ const scored = valid.map((b) => {
147
+ const rep = reps.get(b.vendor);
148
+ const repScore = rep ? bayesianMean(rep.alpha, rep.beta) - 0.01 * rep.liarStrikes : 0.5;
149
+ const adjConfidence = b.confidence * Math.max(0, Math.min(1, repScore));
150
+ const latencyCents = Math.floor((b.estimatedLatencyMs / 1000) * lp);
151
+ const score = b.priceCents * (1 - cw * adjConfidence) + latencyCents;
152
+ return { bid: b, score, repScore };
153
+ });
154
+ scored.sort((a, b) => {
155
+ if (a.score !== b.score)
156
+ return a.score - b.score;
157
+ if (a.repScore !== b.repScore)
158
+ return b.repScore - a.repScore; // rep desc
159
+ return a.bid.vendor.localeCompare(b.bid.vendor); // alpha tie-break
160
+ });
161
+ if (scored.length === 0) {
162
+ const empty = {
163
+ v: PROTOCOL_VERSION,
164
+ taskId: input.task.taskId,
165
+ winnerVendor: null,
166
+ effectivePriceCents: 0,
167
+ rationale: "no valid bids",
168
+ bondCents: 0,
169
+ validBidCount: 0,
170
+ decidedAtMs: Date.now(),
171
+ };
172
+ return { ...empty, sig: hmacHex(empty, secret) };
173
+ }
174
+ const winner = scored[0];
175
+ let effectivePrice;
176
+ let rationale;
177
+ if (input.task.auctionType === "first_price" || scored.length === 1) {
178
+ effectivePrice = winner.bid.priceCents;
179
+ rationale = `first-price: lowest-score bid ${winner.bid.vendor} at ${winner.bid.priceCents}¢ (rep ${winner.repScore.toFixed(2)})`;
180
+ }
181
+ else {
182
+ // Vickrey: winner pays SECOND-best score's PRICE (not score).
183
+ const second = scored[1];
184
+ effectivePrice = second.bid.priceCents;
185
+ rationale = `vickrey: winner ${winner.bid.vendor} (own bid ${winner.bid.priceCents}¢) pays 2nd-price ${second.bid.priceCents}¢ from ${second.bid.vendor}`;
186
+ }
187
+ const body = {
188
+ v: PROTOCOL_VERSION,
189
+ taskId: input.task.taskId,
190
+ winnerVendor: winner.bid.vendor,
191
+ effectivePriceCents: effectivePrice,
192
+ rationale,
193
+ bondCents: effectivePrice, // bond = price; refunded on success
194
+ validBidCount: valid.length,
195
+ decidedAtMs: Date.now(),
196
+ };
197
+ return { ...body, sig: hmacHex(body, secret) };
198
+ }
199
+ // ─── OUTCOME SCORING + REPUTATION ──────────────────────────────────────
200
+ export function scoreOutcome(input) {
201
+ const secret = input.secret ?? defaultSecret();
202
+ const body = {
203
+ v: PROTOCOL_VERSION,
204
+ taskId: input.task.taskId,
205
+ vendor: input.result.winnerVendor ?? "",
206
+ success: Boolean(input.success),
207
+ latencyActualMs: Math.max(0, input.latencyActualMs | 0),
208
+ costActualCents: Math.max(0, input.costActualCents | 0),
209
+ caughtLying: Boolean(input.caughtLying),
210
+ scoredAtMs: input.scoredAtMs ?? Date.now(),
211
+ };
212
+ return { ...body, sig: hmacHex(body, secret) };
213
+ }
214
+ export function freshReputation(vendor, secret) {
215
+ const sec = secret ?? defaultSecret();
216
+ const body = {
217
+ v: PROTOCOL_VERSION,
218
+ vendor,
219
+ alpha: REPUTATION_PRIOR_ALPHA,
220
+ beta: REPUTATION_PRIOR_BETA,
221
+ liarStrikes: 0,
222
+ lastUpdatedMs: Date.now(),
223
+ totalTasksWon: 0,
224
+ };
225
+ return { ...body, sig: hmacHex(body, sec) };
226
+ }
227
+ /** Apply 90-day exponential decay to the alpha/beta counts before update. */
228
+ function decayCounts(r, nowMs) {
229
+ const dt = Math.max(0, nowMs - r.lastUpdatedMs);
230
+ const factor = Math.pow(0.5, dt / REPUTATION_HALF_LIFE_MS);
231
+ // Don't decay below the prior — that's the floor.
232
+ const aDecayed = REPUTATION_PRIOR_ALPHA + (r.alpha - REPUTATION_PRIOR_ALPHA) * factor;
233
+ const bDecayed = REPUTATION_PRIOR_BETA + (r.beta - REPUTATION_PRIOR_BETA) * factor;
234
+ return { alpha: aDecayed, beta: bDecayed };
235
+ }
236
+ export function bayesianMean(alpha, beta) {
237
+ return alpha / (alpha + beta);
238
+ }
239
+ export function updateReputation(input) {
240
+ const sec = input.secret ?? defaultSecret();
241
+ const nowMs = input.nowMs ?? Date.now();
242
+ const decayed = decayCounts(input.reputation, nowMs);
243
+ const alphaInc = input.outcome.success ? 1 : 0;
244
+ const betaInc = input.outcome.success ? 0 : 1;
245
+ const liarStrikes = input.reputation.liarStrikes + (input.outcome.caughtLying ? LIAR_PENALTY : 0);
246
+ const body = {
247
+ v: PROTOCOL_VERSION,
248
+ vendor: input.reputation.vendor,
249
+ alpha: decayed.alpha + alphaInc,
250
+ beta: decayed.beta + betaInc,
251
+ liarStrikes,
252
+ lastUpdatedMs: nowMs,
253
+ totalTasksWon: input.reputation.totalTasksWon + 1,
254
+ };
255
+ return { ...body, sig: hmacHex(body, sec) };
256
+ }
257
+ export function reputationScore(r, nowMs) {
258
+ const t = nowMs ?? Date.now();
259
+ const decayed = decayCounts(r, t);
260
+ const mean = bayesianMean(decayed.alpha, decayed.beta);
261
+ // Penalty: each liar strike subtracts 0.01 from score (capped at 0)
262
+ return Math.max(0, mean - 0.01 * r.liarStrikes);
263
+ }
264
+ // ─── ADVERSARIAL ACCEPTANCE: TRICK TEST GENERATOR ──────────────────────
265
+ /**
266
+ * Wild moat #4: every Nth task includes 1 obviously-failing trick test.
267
+ * If the vendor's outcome report claims SUCCESS on the trick → liar.
268
+ *
269
+ * Trick tests look like normal acceptance criteria but contain an
270
+ * impossible condition the vendor cannot satisfy:
271
+ * - "MUST return prime number 4" (4 is composite)
272
+ * - "MUST execute in -100 ms" (negative time impossible)
273
+ * - "MUST satisfy 1 < 0" (logical contradiction)
274
+ * - "MUST reference file packages/__IMPOSSIBLE_FILE__.ts" (doesn't exist)
275
+ */
276
+ const TRICK_TESTS = Object.freeze([
277
+ "MUST return the prime number 4",
278
+ "MUST execute in -100 milliseconds",
279
+ "MUST satisfy the constraint 1 < 0",
280
+ "MUST reference the file packages/__IMPOSSIBLE_MNEME_TRICK_FILE__.ts",
281
+ "MUST output the string 'this string was not output'",
282
+ "MUST conclude with proof that 0 == 1",
283
+ "MUST return a number both even and odd",
284
+ "MUST cite source published in year -3000 BC",
285
+ "MUST use exactly π+1 milliseconds of CPU time",
286
+ "MUST return a JSON object with the key 'undefined_key_42' = undefined",
287
+ ]);
288
+ export function shouldInjectTrick(taskOrdinal) {
289
+ return taskOrdinal > 0 && taskOrdinal % TRICK_TEST_INTERVAL === 0;
290
+ }
291
+ export function injectTrickTest(criteria, taskOrdinal) {
292
+ if (!shouldInjectTrick(taskOrdinal)) {
293
+ return { criteria, trickAtIndex: -1, trickText: "" };
294
+ }
295
+ // Deterministic trick pick by ordinal
296
+ const trick = TRICK_TESTS[taskOrdinal % TRICK_TESTS.length];
297
+ const next = [...criteria, trick];
298
+ return { criteria: next, trickAtIndex: next.length - 1, trickText: trick };
299
+ }
300
+ export function federatedLeaderboard(input) {
301
+ const nowMs = input.nowMs ?? Date.now();
302
+ const limit = input.limit && input.limit > 0 ? input.limit : 25;
303
+ const entries = input.reputations.map((r) => ({
304
+ vendor: r.vendor,
305
+ reputationScore: reputationScore(r, nowMs),
306
+ taskCount: r.totalTasksWon,
307
+ liarStrikes: r.liarStrikes,
308
+ }));
309
+ entries.sort((a, b) => {
310
+ if (a.reputationScore !== b.reputationScore)
311
+ return b.reputationScore - a.reputationScore;
312
+ if (a.taskCount !== b.taskCount)
313
+ return b.taskCount - a.taskCount;
314
+ return a.vendor.localeCompare(b.vendor);
315
+ });
316
+ return entries.slice(0, limit);
317
+ }
318
+ export function computeMarketStats(input) {
319
+ const winnerPrices = [];
320
+ for (const o of input.outcomes)
321
+ winnerPrices.push(o.costActualCents);
322
+ const liarTotal = input.reputations.reduce((acc, r) => acc + r.liarStrikes, 0);
323
+ return {
324
+ totalTasks: input.tasks.length,
325
+ totalBids: input.bids.length,
326
+ totalOutcomes: input.outcomes.length,
327
+ totalLiarStrikes: liarTotal,
328
+ meanWinnerPriceCents: winnerPrices.length > 0 ? Math.round(winnerPrices.reduce((a, b) => a + b, 0) / winnerPrices.length) : 0,
329
+ vendorCount: input.reputations.length,
330
+ };
331
+ }
332
+ export function formatMarketLine(s) {
333
+ return `🏦 MARKET · ${s.totalTasks} tasks · ${s.totalBids} bids · ${s.vendorCount} vendors · ${s.totalLiarStrikes} liar strikes · mean winner ${s.meanWinnerPriceCents}¢`;
334
+ }
335
+ export const OUTCOME_MARKET_TUNABLES = Object.freeze({
336
+ PROTOCOL_VERSION,
337
+ REPUTATION_HALF_LIFE_MS,
338
+ REPUTATION_PRIOR_ALPHA,
339
+ REPUTATION_PRIOR_BETA,
340
+ LIAR_PENALTY,
341
+ TRICK_TEST_INTERVAL,
342
+ TRICK_TESTS_COUNT: TRICK_TESTS.length,
343
+ });
344
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/outcome_market/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=outcome_market.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome_market.test.d.ts","sourceRoot":"","sources":["../../src/outcome_market/outcome_market.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,236 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { postTask, submitBid, verifyBid, verifyTask, pickWinner, scoreOutcome, freshReputation, updateReputation, reputationScore, bayesianMean, injectTrickTest, shouldInjectTrick, federatedLeaderboard, computeMarketStats, formatMarketLine, OUTCOME_MARKET_TUNABLES, } from "./index.js";
3
+ const SECRET = "market-test-99";
4
+ describe("v2.19.34 OUTCOME MARKET -- task + bid + verify", () => {
5
+ it("postTask creates HMAC-signed task; verifyTask passes", () => {
6
+ const t = postTask({ intent: "audit my PR", acceptanceCriteria: ["tests pass"], maxBudgetCents: 100, postedBy: "user", postedAtMs: 1, secret: SECRET });
7
+ expect(verifyTask(t, SECRET)).toBe(true);
8
+ expect(t.auctionType).toBe("vickrey");
9
+ });
10
+ it("submitBid returns null on price>budget / future ts / negative price", () => {
11
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 100, postedBy: "u", postedAtMs: 1, bidWindowMs: 100, secret: SECRET });
12
+ expect(submitBid({ task: t, vendor: "v", priceCents: 200, estimatedLatencyMs: 1, confidence: 0.5, submittedAtMs: 50, secret: SECRET })).toBeNull();
13
+ expect(submitBid({ task: t, vendor: "v", priceCents: 50, estimatedLatencyMs: 1, confidence: 0.5, submittedAtMs: 9999, secret: SECRET })).toBeNull();
14
+ expect(submitBid({ task: t, vendor: "v", priceCents: -1, estimatedLatencyMs: 1, confidence: 0.5, submittedAtMs: 50, secret: SECRET })).toBeNull();
15
+ expect(submitBid({ task: t, vendor: "v", priceCents: 50, estimatedLatencyMs: 1, confidence: 1.5, submittedAtMs: 50, secret: SECRET })).toBeNull();
16
+ expect(submitBid({ task: t, vendor: "", priceCents: 50, estimatedLatencyMs: 1, confidence: 0.5, submittedAtMs: 50, secret: SECRET })).toBeNull();
17
+ });
18
+ it("verifyBid passes on legit + rejects tamper", () => {
19
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 100, postedBy: "u", postedAtMs: 1, secret: SECRET });
20
+ const b = submitBid({ task: t, vendor: "v", priceCents: 10, estimatedLatencyMs: 1, confidence: 0.7, submittedAtMs: 2, secret: SECRET });
21
+ expect(verifyBid(b, SECRET)).toBe(true);
22
+ const tampered = { ...b, priceCents: 1 };
23
+ expect(verifyBid(tampered, SECRET)).toBe(false);
24
+ });
25
+ });
26
+ describe("v2.19.34 OUTCOME MARKET -- Vickrey 2nd-price auction", () => {
27
+ it("Vickrey: winner pays SECOND-lowest score's PRICE (not own bid)", () => {
28
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 1000, postedBy: "u", postedAtMs: 1, secret: SECRET, bidWindowMs: 100 });
29
+ const bids = [
30
+ submitBid({ task: t, vendor: "v1", priceCents: 100, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 50, secret: SECRET }),
31
+ submitBid({ task: t, vendor: "v2", priceCents: 200, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 50, secret: SECRET }),
32
+ submitBid({ task: t, vendor: "v3", priceCents: 300, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 50, secret: SECRET }),
33
+ ];
34
+ const r = pickWinner({ task: t, bids, secret: SECRET });
35
+ expect(r.winnerVendor).toBe("v1"); // lowest price
36
+ expect(r.effectivePriceCents).toBe(200); // pays 2nd-lowest price
37
+ expect(r.rationale).toContain("vickrey");
38
+ });
39
+ it("first-price auction: winner pays own bid", () => {
40
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 1000, postedBy: "u", postedAtMs: 1, auctionType: "first_price", secret: SECRET });
41
+ const bids = [
42
+ submitBid({ task: t, vendor: "v1", priceCents: 100, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET }),
43
+ submitBid({ task: t, vendor: "v2", priceCents: 200, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET }),
44
+ ];
45
+ const r = pickWinner({ task: t, bids, secret: SECRET });
46
+ expect(r.effectivePriceCents).toBe(100);
47
+ expect(r.rationale).toContain("first-price");
48
+ });
49
+ it("single-bid Vickrey falls back to first-price", () => {
50
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 1000, postedBy: "u", postedAtMs: 1, secret: SECRET });
51
+ const bids = [submitBid({ task: t, vendor: "v", priceCents: 50, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET })];
52
+ const r = pickWinner({ task: t, bids, secret: SECRET });
53
+ expect(r.effectivePriceCents).toBe(50);
54
+ });
55
+ it("no bids → winnerVendor=null", () => {
56
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 100, postedBy: "u", postedAtMs: 1, secret: SECRET });
57
+ const r = pickWinner({ task: t, bids: [], secret: SECRET });
58
+ expect(r.winnerVendor).toBeNull();
59
+ expect(r.validBidCount).toBe(0);
60
+ });
61
+ it("bond = effectivePriceCents (winner must post collateral)", () => {
62
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 1000, postedBy: "u", postedAtMs: 1, secret: SECRET });
63
+ const bids = [
64
+ submitBid({ task: t, vendor: "v1", priceCents: 100, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET }),
65
+ submitBid({ task: t, vendor: "v2", priceCents: 200, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET }),
66
+ ];
67
+ const r = pickWinner({ task: t, bids, secret: SECRET });
68
+ expect(r.bondCents).toBe(r.effectivePriceCents);
69
+ });
70
+ it("forged bids dropped silently", () => {
71
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 1000, postedBy: "u", postedAtMs: 1, secret: SECRET });
72
+ const real = submitBid({ task: t, vendor: "v1", priceCents: 100, estimatedLatencyMs: 10, confidence: 0.9, submittedAtMs: 2, secret: SECRET });
73
+ const forged = { ...real, vendor: "evil" };
74
+ const r = pickWinner({ task: t, bids: [real, forged], secret: SECRET });
75
+ expect(r.validBidCount).toBe(1);
76
+ });
77
+ });
78
+ describe("v2.19.34 OUTCOME MARKET -- reputation Bayesian half-life", () => {
79
+ it("freshReputation has prior alpha=1 beta=1 → mean 0.5", () => {
80
+ const r = freshReputation("v", SECRET);
81
+ expect(bayesianMean(r.alpha, r.beta)).toBe(0.5);
82
+ });
83
+ it("success increments alpha; failure increments beta", () => {
84
+ let r = freshReputation("v", SECRET);
85
+ for (let i = 0; i < 5; i++) {
86
+ const outcome = {
87
+ v: 1, taskId: `t${i}`, vendor: "v", success: true, latencyActualMs: 100,
88
+ costActualCents: 50, caughtLying: false, scoredAtMs: i, sig: "x".repeat(64),
89
+ };
90
+ r = updateReputation({ reputation: r, outcome, nowMs: i, secret: SECRET });
91
+ }
92
+ expect(r.alpha).toBeGreaterThan(r.beta);
93
+ expect(bayesianMean(r.alpha, r.beta)).toBeGreaterThan(0.5);
94
+ });
95
+ it("HALF-LIFE: 90 days later, alpha/beta decay 50% toward prior", () => {
96
+ let r = freshReputation("v", SECRET);
97
+ const start = 1_000_000_000_000;
98
+ for (let i = 0; i < 10; i++) {
99
+ const outcome = {
100
+ v: 1, taskId: `t${i}`, vendor: "v", success: true, latencyActualMs: 100,
101
+ costActualCents: 50, caughtLying: false, scoredAtMs: start, sig: "x".repeat(64),
102
+ };
103
+ r = updateReputation({ reputation: r, outcome, nowMs: start, secret: SECRET });
104
+ }
105
+ const before = r.alpha;
106
+ // Update 90 days later
107
+ const noopOutcome = {
108
+ v: 1, taskId: "t", vendor: "v", success: true, latencyActualMs: 0,
109
+ costActualCents: 0, caughtLying: false, scoredAtMs: start + 90 * 86400 * 1000, sig: "x".repeat(64),
110
+ };
111
+ r = updateReputation({ reputation: r, outcome: noopOutcome, nowMs: start + 90 * 86400 * 1000, secret: SECRET });
112
+ // alpha should be ~ (before - 1) * 0.5 + 1 + 1 (the +1 for success)
113
+ const expected = (before - 1) * 0.5 + 1 + 1;
114
+ expect(Math.abs(r.alpha - expected)).toBeLessThan(0.01);
115
+ });
116
+ it("caughtLying adds LIAR_PENALTY (=50) strikes", () => {
117
+ let r = freshReputation("v", SECRET);
118
+ const out = {
119
+ v: 1, taskId: "t", vendor: "v", success: false, latencyActualMs: 0,
120
+ costActualCents: 0, caughtLying: true, scoredAtMs: 0, sig: "x".repeat(64),
121
+ };
122
+ r = updateReputation({ reputation: r, outcome: out, nowMs: 0, secret: SECRET });
123
+ expect(r.liarStrikes).toBe(OUTCOME_MARKET_TUNABLES.LIAR_PENALTY);
124
+ expect(reputationScore(r)).toBeLessThan(0.5);
125
+ });
126
+ });
127
+ describe("v2.19.34 OUTCOME MARKET -- trick test injection", () => {
128
+ it("shouldInjectTrick fires on every Nth task (N=TRICK_TEST_INTERVAL)", () => {
129
+ expect(shouldInjectTrick(0)).toBe(false);
130
+ expect(shouldInjectTrick(1)).toBe(false);
131
+ expect(shouldInjectTrick(OUTCOME_MARKET_TUNABLES.TRICK_TEST_INTERVAL)).toBe(true);
132
+ expect(shouldInjectTrick(OUTCOME_MARKET_TUNABLES.TRICK_TEST_INTERVAL * 2)).toBe(true);
133
+ });
134
+ it("injectTrickTest appends a deterministic trick on N-th task", () => {
135
+ const r = injectTrickTest(["normal criterion"], OUTCOME_MARKET_TUNABLES.TRICK_TEST_INTERVAL);
136
+ expect(r.criteria.length).toBe(2);
137
+ expect(r.trickAtIndex).toBe(1);
138
+ expect(r.trickText).toBeTruthy();
139
+ });
140
+ it("injectTrickTest no-op on non-Nth", () => {
141
+ const r = injectTrickTest(["x"], 1);
142
+ expect(r.criteria.length).toBe(1);
143
+ expect(r.trickAtIndex).toBe(-1);
144
+ });
145
+ it("DETERMINISTIC: same ordinal → same trick", () => {
146
+ const a = injectTrickTest(["x"], OUTCOME_MARKET_TUNABLES.TRICK_TEST_INTERVAL);
147
+ const b = injectTrickTest(["x"], OUTCOME_MARKET_TUNABLES.TRICK_TEST_INTERVAL);
148
+ expect(a.trickText).toBe(b.trickText);
149
+ });
150
+ });
151
+ describe("v2.19.34 OUTCOME MARKET -- federated leaderboard", () => {
152
+ it("sorts by reputationScore desc, then taskCount desc, then alpha", () => {
153
+ const reps = [
154
+ { ...freshReputation("zoro", SECRET), alpha: 9, beta: 1, totalTasksWon: 10 },
155
+ { ...freshReputation("ace", SECRET), alpha: 5, beta: 5, totalTasksWon: 20 },
156
+ { ...freshReputation("bob", SECRET), alpha: 5, beta: 5, totalTasksWon: 10 },
157
+ ];
158
+ const board = federatedLeaderboard({ reputations: reps, nowMs: 0 });
159
+ expect(board[0].vendor).toBe("zoro"); // highest mean
160
+ expect(board[1].vendor).toBe("ace"); // same mean as bob but more tasks
161
+ expect(board[2].vendor).toBe("bob");
162
+ });
163
+ it("limit honored", () => {
164
+ const reps = Array.from({ length: 10 }, (_, i) => freshReputation(`v${i}`, SECRET));
165
+ const b = federatedLeaderboard({ reputations: reps, limit: 3 });
166
+ expect(b.length).toBe(3);
167
+ });
168
+ });
169
+ describe("v2.19.34 OUTCOME MARKET -- 25,000 FUZZ ITERATIONS", () => {
170
+ it("25,000 random tasks + bids + outcomes never crash + integrity preserved", () => {
171
+ const N = 25_000;
172
+ const reps = new Map();
173
+ let totalTasks = 0, totalBids = 0, totalOutcomes = 0;
174
+ for (let i = 0; i < N; i++) {
175
+ const t = postTask({
176
+ intent: `task ${i}`, acceptanceCriteria: ["x"],
177
+ maxBudgetCents: 100 + (i % 1000), postedBy: `u${i % 100}`,
178
+ postedAtMs: i, bidWindowMs: 10_000, secret: SECRET,
179
+ });
180
+ totalTasks++;
181
+ const bids = [];
182
+ const bidderCount = 1 + (i % 5);
183
+ for (let j = 0; j < bidderCount; j++) {
184
+ const vendor = `v${(i + j) % 20}`;
185
+ if (!reps.has(vendor))
186
+ reps.set(vendor, freshReputation(vendor, SECRET));
187
+ const b = submitBid({
188
+ task: t, vendor,
189
+ priceCents: 1 + ((i + j) % t.maxBudgetCents),
190
+ estimatedLatencyMs: 10 + ((i + j) % 1000),
191
+ confidence: ((i + j) % 100) / 100,
192
+ submittedAtMs: i + j,
193
+ secret: SECRET,
194
+ });
195
+ if (b) {
196
+ bids.push(b);
197
+ totalBids++;
198
+ }
199
+ }
200
+ const winner = pickWinner({ task: t, bids, reputations: Array.from(reps.values()), secret: SECRET });
201
+ if (winner.winnerVendor) {
202
+ const outcome = scoreOutcome({
203
+ task: t, result: winner,
204
+ success: i % 7 !== 0, // ~85% success rate
205
+ latencyActualMs: 50,
206
+ costActualCents: winner.effectivePriceCents,
207
+ caughtLying: i % 100 === 0,
208
+ scoredAtMs: i + 100,
209
+ secret: SECRET,
210
+ });
211
+ totalOutcomes++;
212
+ const r = reps.get(winner.winnerVendor);
213
+ reps.set(winner.winnerVendor, updateReputation({ reputation: r, outcome, nowMs: i + 100, secret: SECRET }));
214
+ }
215
+ }
216
+ expect(totalTasks).toBe(N);
217
+ expect(totalBids).toBeGreaterThan(0);
218
+ expect(totalOutcomes).toBeGreaterThan(0);
219
+ const board = federatedLeaderboard({ reputations: Array.from(reps.values()) });
220
+ expect(board.length).toBeGreaterThan(0);
221
+ }, 60_000);
222
+ it("computeMarketStats counts correctly across 1000 ops", () => {
223
+ const tasks = [];
224
+ const bids = [];
225
+ const outcomes = [];
226
+ const reps = [];
227
+ for (let i = 0; i < 1000; i++) {
228
+ const t = postTask({ intent: "x", acceptanceCriteria: [], maxBudgetCents: 100, postedBy: "u", postedAtMs: i, secret: SECRET });
229
+ tasks.push(t);
230
+ }
231
+ const s = computeMarketStats({ tasks, bids, outcomes, reputations: reps });
232
+ expect(s.totalTasks).toBe(1000);
233
+ expect(formatMarketLine(s)).toContain("MARKET");
234
+ });
235
+ });
236
+ //# sourceMappingURL=outcome_market.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outcome_market.test.js","sourceRoot":"","sources":["../../src/outcome_market/outcome_market.test.ts"],"names":[],"mappings":"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"}