@metaharness/darwin 0.1.0 → 0.2.1

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 (69) hide show
  1. package/README.md +113 -19
  2. package/dist/archive.d.ts +15 -0
  3. package/dist/archive.d.ts.map +1 -1
  4. package/dist/archive.js +41 -0
  5. package/dist/archive.js.map +1 -1
  6. package/dist/bench/promotion.d.ts.map +1 -1
  7. package/dist/bench/promotion.js +1 -0
  8. package/dist/bench/promotion.js.map +1 -1
  9. package/dist/bench/stats.d.ts +14 -0
  10. package/dist/bench/stats.d.ts.map +1 -1
  11. package/dist/bench/stats.js +38 -2
  12. package/dist/bench/stats.js.map +1 -1
  13. package/dist/bench/types.d.ts +4 -0
  14. package/dist/bench/types.d.ts.map +1 -1
  15. package/dist/clade.d.ts +26 -0
  16. package/dist/clade.d.ts.map +1 -0
  17. package/dist/clade.js +115 -0
  18. package/dist/clade.js.map +1 -0
  19. package/dist/cli.js +34 -1
  20. package/dist/cli.js.map +1 -1
  21. package/dist/curriculum.d.ts +19 -0
  22. package/dist/curriculum.d.ts.map +1 -0
  23. package/dist/curriculum.js +48 -0
  24. package/dist/curriculum.js.map +1 -0
  25. package/dist/epistasis.d.ts +40 -0
  26. package/dist/epistasis.d.ts.map +1 -0
  27. package/dist/epistasis.js +88 -0
  28. package/dist/epistasis.js.map +1 -0
  29. package/dist/evolve.d.ts +9 -1
  30. package/dist/evolve.d.ts.map +1 -1
  31. package/dist/evolve.js +314 -9
  32. package/dist/evolve.js.map +1 -1
  33. package/dist/index.d.ts +8 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/mock-sandbox.d.ts +58 -0
  38. package/dist/mock-sandbox.d.ts.map +1 -0
  39. package/dist/mock-sandbox.js +119 -0
  40. package/dist/mock-sandbox.js.map +1 -0
  41. package/dist/mutator.d.ts +44 -2
  42. package/dist/mutator.d.ts.map +1 -1
  43. package/dist/mutator.js +100 -7
  44. package/dist/mutator.js.map +1 -1
  45. package/dist/openrouter-mutator.d.ts.map +1 -1
  46. package/dist/openrouter-mutator.js +5 -2
  47. package/dist/openrouter-mutator.js.map +1 -1
  48. package/dist/pareto.d.ts +7 -0
  49. package/dist/pareto.d.ts.map +1 -0
  50. package/dist/pareto.js +46 -0
  51. package/dist/pareto.js.map +1 -0
  52. package/dist/phenotype.d.ts +83 -0
  53. package/dist/phenotype.d.ts.map +1 -0
  54. package/dist/phenotype.js +189 -0
  55. package/dist/phenotype.js.map +1 -0
  56. package/dist/templates.d.ts.map +1 -1
  57. package/dist/templates.js +6 -1
  58. package/dist/templates.js.map +1 -1
  59. package/dist/tier2-driver.d.ts +10 -0
  60. package/dist/tier2-driver.d.ts.map +1 -0
  61. package/dist/tier2-driver.js +62 -0
  62. package/dist/tier2-driver.js.map +1 -0
  63. package/dist/tier2-sandbox.d.ts +18 -0
  64. package/dist/tier2-sandbox.d.ts.map +1 -0
  65. package/dist/tier2-sandbox.js +91 -0
  66. package/dist/tier2-sandbox.js.map +1 -0
  67. package/dist/types.d.ts +99 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/package.json +10 -7
package/dist/evolve.js CHANGED
@@ -12,10 +12,33 @@ import { mkdir, writeFile } from 'node:fs/promises';
12
12
  import { join } from 'node:path';
13
13
  import { Archive } from './archive.js';
14
14
  import { generateBaselineHarness } from './generator.js';
15
- import { createChildVariant, DeterministicMutator } from './mutator.js';
15
+ import { createChildVariant, createCrossoverVariant, DeterministicMutator, summarizeFailedTraces, } from './mutator.js';
16
16
  import { profileRepo } from './repo_profiler.js';
17
17
  import { runVariantTasks } from './sandbox.js';
18
+ import { runVariantTasksMock } from './mock-sandbox.js';
19
+ import { runVariantTasksAgent } from './tier2-sandbox.js';
18
20
  import { scoreVariant } from './scorer.js';
21
+ import { behavioralNiche, embedTraces, nearestToTarget, underExploredTarget, } from './phenotype.js';
22
+ import { buildLinkage, linkedCrossoverBlock } from './epistasis.js';
23
+ import { cladeThompsonSelect } from './clade.js';
24
+ import { evaluateChildAgainstParent } from './bench/runner.js';
25
+ import { benjaminiHochberg } from './bench/stats.js';
26
+ import { curriculumSuite, maxDifficulty, nextCurriculumLevel } from './curriculum.js';
27
+ import { paretoFront } from './pareto.js';
28
+ import { statSync, readdirSync } from 'node:fs';
29
+ import { admitWithStatisticalGate, makeRiskBudget } from './bench/risk.js';
30
+ /** Hidden-test pass rate over a variant's per-task results (SGM SOTA clause). */
31
+ function hiddenRate(results) {
32
+ if (results.length === 0)
33
+ return 0;
34
+ return results.filter((r) => r.hiddenTestPassed).length / results.length;
35
+ }
36
+ /** Cost-per-solve: total metered cost divided by solved tasks (≥1 to avoid /0). */
37
+ function costPerSolve(results) {
38
+ const solved = results.filter((r) => r.solved).length;
39
+ const cost = results.reduce((s, r) => s + r.costUsd, 0);
40
+ return cost / Math.max(1, solved);
41
+ }
19
42
  const DEFAULT_CONCURRENCY = 4;
20
43
  const DEFAULT_TASK_TIMEOUT_MS = 120_000;
21
44
  /** Run async `fn` over `items` with at most `limit` in flight at once. Order-preserving. */
@@ -42,9 +65,14 @@ async function ensureWorkRoot(workRoot) {
42
65
  /** Run + score one variant. Pure of archive mutation (caller commits results). */
43
66
  async function evaluateVariant(variant, profile, cfg, parentScore) {
44
67
  const timeout = cfg.taskTimeoutMs ?? DEFAULT_TASK_TIMEOUT_MS;
45
- const traces = await runVariantTasks(variant, profile, cfg.tasks, {
46
- taskTimeoutMs: timeout,
47
- });
68
+ // ADR-102: in 'mock' mode the surfaces actually drive a deterministic agent
69
+ // loop, so the trace depends on surface content (manifold becomes live). The
70
+ // default 'real' mode runs the repo test command (surface-independent).
71
+ const traces = cfg.sandboxMode === 'agent'
72
+ ? await runVariantTasksAgent(variant, cfg.agentTasks) // Tier 2: execute the variant's real surface code (ADR-106)
73
+ : cfg.sandboxMode === 'mock'
74
+ ? await runVariantTasksMock(variant, cfg.mockTasks)
75
+ : await runVariantTasks(variant, profile, cfg.tasks, { taskTimeoutMs: timeout });
48
76
  const score = scoreVariant(variant.id, traces, parentScore, cfg.promotionDelta, timeout);
49
77
  return { variant, traces, score };
50
78
  }
@@ -52,6 +80,84 @@ async function evaluateVariant(variant, profile, cfg, parentScore) {
52
80
  function traceSeconds(traces) {
53
81
  return traces.reduce((s, t) => s + t.durationMs, 0) / 1000;
54
82
  }
83
+ /**
84
+ * Total bytes of a variant's surface files — a DETERMINISTIC parsimony signal
85
+ * (mutations change code size). Unlike trace-derived behaviour (which is
86
+ * surface-independent in the current sandbox), code size genuinely differs
87
+ * across variants, so it is a non-degenerate secondary objective for Pareto
88
+ * selection (ADR-100). Returns Infinity if the directory is unreadable.
89
+ */
90
+ function variantBytes(dir) {
91
+ try {
92
+ let total = 0;
93
+ for (const name of readdirSync(dir)) {
94
+ const st = statSync(join(dir, name));
95
+ if (st.isFile())
96
+ total += st.size;
97
+ }
98
+ return total;
99
+ }
100
+ catch {
101
+ return Infinity;
102
+ }
103
+ }
104
+ /** Mean wall-clock per trace; `Infinity` when a variant has no traces (sinks last). */
105
+ function meanDurationMs(traces) {
106
+ if (traces.length === 0)
107
+ return Infinity;
108
+ return traces.reduce((s, t) => s + t.durationMs, 0) / traces.length;
109
+ }
110
+ /**
111
+ * Active niche steering (ADR-092): seed the next generation from the scored
112
+ * variants nearest an UNDER-EXPLORED region of the Poincaré ball, so their
113
+ * offspring drive toward it. Returns `[]` when there is no hole or no candidate,
114
+ * letting the caller fall back to behavioural-diversity selection.
115
+ */
116
+ function steerTowardHole(archive, tracesById, limit) {
117
+ const scored = archive.all().filter((r) => r.score !== null);
118
+ if (scored.length === 0)
119
+ return [];
120
+ const occupied = new Set(scored.map((r) => behavioralNiche(tracesById.get(r.variant.id) ?? [])));
121
+ const target = underExploredTarget(occupied);
122
+ if (target === null)
123
+ return []; // manifold fully occupied — nothing to steer toward
124
+ const candidates = scored.map((r) => ({
125
+ id: r.variant.id,
126
+ embed: embedTraces(tracesById.get(r.variant.id) ?? []),
127
+ }));
128
+ const nearestIds = nearestToTarget(candidates, target.centroid, limit);
129
+ const byId = new Map(scored.map((r) => [r.variant.id, r.variant]));
130
+ return nearestIds.map((id) => byId.get(id)).filter(Boolean);
131
+ }
132
+ /**
133
+ * Among scored records sharing the TOP finalScore, return the most efficient
134
+ * (lowest mean trace wall-clock). Pure: caller supplies the per-variant traces.
135
+ * Returns `null` only when no record is scored. This is the 'faster' tie-break
136
+ * (ADR-072 scorer is ceiling-bound, so the efficiency signal lives here, not in
137
+ * finalScore). NOT reproducible by construction — opt-in via config.tieBreaker.
138
+ */
139
+ export function pickEfficientWinner(records, tracesById) {
140
+ let top = -Infinity;
141
+ for (const r of records) {
142
+ if (r.score && r.score.finalScore > top)
143
+ top = r.score.finalScore;
144
+ }
145
+ if (top === -Infinity)
146
+ return null;
147
+ const EPS = 1e-9;
148
+ let winner = null;
149
+ let bestMs = Infinity;
150
+ for (const r of records) {
151
+ if (!r.score || Math.abs(r.score.finalScore - top) > EPS)
152
+ continue;
153
+ const ms = meanDurationMs(tracesById.get(r.variant.id) ?? []);
154
+ if (winner === null || ms < bestMs) {
155
+ winner = r;
156
+ bestMs = ms;
157
+ }
158
+ }
159
+ return winner;
160
+ }
55
161
  async function commit(archive, workRoot, evalResult) {
56
162
  await writeFile(join(workRoot, 'runs', `${evalResult.variant.id}.json`), JSON.stringify({ traces: evalResult.traces, score: evalResult.score }, null, 2), 'utf8');
57
163
  archive.setScore(evalResult.variant.id, evalResult.score);
@@ -69,6 +175,13 @@ export async function evolve(config) {
69
175
  await archive.load();
70
176
  const seed = config.seed ?? 0;
71
177
  const concurrency = config.concurrency ?? DEFAULT_CONCURRENCY;
178
+ // Self-directed curriculum (ADR-097): start at the easiest tier and escalate as
179
+ // the population masters it. Only meaningful with a graded benchSuite.
180
+ let curriculumLevel = 1;
181
+ // Opt-in SGM cumulative risk budget (ADR-079), shared across all generations.
182
+ const riskBudget = config.benchSuite && config.riskBudgetTotal !== undefined
183
+ ? makeRiskBudget(config.riskBudgetTotal)
184
+ : null;
72
185
  // ADR-071: pluggable generator. Default deterministic; config.generator can
73
186
  // be an LLM-backed CodeGenerator (e.g. OpenRouterMutator) — same safety gate.
74
187
  const mutator = config.generator ?? new DeterministicMutator(seed);
@@ -79,27 +192,152 @@ export async function evolve(config) {
79
192
  await commit(archive, config.workRoot, baselineEval);
80
193
  await archive.save();
81
194
  const scoreById = new Map([[baseline.id, baselineEval.score]]);
195
+ // Parent traces are carried forward so a child's mutation can target the
196
+ // parent's ACTUAL failures (ADR-071 self-reflection); empty until a run fails.
197
+ const tracesById = new Map([[baseline.id, baselineEval.traces]]);
82
198
  let parents = [baseline];
83
199
  // --- generations ---
84
200
  for (let generation = 1; generation <= config.generations; generation++) {
85
201
  // Build this generation's children from the current parents.
86
202
  const children = [];
87
- for (const parent of parents) {
88
- for (let index = 0; index < config.childrenPerGeneration; index++) {
89
- const child = await createChildVariant(parent, config.workRoot, generation, index, mutator, seed);
203
+ const canCross = config.crossover === true && parents.length >= 2;
204
+ // ADR-093: when epistasis is on, learn the surface-linkage graph from the
205
+ // archive so crossover keeps co-adapted surfaces together (topology-aware).
206
+ const linkage = canCross && config.epistasis === true
207
+ ? buildLinkage(archive
208
+ .all()
209
+ .filter((r) => r.score !== null)
210
+ .map((r) => ({
211
+ surfaces: archive
212
+ .lineageOf(r.variant.id)
213
+ .map((id) => archive.get(id)?.variant.mutationSurface)
214
+ .filter((s) => s !== undefined),
215
+ score: r.score.finalScore,
216
+ })))
217
+ : null;
218
+ for (let pIdx = 0; pIdx < parents.length; pIdx++) {
219
+ const parent = parents[pIdx];
220
+ for (let localIndex = 0; localIndex < config.childrenPerGeneration; localIndex++) {
221
+ // Unique per generation across ALL parents, so sibling ids never collide
222
+ // (and never coincide with an existing variant's id → no self-copy).
223
+ const index = pIdx * config.childrenPerGeneration + localIndex;
224
+ // Opt-in crossover (ADR-089): the first child of each parent recombines
225
+ // with the next parent's surfaces; the rest are ordinary mutations. With
226
+ // epistasis (ADR-093) the inherited subset is the next parent's linked block.
227
+ const other = parents[(pIdx + 1) % parents.length];
228
+ const child = canCross && localIndex === 0
229
+ ? await createCrossoverVariant(parent, other, config.workRoot, generation, index, seed, linkage ? linkedCrossoverBlock(linkage, other.mutationSurface) : undefined)
230
+ : await createChildVariant(parent, config.workRoot, generation, index, mutator, seed, {
231
+ repoSummary: profile.summary,
232
+ parentScore: scoreById.get(parent.id)?.finalScore ?? 0,
233
+ failedTraces: summarizeFailedTraces(tracesById.get(parent.id) ?? []),
234
+ });
90
235
  archive.addVariant(child);
91
236
  children.push({ child, parent });
92
237
  }
93
238
  }
94
239
  // Evaluate with bounded concurrency.
95
240
  const evals = await mapLimit(children, concurrency, ({ child, parent }) => evaluateVariant(child, profile, config, scoreById.get(parent.id) ?? null));
241
+ // Opt-in graded promotion (ADR-076): when a hash-pinned suite is supplied,
242
+ // evaluate each child vs its parent over the suite and let the STATISTICAL
243
+ // decision override the single-run promote flag. Same bounded concurrency.
244
+ let benchByChild = null;
245
+ if (config.benchSuite) {
246
+ // With the curriculum on, score only the admitted difficulty tier this gen.
247
+ const suite = config.curriculum
248
+ ? curriculumSuite(config.benchSuite, curriculumLevel)
249
+ : config.benchSuite;
250
+ benchByChild = new Map();
251
+ // Concurrent bench evaluation (no shared state).
252
+ const evaluated = await mapLimit(children, concurrency, async ({ child, parent }) => {
253
+ const r = await evaluateChildAgainstParent({
254
+ parent,
255
+ child,
256
+ profile,
257
+ suite,
258
+ seed,
259
+ samples: config.benchSamples,
260
+ minDelta: config.benchMinDelta,
261
+ });
262
+ return { id: child.id, ...r };
263
+ });
264
+ // Apply the SGM gate SEQUENTIALLY so the shared risk budget charges safely
265
+ // (ADR-079). Without a budget, the base statistical decision stands.
266
+ for (const e of evaluated) {
267
+ let decision = e.decision;
268
+ if (riskBudget) {
269
+ const gate = admitWithStatisticalGate({
270
+ decision,
271
+ childHiddenTestRate: hiddenRate(e.childResults),
272
+ parentHiddenTestRate: hiddenRate(e.parentResults),
273
+ childCostPerSolve: costPerSolve(e.childResults),
274
+ parentCostPerSolve: costPerSolve(e.parentResults),
275
+ costCeilingFactor: config.costCeilingFactor,
276
+ riskBudget,
277
+ });
278
+ decision = {
279
+ ...decision,
280
+ promote: gate.admit,
281
+ reasons: [
282
+ ...decision.reasons,
283
+ ...gate.reasons,
284
+ `risk budget remaining: ${gate.riskRemaining}`,
285
+ ],
286
+ };
287
+ }
288
+ benchByChild.set(e.id, decision);
289
+ }
290
+ // ADR-096: Benjamini–Hochberg FDR control across THIS generation's
291
+ // candidates. With many concurrent tests, per-comparison gates over-promote
292
+ // by chance; BH corrects it. It can only DEMOTE (never promotes a child
293
+ // that failed its clauses) — a child stays promoted iff it already passed
294
+ // AND survives the generation-wide correction at q = config.fdrQ.
295
+ // ADR-112: BH only controls FDR when the bootstrap p-values are calibrated,
296
+ // which requires ≥ 5 task-scores per variant (at n=3 the empirical FDR is
297
+ // ~33%, not q). With fewer tasks we leave the per-comparison gate in place
298
+ // and record a caveat rather than apply an uncalibrated correction.
299
+ if (config.fdrQ !== undefined && suite.tasks.length >= 5) {
300
+ const entries = [...benchByChild.entries()];
301
+ const significant = benjaminiHochberg(entries.map(([, d]) => d.pValue), config.fdrQ);
302
+ entries.forEach(([id, d], i) => {
303
+ if (d.promote && !significant[i]) {
304
+ benchByChild.set(id, {
305
+ ...d,
306
+ promote: false,
307
+ reasons: [...d.reasons, `FDR(BH q=${config.fdrQ}): not significant after multiple-testing correction`],
308
+ });
309
+ }
310
+ });
311
+ }
312
+ else if (config.fdrQ !== undefined) {
313
+ for (const [id, d] of benchByChild.entries()) {
314
+ benchByChild.set(id, { ...d, reasons: [...d.reasons, `FDR skipped: only ${suite.tasks.length} tasks (<5) — BH uncalibrated at small n (ADR-112)`] });
315
+ }
316
+ }
317
+ // ADR-097: escalate the curriculum when the population MASTERS the tier.
318
+ if (config.curriculum) {
319
+ const rates = evaluated.map((e) => e.childResults.length
320
+ ? e.childResults.filter((r) => r.solved).length / e.childResults.length
321
+ : 0);
322
+ const meanSolveRate = rates.length ? rates.reduce((s, r) => s + r, 0) / rates.length : 0;
323
+ curriculumLevel = nextCurriculumLevel(curriculumLevel, meanSolveRate, maxDifficulty(config.benchSuite), config.curriculumThreshold);
324
+ }
325
+ }
96
326
  // Commit sequentially (single-writer to the archive + one save), honouring
97
327
  // the per-generation cost breaker.
98
328
  let spent = 0;
99
329
  const promoted = [];
100
330
  for (const ev of evals) {
331
+ const decision = benchByChild?.get(ev.variant.id);
332
+ if (decision) {
333
+ // The graded gate is authoritative when present.
334
+ ev.score.promoted = decision.promote;
335
+ ev.score.reason = `bench(ADR-076): ${decision.reasons.join('; ')}`;
336
+ await writeFile(join(config.workRoot, 'runs', `${ev.variant.id}.bench.json`), JSON.stringify(decision, null, 2), 'utf8');
337
+ }
101
338
  await commit(archive, config.workRoot, ev);
102
339
  scoreById.set(ev.variant.id, ev.score);
340
+ tracesById.set(ev.variant.id, ev.traces);
103
341
  if (ev.score.promoted)
104
342
  promoted.push(ev.variant);
105
343
  spent += traceSeconds(ev.traces);
@@ -109,11 +347,78 @@ export async function evolve(config) {
109
347
  await archive.save();
110
348
  // Selection (ADR-073): prefer promoted children; on a stalled generation
111
349
  // sample the whole archive so we explore sideways instead of dead-ending.
112
- parents = promoted.length > 0 ? promoted : archive.selectParents(2);
350
+ // Opt-in MAP-Elites (config.selection): the stall fallback draws elites from
351
+ // DISTINCT surface niches so exploration stays diverse at the score ceiling.
352
+ // ADR-115: memoryless (μ,λ) selection — parents only from THIS generation's
353
+ // scored children, with NO archive retention. Used to test whether the
354
+ // whole-archive retention (ADR-073) is what enables sequential two-surface
355
+ // accumulation. Default 'archive' keeps the retained-archive behaviour.
356
+ if (config.selectionPool === 'generation') {
357
+ const genScored = children
358
+ .map((c) => c.child)
359
+ .filter((v) => scoreById.has(v.id))
360
+ .sort((a, b) => scoreById.get(b.id).finalScore - scoreById.get(a.id).finalScore);
361
+ parents = genScored.slice(0, 2);
362
+ if (parents.length === 0)
363
+ parents = promoted.length > 0 ? promoted : archive.selectParents(2);
364
+ if (parents.length === 0)
365
+ break;
366
+ continue;
367
+ }
368
+ // ADR-094: clade-metaproductivity selection picks parents by descendant
369
+ // POTENTIAL (Thompson sampling over the subtree's success rate), not current
370
+ // score — the best scorer is a spent parent. τ is scheduled from the SGM
371
+ // budget: full budget → explore, spent budget → exploit. Bypasses the
372
+ // promoted-first rule (HGM), falling back only if nothing is scored yet.
373
+ if (config.selection === 'clade') {
374
+ const tau = riskBudget && riskBudget.total > 0 ? riskBudget.spent / riskBudget.total : 1;
375
+ const cladeParents = cladeThompsonSelect(archive, tau, 2, seed + generation);
376
+ parents = cladeParents.length > 0 ? cladeParents : promoted.length > 0 ? promoted : archive.selectParents(2);
377
+ if (parents.length === 0)
378
+ break;
379
+ continue;
380
+ }
381
+ let stallFallback;
382
+ if (config.selection === 'niche-steering') {
383
+ // Steer toward an under-explored Poincaré region; if the manifold is full
384
+ // (no hole), degrade to behavioural-diversity elites.
385
+ const steered = steerTowardHole(archive, tracesById, 2);
386
+ stallFallback =
387
+ steered.length > 0
388
+ ? steered
389
+ : archive.selectElites(2, (v) => behavioralNiche(tracesById.get(v.id) ?? []));
390
+ }
391
+ else if (config.selection === 'behavioral-diversity') {
392
+ stallFallback = archive.selectElites(2, (v) => behavioralNiche(tracesById.get(v.id) ?? []));
393
+ }
394
+ else if (config.selection === 'quality-diversity') {
395
+ stallFallback = archive.selectElites(2);
396
+ }
397
+ else if (config.selection === 'pareto') {
398
+ // Non-dominated over (finalScore ↑, code parsimony ↑ = bytes ↓). Keeps both
399
+ // capable and parsimonious variants as parents (ADR-100). Cap at 2 by score.
400
+ const sized = archive
401
+ .all()
402
+ .filter((r) => r.score !== null)
403
+ .map((r) => ({ v: r.variant, score: r.score.finalScore, bytes: variantBytes(r.variant.dir) }));
404
+ const front = paretoFront(sized, (o) => [o.score, -o.bytes]);
405
+ stallFallback = (front.length > 0 ? front : sized)
406
+ .sort((a, b) => b.score - a.score || a.bytes - b.bytes)
407
+ .slice(0, 2)
408
+ .map((o) => o.v);
409
+ }
410
+ else {
411
+ stallFallback = archive.selectParents(2);
412
+ }
413
+ parents = promoted.length > 0 ? promoted : stallFallback;
113
414
  if (parents.length === 0)
114
415
  break;
115
416
  }
116
- const winner = archive.best();
417
+ // Default 'insertion' (reproducible: archive.best breaks ties by insertion).
418
+ // Opt-in 'faster' re-breaks top-finalScore ties by efficiency (ADR-072 ceiling).
419
+ const winner = config.tieBreaker === 'faster'
420
+ ? pickEfficientWinner(archive.all(), tracesById)
421
+ : archive.best();
117
422
  const winnerLineage = winner ? archive.lineageOf(winner.variant.id) : [];
118
423
  await writeFile(join(config.workRoot, 'reports', 'winner.json'), JSON.stringify(winner, null, 2), 'utf8');
119
424
  await writeFile(join(config.workRoot, 'lineage.json'), JSON.stringify(archive.toLineageGraph(), null, 2), 'utf8');
@@ -1 +1 @@
1
- {"version":3,"file":"evolve.js","sourceRoot":"","sources":["../src/evolve.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,EAAE;AACF,qFAAqF;AACrF,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAE/E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAExC,4FAA4F;AAC5F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,KAAU,EACV,KAAa,EACb,EAA0C;IAE1C,MAAM,OAAO,GAAG,IAAI,KAAK,CAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE;QACvD,SAAS,CAAC;YACR,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM;YAC7B,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC;AAQD,kFAAkF;AAClF,KAAK,UAAU,eAAe,CAC5B,OAAuB,EACvB,OAAoB,EACpB,GAAoB,EACpB,WAA6B;IAE7B,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,IAAI,uBAAuB,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE;QAChE,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,YAAY,CACxB,OAAO,CAAC,EAAE,EACV,MAAM,EACN,WAAW,EACX,GAAG,CAAC,cAAc,EAClB,OAAO,CACR,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,SAAS,YAAY,CAAC,MAAkB;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,MAAM,CACnB,OAAgB,EAChB,QAAgB,EAChB,UAAsB;IAEtB,MAAM,SAAS,CACb,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EACvD,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/E,MAAM,CACP,CAAC;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAuB;IAClD,MAAM,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAC9D,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEnE,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACzE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAoB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,OAAO,GAAqB,CAAC,QAAQ,CAAC,CAAC;IAE3C,sBAAsB;IACtB,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,CAAC;QACxE,6DAA6D;QAC7D,MAAM,QAAQ,GAA6D,EAAE,CAAC;QAC9E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,MAAM,EACN,MAAM,CAAC,QAAQ,EACf,UAAU,EACV,KAAK,EACL,OAAO,EACP,IAAI,CACL,CAAC;gBACF,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CACxE,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAC1E,CAAC;QAEF,2EAA2E;QAC3E,mCAAmC;QACnC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3C,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,IAAI,YAAY,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,iBAAiB,IAAI,KAAK,IAAI,MAAM,CAAC,iBAAiB;gBAAE,MAAM;QAC3E,CAAC;QACD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAErB,yEAAyE;QACzE,0EAA0E;QAC1E,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,MAAM,SAAS,CACb,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,EAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/B,MAAM,CACP,CAAC;IACF,MAAM,SAAS,CACb,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACjD,MAAM,CACP,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO;QACL,QAAQ,EAAE,cAAc,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC1F,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"evolve.js","sourceRoot":"","sources":["../src/evolve.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,14 @@ export * from './repo_profiler.js';
4
4
  export * from './templates.js';
5
5
  export * from './generator.js';
6
6
  export * from './mutator.js';
7
+ export * from './openrouter-mutator.js';
8
+ export * from './phenotype.js';
9
+ export * from './epistasis.js';
10
+ export * from './clade.js';
11
+ export * from './curriculum.js';
12
+ export * from './pareto.js';
13
+ export * from './mock-sandbox.js';
14
+ export * from './tier2-sandbox.js';
7
15
  export * from './sandbox.js';
8
16
  export * from './scorer.js';
9
17
  export * from './archive.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAI5B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAyBA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAI5B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@
17
17
  // templates — the seven baseline mutation-surface sources
18
18
  // generator — RepoProfile → baseline variant
19
19
  // mutator — bounded, validated child mutations + the CodeGenerator hook
20
+ // openrouter-mutator — optional LLM-backed CodeGenerator (same safety gate)
20
21
  // sandbox — gate-first, shell-free, env-scrubbed task runner
21
22
  // scorer — the frozen weighted scorer + strict promotion gate (ADR-072)
22
23
  // archive — the population tree + archive-wide selection (ADR-073)
@@ -27,6 +28,14 @@ export * from './repo_profiler.js';
27
28
  export * from './templates.js';
28
29
  export * from './generator.js';
29
30
  export * from './mutator.js';
31
+ export * from './openrouter-mutator.js';
32
+ export * from './phenotype.js';
33
+ export * from './epistasis.js';
34
+ export * from './clade.js';
35
+ export * from './curriculum.js';
36
+ export * from './pareto.js';
37
+ export * from './mock-sandbox.js';
38
+ export * from './tier2-sandbox.js';
30
39
  export * from './sandbox.js';
31
40
  export * from './scorer.js';
32
41
  export * from './archive.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,2BAA2B;AAC3B,EAAE;AACF,WAAW;AACX,yCAAyC;AACzC,yEAAyE;AACzE,wCAAwC;AACxC,iEAAiE;AACjE,oDAAoD;AACpD,iFAAiF;AACjF,sEAAsE;AACtE,kFAAkF;AAClF,4EAA4E;AAC5E,+DAA+D;AAE/D,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,gFAAgF;AAChF,2EAA2E;AAC3E,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,mDAAmD;AACnD,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,EAAE;AACF,iFAAiF;AACjF,2BAA2B;AAC3B,EAAE;AACF,WAAW;AACX,yCAAyC;AACzC,yEAAyE;AACzE,wCAAwC;AACxC,iEAAiE;AACjE,oDAAoD;AACpD,iFAAiF;AACjF,8EAA8E;AAC9E,sEAAsE;AACtE,kFAAkF;AAClF,4EAA4E;AAC5E,+DAA+D;AAE/D,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAE5B,gFAAgF;AAChF,2EAA2E;AAC3E,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import type { HarnessVariant, RunTrace } from './types.js';
2
+ /** Behaviour-shaping parameters read from a variant's surface files. */
3
+ export interface SurfaceParams {
4
+ /** retryPolicy: attempt budget. */
5
+ maxAttempts: number;
6
+ /** contextBuilder: how many context items the agent "sees" per attempt. */
7
+ contextWindow: number;
8
+ /** memoryPolicy: keep-threshold (drives memory-accept events). */
9
+ memoryThreshold: number;
10
+ /** planner: number of plan steps (directive phrases) → loop length. */
11
+ planSteps: number;
12
+ }
13
+ /** A scripted task. Solvable iff the agent retries enough AND sees enough context. */
14
+ export interface MockTask {
15
+ id: string;
16
+ /** Attempts that fail before the bug is fixable (needs maxAttempts > this). */
17
+ failAttempts: number;
18
+ /** Minimum context window to even observe the bug (needs contextWindow ≥ this). */
19
+ requiredContext: number;
20
+ /** Per-attempt backoff cost (ms) — makes durationMs a function of retries. */
21
+ backoffMs: number;
22
+ /** ADR-097 difficulty tier. */
23
+ difficulty: 1 | 2 | 3 | 4 | 5;
24
+ }
25
+ /**
26
+ * A graduated scripted ladder (drives the curriculum, ADR-097). Each rung needs
27
+ * slightly more retry budget and/or context than the last, so an incremental
28
+ * surface improvement solves incrementally MORE rungs — a climbable gradient
29
+ * (not a deceptive all-or-nothing plateau). The lower rungs reward retry-budget
30
+ * growth alone; the upper rungs additionally require a wider context window, so
31
+ * the full ladder rewards combining both surfaces (crossover/epistasis).
32
+ */
33
+ export declare const DEFAULT_MOCK_TASKS: readonly MockTask[];
34
+ /**
35
+ * Extract surface parameters from a variant directory (text-parsing, not import).
36
+ * Uses the same patterns the DeterministicMutator perturbs, so a mutation that
37
+ * bumps a budget or a slice width is reflected here. Missing files → defaults.
38
+ */
39
+ export declare function extractSurfaceParams(variantDir: string): Promise<SurfaceParams>;
40
+ export interface SimResult {
41
+ solved: boolean;
42
+ attemptsUsed: number;
43
+ durationMs: number;
44
+ log: string;
45
+ }
46
+ /**
47
+ * Simulate a scripted agent loop. Outcome is a deterministic function of the
48
+ * surface params and the task: the agent must (a) see enough context and
49
+ * (b) retry past the task's failing attempts. The log records plan steps,
50
+ * context builds, and retry decisions — so verbosity/repetition/duration all
51
+ * vary by surface, populating the behavioural phenotype (ADR-091).
52
+ */
53
+ export declare function simulateAgentLoop(params: SurfaceParams, task: MockTask): SimResult;
54
+ /** Run ONE mock task against a variant, producing a surface-dependent RunTrace. */
55
+ export declare function runVariantTaskMock(variant: HarnessVariant, task: MockTask, params?: SurfaceParams): Promise<RunTrace>;
56
+ /** Run a variant against a graded mock suite (defaults to DEFAULT_MOCK_TASKS). */
57
+ export declare function runVariantTasksMock(variant: HarnessVariant, tasks?: readonly MockTask[]): Promise<RunTrace[]>;
58
+ //# sourceMappingURL=mock-sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-sandbox.d.ts","sourceRoot":"","sources":["../src/mock-sandbox.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,UAAU,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,QAAQ,EAMjD,CAAC;AAOF;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqBrF;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,GAAG,SAAS,CAmBlF;AAED,mFAAmF;AACnF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,QAAQ,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAED,kFAAkF;AAClF,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EACvB,KAAK,GAAE,SAAS,QAAQ,EAAuB,GAC9C,OAAO,CAAC,QAAQ,EAAE,CAAC,CAKrB"}