@deepthonk/core 0.1.4 → 0.2.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.
Files changed (43) hide show
  1. package/README.md +26 -11
  2. package/dist/artifacts.js +178 -11
  3. package/dist/artifacts.js.map +1 -1
  4. package/dist/bradleyTerry.d.ts +1 -0
  5. package/dist/bradleyTerry.js +27 -2
  6. package/dist/bradleyTerry.js.map +1 -1
  7. package/dist/budget.d.ts +7 -1
  8. package/dist/budget.js +6 -1
  9. package/dist/budget.js.map +1 -1
  10. package/dist/budgetTracker.d.ts +6 -1
  11. package/dist/budgetTracker.js +32 -1
  12. package/dist/budgetTracker.js.map +1 -1
  13. package/dist/checkpointStore.d.ts +56 -0
  14. package/dist/checkpointStore.js +351 -0
  15. package/dist/checkpointStore.js.map +1 -0
  16. package/dist/critique.d.ts +3 -1
  17. package/dist/critique.js +24 -9
  18. package/dist/critique.js.map +1 -1
  19. package/dist/index.d.ts +2 -0
  20. package/dist/index.js +2 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/lifecycle.d.ts +33 -1
  23. package/dist/lifecycle.js +207 -6
  24. package/dist/lifecycle.js.map +1 -1
  25. package/dist/phaseRunner.d.ts +6 -1
  26. package/dist/phaseRunner.js +53 -19
  27. package/dist/phaseRunner.js.map +1 -1
  28. package/dist/resume.d.ts +10 -3
  29. package/dist/resume.js +357 -39
  30. package/dist/resume.js.map +1 -1
  31. package/dist/runner.d.ts +3 -1
  32. package/dist/runner.js +894 -246
  33. package/dist/runner.js.map +1 -1
  34. package/dist/schemas.d.ts +397 -47
  35. package/dist/schemas.js +67 -5
  36. package/dist/schemas.js.map +1 -1
  37. package/dist/services.d.ts +9 -0
  38. package/dist/services.js +115 -12
  39. package/dist/services.js.map +1 -1
  40. package/dist/traceStore.d.ts +31 -2
  41. package/dist/traceStore.js +182 -21
  42. package/dist/traceStore.js.map +1 -1
  43. package/package.json +1 -1
package/dist/resume.js CHANGED
@@ -2,10 +2,14 @@ import { randomUUID } from "node:crypto";
2
2
  import { existsSync } from "node:fs";
3
3
  import { readFile, readdir, rename, unlink, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
+ import { isDeepStrictEqual } from "node:util";
5
6
  import { runArtifactFiles } from "./artifacts.js";
6
- import { fitBradleyTerry } from "./bradleyTerry.js";
7
+ import { canonicalizeComparisons, fitBradleyTerry } from "./bradleyTerry.js";
7
8
  import { BudgetTracker } from "./budgetTracker.js";
8
9
  import { ConfigError } from "./errors.js";
10
+ import { claimRunLockOwnership, releaseRunLock } from "./lifecycle.js";
11
+ import { makeKRegularPairs } from "./pairScheduler.js";
12
+ import { createRng } from "./rng.js";
9
13
  import { phaseCompletedEventSchema } from "./schemas.js";
10
14
  export const pruneSentinelFile = ".prune-in-progress";
11
15
  export async function readResumeTrace(runDir) {
@@ -40,33 +44,112 @@ export function resolveResumeRunId(config, status, events) {
40
44
  return `run_resume_${Math.abs(config.seed)}`;
41
45
  }
42
46
  export function buildResumePlan(config, events) {
47
+ const expected = expectedPhaseSequence(config);
43
48
  const completed = new Set();
44
49
  for (const event of events) {
45
- const parsed = phaseCompletedEventSchema.safeParse(event);
46
- if (!parsed.success)
50
+ if (event.type !== "phase.completed")
47
51
  continue;
48
- completed.add(phaseKey(parsed.data.phase, parsed.data.generation));
49
- }
50
- if (!completed.has("initial_generation")) {
51
- return { completed, nextPhase: { phase: "initial_generation" } };
52
- }
53
- for (let gen = 1; gen <= config.profile.t; gen += 1) {
54
- if (!completed.has(phaseKey("generation_judging", gen))) {
55
- return { completed, nextPhase: { phase: "generation_judging", generation: gen } };
52
+ const parsed = phaseCompletedEventSchema.safeParse(event);
53
+ if (!parsed.success) {
54
+ resumeConfigError("Trace contains a malformed phase.completed marker.", "resume.phase_marker_invalid", "Inspect events.jsonl; phase markers must use valid phase names and generation numbers.");
56
55
  }
57
- if (!completed.has(phaseKey("generation_mutation", gen))) {
58
- return { completed, nextPhase: { phase: "generation_mutation", generation: gen } };
56
+ const key = strictPhaseKey(config, parsed.data.phase, parsed.data.generation);
57
+ const next = expected[completed.size];
58
+ if (key !== next) {
59
+ const detail = completed.has(key) ? `duplicate marker ${key}` : `marker ${key} before ${next ?? "the end of the run"}`;
60
+ resumeConfigError(`Trace phase markers are not a strict completed prefix: ${detail}.`, "resume.phase_order_invalid", "Restore events.jsonl from the original run or start a fresh run.");
59
61
  }
62
+ completed.add(key);
60
63
  }
61
- if (!completed.has("final_judging"))
62
- return { completed, nextPhase: { phase: "final_judging", generation: "final" } };
63
- if (!completed.has("finalizing"))
64
- return { completed, nextPhase: { phase: "finalizing", generation: "final" } };
65
- return { completed, nextPhase: { phase: "summary" } };
64
+ return { completed, nextPhase: phaseCursorForKey(expected[completed.size]) };
66
65
  }
67
66
  export function resumeConfigError(message, code, fix) {
68
67
  throw new ConfigError(message, { code, retryable: false, fix });
69
68
  }
69
+ export function assertNoLegacyRedactedBudget(config) {
70
+ const paths = legacyRedactedBudgetPaths(config);
71
+ if (paths.length === 0)
72
+ return;
73
+ resumeConfigError(`Stored config.json has legacy-redacted numeric budget fields: ${paths.join(", ")}.`, "resume.legacy_redacted_budget", "Use `deepthonk repair-budget` or MCP `deepthonk.repair_budget` with explicit numeric replacements for exactly these fields; DeepThonk will not guess budget caps.");
74
+ }
75
+ export async function repairLegacyBudgetConfig(runDir, replacements) {
76
+ const claim = await claimRunLockOwnership(runDir, "config-repair");
77
+ if (!claim) {
78
+ throw new ConfigError(`Run directory is already claimed: ${runDir}`, {
79
+ code: "run.directory_locked",
80
+ retryable: false,
81
+ fix: "Wait for the active worker to stop before repairing config.json."
82
+ });
83
+ }
84
+ try {
85
+ const config = await readJson(runDir, runArtifactFiles.config);
86
+ const affected = legacyRedactedBudgetPaths(config).sort();
87
+ const supplied = Object.keys(replacements).sort();
88
+ if (affected.length === 0) {
89
+ resumeConfigError("Stored config.json has no legacy-redacted numeric budget fields.", "resume.budget_repair_not_needed");
90
+ }
91
+ if (!isDeepStrictEqual(affected, supplied)) {
92
+ resumeConfigError(`Budget repair requires replacements for exactly: ${affected.join(", ")}.`, "resume.budget_repair_incomplete", "Supply every listed dotted path and no unrelated fields.");
93
+ }
94
+ const repaired = structuredClone(config);
95
+ for (const path of affected) {
96
+ const value = replacements[path];
97
+ if (!Number.isFinite(value) || value <= 0 || !Number.isInteger(value)) {
98
+ resumeConfigError(`Replacement for ${path} must be a positive integer.`, "resume.budget_repair_invalid", "Use the original numeric cap from the run configuration.");
99
+ }
100
+ setDottedPath(repaired, path, value);
101
+ }
102
+ const parsed = JSON.stringify(repaired, null, 2) + "\n";
103
+ const target = join(runDir, runArtifactFiles.config);
104
+ const temporary = `${target}.${randomUUID()}.tmp`;
105
+ await writeFile(temporary, parsed, "utf8");
106
+ await rename(temporary, target);
107
+ await writeFile(join(runDir, runArtifactFiles.trace), `${JSON.stringify({ type: "config.repaired", fields: affected, repaired_at: new Date().toISOString() })}\n`, { encoding: "utf8", flag: "a" });
108
+ return affected;
109
+ }
110
+ finally {
111
+ await releaseRunLock(runDir, claim.claimId);
112
+ }
113
+ }
114
+ function legacyRedactedBudgetPaths(config) {
115
+ const paths = [];
116
+ const budget = config.budget;
117
+ if (!budget || typeof budget !== "object" || Array.isArray(budget))
118
+ return paths;
119
+ for (const key of ["maxCalls", "maxInputTokens", "maxOutputTokens"]) {
120
+ if (budget[key] === "[redacted]")
121
+ paths.push(`budget.${key}`);
122
+ }
123
+ const prices = budget.prices;
124
+ if (Array.isArray(prices)) {
125
+ for (let index = 0; index < prices.length; index += 1) {
126
+ const price = prices[index];
127
+ if (price && typeof price === "object" && !Array.isArray(price)) {
128
+ if (price.longContextThresholdTokens === "[redacted]") {
129
+ paths.push(`budget.prices.${index}.longContextThresholdTokens`);
130
+ }
131
+ }
132
+ }
133
+ }
134
+ return paths;
135
+ }
136
+ function setDottedPath(target, path, value) {
137
+ const parts = path.split(".");
138
+ let current = target;
139
+ for (let index = 0; index < parts.length - 1; index += 1) {
140
+ const part = parts[index];
141
+ current = Array.isArray(current)
142
+ ? current[Number(part)]
143
+ : current && typeof current === "object"
144
+ ? current[part]
145
+ : undefined;
146
+ }
147
+ const key = parts.at(-1);
148
+ if (Array.isArray(current))
149
+ current[Number(key)] = value;
150
+ else
151
+ current[key] = value;
152
+ }
70
153
  export function toResumePlanStatus(runDir, runId, plan) {
71
154
  const completedPhases = completedPhaseEntries(plan.completed);
72
155
  const done = plan.nextPhase.phase === "summary";
@@ -87,7 +170,7 @@ export function toResumePlanStatus(runDir, runId, plan) {
87
170
  }
88
171
  };
89
172
  }
90
- export function pruneTraceToPlan(trace, plan) {
173
+ export function pruneTraceToPlan(trace, plan, options = {}) {
91
174
  const candidates = trace.candidates.filter((candidate) => keepCandidate(candidate, plan.completed));
92
175
  const comparisons = trace.comparisons.filter((comparison) => plan.completed.has(phaseKeyForComparison(comparison)));
93
176
  const scores = trace.scores.filter((score) => plan.completed.has(phaseKeyForScore(score)));
@@ -99,14 +182,20 @@ export function pruneTraceToPlan(trace, plan) {
99
182
  comparisons,
100
183
  scores,
101
184
  populations: new Map([...trace.populations].filter(([generation]) => keepPopulationGeneration(generation, plan.completed))),
102
- usage: trace.usage.filter((record) => {
103
- const key = usagePhaseKey(record.phase);
104
- return key !== undefined && plan.completed.has(key);
105
- })
185
+ // Usage is append-only accounting. Calls made during an interrupted phase
186
+ // still consumed provider budget and must survive conservative v1 replay.
187
+ usage: trace.usage.filter((record) => !record.usage_id || !options.dropUsageIds?.has(record.usage_id))
106
188
  };
107
189
  }
108
190
  export function buildPopulationMap(config, populations, candidates, plan) {
109
- const byId = new Set(candidates.filter((candidate) => candidate.status !== "discarded").map((candidate) => candidate.id));
191
+ const byId = new Map();
192
+ for (const candidate of candidates.filter((candidate) => candidate.status !== "discarded")) {
193
+ assertCandidateShape(candidate);
194
+ if (byId.has(candidate.id)) {
195
+ resumeConfigError(`candidates.jsonl contains duplicate active candidate ID ${candidate.id}.`, "resume.candidates_invalid", "Restore candidates.jsonl from a single run or start a fresh run.");
196
+ }
197
+ byId.set(candidate.id, candidate);
198
+ }
110
199
  const populationByGeneration = new Map();
111
200
  for (const generation of requiredPopulationGenerations(config, plan.completed)) {
112
201
  const population = populations.get(generation);
@@ -116,10 +205,20 @@ export function buildPopulationMap(config, populations, candidates, plan) {
116
205
  if (population.length !== config.profile.n) {
117
206
  resumeConfigError(`population-${generation}.json has ${population.length} candidates; expected ${config.profile.n}.`, "resume.population_invalid", "Inspect the run directory for a truncated or mixed trace.");
118
207
  }
208
+ const populationIds = new Set();
119
209
  for (const candidate of population) {
120
- if (!byId.has(candidate.id)) {
210
+ assertCandidateShape(candidate);
211
+ if (candidate.generation !== generation || populationIds.has(candidate.id)) {
212
+ resumeConfigError(`population-${generation}.json has an invalid or duplicate candidate ${candidate.id}.`, "resume.population_invalid", "Inspect the population snapshot for mixed generations or duplicate IDs.");
213
+ }
214
+ populationIds.add(candidate.id);
215
+ const traced = byId.get(candidate.id);
216
+ if (!traced) {
121
217
  resumeConfigError(`population-${generation}.json references missing candidate ${candidate.id}.`, "resume.population_invalid", "Restore candidates.jsonl or start a fresh run.");
122
218
  }
219
+ if (!isDeepStrictEqual(candidate, traced)) {
220
+ resumeConfigError(`population-${generation}.json candidate ${candidate.id} does not match candidates.jsonl.`, "resume.population_mismatch", "Restore the matching population snapshot and candidate trace from the same run.");
221
+ }
123
222
  }
124
223
  populationByGeneration.set(generation, population);
125
224
  }
@@ -132,28 +231,40 @@ export function groupComparisons(comparisons) {
132
231
  bucket.push(comparison);
133
232
  grouped.set(comparison.generation, bucket);
134
233
  }
234
+ for (const [generation, bucket] of grouped)
235
+ grouped.set(generation, canonicalizeComparisons(bucket));
135
236
  return grouped;
136
237
  }
137
- export function reconstructScores(config, populationByGeneration, comparisonsByGeneration, existingScores, plan) {
238
+ export function reconstructScores(config, populationByGeneration, comparisonsByGeneration, existingScores, plan, runId) {
138
239
  const scoresByGeneration = new Map();
139
240
  for (let gen = 1; gen <= config.profile.t; gen += 1) {
140
241
  if (!plan.completed.has(phaseKey("generation_judging", gen)))
141
242
  continue;
142
243
  const population = requirePopulation(populationByGeneration, gen - 1);
143
- sanityCheckScores(existingScores, gen, population);
144
- scoresByGeneration.set(gen, fitBradleyTerry(population, comparisonsByGeneration.get(gen) ?? [], config.profile.lambda, gen));
244
+ const comparisons = comparisonsByGeneration.get(gen) ?? [];
245
+ validateComparisons(config, gen, population, comparisons, runId);
246
+ const reconstructed = fitBradleyTerry(population, comparisons, config.profile.lambda, gen);
247
+ sanityCheckScores(existingScores, gen, population, reconstructed);
248
+ scoresByGeneration.set(gen, reconstructed);
145
249
  }
146
250
  if (plan.completed.has("final_judging")) {
147
251
  const population = requirePopulation(populationByGeneration, config.profile.t);
148
- sanityCheckScores(existingScores, "final", population);
149
- scoresByGeneration.set("final", fitBradleyTerry(population, comparisonsByGeneration.get("final") ?? [], config.profile.lambda, "final"));
252
+ const comparisons = comparisonsByGeneration.get("final") ?? [];
253
+ validateComparisons(config, "final", population, comparisons, runId);
254
+ const reconstructed = fitBradleyTerry(population, comparisons, config.profile.lambda, "final");
255
+ sanityCheckScores(existingScores, "final", population, reconstructed);
256
+ scoresByGeneration.set("final", reconstructed);
150
257
  }
151
258
  return scoresByGeneration;
152
259
  }
153
260
  export function replayBudgetUsage(config, usage) {
154
261
  const tracker = new BudgetTracker(config);
155
- let hasUsd = false;
262
+ applyUsageRecords(tracker, usage);
263
+ return tracker;
264
+ }
265
+ export function applyUsageRecords(tracker, usage) {
156
266
  for (const record of usage) {
267
+ validateUsageRecord(record);
157
268
  tracker.usage.calls += 1;
158
269
  tracker.usage.inputTokens += record.input_tokens;
159
270
  if (record.input_cache_hit_tokens !== undefined) {
@@ -165,13 +276,68 @@ export function replayBudgetUsage(config, usage) {
165
276
  tracker.usage.outputTokens += record.output_tokens;
166
277
  tracker.usage.totalTokens += record.total_tokens;
167
278
  if (record.total_usd !== undefined) {
168
- hasUsd = true;
169
279
  tracker.usage.usd = (tracker.usage.usd ?? 0) + record.total_usd;
170
280
  }
171
281
  }
172
- if (!hasUsd)
173
- delete tracker.usage.usd;
174
- return tracker;
282
+ }
283
+ export function validateUsageRecords(usage) {
284
+ for (const record of usage)
285
+ validateUsageRecord(record);
286
+ }
287
+ export function validatedReceiptUsageIds(usage) {
288
+ const ids = new Set();
289
+ for (const value of usage) {
290
+ validateUsageRecord(value);
291
+ const usageId = value.usage_id;
292
+ if (typeof usageId !== "string" || !usageId || ids.has(usageId)) {
293
+ resumeConfigError("A trace-v2 receipt contains a missing or duplicate usage_id.", "resume.usage_invalid", "Restore the original checkpoint receipt.");
294
+ }
295
+ ids.add(usageId);
296
+ }
297
+ return ids;
298
+ }
299
+ function validateUsageRecord(record) {
300
+ if (!record || typeof record !== "object" || Array.isArray(record)) {
301
+ resumeConfigError("usage.jsonl contains a non-object row.", "resume.usage_invalid", "Restore usage.jsonl from the original run.");
302
+ }
303
+ const phase = typeof record.phase === "string" ? record.phase : "";
304
+ const expectedRole = phase === "gen0_initial"
305
+ ? "generator"
306
+ : phase === "final_judge" || /^gen\d+_judge$/.test(phase)
307
+ ? "judge"
308
+ : /^gen\d+_mutate$/.test(phase)
309
+ ? "mutator"
310
+ : phase === "finalize"
311
+ ? "finalizer"
312
+ : undefined;
313
+ const requiredNumbers = [record.input_tokens, record.output_tokens, record.total_tokens];
314
+ const validNumber = (value) => value === undefined || (Number.isFinite(value) && value >= 0);
315
+ const validTokenNumber = (value) => value === undefined || (Number.isSafeInteger(value) && value >= 0);
316
+ const errorCodeValid = record.error_code === undefined ||
317
+ (record.outcome === "failed" && /^[A-Za-z0-9._-]{1,128}$/.test(record.error_code));
318
+ if (record.schema_version !== 1 ||
319
+ (record.usage_id !== undefined && (typeof record.usage_id !== "string" || !/^[A-Za-z0-9-]{1,128}$/.test(record.usage_id))) ||
320
+ expectedRole === undefined ||
321
+ record.role !== expectedRole ||
322
+ typeof record.ts !== "string" ||
323
+ !Number.isFinite(Date.parse(record.ts)) ||
324
+ typeof record.provider !== "string" || record.provider.length < 1 || record.provider.length > 256 ||
325
+ typeof record.model !== "string" || record.model.length < 1 || record.model.length > 256 ||
326
+ phase.length > 128 ||
327
+ requiredNumbers.some((value) => !Number.isSafeInteger(value) || value < 0) ||
328
+ !validTokenNumber(record.input_cache_hit_tokens) ||
329
+ !validTokenNumber(record.input_cache_miss_tokens) ||
330
+ [record.input_usd, record.output_usd, record.total_usd, record.latency_ms].some((value) => !validNumber(value)) ||
331
+ (record.input_cache_hit_tokens ?? 0) > record.input_tokens ||
332
+ (record.input_cache_miss_tokens ?? 0) > record.input_tokens ||
333
+ record.total_tokens < Math.max(record.input_tokens, record.output_tokens) ||
334
+ (record.retry_count !== undefined && (!Number.isSafeInteger(record.retry_count) || record.retry_count < 0)) ||
335
+ (record.outcome !== undefined && record.outcome !== "success" && record.outcome !== "failed") ||
336
+ (record.outcome === "failed" && record.error_code === undefined) ||
337
+ !errorCodeValid ||
338
+ JSON.stringify(record).length > 16_384) {
339
+ resumeConfigError(`usage.jsonl contains an invalid accounting row for phase ${String(record.phase)}.`, "resume.usage_invalid", "Restore usage.jsonl from the original run; usage accounting is append-only and cannot be guessed.");
340
+ }
175
341
  }
176
342
  export async function persistPrunedTrace(runDir, pruned) {
177
343
  const sentinelPath = join(runDir, pruneSentinelFile);
@@ -199,6 +365,36 @@ function phaseKey(phase, generation) {
199
365
  }
200
366
  return phase;
201
367
  }
368
+ function strictPhaseKey(config, phase, generation) {
369
+ if (phase === "generation_judging" || phase === "generation_mutation") {
370
+ if (generation === undefined || generation < 1 || generation > config.profile.t) {
371
+ resumeConfigError(`${phase} marker has invalid generation ${String(generation)}.`, "resume.phase_marker_invalid", `Generation must be between 1 and ${config.profile.t}.`);
372
+ }
373
+ return phaseKey(phase, generation);
374
+ }
375
+ if (generation !== undefined) {
376
+ resumeConfigError(`${phase} marker must not include generation ${generation}.`, "resume.phase_marker_invalid", "Only generation_judging and generation_mutation markers carry numeric generations.");
377
+ }
378
+ return phase;
379
+ }
380
+ function expectedPhaseSequence(config) {
381
+ const expected = ["initial_generation"];
382
+ for (let generation = 1; generation <= config.profile.t; generation += 1) {
383
+ expected.push(phaseKey("generation_judging", generation), phaseKey("generation_mutation", generation));
384
+ }
385
+ expected.push("final_judging", "finalizing");
386
+ return expected;
387
+ }
388
+ function phaseCursorForKey(key) {
389
+ if (!key)
390
+ return { phase: "summary" };
391
+ const parsed = parsePhaseKey(key);
392
+ if (!parsed)
393
+ return { phase: "summary" };
394
+ if (parsed.phase === "final_judging" || parsed.phase === "finalizing")
395
+ return { phase: parsed.phase, generation: "final" };
396
+ return parsed;
397
+ }
202
398
  function completedPhaseEntries(completed) {
203
399
  return [...completed]
204
400
  .map(parsePhaseKey)
@@ -300,15 +496,137 @@ function requirePopulation(populationByGeneration, generation) {
300
496
  }
301
497
  return population;
302
498
  }
303
- function sanityCheckScores(existingScores, generation, population) {
499
+ function sanityCheckScores(existingScores, generation, population, reconstructed) {
304
500
  const ids = new Set(population.map((candidate) => candidate.id));
305
- for (const score of existingScores) {
306
- if (score.generation !== generation)
307
- continue;
501
+ const stored = existingScores.filter((score) => score.generation === generation);
502
+ if (stored.length !== population.length || new Set(stored.map((score) => score.candidateId)).size !== stored.length) {
503
+ resumeConfigError(`scores.jsonl for generation ${generation} has ${stored.length} rows; expected one for each of ${population.length} candidates.`, "resume.scores_invalid", "Restore the complete score rows or start a fresh run.");
504
+ }
505
+ for (const score of stored) {
308
506
  if (!ids.has(score.candidateId)) {
309
507
  resumeConfigError(`scores.jsonl for generation ${generation} references unknown candidate ${score.candidateId}.`, "resume.scores_invalid", "Inspect the run directory for a mixed or corrupted trace.");
310
508
  }
311
509
  }
510
+ const storedById = new Map(stored.map((score) => [score.candidateId, score]));
511
+ for (const expected of reconstructed) {
512
+ const actual = storedById.get(expected.candidateId);
513
+ if (!actual || !scoresEqual(actual, expected)) {
514
+ resumeConfigError(`scores.jsonl for generation ${generation} does not match recomputed Bradley-Terry scores for ${expected.candidateId}.`, "resume.scores_mismatch", "Restore scores.jsonl and comparisons.jsonl from the same run.");
515
+ }
516
+ }
517
+ }
518
+ function validateComparisons(config, generation, population, comparisons, runId) {
519
+ const expectedSchedule = expectedComparisonSchedule(config, generation, population);
520
+ const expectedCount = expectedSchedule.length;
521
+ if (comparisons.length !== expectedCount) {
522
+ resumeConfigError(`comparisons.jsonl for generation ${generation} has ${comparisons.length} rows; expected ${expectedCount}.`, "resume.comparisons_invalid", "Restore the complete comparison rows or replay from the previous phase boundary.");
523
+ }
524
+ const ids = new Set(population.map((candidate) => candidate.id));
525
+ const comparisonIds = new Set();
526
+ const pairs = new Set();
527
+ for (const comparison of comparisons) {
528
+ assertComparisonShape(comparison, runId);
529
+ const pair = [comparison.candidateAId, comparison.candidateBId].sort().join("\u0000");
530
+ if (comparison.generation !== generation ||
531
+ !comparison.id ||
532
+ comparisonIds.has(comparison.id) ||
533
+ !ids.has(comparison.candidateAId) ||
534
+ !ids.has(comparison.candidateBId) ||
535
+ comparison.candidateAId === comparison.candidateBId ||
536
+ pairs.has(pair) ||
537
+ comparison.presentedAOriginalId !== comparison.candidateAId ||
538
+ comparison.presentedBOriginalId !== comparison.candidateBId ||
539
+ !["A", "B", "tie"].includes(comparison.winner)) {
540
+ resumeConfigError(`comparisons.jsonl contains an invalid or duplicate comparison ${comparison.id || "without an ID"} for generation ${generation}.`, "resume.comparisons_invalid", "Restore comparisons.jsonl from the original run.");
541
+ }
542
+ comparisonIds.add(comparison.id);
543
+ pairs.add(pair);
544
+ }
545
+ const expectedPairs = new Set(expectedSchedule.map((pair) => [pair.a, pair.b].sort().join("\u0000")));
546
+ if (!isDeepStrictEqual([...pairs].sort(), [...expectedPairs].sort())) {
547
+ resumeConfigError(`comparisons.jsonl for generation ${generation} does not match the deterministic seeded pair schedule.`, "resume.comparison_schedule_mismatch", "Restore comparisons.jsonl from the original run.");
548
+ }
549
+ }
550
+ function expectedComparisonSchedule(config, generation, population) {
551
+ const ids = population.map((candidate) => candidate.id);
552
+ const phase = generation === "final" ? "final_judging" : "generation_judging";
553
+ const configuredSeed = generation === "final" ? config.rank?.seed : undefined;
554
+ const rng = createRng(configuredSeed ?? hashPhaseSeed(`${config.seed}:${phase}:${generation === "final" ? "" : generation}`));
555
+ if (generation !== "final" || !config.rank) {
556
+ return makeKRegularPairs(ids, generation === "final" ? config.profile.m : config.profile.k, rng);
557
+ }
558
+ if (config.rank.mode === "k-regular") {
559
+ if (config.rank.k === undefined) {
560
+ resumeConfigError("Stored k-regular rank config is missing k.", "resume.config_incomplete");
561
+ }
562
+ return makeKRegularPairs(ids, config.rank.k, rng);
563
+ }
564
+ const pairs = [];
565
+ for (let left = 0; left < ids.length; left += 1) {
566
+ for (let right = left + 1; right < ids.length; right += 1)
567
+ pairs.push({ a: ids[left], b: ids[right] });
568
+ }
569
+ return rng.shuffle(pairs);
570
+ }
571
+ function assertComparisonShape(comparison, runId) {
572
+ if (!comparison || typeof comparison !== "object" || Array.isArray(comparison)) {
573
+ resumeConfigError("comparisons.jsonl contains a non-object completed comparison row.", "resume.comparison_row_invalid", "Restore comparison rows from the original run.");
574
+ }
575
+ const boundedString = (value, max, allowEmpty = true) => typeof value === "string" && (allowEmpty || value.length > 0) && value.length <= max;
576
+ const boundedRawString = (value) => typeof value === "string" && Buffer.byteLength(value, "utf8") <= 1_048_576;
577
+ const metadataValid = comparison.metadata === undefined ||
578
+ (comparison.metadata !== null &&
579
+ typeof comparison.metadata === "object" &&
580
+ !Array.isArray(comparison.metadata) &&
581
+ Buffer.byteLength(JSON.stringify(comparison.metadata), "utf8") <= 1_048_576);
582
+ if (!boundedString(comparison.id, 512, false) ||
583
+ !boundedString(comparison.runId, 128, false) ||
584
+ (runId !== undefined && comparison.runId !== runId) ||
585
+ !boundedString(comparison.candidateAId, 512, false) ||
586
+ !boundedString(comparison.candidateBId, 512, false) ||
587
+ !boundedString(comparison.presentedAOriginalId, 512, false) ||
588
+ !boundedString(comparison.presentedBOriginalId, 512, false) ||
589
+ !boundedRawString(comparison.critiqueForA) ||
590
+ !boundedRawString(comparison.critiqueForB) ||
591
+ !boundedRawString(comparison.selectionReason) ||
592
+ (comparison.model !== undefined && !boundedString(comparison.model, 256, false)) ||
593
+ (comparison.provider !== undefined && !boundedString(comparison.provider, 256, false)) ||
594
+ (comparison.confidence !== undefined &&
595
+ (typeof comparison.confidence !== "number" ||
596
+ !Number.isFinite(comparison.confidence) ||
597
+ comparison.confidence < 0 ||
598
+ comparison.confidence > 1)) ||
599
+ !metadataValid ||
600
+ Buffer.byteLength(JSON.stringify(comparison), "utf8") > 1_048_576) {
601
+ resumeConfigError("comparisons.jsonl contains a malformed or oversized completed comparison row.", "resume.comparison_row_invalid", "Restore bounded comparison rows from the original run.");
602
+ }
603
+ }
604
+ function hashPhaseSeed(value) {
605
+ let hash = 2166136261;
606
+ for (let index = 0; index < value.length; index += 1) {
607
+ hash ^= value.charCodeAt(index);
608
+ hash = Math.imul(hash, 16777619);
609
+ }
610
+ return hash >>> 0;
611
+ }
612
+ function assertCandidateShape(candidate) {
613
+ if (!candidate ||
614
+ typeof candidate.id !== "string" ||
615
+ !candidate.id ||
616
+ !Number.isInteger(candidate.generation) ||
617
+ typeof candidate.content !== "string" ||
618
+ !candidate.metadata ||
619
+ typeof candidate.metadata.createdAt !== "string") {
620
+ resumeConfigError("candidates.jsonl or a population snapshot contains a structurally invalid candidate.", "resume.candidates_invalid", "Restore the candidate artifacts from the original run.");
621
+ }
622
+ }
623
+ function scoresEqual(left, right) {
624
+ const numericKeys = ["score", "rank", "wins", "losses", "ties", "comparisons"];
625
+ return (left.candidateId === right.candidateId &&
626
+ left.generation === right.generation &&
627
+ left.tieGroup === right.tieGroup &&
628
+ left.tieBreakerRank === right.tieBreakerRank &&
629
+ numericKeys.every((key) => Number.isFinite(left[key]) && Math.abs(left[key] - right[key]) < 1e-12));
312
630
  }
313
631
  async function readJson(runDir, fileName) {
314
632
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"resume.js","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../src/resume.ts"],"names":[],"mappings":"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"}
package/dist/runner.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import { BudgetTracker } from "./budgetTracker.js";
2
+ import { type RunLockClaim } from "./lifecycle.js";
2
3
  import { type PhaseCursor } from "./resume.js";
3
4
  import { type BtScore, type Candidate, type Comparison, type ModelDriver, type PhaseName, type RunConfig, type RunResult } from "./schemas.js";
4
5
  export interface RunControl {
5
6
  jobId?: string;
6
- lockClaimed?: boolean;
7
+ lockClaim?: RunLockClaim;
7
8
  shouldCancel?: () => boolean | Promise<boolean>;
9
+ signal?: AbortSignal;
8
10
  }
9
11
  export interface ResumeDeepThonkOptions {
10
12
  dryRun?: boolean;