@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.
- package/README.md +113 -19
- package/dist/archive.d.ts +15 -0
- package/dist/archive.d.ts.map +1 -1
- package/dist/archive.js +41 -0
- package/dist/archive.js.map +1 -1
- package/dist/bench/promotion.d.ts.map +1 -1
- package/dist/bench/promotion.js +1 -0
- package/dist/bench/promotion.js.map +1 -1
- package/dist/bench/stats.d.ts +14 -0
- package/dist/bench/stats.d.ts.map +1 -1
- package/dist/bench/stats.js +38 -2
- package/dist/bench/stats.js.map +1 -1
- package/dist/bench/types.d.ts +4 -0
- package/dist/bench/types.d.ts.map +1 -1
- package/dist/clade.d.ts +26 -0
- package/dist/clade.d.ts.map +1 -0
- package/dist/clade.js +115 -0
- package/dist/clade.js.map +1 -0
- package/dist/cli.js +34 -1
- package/dist/cli.js.map +1 -1
- package/dist/curriculum.d.ts +19 -0
- package/dist/curriculum.d.ts.map +1 -0
- package/dist/curriculum.js +48 -0
- package/dist/curriculum.js.map +1 -0
- package/dist/epistasis.d.ts +40 -0
- package/dist/epistasis.d.ts.map +1 -0
- package/dist/epistasis.js +88 -0
- package/dist/epistasis.js.map +1 -0
- package/dist/evolve.d.ts +9 -1
- package/dist/evolve.d.ts.map +1 -1
- package/dist/evolve.js +314 -9
- package/dist/evolve.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/mock-sandbox.d.ts +58 -0
- package/dist/mock-sandbox.d.ts.map +1 -0
- package/dist/mock-sandbox.js +119 -0
- package/dist/mock-sandbox.js.map +1 -0
- package/dist/mutator.d.ts +44 -2
- package/dist/mutator.d.ts.map +1 -1
- package/dist/mutator.js +100 -7
- package/dist/mutator.js.map +1 -1
- package/dist/openrouter-mutator.d.ts.map +1 -1
- package/dist/openrouter-mutator.js +5 -2
- package/dist/openrouter-mutator.js.map +1 -1
- package/dist/pareto.d.ts +7 -0
- package/dist/pareto.d.ts.map +1 -0
- package/dist/pareto.js +46 -0
- package/dist/pareto.js.map +1 -0
- package/dist/phenotype.d.ts +83 -0
- package/dist/phenotype.d.ts.map +1 -0
- package/dist/phenotype.js +189 -0
- package/dist/phenotype.js.map +1 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +6 -1
- package/dist/templates.js.map +1 -1
- package/dist/tier2-driver.d.ts +10 -0
- package/dist/tier2-driver.d.ts.map +1 -0
- package/dist/tier2-driver.js +62 -0
- package/dist/tier2-driver.js.map +1 -0
- package/dist/tier2-sandbox.d.ts +18 -0
- package/dist/tier2-sandbox.d.ts.map +1 -0
- package/dist/tier2-sandbox.js +91 -0
- package/dist/tier2-sandbox.js.map +1 -0
- package/dist/types.d.ts +99 -0
- package/dist/types.d.ts.map +1 -1
- 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
|
-
|
|
46
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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');
|
package/dist/evolve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evolve.js","sourceRoot":"","sources":["../src/evolve.ts"],"names":[],"mappings":"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"}
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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"}
|