@miller-tech/uap 1.175.13 → 1.178.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/dist/.tsbuildinfo +1 -1
- package/dist/benchmarks/harness-card.d.ts +86 -0
- package/dist/benchmarks/harness-card.d.ts.map +1 -0
- package/dist/benchmarks/harness-card.js +153 -0
- package/dist/benchmarks/harness-card.js.map +1 -0
- package/dist/benchmarks/paired/report.d.ts +15 -0
- package/dist/benchmarks/paired/report.d.ts.map +1 -1
- package/dist/benchmarks/paired/report.js +12 -0
- package/dist/benchmarks/paired/report.js.map +1 -1
- package/dist/benchmarks/paired/types.d.ts +1 -1
- package/dist/bin/cli.js +27 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/bench.d.ts.map +1 -1
- package/dist/cli/bench.js +64 -3
- package/dist/cli/bench.js.map +1 -1
- package/dist/cli/harness.d.ts +3 -2
- package/dist/cli/harness.d.ts.map +1 -1
- package/dist/cli/harness.js +81 -0
- package/dist/cli/harness.js.map +1 -1
- package/dist/cli/memory.d.ts +7 -1
- package/dist/cli/memory.d.ts.map +1 -1
- package/dist/cli/memory.js +165 -0
- package/dist/cli/memory.js.map +1 -1
- package/dist/cli/policy.d.ts +43 -0
- package/dist/cli/policy.d.ts.map +1 -1
- package/dist/cli/policy.js +80 -27
- package/dist/cli/policy.js.map +1 -1
- package/dist/delivery/agentic-executor.d.ts +76 -2
- package/dist/delivery/agentic-executor.d.ts.map +1 -1
- package/dist/delivery/agentic-executor.js +231 -29
- package/dist/delivery/agentic-executor.js.map +1 -1
- package/dist/delivery/edit-match.d.ts +134 -0
- package/dist/delivery/edit-match.d.ts.map +1 -0
- package/dist/delivery/edit-match.js +331 -0
- package/dist/delivery/edit-match.js.map +1 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
- package/dist/memory/dynamic-retrieval.js +57 -0
- package/dist/memory/dynamic-retrieval.js.map +1 -1
- package/dist/memory/reconstruct-ingest.d.ts +88 -0
- package/dist/memory/reconstruct-ingest.d.ts.map +1 -0
- package/dist/memory/reconstruct-ingest.js +165 -0
- package/dist/memory/reconstruct-ingest.js.map +1 -0
- package/dist/memory/reconstruct-store.d.ts +143 -0
- package/dist/memory/reconstruct-store.d.ts.map +1 -0
- package/dist/memory/reconstruct-store.js +312 -0
- package/dist/memory/reconstruct-store.js.map +1 -0
- package/dist/memory/reconstruct.d.ts +272 -0
- package/dist/memory/reconstruct.d.ts.map +1 -0
- package/dist/memory/reconstruct.js +552 -0
- package/dist/memory/reconstruct.js.map +1 -0
- package/dist/policies/schemas/policy.d.ts +2 -2
- package/dist/self-harness/evidence-proposer.d.ts +58 -0
- package/dist/self-harness/evidence-proposer.d.ts.map +1 -0
- package/dist/self-harness/evidence-proposer.js +132 -0
- package/dist/self-harness/evidence-proposer.js.map +1 -0
- package/dist/self-harness/manifest.d.ts +130 -0
- package/dist/self-harness/manifest.d.ts.map +1 -0
- package/dist/self-harness/manifest.js +247 -0
- package/dist/self-harness/manifest.js.map +1 -0
- package/dist/self-harness/mods.d.ts +57 -3
- package/dist/self-harness/mods.d.ts.map +1 -1
- package/dist/self-harness/mods.js +72 -0
- package/dist/self-harness/mods.js.map +1 -1
- package/dist/self-harness/orchestrator.d.ts +27 -0
- package/dist/self-harness/orchestrator.d.ts.map +1 -1
- package/dist/self-harness/orchestrator.js +47 -4
- package/dist/self-harness/orchestrator.js.map +1 -1
- package/dist/self-harness/pending.d.ts +17 -3
- package/dist/self-harness/pending.d.ts.map +1 -1
- package/dist/self-harness/pending.js +26 -4
- package/dist/self-harness/pending.js.map +1 -1
- package/dist/self-harness/profile.d.ts +17 -1
- package/dist/self-harness/profile.d.ts.map +1 -1
- package/dist/self-harness/profile.js +11 -4
- package/dist/self-harness/profile.js.map +1 -1
- package/dist/self-harness/run.d.ts +19 -0
- package/dist/self-harness/run.d.ts.map +1 -1
- package/dist/self-harness/run.js +43 -4
- package/dist/self-harness/run.js.map +1 -1
- package/dist/self-harness/transfer.d.ts.map +1 -1
- package/dist/self-harness/transfer.js +2 -0
- package/dist/self-harness/transfer.js.map +1 -1
- package/dist/self-harness/validate.d.ts +17 -6
- package/dist/self-harness/validate.d.ts.map +1 -1
- package/dist/self-harness/validate.js +73 -8
- package/dist/self-harness/validate.js.map +1 -1
- package/dist/telemetry/tool-calls.d.ts +82 -0
- package/dist/telemetry/tool-calls.d.ts.map +1 -0
- package/dist/telemetry/tool-calls.js +280 -0
- package/dist/telemetry/tool-calls.js.map +1 -0
- package/dist/telemetry/tool-failure.d.ts +71 -0
- package/dist/telemetry/tool-failure.d.ts.map +1 -0
- package/dist/telemetry/tool-failure.js +123 -0
- package/dist/telemetry/tool-failure.js.map +1 -0
- package/docs/plans/harness-engineering-uplift-2026-07-31.md +280 -0
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/templates/hooks/__pycache__/deliver_autoroute.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
|
@@ -62,6 +62,47 @@ export const MIDDLEWARE_IDS = ['toolcall-path-normalizer'];
|
|
|
62
62
|
export function isMiddlewareId(s) {
|
|
63
63
|
return MIDDLEWARE_IDS.includes(s);
|
|
64
64
|
}
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
// Tool Mods (harness plan area B1, 2026-07-31).
|
|
67
|
+
//
|
|
68
|
+
// WHY these exist: the self-harness search space was env knobs ONLY — the
|
|
69
|
+
// inference server's launch parameters. The Agentic-Harness-Engineering ablation
|
|
70
|
+
// (arXiv 2604.25850) measures where harness gains actually come from:
|
|
71
|
+
//
|
|
72
|
+
// long-term memory +5.6pp | tools +3.3pp | middleware +2.2pp | prompt -2.3pp
|
|
73
|
+
//
|
|
74
|
+
// Server knobs are not on that list, and prompt edits are NEGATIVE. So the loop
|
|
75
|
+
// was searching the one surface with no measured value while the surfaces with
|
|
76
|
+
// measured value were gated behind a human.
|
|
77
|
+
//
|
|
78
|
+
// Tool knobs are CLIENT-side (the executor reads them per run), which is also
|
|
79
|
+
// why they can auto-validate where env knobs could not: flipping one needs an
|
|
80
|
+
// environment variable on the candidate arm, not a server restart.
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
export const TOOL_KNOB_ALLOWLIST = {
|
|
83
|
+
UAP_EDIT_TOLERANT: {
|
|
84
|
+
target: 'executor', type: 'enum', values: ['0', '1'],
|
|
85
|
+
description: 'edit_file falls back to whitespace-tolerant matching on an exact miss',
|
|
86
|
+
},
|
|
87
|
+
UAP_EDIT_DIAGNOSTICS: {
|
|
88
|
+
target: 'executor', type: 'enum', values: ['0', '1'],
|
|
89
|
+
description: 'a failed edit returns the nearest current region instead of "not found"',
|
|
90
|
+
},
|
|
91
|
+
UAP_READ_WINDOW_BYTES: {
|
|
92
|
+
target: 'executor', type: 'number', min: 2000, max: 32000, integer: true,
|
|
93
|
+
description: 'bytes of a file read_file returns per call',
|
|
94
|
+
},
|
|
95
|
+
UAP_MAX_TOOL_ROUNDS: {
|
|
96
|
+
target: 'executor', type: 'number', min: 4, max: 40, integer: true,
|
|
97
|
+
description: 'tool-call rounds before a final answer is forced',
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
export function isKnownToolKnob(k) {
|
|
101
|
+
return Object.prototype.hasOwnProperty.call(TOOL_KNOB_ALLOWLIST, k);
|
|
102
|
+
}
|
|
103
|
+
export function toolKnobSpec(key) {
|
|
104
|
+
return TOOL_KNOB_ALLOWLIST[key];
|
|
105
|
+
}
|
|
65
106
|
/**
|
|
66
107
|
* Validate a Mod against the DSL constraints. A proposer's output that fails
|
|
67
108
|
* this is rejected at parse time — it never reaches the apply/validate stages.
|
|
@@ -115,6 +156,33 @@ export function validateMod(mod) {
|
|
|
115
156
|
}
|
|
116
157
|
case 'config':
|
|
117
158
|
return validateConfigMod(mod);
|
|
159
|
+
case 'tool': {
|
|
160
|
+
// Same bounds discipline as an env knob: an out-of-range tool knob is
|
|
161
|
+
// rejected at parse time, never handed to a bench arm.
|
|
162
|
+
if (!isKnownToolKnob(mod.key)) {
|
|
163
|
+
return { ok: false, reason: `unknown/non-allow-listed tool knob: ${String(mod.key)}` };
|
|
164
|
+
}
|
|
165
|
+
const spec = toolKnobSpec(mod.key);
|
|
166
|
+
if (spec.type === 'number') {
|
|
167
|
+
const n = Number(mod.to);
|
|
168
|
+
if (!Number.isFinite(n))
|
|
169
|
+
return { ok: false, reason: `${mod.key}: "${mod.to}" is not numeric` };
|
|
170
|
+
if (spec.integer && !Number.isInteger(n)) {
|
|
171
|
+
return { ok: false, reason: `${mod.key}: must be an integer, got ${mod.to}` };
|
|
172
|
+
}
|
|
173
|
+
if (n < spec.min || n > spec.max) {
|
|
174
|
+
return {
|
|
175
|
+
ok: false,
|
|
176
|
+
reason: `${mod.key}=${mod.to} out of safe range [${spec.min}, ${spec.max}]`,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return { ok: true };
|
|
180
|
+
}
|
|
181
|
+
if (!spec.values.includes(mod.to)) {
|
|
182
|
+
return { ok: false, reason: `${mod.key}="${mod.to}" not in {${spec.values.join(', ')}}` };
|
|
183
|
+
}
|
|
184
|
+
return { ok: true };
|
|
185
|
+
}
|
|
118
186
|
default:
|
|
119
187
|
return { ok: false, reason: `unknown mod kind` };
|
|
120
188
|
}
|
|
@@ -164,6 +232,8 @@ export function describeMod(mod) {
|
|
|
164
232
|
return `middleware ${mod.id}(${JSON.stringify(mod.params)})`;
|
|
165
233
|
case 'config':
|
|
166
234
|
return `config ${mod.key}: ${mod.from} -> ${mod.to}`;
|
|
235
|
+
case 'tool':
|
|
236
|
+
return `tool ${mod.key}: ${mod.from} -> ${mod.to}`;
|
|
167
237
|
}
|
|
168
238
|
}
|
|
169
239
|
/**
|
|
@@ -188,6 +258,8 @@ export function invertMod(mod) {
|
|
|
188
258
|
return { kind: 'middleware', id: mod.id, params: { ...mod.params, enabled: false } };
|
|
189
259
|
case 'config':
|
|
190
260
|
return { kind: 'config', key: mod.key, from: mod.to, to: mod.from, category: mod.category };
|
|
261
|
+
case 'tool':
|
|
262
|
+
return { kind: 'tool', key: mod.key, from: mod.to, to: mod.from };
|
|
191
263
|
}
|
|
192
264
|
}
|
|
193
265
|
//# sourceMappingURL=mods.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mods.js","sourceRoot":"","sources":["../../src/self-harness/mods.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAgB,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"mods.js","sourceRoot":"","sources":["../../src/self-harness/mods.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ import { Proposer } from './propose.js';
|
|
|
19
19
|
import { Decision, DecisionOptions } from './decide.js';
|
|
20
20
|
import { HarnessProfile } from './profile.js';
|
|
21
21
|
import { TransferStore } from './transfer.js';
|
|
22
|
+
import { ManifestStore, type ChangeManifest, type ManifestAttribution, type ManifestDecision, type ManifestPolicyOptions } from './manifest.js';
|
|
22
23
|
export interface ValidationOutcome {
|
|
23
24
|
validation: Comparison;
|
|
24
25
|
/** Held-out comparison; null when the held-out suite was skipped. */
|
|
@@ -42,6 +43,20 @@ export interface OrchestratorOptions {
|
|
|
42
43
|
/** ISO timestamp + provenance string stamped on recorded transfer entries. */
|
|
43
44
|
validatedAt?: string;
|
|
44
45
|
provenance?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Change-manifest store (harness plan C). Supplied -> every accepted Mod is
|
|
48
|
+
* recorded as a falsifiable prediction, and any manifest left open by a PRIOR
|
|
49
|
+
* iteration is attributed against this iteration's records first. Omitted ->
|
|
50
|
+
* the loop behaves exactly as before.
|
|
51
|
+
*/
|
|
52
|
+
manifests?: ManifestStore;
|
|
53
|
+
/**
|
|
54
|
+
* The records the PREVIOUS iteration saw, needed to attribute open manifests
|
|
55
|
+
* (before vs after). Omit on the first iteration.
|
|
56
|
+
*/
|
|
57
|
+
priorRecords?: RunRecord[];
|
|
58
|
+
/** Policy for turning an attribution into keep/revert. */
|
|
59
|
+
manifestPolicy?: ManifestPolicyOptions;
|
|
45
60
|
}
|
|
46
61
|
export interface CandidateOutcome {
|
|
47
62
|
mod: Mod;
|
|
@@ -55,6 +70,18 @@ export interface IterationResult {
|
|
|
55
70
|
accepted: Mod[];
|
|
56
71
|
/** Profile after applying all accepted Mods. */
|
|
57
72
|
profile: HarnessProfile;
|
|
73
|
+
/**
|
|
74
|
+
* Manifests from prior iterations whose predictions failed this round, with
|
|
75
|
+
* the inverse Mod already applied to `profile` (harness plan C). The caller
|
|
76
|
+
* physically applies each `revert` through the same seam it uses to apply an
|
|
77
|
+
* accepted Mod.
|
|
78
|
+
*/
|
|
79
|
+
reverted: RevertedChange[];
|
|
80
|
+
}
|
|
81
|
+
export interface RevertedChange {
|
|
82
|
+
manifest: ChangeManifest;
|
|
83
|
+
attribution: ManifestAttribution;
|
|
84
|
+
decision: ManifestDecision;
|
|
58
85
|
}
|
|
59
86
|
/** Run one self-harness iteration. */
|
|
60
87
|
export declare function runIteration(opts: OrchestratorOptions): Promise<IterationResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/self-harness/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,GAAG,EAAe,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAqB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAgB,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/self-harness/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,GAAG,EAAe,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAqB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAgB,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAqB,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,aAAa,EAIb,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,qEAAqE;IACrE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEjE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,gDAAgD;IAChD,OAAO,EAAE,cAAc,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,sCAAsC;AACtC,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyGtF"}
|
|
@@ -16,11 +16,30 @@ import { mineFromRecords } from './mine.js';
|
|
|
16
16
|
import { heuristicProposer } from './propose.js';
|
|
17
17
|
import { decideAccept } from './decide.js';
|
|
18
18
|
import { modKey, makeEntry } from './transfer.js';
|
|
19
|
+
import { makeManifest, attributeManifest, decideManifest, } from './manifest.js';
|
|
19
20
|
/** Run one self-harness iteration. */
|
|
20
21
|
export async function runIteration(opts) {
|
|
21
22
|
const log = opts.log ?? (() => { });
|
|
22
23
|
const proposer = opts.proposer ?? heuristicProposer;
|
|
23
24
|
const maxC = opts.maxCandidates ?? 3;
|
|
25
|
+
// Stage 0 — attribute prior manifests BEFORE proposing anything new
|
|
26
|
+
// (harness plan C). Order matters: a change that failed its own prediction
|
|
27
|
+
// must be undone before this round mines weaknesses from records it polluted,
|
|
28
|
+
// or the loop proposes fixes for damage it is about to revert anyway.
|
|
29
|
+
const reverted = [];
|
|
30
|
+
let profile = opts.profile;
|
|
31
|
+
if (opts.manifests && opts.priorRecords) {
|
|
32
|
+
for (const manifest of opts.manifests.open()) {
|
|
33
|
+
const attribution = attributeManifest(manifest, opts.priorRecords, opts.records);
|
|
34
|
+
const decision = decideManifest(manifest, attribution, opts.manifestPolicy);
|
|
35
|
+
opts.manifests.close(manifest, attribution, decision);
|
|
36
|
+
log(`manifest ${manifest.id}: ${decision.verdict.toUpperCase()} — ${decision.reason}`);
|
|
37
|
+
if (decision.verdict === 'revert' && decision.revert) {
|
|
38
|
+
profile = applyAcceptedToProfile(profile, decision.revert);
|
|
39
|
+
reverted.push({ manifest, attribution, decision });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
24
43
|
// Stage 1 — mine
|
|
25
44
|
const weaknesses = mineFromRecords(opts.records, {
|
|
26
45
|
model: opts.model,
|
|
@@ -28,14 +47,22 @@ export async function runIteration(opts) {
|
|
|
28
47
|
});
|
|
29
48
|
log(`mined ${weaknesses.length} weakness(es): ${weaknesses.map((w) => w.kind).join(', ') || '(none)'}`);
|
|
30
49
|
// Stage 2 — propose (bounded, minimal)
|
|
31
|
-
|
|
50
|
+
// `profile`, not `opts.profile`: stage 0 may have reverted a knob, and
|
|
51
|
+
// proposing against the pre-revert value would immediately re-propose the
|
|
52
|
+
// change just undone and record a `from` that was never in force.
|
|
53
|
+
const proposed = proposer.propose(weaknesses, profile).slice(0, maxC);
|
|
32
54
|
log(`proposed ${proposed.length} candidate Mod(s) via ${proposer.id}`);
|
|
33
55
|
// Stage 3+4 — validate + decide, each candidate in isolation
|
|
34
56
|
const outcomes = [];
|
|
35
57
|
const accepted = [];
|
|
36
|
-
let profile = opts.profile;
|
|
37
58
|
for (const mod of proposed) {
|
|
38
59
|
log(`validating: ${describeMod(mod)}`);
|
|
60
|
+
// Attribute BEFORE anything mutates the profile. attributeWeakness works by
|
|
61
|
+
// re-running the proposer and matching the Mod it emits; once the accepted
|
|
62
|
+
// Mod has been folded into the profile the proposer no longer re-derives it,
|
|
63
|
+
// so attribution silently returns null. (That ordering bug also cost the
|
|
64
|
+
// transfer store its attribution — both call sites now share this value.)
|
|
65
|
+
const weakness = attributeWeakness(mod, weaknesses, proposer, profile);
|
|
39
66
|
let decision;
|
|
40
67
|
try {
|
|
41
68
|
const { validation, heldout } = await opts.validate(mod);
|
|
@@ -55,12 +82,23 @@ export async function runIteration(opts) {
|
|
|
55
82
|
if (ok) {
|
|
56
83
|
accepted.push(mod);
|
|
57
84
|
profile = applyAcceptedToProfile(profile, mod);
|
|
85
|
+
// Acceptance is PROVISIONAL: record the prediction so the next iteration
|
|
86
|
+
// can falsify it (harness plan C). The tasks this Mod's weakness was mined
|
|
87
|
+
// from are its predicted fixes — that is the claim it is making.
|
|
88
|
+
if (opts.manifests) {
|
|
89
|
+
opts.manifests.record(makeManifest({
|
|
90
|
+
id: `${modKey(mod)}@${opts.validatedAt ?? outcomes.length}`,
|
|
91
|
+
mod,
|
|
92
|
+
now: opts.validatedAt ?? '',
|
|
93
|
+
predictedFixes: weakness?.affectedTasks ?? [],
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
58
96
|
}
|
|
59
97
|
// Record the outcome (accept OR reject) into the transfer store, attributed
|
|
60
98
|
// to the weakness whose heuristic produced this Mod, so the fix transfers to
|
|
61
99
|
// future models and known-bad Mods aren't re-proposed.
|
|
62
100
|
if (opts.transferStore) {
|
|
63
|
-
const w =
|
|
101
|
+
const w = weakness;
|
|
64
102
|
if (w) {
|
|
65
103
|
opts.transferStore.record(makeEntry({
|
|
66
104
|
signature: w.signature,
|
|
@@ -75,7 +113,7 @@ export async function runIteration(opts) {
|
|
|
75
113
|
}
|
|
76
114
|
}
|
|
77
115
|
}
|
|
78
|
-
return { weaknesses, proposed, outcomes, accepted, profile };
|
|
116
|
+
return { weaknesses, proposed, outcomes, accepted, profile, reverted };
|
|
79
117
|
}
|
|
80
118
|
/**
|
|
81
119
|
* Attribute a Mod back to the weakness that produced it, by re-running the
|
|
@@ -109,6 +147,11 @@ function applyAcceptedToProfile(profile, mod) {
|
|
|
109
147
|
// A settings-registry change lives in .uap.json / proxy.env, not in the
|
|
110
148
|
// in-memory harness profile — the self-tuning flag-writer applies it.
|
|
111
149
|
return profile;
|
|
150
|
+
case 'tool':
|
|
151
|
+
// A SEPARATE field from `env`: tool knobs are executor-side and disjoint
|
|
152
|
+
// from the server's launch env, and `profileFromEnvFile` filters `env` on
|
|
153
|
+
// `isKnownKnob`, so folding them together dropped them on every reload.
|
|
154
|
+
return { ...profile, tool: { ...(profile.tool ?? {}), [mod.key]: mod.to } };
|
|
112
155
|
}
|
|
113
156
|
}
|
|
114
157
|
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/self-harness/orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAO,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAY,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAA6B,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAiB,MAAM,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/self-harness/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,9 +11,23 @@ import { Mod } from './mods.js';
|
|
|
11
11
|
import { FailureKind } from './weakness.js';
|
|
12
12
|
export type PromotionGate = 'auto-after-validation' | 'human';
|
|
13
13
|
/**
|
|
14
|
-
* Promotion policy
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* Promotion policy — a RISK TIER, not a category ban (harness plan B3).
|
|
15
|
+
*
|
|
16
|
+
* The old rule was `env ? auto : human`, which gated middleware behind a human
|
|
17
|
+
* and left the loop searching inference-server knobs alone. The
|
|
18
|
+
* Agentic-Harness-Engineering ablation (arXiv 2604.25850) measures where gains
|
|
19
|
+
* actually live — tools +3.3pp, middleware +2.2pp, memory +5.6pp, and
|
|
20
|
+
* system-prompt edits NEGATIVE at -2.3pp — so that rule had the search space
|
|
21
|
+
* almost exactly inverted.
|
|
22
|
+
*
|
|
23
|
+
* The tiers now follow blast radius rather than kind:
|
|
24
|
+
*
|
|
25
|
+
* auto-after-validation — env knobs, tool knobs, middleware toggles. All are
|
|
26
|
+
* bounded, allow-listed, mechanically reversible, and measurable by the
|
|
27
|
+
* paired bench with its held-out suite.
|
|
28
|
+
* human — scaffold (free-form prompt text: unbounded, and the one surface
|
|
29
|
+
* measured negative) and config (settings-registry keys reaching beyond the
|
|
30
|
+
* bench into product behaviour).
|
|
17
31
|
*/
|
|
18
32
|
export declare function promotionGate(mod: Mod): PromotionGate;
|
|
19
33
|
export interface PendingProposal {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/self-harness/pending.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,OAAO,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"pending.d.ts","sourceRoot":"","sources":["../../src/self-harness/pending.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,uBAAuB,GAAG,OAAO,CAAC;AAE9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,aAAa,CAUrD;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,GAAG,CAAC;IACT,IAAI,EAAE,aAAa,CAAC;IACpB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IAC1D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,OAAO,CAAC,KAAK,CAAyB;gBAET,IAAI,EAAE,MAAM;IAUzC,OAAO,CAAC,OAAO;IAKf,mFAAmF;IACnF,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe;IAgB3G,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,eAAe,EAAE;IAI3D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAQzD;;;;OAIG;IACH,KAAK,CAAC,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,eAAe,EAAE;CAkBpG"}
|
|
@@ -10,12 +10,34 @@
|
|
|
10
10
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
11
11
|
import { dirname } from 'path';
|
|
12
12
|
/**
|
|
13
|
-
* Promotion policy
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Promotion policy — a RISK TIER, not a category ban (harness plan B3).
|
|
14
|
+
*
|
|
15
|
+
* The old rule was `env ? auto : human`, which gated middleware behind a human
|
|
16
|
+
* and left the loop searching inference-server knobs alone. The
|
|
17
|
+
* Agentic-Harness-Engineering ablation (arXiv 2604.25850) measures where gains
|
|
18
|
+
* actually live — tools +3.3pp, middleware +2.2pp, memory +5.6pp, and
|
|
19
|
+
* system-prompt edits NEGATIVE at -2.3pp — so that rule had the search space
|
|
20
|
+
* almost exactly inverted.
|
|
21
|
+
*
|
|
22
|
+
* The tiers now follow blast radius rather than kind:
|
|
23
|
+
*
|
|
24
|
+
* auto-after-validation — env knobs, tool knobs, middleware toggles. All are
|
|
25
|
+
* bounded, allow-listed, mechanically reversible, and measurable by the
|
|
26
|
+
* paired bench with its held-out suite.
|
|
27
|
+
* human — scaffold (free-form prompt text: unbounded, and the one surface
|
|
28
|
+
* measured negative) and config (settings-registry keys reaching beyond the
|
|
29
|
+
* bench into product behaviour).
|
|
16
30
|
*/
|
|
17
31
|
export function promotionGate(mod) {
|
|
18
|
-
|
|
32
|
+
switch (mod.kind) {
|
|
33
|
+
case 'env':
|
|
34
|
+
case 'tool':
|
|
35
|
+
case 'middleware':
|
|
36
|
+
return 'auto-after-validation';
|
|
37
|
+
case 'scaffold':
|
|
38
|
+
case 'config':
|
|
39
|
+
return 'human';
|
|
40
|
+
}
|
|
19
41
|
}
|
|
20
42
|
export class PendingQueue {
|
|
21
43
|
path;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/self-harness/pending.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAM/B
|
|
1
|
+
{"version":3,"file":"pending.js","sourceRoot":"","sources":["../../src/self-harness/pending.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* and one-command revertible (design §4, §10).
|
|
13
13
|
*/
|
|
14
14
|
import type { UapComponent } from '../benchmarks/paired/types.js';
|
|
15
|
-
import { KnownKnob, EnvMod } from './mods.js';
|
|
15
|
+
import { KnownKnob, KnownToolKnob, EnvMod } from './mods.js';
|
|
16
16
|
export interface HarnessProfile {
|
|
17
17
|
/** Allow-listed env knob values currently in effect (string form). */
|
|
18
18
|
env: Partial<Record<KnownKnob, string>>;
|
|
@@ -20,6 +20,14 @@ export interface HarnessProfile {
|
|
|
20
20
|
scaffold: Partial<Record<UapComponent, string>>;
|
|
21
21
|
/** Accepted middleware configs (id -> params). */
|
|
22
22
|
middleware: Record<string, Record<string, string | number | boolean>>;
|
|
23
|
+
/**
|
|
24
|
+
* Accepted TOOL knob values (harness plan B1). A separate field from `env`
|
|
25
|
+
* because the two are disjoint key sets read by different processes: `env` is
|
|
26
|
+
* the inference server's launch environment, `tool` is the delivery
|
|
27
|
+
* executor's. Folding tool knobs into `env` made the declared type a lie and
|
|
28
|
+
* broke round-tripping, since `profileFromEnvFile` filters on `isKnownKnob`.
|
|
29
|
+
*/
|
|
30
|
+
tool?: Partial<Record<KnownToolKnob, string>>;
|
|
23
31
|
}
|
|
24
32
|
export declare function emptyProfile(): HarnessProfile;
|
|
25
33
|
/** Parse a KEY=value env file into a flat map (ignores comments/blank lines). */
|
|
@@ -35,6 +43,14 @@ export declare function profileFromEnvFile(path: string): HarnessProfile;
|
|
|
35
43
|
export declare function applyEnvModToFile(path: string, mod: EnvMod): {
|
|
36
44
|
priorValue: string | null;
|
|
37
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Set KEY=value in a KEY=value file, replacing an existing entry or appending.
|
|
48
|
+
* Extracted from `applyEnvModToFile` so runtime (tool/middleware) knobs persist
|
|
49
|
+
* through exactly the same writer as env knobs.
|
|
50
|
+
*/
|
|
51
|
+
export declare function upsertEnvValue(path: string, key: string, value: string): {
|
|
52
|
+
priorValue: string | null;
|
|
53
|
+
};
|
|
38
54
|
/** Apply an accepted Mod's effect to the in-memory profile (after acceptance). */
|
|
39
55
|
export declare function recordModInProfile(profile: HarnessProfile, mod: EnvMod): HarnessProfile;
|
|
40
56
|
/** Default values for allow-listed knobs (used to seed a profile if a knob is unset). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/self-harness/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAkB,SAAS,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/self-harness/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAkB,SAAS,EAAE,aAAa,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAE1F,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACxC,sEAAsE;IACtE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IACtE;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAED,wBAAgB,YAAY,IAAI,cAAc,CAE7C;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWjE;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAO/D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAE1F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAiBtG;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAEvF;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAMzD;AAMD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,CAAC;IACxB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAOxE;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAG7E"}
|
|
@@ -15,7 +15,7 @@ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
|
|
15
15
|
import { dirname } from 'path';
|
|
16
16
|
import { KNOB_ALLOWLIST, isKnownKnob } from './mods.js';
|
|
17
17
|
export function emptyProfile() {
|
|
18
|
-
return { env: {}, scaffold: {}, middleware: {} };
|
|
18
|
+
return { env: {}, scaffold: {}, middleware: {}, tool: {} };
|
|
19
19
|
}
|
|
20
20
|
/** Parse a KEY=value env file into a flat map (ignores comments/blank lines). */
|
|
21
21
|
export function parseEnvFile(path) {
|
|
@@ -50,23 +50,30 @@ export function profileFromEnvFile(path) {
|
|
|
50
50
|
* file's current value when present (guards against a stale proposal).
|
|
51
51
|
*/
|
|
52
52
|
export function applyEnvModToFile(path, mod) {
|
|
53
|
+
return upsertEnvValue(path, mod.key, mod.to);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Set KEY=value in a KEY=value file, replacing an existing entry or appending.
|
|
57
|
+
* Extracted from `applyEnvModToFile` so runtime (tool/middleware) knobs persist
|
|
58
|
+
* through exactly the same writer as env knobs.
|
|
59
|
+
*/
|
|
60
|
+
export function upsertEnvValue(path, key, value) {
|
|
53
61
|
const lines = existsSync(path) ? readFileSync(path, 'utf-8').split('\n') : [];
|
|
54
62
|
let prior = null;
|
|
55
63
|
let replaced = false;
|
|
56
|
-
const key = mod.key;
|
|
57
64
|
for (let i = 0; i < lines.length; i++) {
|
|
58
65
|
const t = lines[i].trim();
|
|
59
66
|
if (t.startsWith('#') || !t.includes('='))
|
|
60
67
|
continue;
|
|
61
68
|
if (t.slice(0, t.indexOf('=')).trim() === key) {
|
|
62
69
|
prior = t.slice(t.indexOf('=') + 1).trim();
|
|
63
|
-
lines[i] = `${key}=${
|
|
70
|
+
lines[i] = `${key}=${value}`;
|
|
64
71
|
replaced = true;
|
|
65
72
|
break;
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
if (!replaced)
|
|
69
|
-
lines.push(`${key}=${
|
|
76
|
+
lines.push(`${key}=${value}`);
|
|
70
77
|
writeFileSync(path, lines.join('\n'), 'utf-8');
|
|
71
78
|
return { priorValue: prior };
|
|
72
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/self-harness/profile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/self-harness/profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,21 @@ import { HarnessProfile, type ProfileSnapshot } from './profile.js';
|
|
|
21
21
|
import type { Proposer } from './propose.js';
|
|
22
22
|
import type { DecisionOptions } from './decide.js';
|
|
23
23
|
import type { TransferStore } from './transfer.js';
|
|
24
|
+
import type { ManifestStore, ManifestPolicyOptions } from './manifest.js';
|
|
24
25
|
export interface RunLoopDeps {
|
|
25
26
|
model: string;
|
|
27
|
+
/**
|
|
28
|
+
* KEY=value file for executor/proxy runtime knobs (tool + middleware Mods).
|
|
29
|
+
* Without it those Mods are reported as NOT committed rather than silently
|
|
30
|
+
* dropped while being announced as applied.
|
|
31
|
+
*/
|
|
32
|
+
runtimeEnvPath?: string;
|
|
33
|
+
/** Change-manifest store (harness plan C). Omit to disable the mechanism. */
|
|
34
|
+
manifests?: ManifestStore;
|
|
35
|
+
/** Records the PREVIOUS iteration saw, for manifest attribution. */
|
|
36
|
+
priorRecords?: RunRecord[];
|
|
37
|
+
/** Policy turning an attribution into keep/revert. */
|
|
38
|
+
manifestPolicy?: ManifestPolicyOptions;
|
|
26
39
|
/** Baseline records to mine for weaknesses (e.g. a prior paired bench). */
|
|
27
40
|
records: RunRecord[];
|
|
28
41
|
/** Current in-effect harness profile (from the env file or a prior snapshot). */
|
|
@@ -56,6 +69,12 @@ export interface RunLoopResult {
|
|
|
56
69
|
iteration: IterationResult;
|
|
57
70
|
/** Accepted Mods that were physically committed (empty on a dry-run). */
|
|
58
71
|
committed: Mod[];
|
|
72
|
+
/**
|
|
73
|
+
* Accepted Mods that were NOT applied to the running system — human-gated
|
|
74
|
+
* kinds, or runtime knobs with nowhere to persist. Reported so the CLI cannot
|
|
75
|
+
* tell an operator the harness changed when it did not.
|
|
76
|
+
*/
|
|
77
|
+
unapplied: Mod[];
|
|
59
78
|
/** True iff a snapshot/history was written (apply + at least one acceptance). */
|
|
60
79
|
persisted: boolean;
|
|
61
80
|
snapshot: ProfileSnapshot | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/self-harness/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAe,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/self-harness/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,GAAG,EAAe,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEvF,OAAO,EACL,cAAc,EAId,KAAK,eAAe,EACrB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG1E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,oEAAoE;IACpE,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAC3B,sDAAsD;IACtD,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,2EAA2E;IAC3E,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,iFAAiF;IACjF,OAAO,EAAE,cAAc,CAAC;IACxB,mEAAmE;IACnE,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,eAAe,CAAC;IAC3B,yEAAyE;IACzE,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,iFAAiF;IACjF,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;CAClC;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAoGlF"}
|