@mobrienv/autoloop-harness 0.8.0 → 0.9.2
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/acceptance.d.ts +31 -0
- package/dist/acceptance.js +69 -0
- package/dist/acceptance.js.map +1 -0
- package/dist/ask.d.ts +16 -0
- package/dist/ask.js +47 -0
- package/dist/ask.js.map +1 -0
- package/dist/backend/types.d.ts +3 -0
- package/dist/backend/types.js +3 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/circuit-breaker.d.ts +27 -0
- package/dist/circuit-breaker.js +41 -0
- package/dist/circuit-breaker.js.map +1 -0
- package/dist/completion-lint.d.ts +29 -0
- package/dist/completion-lint.js +51 -0
- package/dist/completion-lint.js.map +1 -0
- package/dist/config-helpers.js +141 -8
- package/dist/config-helpers.js.map +1 -1
- package/dist/control/command-adapter.d.ts +19 -0
- package/dist/control/command-adapter.js +57 -0
- package/dist/control/command-adapter.js.map +1 -0
- package/dist/control/dispatch.js +14 -0
- package/dist/control/dispatch.js.map +1 -1
- package/dist/control/types.d.ts +11 -2
- package/dist/display.d.ts +9 -2
- package/dist/display.js +37 -1
- package/dist/display.js.map +1 -1
- package/dist/emit.d.ts +27 -0
- package/dist/emit.js +321 -2
- package/dist/emit.js.map +1 -1
- package/dist/events.d.ts +36 -3
- package/dist/fanout-runner.d.ts +25 -0
- package/dist/fanout-runner.js +54 -0
- package/dist/fanout-runner.js.map +1 -0
- package/dist/file-mod-audit.d.ts +29 -0
- package/dist/file-mod-audit.js +63 -0
- package/dist/file-mod-audit.js.map +1 -0
- package/dist/git-diff.d.ts +19 -0
- package/dist/git-diff.js +74 -0
- package/dist/git-diff.js.map +1 -0
- package/dist/hooks.d.ts +78 -0
- package/dist/hooks.js +239 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +15 -2
- package/dist/index.js +181 -5
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +45 -0
- package/dist/intent.js +127 -0
- package/dist/intent.js.map +1 -0
- package/dist/iteration-diff.d.ts +32 -0
- package/dist/iteration-diff.js +92 -0
- package/dist/iteration-diff.js.map +1 -0
- package/dist/iteration.d.ts +20 -0
- package/dist/iteration.js +383 -16
- package/dist/iteration.js.map +1 -1
- package/dist/metareview.d.ts +9 -1
- package/dist/metareview.js +68 -30
- package/dist/metareview.js.map +1 -1
- package/dist/notify.d.ts +9 -2
- package/dist/notify.js +16 -4
- package/dist/notify.js.map +1 -1
- package/dist/parallel.d.ts +16 -0
- package/dist/parallel.js +28 -1
- package/dist/parallel.js.map +1 -1
- package/dist/postconditions.d.ts +25 -0
- package/dist/postconditions.js +107 -0
- package/dist/postconditions.js.map +1 -0
- package/dist/postfire-verify.d.ts +31 -0
- package/dist/postfire-verify.js +64 -0
- package/dist/postfire-verify.js.map +1 -0
- package/dist/premature-quit.d.ts +25 -0
- package/dist/premature-quit.js +54 -0
- package/dist/premature-quit.js.map +1 -0
- package/dist/progress.d.ts +20 -0
- package/dist/progress.js +56 -0
- package/dist/progress.js.map +1 -0
- package/dist/prompt.js +8 -2
- package/dist/prompt.js.map +1 -1
- package/dist/provisional.d.ts +42 -0
- package/dist/provisional.js +92 -0
- package/dist/provisional.js.map +1 -0
- package/dist/registry-bridge.js +25 -0
- package/dist/registry-bridge.js.map +1 -1
- package/dist/resume.d.ts +61 -0
- package/dist/resume.js +226 -0
- package/dist/resume.js.map +1 -0
- package/dist/scratchpad.js +27 -8
- package/dist/scratchpad.js.map +1 -1
- package/dist/stage.d.ts +21 -0
- package/dist/stage.js +131 -0
- package/dist/stage.js.map +1 -0
- package/dist/stop.d.ts +29 -2
- package/dist/stop.js +106 -0
- package/dist/stop.js.map +1 -1
- package/dist/suspend-state.d.ts +32 -0
- package/dist/suspend-state.js +104 -0
- package/dist/suspend-state.js.map +1 -0
- package/dist/tamper.d.ts +21 -0
- package/dist/tamper.js +88 -0
- package/dist/tamper.js.map +1 -0
- package/dist/types.d.ts +247 -2
- package/dist/types.js +91 -1
- package/dist/types.js.map +1 -1
- package/dist/wave/finalize-wave.d.ts +15 -5
- package/dist/wave/finalize-wave.js +56 -2
- package/dist/wave/finalize-wave.js.map +1 -1
- package/dist/wave/launch-branches.d.ts +23 -2
- package/dist/wave/launch-branches.js +56 -3
- package/dist/wave/launch-branches.js.map +1 -1
- package/dist/wave/stage-branch-runner.d.ts +12 -0
- package/dist/wave/stage-branch-runner.js +130 -0
- package/dist/wave/stage-branch-runner.js.map +1 -0
- package/dist/wave/types.d.ts +40 -2
- package/dist/wave.d.ts +32 -1
- package/dist/wave.js +163 -34
- package/dist/wave.js.map +1 -1
- package/package.json +83 -3
package/dist/stop.js
CHANGED
|
@@ -48,6 +48,31 @@ export function stopBackendFailed(loop, iteration, output) {
|
|
|
48
48
|
registryStop(loop, iteration, "backend_failed");
|
|
49
49
|
return { iterations: iteration, stopReason: "backend_failed" };
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Stop with a typed backend-error reason (rate_limited / quota_exhausted /
|
|
53
|
+
* auth_failed / transient_error) instead of a generic backend_failed, so the
|
|
54
|
+
* disposition reflects an availability/auth/quota issue rather than an agent
|
|
55
|
+
* failure — and downstream (retry ladder, quarantine) can key off it.
|
|
56
|
+
*/
|
|
57
|
+
export function stopBackendErrorClass(loop, iteration, reason, output) {
|
|
58
|
+
log(loop, "error", `loop stop reason=${reason} iteration=${iteration}`);
|
|
59
|
+
loop.onEvent?.({
|
|
60
|
+
type: "progress",
|
|
61
|
+
runId: loop.runtime.runId,
|
|
62
|
+
iteration,
|
|
63
|
+
recentEvent: "loop.stop",
|
|
64
|
+
allowedRoles: [],
|
|
65
|
+
outcome: `stop:${reason}`,
|
|
66
|
+
});
|
|
67
|
+
loop.onEvent?.({ type: "failure.diagnostic", output, stopReason: reason });
|
|
68
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "loop.stop", jsonField("reason", reason) +
|
|
69
|
+
", " +
|
|
70
|
+
jsonField("iteration", String(iteration)) +
|
|
71
|
+
", " +
|
|
72
|
+
jsonField("output_tail", lastNChars(output, 500)));
|
|
73
|
+
registryStop(loop, iteration, reason);
|
|
74
|
+
return { iterations: iteration, stopReason: reason };
|
|
75
|
+
}
|
|
51
76
|
export function stopBackendTimeout(loop, iteration, output) {
|
|
52
77
|
log(loop, "error", `loop stop reason=backend_timeout iteration=${iteration}`);
|
|
53
78
|
loop.onEvent?.({
|
|
@@ -135,6 +160,87 @@ export function stopMaxRuntime(loop, completed, elapsedMs, maxRuntimeMs, outputT
|
|
|
135
160
|
registryStop(loop, completed, "max_runtime");
|
|
136
161
|
return { iterations: completed, stopReason: "max_runtime" };
|
|
137
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Fail-closed stop for an UNKNOWN metareview verdict under `on_error = hold`.
|
|
165
|
+
* The reviewer gave no trustworthy signal, so the loop halts and raises
|
|
166
|
+
* attention (failure.diagnostic + notify-class "failed") instead of silently
|
|
167
|
+
* advancing — a human decides whether to resume.
|
|
168
|
+
*/
|
|
169
|
+
export function stopReviewUnknown(loop, iteration, reasoning) {
|
|
170
|
+
log(loop, "warn", `loop stop reason=review_unknown iteration=${iteration} detail=${reasoning}`);
|
|
171
|
+
loop.onEvent?.({
|
|
172
|
+
type: "progress",
|
|
173
|
+
runId: loop.runtime.runId,
|
|
174
|
+
iteration,
|
|
175
|
+
recentEvent: "loop.stop",
|
|
176
|
+
allowedRoles: [],
|
|
177
|
+
outcome: "stop:review_unknown",
|
|
178
|
+
});
|
|
179
|
+
loop.onEvent?.({
|
|
180
|
+
type: "failure.diagnostic",
|
|
181
|
+
output: `Metareview returned UNKNOWN and held the loop: ${reasoning}`,
|
|
182
|
+
stopReason: "review_unknown",
|
|
183
|
+
});
|
|
184
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "loop.stop", jsonField("reason", "review_unknown") +
|
|
185
|
+
", " +
|
|
186
|
+
jsonField("iteration", String(iteration)) +
|
|
187
|
+
", " +
|
|
188
|
+
jsonField("detail", reasoning));
|
|
189
|
+
registryStop(loop, iteration, "review_unknown");
|
|
190
|
+
return { iterations: iteration, stopReason: "review_unknown" };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Escalate a premature quit that exhausted its re-arm budget: stop with a
|
|
194
|
+
* distinct reason and raise attention rather than silently accepting a
|
|
195
|
+
* false-finish that left authorized work undone.
|
|
196
|
+
*/
|
|
197
|
+
export function stopPrematureQuit(loop, completed, reasons) {
|
|
198
|
+
log(loop, "warn", `loop stop reason=premature_quit completed_iterations=${completed} remaining=${reasons.join("; ")}`);
|
|
199
|
+
loop.onEvent?.({
|
|
200
|
+
type: "progress",
|
|
201
|
+
runId: loop.runtime.runId,
|
|
202
|
+
iteration: completed,
|
|
203
|
+
recentEvent: "loop.stop",
|
|
204
|
+
allowedRoles: [],
|
|
205
|
+
outcome: "stop:premature_quit",
|
|
206
|
+
});
|
|
207
|
+
loop.onEvent?.({
|
|
208
|
+
type: "failure.diagnostic",
|
|
209
|
+
output: `Premature quit: authorized work remained with no blocker and the re-arm budget was exhausted.\nRemaining:\n- ${reasons.join("\n- ")}`,
|
|
210
|
+
stopReason: "premature_quit",
|
|
211
|
+
});
|
|
212
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, "", "loop.stop", jsonField("reason", "premature_quit") +
|
|
213
|
+
", " +
|
|
214
|
+
jsonField("completed_iterations", String(completed)) +
|
|
215
|
+
", " +
|
|
216
|
+
jsonField("remaining", reasons.join("; ")));
|
|
217
|
+
registryStop(loop, completed, "premature_quit");
|
|
218
|
+
return { iterations: completed, stopReason: "premature_quit" };
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Stop for a `suspend`-policy hook that fired and could not (or was not
|
|
222
|
+
* configured to) block in-process. Durable suspend state has already been
|
|
223
|
+
* written by the hooks engine (`writeSuspendState`); this only journals the
|
|
224
|
+
* typed stop reason and registry status so `autoloop resume` can pick it up.
|
|
225
|
+
*/
|
|
226
|
+
export function stopSuspended(loop, iteration, reason) {
|
|
227
|
+
log(loop, "warn", `loop stop reason=suspended iteration=${iteration} detail=${reason}`);
|
|
228
|
+
loop.onEvent?.({
|
|
229
|
+
type: "progress",
|
|
230
|
+
runId: loop.runtime.runId,
|
|
231
|
+
iteration,
|
|
232
|
+
recentEvent: "loop.stop",
|
|
233
|
+
allowedRoles: [],
|
|
234
|
+
outcome: "stop:suspended",
|
|
235
|
+
});
|
|
236
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "loop.stop", jsonField("reason", "suspended") +
|
|
237
|
+
", " +
|
|
238
|
+
jsonField("iteration", String(iteration)) +
|
|
239
|
+
", " +
|
|
240
|
+
jsonField("detail", reason));
|
|
241
|
+
registryStop(loop, iteration, "suspended");
|
|
242
|
+
return { iterations: iteration, stopReason: "suspended" };
|
|
243
|
+
}
|
|
138
244
|
export function completeLoop(loop, iteration, reason) {
|
|
139
245
|
log(loop, "info", `loop complete reason=${reason}`);
|
|
140
246
|
appendEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "loop.complete", jsonField("reason", reason));
|
package/dist/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../src/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { SUSPEND_STATE_SCHEMA_VERSION, type SuspendState } from "@mobrienv/autoloop-core/hooks-schema";
|
|
2
|
+
export type { SuspendState };
|
|
3
|
+
export { SUSPEND_STATE_SCHEMA_VERSION };
|
|
4
|
+
export declare function suspendStatePath(stateDir: string): string;
|
|
5
|
+
export declare function resumeRequestPath(stateDir: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Write the suspend state atomically (tmp file + rename) so a reader never
|
|
8
|
+
* observes a torn write, and journal `hook.suspend` for observability.
|
|
9
|
+
*/
|
|
10
|
+
export declare function writeSuspendState(stateDir: string, state: Omit<SuspendState, "schemaVersion">, journalFile?: string): SuspendState;
|
|
11
|
+
/** Read the durable suspend state, or null when absent/unreadable/invalid. */
|
|
12
|
+
export declare function readSuspendState(stateDir: string): SuspendState | null;
|
|
13
|
+
/** Remove the suspend-state file. No-op if absent. */
|
|
14
|
+
export declare function clearSuspendState(stateDir: string): boolean;
|
|
15
|
+
/** Drop the resume-requested signal file (operator says "go"). */
|
|
16
|
+
export declare function requestResume(stateDir: string): void;
|
|
17
|
+
export declare function resumeRequested(stateDir: string): boolean;
|
|
18
|
+
/** Remove the resume-requested signal file. No-op if absent. */
|
|
19
|
+
export declare function clearResumeRequest(stateDir: string): boolean;
|
|
20
|
+
export interface WaitForResumeOptions {
|
|
21
|
+
pollMs?: number;
|
|
22
|
+
/** Abort signal, honoured the same way `ask.ts:awaitHumanResponse` does. */
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
/** Optional wall-clock cap in ms; 0/undefined = wait indefinitely. */
|
|
25
|
+
timeoutMs?: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Block until `resume-requested` appears, the run is aborted, or (if set)
|
|
29
|
+
* `timeoutMs` elapses. Returns `true` when resumed, `false` on abort/timeout.
|
|
30
|
+
* Mirrors `ask.ts:awaitHumanResponse`'s signal-aware poll loop.
|
|
31
|
+
*/
|
|
32
|
+
export declare function waitForResume(stateDir: string, opts?: WaitForResumeOptions): Promise<boolean>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Durable suspend/resume signalling for the lifecycle hooks engine.
|
|
2
|
+
//
|
|
3
|
+
// `on_error = "suspend"` writes a versioned `.autoloop/suspend-state.json`
|
|
4
|
+
// and (for in-process phases) blocks the harness until an operator drops
|
|
5
|
+
// `.autoloop/resume-requested` (or `autoloop hooks clear-suspend` / `resume`
|
|
6
|
+
// clears it). This lets a hook halt the loop for out-of-band remediation
|
|
7
|
+
// (e.g. a human approval gate) without losing the run's position.
|
|
8
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
|
|
9
|
+
import { dirname, join } from "node:path";
|
|
10
|
+
import { jsonField } from "@mobrienv/autoloop-core";
|
|
11
|
+
import { isSuspendState, SUSPEND_STATE_SCHEMA_VERSION, } from "@mobrienv/autoloop-core/hooks-schema";
|
|
12
|
+
import { appendEvent } from "@mobrienv/autoloop-core/journal";
|
|
13
|
+
export { SUSPEND_STATE_SCHEMA_VERSION };
|
|
14
|
+
export function suspendStatePath(stateDir) {
|
|
15
|
+
return join(stateDir, "suspend-state.json");
|
|
16
|
+
}
|
|
17
|
+
export function resumeRequestPath(stateDir) {
|
|
18
|
+
return join(stateDir, "resume-requested");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Write the suspend state atomically (tmp file + rename) so a reader never
|
|
22
|
+
* observes a torn write, and journal `hook.suspend` for observability.
|
|
23
|
+
*/
|
|
24
|
+
export function writeSuspendState(stateDir, state, journalFile) {
|
|
25
|
+
mkdirSync(stateDir, { recursive: true });
|
|
26
|
+
const full = {
|
|
27
|
+
schemaVersion: SUSPEND_STATE_SCHEMA_VERSION,
|
|
28
|
+
...state,
|
|
29
|
+
};
|
|
30
|
+
const path = suspendStatePath(stateDir);
|
|
31
|
+
const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;
|
|
32
|
+
writeFileSync(tmp, `${JSON.stringify(full, null, 2)}\n`, "utf-8");
|
|
33
|
+
renameSync(tmp, path);
|
|
34
|
+
if (journalFile) {
|
|
35
|
+
appendEvent(journalFile, state.runId, state.iteration ? String(state.iteration) : "", "hook.suspend", jsonField("phase", state.phase) +
|
|
36
|
+
", " +
|
|
37
|
+
jsonField("reason", state.reason) +
|
|
38
|
+
", " +
|
|
39
|
+
jsonField("hook_command", state.hookCommand) +
|
|
40
|
+
", " +
|
|
41
|
+
jsonField("resume_iteration", String(state.resumeIteration)));
|
|
42
|
+
}
|
|
43
|
+
return full;
|
|
44
|
+
}
|
|
45
|
+
/** Read the durable suspend state, or null when absent/unreadable/invalid. */
|
|
46
|
+
export function readSuspendState(stateDir) {
|
|
47
|
+
const path = suspendStatePath(stateDir);
|
|
48
|
+
if (!existsSync(path))
|
|
49
|
+
return null;
|
|
50
|
+
try {
|
|
51
|
+
const parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
52
|
+
return isSuspendState(parsed) ? parsed : null;
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Remove the suspend-state file. No-op if absent. */
|
|
59
|
+
export function clearSuspendState(stateDir) {
|
|
60
|
+
const path = suspendStatePath(stateDir);
|
|
61
|
+
if (!existsSync(path))
|
|
62
|
+
return false;
|
|
63
|
+
rmSync(path, { force: true });
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
/** Drop the resume-requested signal file (operator says "go"). */
|
|
67
|
+
export function requestResume(stateDir) {
|
|
68
|
+
mkdirSync(dirname(resumeRequestPath(stateDir)), { recursive: true });
|
|
69
|
+
writeFileSync(resumeRequestPath(stateDir), `${new Date().toISOString()}\n`);
|
|
70
|
+
}
|
|
71
|
+
export function resumeRequested(stateDir) {
|
|
72
|
+
return existsSync(resumeRequestPath(stateDir));
|
|
73
|
+
}
|
|
74
|
+
/** Remove the resume-requested signal file. No-op if absent. */
|
|
75
|
+
export function clearResumeRequest(stateDir) {
|
|
76
|
+
const path = resumeRequestPath(stateDir);
|
|
77
|
+
if (!existsSync(path))
|
|
78
|
+
return false;
|
|
79
|
+
rmSync(path, { force: true });
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Block until `resume-requested` appears, the run is aborted, or (if set)
|
|
84
|
+
* `timeoutMs` elapses. Returns `true` when resumed, `false` on abort/timeout.
|
|
85
|
+
* Mirrors `ask.ts:awaitHumanResponse`'s signal-aware poll loop.
|
|
86
|
+
*/
|
|
87
|
+
export async function waitForResume(stateDir, opts = {}) {
|
|
88
|
+
const pollMs = opts.pollMs && opts.pollMs > 0 ? opts.pollMs : 1000;
|
|
89
|
+
const deadline = opts.timeoutMs && opts.timeoutMs > 0 ? Date.now() + opts.timeoutMs : null;
|
|
90
|
+
for (;;) {
|
|
91
|
+
if (opts.signal?.aborted)
|
|
92
|
+
return false;
|
|
93
|
+
if (resumeRequested(stateDir))
|
|
94
|
+
return true;
|
|
95
|
+
if (deadline !== null && Date.now() >= deadline)
|
|
96
|
+
return false;
|
|
97
|
+
const wait = deadline !== null ? Math.min(pollMs, deadline - Date.now()) : pollMs;
|
|
98
|
+
await sleep(Math.max(0, wait));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function sleep(ms) {
|
|
102
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=suspend-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suspend-state.js","sourceRoot":"","sources":["../src/suspend-state.ts"],"names":[],"mappings":"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"}
|
package/dist/tamper.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { LoopContext } from "./types.js";
|
|
2
|
+
export interface TamperViolation {
|
|
3
|
+
id: string;
|
|
4
|
+
detail: string;
|
|
5
|
+
}
|
|
6
|
+
export interface TamperResult {
|
|
7
|
+
ran: boolean;
|
|
8
|
+
passed: boolean;
|
|
9
|
+
violations: TamperViolation[];
|
|
10
|
+
}
|
|
11
|
+
/** Heuristic test-file detector across common ecosystems. */
|
|
12
|
+
export declare function isTestFile(path: string): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Anti-reward-hack tamper screen. With `screen_test_tamper` on, a test-backed
|
|
15
|
+
* done-claim is blocked when the run touched gating tests or inserted
|
|
16
|
+
* tamper patterns on test paths — harness-side and maker-uninfluenceable.
|
|
17
|
+
* Returns `{ ran: false, passed: true }` when disabled or outside a git tree.
|
|
18
|
+
*/
|
|
19
|
+
export declare function runTamperScreen(loop: LoopContext, iteration: number): TamperResult;
|
|
20
|
+
/** Re-inject a tamper-screen failure as operator guidance. */
|
|
21
|
+
export declare function reinjectTamperFailure(loop: LoopContext, iteration: number, result: TamperResult): void;
|
package/dist/tamper.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsonBool, jsonField, jsonFieldRaw } from "@mobrienv/autoloop-core";
|
|
2
|
+
import { appendEvent, appendOperatorEvent, } from "@mobrienv/autoloop-core/journal";
|
|
3
|
+
import { changedFiles, collectAddedLines, isGitRepo, } from "./git-diff.js";
|
|
4
|
+
const MAX_SAMPLE = 10;
|
|
5
|
+
/** Heuristic test-file detector across common ecosystems. */
|
|
6
|
+
export function isTestFile(path) {
|
|
7
|
+
return (/\.(test|spec)\.[cm]?[jt]sx?$/.test(path) ||
|
|
8
|
+
/(^|\/)test_[^/]*\.py$/.test(path) ||
|
|
9
|
+
/_test\.(py|go|rb)$/.test(path) ||
|
|
10
|
+
/(^|\/)(tests?|__tests__|spec)\//.test(path) ||
|
|
11
|
+
/Test\.(java|kt|cs)$/.test(path) ||
|
|
12
|
+
/_spec\.rb$/.test(path));
|
|
13
|
+
}
|
|
14
|
+
// Patterns that, when introduced on a test path, weaken or short-circuit the
|
|
15
|
+
// gating tests. Each is scoped to added lines inside test files.
|
|
16
|
+
const TAMPER_PATTERNS = [
|
|
17
|
+
[
|
|
18
|
+
"test_skip_or_only",
|
|
19
|
+
/(\b(it|describe|test)\.(only|skip)\b|\bx(it|describe)\b|\bf(it|describe)\b|@pytest\.mark\.(skip|xfail)|\bunittest\.skip\b|#\[ignore\])/,
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
"test_early_exit",
|
|
23
|
+
/\b(process\.exit|os\._?exit|sys\.exit|System\.exit)\s*\(/,
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
"tautological_assert",
|
|
27
|
+
/(expect\(\s*(true|1|"")\s*\)\s*\.\s*toBe(Truthy)?\(|assert\s+true\b|assertTrue\(\s*true\s*\)|assert\s+1\s*==\s*1\b|expect\(\s*true\s*\)\.toBeTruthy\()/i,
|
|
28
|
+
],
|
|
29
|
+
];
|
|
30
|
+
function sample(items) {
|
|
31
|
+
return items.slice(0, MAX_SAMPLE).join("\n");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Anti-reward-hack tamper screen. With `screen_test_tamper` on, a test-backed
|
|
35
|
+
* done-claim is blocked when the run touched gating tests or inserted
|
|
36
|
+
* tamper patterns on test paths — harness-side and maker-uninfluenceable.
|
|
37
|
+
* Returns `{ ran: false, passed: true }` when disabled or outside a git tree.
|
|
38
|
+
*/
|
|
39
|
+
export function runTamperScreen(loop, iteration) {
|
|
40
|
+
if (!loop.acceptance.screenTestTamper) {
|
|
41
|
+
return { ran: false, passed: true, violations: [] };
|
|
42
|
+
}
|
|
43
|
+
const workDir = loop.paths.workDir;
|
|
44
|
+
const iter = String(iteration);
|
|
45
|
+
if (!isGitRepo(workDir)) {
|
|
46
|
+
// No baseline to diff against — cannot screen deterministically.
|
|
47
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, iter, "tamper.result", jsonFieldRaw("passed", jsonBool(true)) +
|
|
48
|
+
", " +
|
|
49
|
+
jsonField("skipped", "no_git"));
|
|
50
|
+
return { ran: true, passed: true, violations: [] };
|
|
51
|
+
}
|
|
52
|
+
const violations = [];
|
|
53
|
+
// 1. Deterministic: did the gating test files change this run?
|
|
54
|
+
const touchedTests = changedFiles(workDir).filter(isTestFile);
|
|
55
|
+
if (touchedTests.length) {
|
|
56
|
+
violations.push({
|
|
57
|
+
id: "test_files_changed",
|
|
58
|
+
detail: `Test files were modified during the run that claims completion:\n${sample(touchedTests)}`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// 2. Tamper patterns inserted on test paths.
|
|
62
|
+
const addedInTests = collectAddedLines(workDir).filter((l) => isTestFile(l.file));
|
|
63
|
+
for (const [id, re] of TAMPER_PATTERNS) {
|
|
64
|
+
const hits = addedInTests.filter((l) => re.test(l.text));
|
|
65
|
+
if (hits.length)
|
|
66
|
+
violations.push({
|
|
67
|
+
id,
|
|
68
|
+
detail: `${id} in test files:\n${sample(hits.map((l) => ` ${l.file}: ${l.text.trim()}`))}`,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
const passed = violations.length === 0;
|
|
72
|
+
appendEvent(loop.paths.journalFile, loop.runtime.runId, iter, "tamper.result", jsonFieldRaw("passed", jsonBool(passed)) +
|
|
73
|
+
", " +
|
|
74
|
+
jsonField("violations", violations.map((v) => v.id).join(",")));
|
|
75
|
+
return { ran: true, passed, violations };
|
|
76
|
+
}
|
|
77
|
+
/** Re-inject a tamper-screen failure as operator guidance. */
|
|
78
|
+
export function reinjectTamperFailure(loop, iteration, result) {
|
|
79
|
+
const detail = result.violations
|
|
80
|
+
.map((v) => `- [${v.id}] ${v.detail}`)
|
|
81
|
+
.join("\n\n");
|
|
82
|
+
const message = "Completion was blocked: the test-tamper screen detected that gating " +
|
|
83
|
+
"tests were changed or weakened this run. Do not modify the tests that " +
|
|
84
|
+
"verify the work; make the implementation pass the existing tests.\n\n" +
|
|
85
|
+
detail;
|
|
86
|
+
appendOperatorEvent(loop.paths.journalFile, loop.runtime.runId, String(iteration), "operator.guidance", message);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=tamper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tamper.js","sourceRoot":"","sources":["../src/tamper.ts"],"names":[],"mappings":"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"}
|