loopforge 3.7.0 → 3.8.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/LICENSE +21 -21
- package/README.md +171 -157
- package/dist/audit.d.ts +53 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +106 -22
- package/dist/audit.js.map +1 -1
- package/dist/canonical-state.d.ts +75 -69
- package/dist/canonical-state.d.ts.map +1 -1
- package/dist/canonical-state.js +276 -168
- package/dist/canonical-state.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +111 -12
- package/dist/cli.js.map +1 -1
- package/dist/cognitive-facts.d.ts +13 -0
- package/dist/cognitive-facts.d.ts.map +1 -1
- package/dist/cognitive-facts.js +30 -16
- package/dist/cognitive-facts.js.map +1 -1
- package/dist/cognitive-governance.d.ts +30 -6
- package/dist/cognitive-governance.d.ts.map +1 -1
- package/dist/cognitive-governance.js +74 -18
- package/dist/cognitive-governance.js.map +1 -1
- package/dist/committed-round.d.ts +109 -24
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +235 -52
- package/dist/committed-round.js.map +1 -1
- package/dist/contract-items.d.ts +55 -0
- package/dist/contract-items.d.ts.map +1 -0
- package/dist/contract-items.js +180 -0
- package/dist/contract-items.js.map +1 -0
- package/dist/enforcement-gate.d.ts +43 -20
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +269 -378
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts +11 -6
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +102 -67
- package/dist/engine.js.map +1 -1
- package/dist/evidence-claims.d.ts +4 -4
- package/dist/evidence-claims.d.ts.map +1 -1
- package/dist/evidence-claims.js +16 -14
- package/dist/evidence-claims.js.map +1 -1
- package/dist/evidence-provider.d.ts +91 -90
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +349 -160
- package/dist/evidence-provider.js.map +1 -1
- package/dist/explain.d.ts +76 -0
- package/dist/explain.d.ts.map +1 -0
- package/dist/explain.js +127 -0
- package/dist/explain.js.map +1 -0
- package/dist/generate-schema.js +250 -53
- package/dist/generate-schema.js.map +1 -1
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +41 -40
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +275 -515
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-extras-parser.d.ts +0 -1
- package/dist/loop-extras-parser.d.ts.map +1 -1
- package/dist/loop-extras-parser.js +0 -4
- package/dist/loop-extras-parser.js.map +1 -1
- package/dist/loop-projection.d.ts.map +1 -1
- package/dist/loop-projection.js +3 -1
- package/dist/loop-projection.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +40 -21
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +173 -120
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +63 -10
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +53 -7
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +240 -139
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/submission-boundary.d.ts +89 -0
- package/dist/mcp/submission-boundary.d.ts.map +1 -0
- package/dist/mcp/submission-boundary.js +203 -0
- package/dist/mcp/submission-boundary.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +377 -125
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.js +2 -2
- package/dist/policy-metrics.js.map +1 -1
- package/dist/policy.d.ts +65 -95
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +151 -39
- package/dist/policy.js.map +1 -1
- package/dist/prompt-assembler.d.ts +7 -33
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +313 -473
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/prompt-policy.d.ts +1 -4
- package/dist/prompt-policy.d.ts.map +1 -1
- package/dist/prompt-policy.js +6 -7
- package/dist/prompt-policy.js.map +1 -1
- package/dist/protocol.d.ts +411 -168
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +23 -69
- package/dist/protocol.js.map +1 -1
- package/dist/replay.js +2 -2
- package/dist/replay.js.map +1 -1
- package/dist/round-contract.d.ts +69 -57
- package/dist/round-contract.d.ts.map +1 -1
- package/dist/round-contract.js +104 -64
- package/dist/round-contract.js.map +1 -1
- package/dist/round-coordinator.d.ts +55 -16
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +179 -57
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +7 -5
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +2 -1
- package/dist/round-driver.js.map +1 -1
- package/dist/round-facts.d.ts +96 -0
- package/dist/round-facts.d.ts.map +1 -0
- package/dist/round-facts.js +216 -0
- package/dist/round-facts.js.map +1 -0
- package/dist/round-transaction.d.ts +23 -9
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +99 -22
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +127 -11
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +517 -36
- package/dist/self-eval.js.map +1 -1
- package/dist/subgoal-state.d.ts +77 -0
- package/dist/subgoal-state.d.ts.map +1 -0
- package/dist/subgoal-state.js +198 -0
- package/dist/subgoal-state.js.map +1 -0
- package/dist/token-utils.d.ts +52 -19
- package/dist/token-utils.d.ts.map +1 -1
- package/dist/token-utils.js +83 -72
- package/dist/token-utils.js.map +1 -1
- package/dist/verification-gate.d.ts +27 -46
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +308 -557
- package/dist/verification-gate.js.map +1 -1
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace.d.ts +9 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +17 -0
- package/dist/workspace.js.map +1 -1
- package/loop_policy.json +17 -25
- package/package.json +7 -7
- package/skills/perception/SKILL.md +266 -64
|
@@ -19,24 +19,116 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import { queryLoopEntries } from "./loop-store.js";
|
|
21
21
|
import { CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE, verifySelfEvaluation } from "./verification-gate.js";
|
|
22
|
-
import { entryRound } from "./token-utils.js";
|
|
23
|
-
import { effectiveSuccess } from "./self-eval.js";
|
|
22
|
+
import { entryRound, isRecord } from "./token-utils.js";
|
|
23
|
+
import { effectiveOutcome, effectiveSuccess } from "./self-eval.js";
|
|
24
|
+
import { derivationRounds, decodeCommittedRound } from "./committed-round.js";
|
|
25
|
+
import { makeRoundId } from "./round-transaction.js";
|
|
24
26
|
import { enforceRound, buildRejectionPrompt, findSafeRestorePoint, buildBacktrackPrompt, findBacktrackTargetGitHead, } from "./enforcement-gate.js";
|
|
25
27
|
import { logEvent } from "./observability.js";
|
|
26
28
|
import { getPolicy } from "./policy.js";
|
|
29
|
+
import { deriveRoundContractView } from "./round-contract.js";
|
|
30
|
+
import { roundVerificationStatus, } from "./contract-items.js";
|
|
27
31
|
/** v3.2/v3.6: Whether a round's success enters the success trajectory.
|
|
28
32
|
* Excluded when the gate contradicted the round, or when the success claim
|
|
29
33
|
* carries no machine-verified observation — the merged R8 check fires a
|
|
30
34
|
* warn under machine_backed_success "warn" (v3.6: success_unverified merged
|
|
31
35
|
* into R8; its warn-level trajectory exclusion moved with it) — an
|
|
32
36
|
* accepted-but-unverified round is not evidence of progress. */
|
|
33
|
-
function shouldPushSuccess(gateContradicted, verificationFlags) {
|
|
37
|
+
function shouldPushSuccess(gateContradicted, verificationFlags, contractStatuses) {
|
|
34
38
|
if (gateContradicted)
|
|
35
39
|
return false;
|
|
40
|
+
// v3.8: an unverified contract item (or a claimed-but-unbacked success)
|
|
41
|
+
// keeps the round out of the success trajectory — an accepted-but-unverified
|
|
42
|
+
// round is not evidence of progress.
|
|
43
|
+
if (contractStatuses && contractStatuses.insufficientCount > 0)
|
|
44
|
+
return false;
|
|
36
45
|
return !verificationFlags.some((flag) => flag.severity === "warn" &&
|
|
37
46
|
flag.check === CHECK_SUCCESS_WITHOUT_VERIFIED_EVIDENCE);
|
|
38
47
|
}
|
|
39
48
|
// ── RoundCoordinator ───────────────────────────────────────────────────────
|
|
49
|
+
/** v3.8.1: The rolled-back branch's facts — the ONE derivation of which rounds
|
|
50
|
+
* failed, which approaches must not be repeated, which assumptions were
|
|
51
|
+
* falsified, and which files (with their failed-round git fingerprints) the
|
|
52
|
+
* agent must restore.
|
|
53
|
+
*
|
|
54
|
+
* Sources are COMMITTED rounds above the restore point; rejected attempts are
|
|
55
|
+
* not durable history and never become a source. The in-flight attempt that
|
|
56
|
+
* triggered the rollback is the one exception — its evaluation lives in this
|
|
57
|
+
* process, not in committed history.
|
|
58
|
+
*
|
|
59
|
+
* Extracted from the coordinator's inline walk so it is unit-testable without
|
|
60
|
+
* driving a whole rollback, and so the prompt, the state file and the
|
|
61
|
+
* committed decision all describe one event. */
|
|
62
|
+
export function deriveBacktrackRecoveryFacts(input) {
|
|
63
|
+
const { currentRound, restoreRound, vaultEntries, selfEval } = input;
|
|
64
|
+
// v2.13: files changed in skipped rounds, for the restore prompt.
|
|
65
|
+
const skippedFiles = [];
|
|
66
|
+
// M3 (v3.7.x): each skipped file's git fingerprint at its failed round.
|
|
67
|
+
// Recorded from the round's own after-evidence (machine data, not the
|
|
68
|
+
// agent's report); later rounds overwrite earlier ones so the map holds the
|
|
69
|
+
// LAST failed state of every file.
|
|
70
|
+
const skippedFingerprints = {};
|
|
71
|
+
const failedRounds = [];
|
|
72
|
+
const approaches = [];
|
|
73
|
+
const wrongAssumptions = [];
|
|
74
|
+
for (let r = restoreRound + 1; r < currentRound; r++) {
|
|
75
|
+
// v3.2.1: match the feedback entry (execution_report lives there) — the
|
|
76
|
+
// compile-time lineage entry for the same round precedes it in the flat
|
|
77
|
+
// view and carries no evidence.
|
|
78
|
+
const entry = vaultEntries.find((e) => entryRound(e) === r && e.task_type !== "loop_lineage");
|
|
79
|
+
const view = entry ? decodeCommittedRound(entry) : null;
|
|
80
|
+
const evaluation = view?.evaluation ?? null;
|
|
81
|
+
if (entry?.execution_report) {
|
|
82
|
+
const ev = entry.execution_report;
|
|
83
|
+
const files = Array.isArray(ev.files_changed)
|
|
84
|
+
? ev.files_changed.filter((f) => typeof f === "string")
|
|
85
|
+
: [];
|
|
86
|
+
const git = view?.afterEvidence.find((snapshot) => snapshot.kind === "git" &&
|
|
87
|
+
isRecord(snapshot.data.fingerprints));
|
|
88
|
+
const gitFingerprints = git && git.kind === "git"
|
|
89
|
+
? git.data.fingerprints
|
|
90
|
+
: null;
|
|
91
|
+
for (const f of files) {
|
|
92
|
+
if (!skippedFiles.includes(f))
|
|
93
|
+
skippedFiles.push(f);
|
|
94
|
+
const fp = gitFingerprints?.[f];
|
|
95
|
+
if (typeof fp === "string")
|
|
96
|
+
skippedFingerprints[f] = fp;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const summary = evaluation?.output_summary ?? "";
|
|
100
|
+
if (summary.trim().length > 0) {
|
|
101
|
+
failedRounds.push(r);
|
|
102
|
+
approaches.push(summary.trim().slice(0, 200));
|
|
103
|
+
}
|
|
104
|
+
const assumptions = (evaluation?.wrong_assumptions ?? [])
|
|
105
|
+
.filter((v) => typeof v === "string")
|
|
106
|
+
.map((s) => s.slice(0, 500));
|
|
107
|
+
for (const a of assumptions) {
|
|
108
|
+
if (!wrongAssumptions.includes(a))
|
|
109
|
+
wrongAssumptions.push(a);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// The in-flight attempt that triggered this rollback.
|
|
113
|
+
const triggerSummary = selfEval.output_summary?.trim() ?? "";
|
|
114
|
+
if (triggerSummary.length > 0) {
|
|
115
|
+
if (!failedRounds.includes(currentRound))
|
|
116
|
+
failedRounds.push(currentRound);
|
|
117
|
+
approaches.push(triggerSummary.slice(0, 200));
|
|
118
|
+
for (const a of (selfEval.wrong_assumptions ?? [])
|
|
119
|
+
.filter((v) => typeof v === "string")) {
|
|
120
|
+
if (!wrongAssumptions.includes(a))
|
|
121
|
+
wrongAssumptions.push(a.slice(0, 500));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
skippedFiles,
|
|
126
|
+
skippedFingerprints,
|
|
127
|
+
failedRounds,
|
|
128
|
+
approaches,
|
|
129
|
+
wrongAssumptions,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
40
132
|
export class RoundCoordinator {
|
|
41
133
|
store;
|
|
42
134
|
constructor(store) {
|
|
@@ -51,16 +143,13 @@ export class RoundCoordinator {
|
|
|
51
143
|
* - Managing heartbeat / signal handlers (runtime only)
|
|
52
144
|
* - Memory injection (both paths, before calling processRound)
|
|
53
145
|
* - Transactional feedback commit (accepted rounds only)
|
|
54
|
-
* - State file I/O (both paths, after compiling)
|
|
55
|
-
|
|
56
|
-
* @param driftClarificationStreak v2.12: Current clarification streak
|
|
57
|
-
* from session state. Passed through to enforceRound for R7 escalation. */
|
|
58
|
-
processRound(input, driftClarificationStreak = 0) {
|
|
146
|
+
* - State file I/O (both paths, after compiling) */
|
|
147
|
+
processRound(input) {
|
|
59
148
|
const { loopId, task, currentRound, maxRounds, selfEval, lastSelfEval, consecutiveRejections, evidenceSnapshots, } = input;
|
|
60
149
|
const roundSuccess = selfEval.success ?? false;
|
|
61
150
|
// ── 1. Query vault entries ──────────────────────────────────────────
|
|
62
151
|
// Lineage entries (constraint violations, output summaries) and feedback
|
|
63
|
-
// entries (
|
|
152
|
+
// entries (execution_report, progress estimates) are both needed by
|
|
64
153
|
// the enforcement gate. queryLoopEntries excludes feedback by default,
|
|
65
154
|
// so we issue a second query and merge both result sets.
|
|
66
155
|
const prefix = `loop:${loopId}:r`;
|
|
@@ -71,9 +160,28 @@ export class RoundCoordinator {
|
|
|
71
160
|
]
|
|
72
161
|
: [];
|
|
73
162
|
// ── 2. Verification gate ────────────────────────────────────────────
|
|
74
|
-
const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? [], input.backtrackSkippedFiles ?? [], input.backtrackTargetGitHead
|
|
163
|
+
const verifyResult = verifySelfEvaluation(selfEval, currentRound, vaultEntries, lastSelfEval ?? null, evidenceSnapshots ?? [], input.backtrackSkippedFiles ?? [], input.backtrackSkippedFingerprints ?? {}, input.backtrackTargetGitHead,
|
|
164
|
+
// v3.7.1: gate records live under the gate: prefix — outside the round
|
|
165
|
+
// entries above — and are passed separately to the gate check.
|
|
166
|
+
this.store
|
|
167
|
+
? queryLoopEntries(this.store, loopId, { prefix: `loop:${loopId}:gate:` })
|
|
168
|
+
: []);
|
|
75
169
|
const verificationFlags = verifyResult.flags;
|
|
76
170
|
const gateContradicted = verifyResult.verdict === "contradicted";
|
|
171
|
+
// v3.8: the ACTIVE contract's derived item statuses for this round — the
|
|
172
|
+
// same reducer the gate, compile path, audit and explain consume. Drives
|
|
173
|
+
// the stop mapping (completed vs incomplete) and the success trajectory.
|
|
174
|
+
const committedRounds = derivationRounds(vaultEntries, currentRound);
|
|
175
|
+
// v3.8: the shared executed-contract derivation — the same one explain and
|
|
176
|
+
// audit call, so the live posture and the read-only views cannot diverge.
|
|
177
|
+
const { statuses: activeContractStatuses } = deriveRoundContractView({
|
|
178
|
+
rounds: committedRounds,
|
|
179
|
+
round: currentRound,
|
|
180
|
+
report: selfEval.execution_report ?? null,
|
|
181
|
+
observations: evidenceSnapshots ?? [],
|
|
182
|
+
outcome: effectiveOutcome(selfEval),
|
|
183
|
+
commands: getPolicy().evidence.commands ?? [],
|
|
184
|
+
});
|
|
77
185
|
if (gateContradicted) {
|
|
78
186
|
logEvent("gate_contradicted", {
|
|
79
187
|
loopId,
|
|
@@ -87,7 +195,7 @@ export class RoundCoordinator {
|
|
|
87
195
|
// transaction reaches enforcement with a fully extracted self-evaluation.
|
|
88
196
|
// The old v2.5 "heuristic partial enforcement" plumbing (extractionSucceeded
|
|
89
197
|
// flag, enforcement skipEvidenceRules mode) was removed as unreachable.
|
|
90
|
-
const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections,
|
|
198
|
+
const enforceResult = enforceRound(selfEval, verifyResult, currentRound, vaultEntries, consecutiveRejections, input.lastRejectionCheck ?? "");
|
|
91
199
|
if (enforceResult.action === "reject") {
|
|
92
200
|
const newRejections = consecutiveRejections + 1;
|
|
93
201
|
const rejectionPrompt = buildRejectionPrompt(currentRound, task, enforceResult, verificationFlags);
|
|
@@ -100,21 +208,12 @@ export class RoundCoordinator {
|
|
|
100
208
|
});
|
|
101
209
|
return {
|
|
102
210
|
action: "reject",
|
|
211
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
103
212
|
rejectionPrompt,
|
|
104
213
|
verificationFlags,
|
|
105
214
|
enforcementAction: "reject",
|
|
106
215
|
enforcementReason: enforceResult.reason,
|
|
107
216
|
rejectionCheck: enforceResult.check,
|
|
108
|
-
// v3.3.1: an R7-participated reject (weak or missing
|
|
109
|
-
// drift_clarification) echoes clarificationAccepted: false so the
|
|
110
|
-
// caller's streak tracking increments — without this the
|
|
111
|
-
// drift_clarification_max_streak terminate ladder was unreachable
|
|
112
|
-
// (the increment branch required the field, and only the continue
|
|
113
|
-
// path ever set it). Higher-priority rules' rejects keep it
|
|
114
|
-
// undefined, preserving the v3.2.1 "R7-only streak" semantics.
|
|
115
|
-
...(enforceResult.check === "intent_drift"
|
|
116
|
-
? { clarificationAccepted: false }
|
|
117
|
-
: {}),
|
|
118
217
|
roundSuccess,
|
|
119
218
|
gateContradicted,
|
|
120
219
|
newConsecutiveRejections: newRejections,
|
|
@@ -124,24 +223,23 @@ export class RoundCoordinator {
|
|
|
124
223
|
};
|
|
125
224
|
}
|
|
126
225
|
if (enforceResult.action === "terminate") {
|
|
226
|
+
// v3.8: a row may name the stop reason it terminates with (the
|
|
227
|
+
// verification-debt row reports `incomplete` — the agent stopped short
|
|
228
|
+
// of machine verification, which is not the same as a contradiction).
|
|
229
|
+
const terminateReason = enforceResult.stopReason ?? "enforcement_terminated";
|
|
127
230
|
logEvent("session_end", {
|
|
128
231
|
loopId,
|
|
129
|
-
stopReason:
|
|
232
|
+
stopReason: terminateReason,
|
|
130
233
|
round: currentRound,
|
|
131
234
|
});
|
|
132
235
|
return {
|
|
133
236
|
action: "terminate",
|
|
134
|
-
|
|
237
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
238
|
+
stopReason: terminateReason,
|
|
135
239
|
verificationFlags,
|
|
136
240
|
enforcementAction: "terminate",
|
|
137
241
|
enforcementReason: enforceResult.reason,
|
|
138
242
|
rejectionCheck: enforceResult.check,
|
|
139
|
-
// v3.3.1: same echo as the reject branch — R7-participated
|
|
140
|
-
// terminates keep the streak contract consistent for the
|
|
141
|
-
// snapshot/audit record (harmless: the session is ending).
|
|
142
|
-
...(enforceResult.check === "intent_drift"
|
|
143
|
-
? { clarificationAccepted: false }
|
|
144
|
-
: {}),
|
|
145
243
|
roundSuccess,
|
|
146
244
|
gateContradicted,
|
|
147
245
|
newConsecutiveRejections: 0,
|
|
@@ -162,6 +260,7 @@ export class RoundCoordinator {
|
|
|
162
260
|
});
|
|
163
261
|
return {
|
|
164
262
|
action: "terminate",
|
|
263
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
165
264
|
stopReason: "enforcement_terminated",
|
|
166
265
|
verificationFlags,
|
|
167
266
|
enforcementAction: "terminate",
|
|
@@ -174,30 +273,22 @@ export class RoundCoordinator {
|
|
|
174
273
|
shouldPushSuccessTrajectory: false,
|
|
175
274
|
};
|
|
176
275
|
}
|
|
177
|
-
// v2.13:
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
? ev.files_changed.filter((f) => typeof f === "string")
|
|
188
|
-
: [];
|
|
189
|
-
for (const f of files) {
|
|
190
|
-
if (!skippedFiles.includes(f))
|
|
191
|
-
skippedFiles.push(f);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
276
|
+
// v2.13/v3.8.1: the rolled-back branch's facts — one named derivation,
|
|
277
|
+
// so the walk is testable without driving a whole rollback, and the
|
|
278
|
+
// prompt, the state file and the committed decision all describe one
|
|
279
|
+
// event.
|
|
280
|
+
const { skippedFiles, skippedFingerprints, failedRounds, approaches, wrongAssumptions, } = deriveBacktrackRecoveryFacts({
|
|
281
|
+
currentRound,
|
|
282
|
+
restoreRound: restorePoint.round,
|
|
283
|
+
vaultEntries,
|
|
284
|
+
selfEval,
|
|
285
|
+
});
|
|
195
286
|
// v2.12: Capture the restore point's git HEAD so the next round's
|
|
196
287
|
// verification can confirm the workspace returned to this commit.
|
|
197
288
|
const targetGitHead = findBacktrackTargetGitHead(restorePoint.round, vaultEntries);
|
|
198
289
|
const backtrackPrompt = buildBacktrackPrompt(currentRound, restorePoint.round, enforceResult.check ?? "progress_stall", getPolicy().engine.backtrack_preserve_discoveries
|
|
199
290
|
? restorePoint.skippedDiscoveries
|
|
200
|
-
: [], skippedFiles, targetGitHead ?? undefined);
|
|
291
|
+
: [], skippedFiles, targetGitHead ?? undefined, makeRoundId(loopId, restorePoint.round + 1), { failedRounds, approaches, wrongAssumptions });
|
|
201
292
|
logEvent("enforcement_backtrack", {
|
|
202
293
|
loopId,
|
|
203
294
|
round: currentRound,
|
|
@@ -208,14 +299,19 @@ export class RoundCoordinator {
|
|
|
208
299
|
});
|
|
209
300
|
return {
|
|
210
301
|
action: "backtrack",
|
|
302
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
211
303
|
backtrackPrompt,
|
|
212
304
|
backtrackTarget: restorePoint.round,
|
|
213
305
|
backtrackSkippedDiscoveries: getPolicy().engine.backtrack_preserve_discoveries
|
|
214
306
|
? restorePoint.skippedDiscoveries
|
|
215
307
|
: [],
|
|
216
308
|
backtrackSkippedFiles: skippedFiles,
|
|
309
|
+
backtrackSkippedFingerprints: skippedFingerprints,
|
|
217
310
|
backtrackTargetGitHead: targetGitHead ?? undefined,
|
|
218
311
|
backtrackTriggerRule: enforceResult.check,
|
|
312
|
+
backtrackFailedRounds: failedRounds,
|
|
313
|
+
backtrackApproaches: approaches,
|
|
314
|
+
backtrackWrongAssumptions: wrongAssumptions,
|
|
219
315
|
verificationFlags,
|
|
220
316
|
enforcementAction: "backtrack",
|
|
221
317
|
enforcementReason: enforceResult.reason,
|
|
@@ -233,26 +329,52 @@ export class RoundCoordinator {
|
|
|
233
329
|
// ── 5. Stop condition checks ────────────────────────────────────────
|
|
234
330
|
// 5b. Agent says stop
|
|
235
331
|
if (!selfEval.should_continue) {
|
|
332
|
+
// v3.8: `completed` is a machine claim. It requires the active contract
|
|
333
|
+
// to be closed — every item `verified` — or no contract at all. A stop
|
|
334
|
+
// with claimed-but-unverified items is `incomplete`, never `completed`.
|
|
335
|
+
// An empty contract id means no contract is active (the reducer's
|
|
336
|
+
// sentinel view) — a contract-less loop completes on the success claim
|
|
337
|
+
// alone, exactly as before v3.8.
|
|
338
|
+
//
|
|
339
|
+
// A `blocked` closure deliberately does NOT satisfy `contractClosed`: a
|
|
340
|
+
// contract closed by its own blocked outcome is not a verified one, and
|
|
341
|
+
// the declaration arm below already owns that posture.
|
|
342
|
+
const contractClosed = activeContractStatuses.contractId === "" ||
|
|
343
|
+
activeContractStatuses.closure === "verified";
|
|
344
|
+
// The agent's explicit declaration of a blocked stop outranks the
|
|
345
|
+
// success claim. It is checked FIRST so `success: true` + a declared
|
|
346
|
+
// `outcome`/`stop_reason` of blocked can never be reported as
|
|
347
|
+
// `completed` — the two fields contradict, and the honest reading is the
|
|
348
|
+
// declared one. A contradicted item also never reaches `completed`
|
|
349
|
+
// (closure is `verified` only when EVERY item is), so the
|
|
350
|
+
// contradicted-and-stopping posture lands on `incomplete` at worst; the
|
|
351
|
+
// reject/terminate path for it is the enforcement gate's, evaluated
|
|
352
|
+
// before this point.
|
|
353
|
+
const declaredBlocked = selfEval.outcome === "blocked" ||
|
|
354
|
+
selfEval.stop_reason === "blocked" || selfEval.stop_reason === "needs_human_input";
|
|
236
355
|
let reason;
|
|
237
|
-
if (
|
|
356
|
+
if (declaredBlocked) {
|
|
357
|
+
reason = "blocked";
|
|
358
|
+
}
|
|
359
|
+
else if (effectiveSuccess(selfEval) && contractClosed) {
|
|
238
360
|
reason = "completed";
|
|
239
361
|
}
|
|
240
|
-
else if (selfEval
|
|
241
|
-
|
|
242
|
-
reason = "blocked";
|
|
362
|
+
else if (effectiveSuccess(selfEval)) {
|
|
363
|
+
reason = "incomplete";
|
|
243
364
|
}
|
|
244
365
|
else {
|
|
245
366
|
reason = "failed";
|
|
246
367
|
}
|
|
247
368
|
return {
|
|
248
369
|
action: "stop",
|
|
370
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
249
371
|
stopReason: reason,
|
|
250
372
|
verificationFlags,
|
|
251
373
|
roundSuccess,
|
|
252
374
|
gateContradicted,
|
|
253
375
|
newConsecutiveRejections: 0,
|
|
254
376
|
newLastSelfEval: selfEval,
|
|
255
|
-
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
|
|
377
|
+
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
|
|
256
378
|
};
|
|
257
379
|
}
|
|
258
380
|
// 5c. Max rounds reached
|
|
@@ -262,27 +384,27 @@ export class RoundCoordinator {
|
|
|
262
384
|
if (currentRound >= maxRounds) {
|
|
263
385
|
return {
|
|
264
386
|
action: "stop",
|
|
387
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
265
388
|
stopReason: "max_rounds",
|
|
266
389
|
verificationFlags,
|
|
267
390
|
roundSuccess,
|
|
268
391
|
gateContradicted,
|
|
269
392
|
newConsecutiveRejections: 0,
|
|
270
393
|
newLastSelfEval: selfEval,
|
|
271
|
-
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
|
|
394
|
+
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
|
|
272
395
|
};
|
|
273
396
|
}
|
|
274
397
|
// ── 6. Continue — caller compiles next round ────────────────────────
|
|
275
398
|
return {
|
|
276
399
|
action: "continue",
|
|
400
|
+
verificationStatus: roundVerificationStatus(activeContractStatuses, selfEval.execution_report ?? null),
|
|
277
401
|
verificationFlags,
|
|
278
402
|
enforcementAction: "accept",
|
|
279
403
|
roundSuccess,
|
|
280
404
|
gateContradicted,
|
|
281
405
|
newConsecutiveRejections: 0,
|
|
282
406
|
newLastSelfEval: selfEval,
|
|
283
|
-
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags),
|
|
284
|
-
// v2.12: Propagate clarification acceptance signal for streak tracking
|
|
285
|
-
clarificationAccepted: enforceResult.clarification_accepted ?? false,
|
|
407
|
+
shouldPushSuccessTrajectory: shouldPushSuccess(gateContradicted, verificationFlags, activeContractStatuses),
|
|
286
408
|
};
|
|
287
409
|
}
|
|
288
410
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"round-coordinator.js","sourceRoot":"","sources":["../src/round-coordinator.ts"],"names":[],"mappings":"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"}
|
package/dist/round-driver.d.ts
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { LoopStore } from "./loop-store.js";
|
|
9
9
|
import { LoopForgeEngine } from "./engine.js";
|
|
10
|
-
import type {
|
|
10
|
+
import type { MachineObservation } from "./protocol.js";
|
|
11
11
|
import type { LoopForgeRequest, LoopForgeResponse, PromptArtifact, SelfEvaluation } from "./protocol.js";
|
|
12
12
|
import type { RoundTransactionOutcome, RoundTransactionSnapshot } from "./round-transaction.js";
|
|
13
13
|
export interface PreparedRound {
|
|
14
14
|
prompt: string;
|
|
15
15
|
artifact?: PromptArtifact;
|
|
16
16
|
level: "l0" | "l1" | "l2";
|
|
17
|
-
evidenceBaseline:
|
|
17
|
+
evidenceBaseline: MachineObservation[];
|
|
18
18
|
snapshot: RoundTransactionSnapshot;
|
|
19
19
|
stateFileContent?: string;
|
|
20
20
|
warnings?: string[];
|
|
@@ -30,17 +30,19 @@ export interface CompleteRoundInput {
|
|
|
30
30
|
selfEval: SelfEvaluation;
|
|
31
31
|
lastSelfEval?: SelfEvaluation;
|
|
32
32
|
consecutiveRejections: number;
|
|
33
|
+
/** L4 (v3.7.x): previous round's rejection check (own-streak basis). */
|
|
34
|
+
lastRejectionCheck?: string;
|
|
33
35
|
successTrajectory: boolean[];
|
|
34
|
-
/** v2.12: Current clarification streak for R7 escalation. */
|
|
35
|
-
driftClarificationStreak?: number;
|
|
36
36
|
/** v2.13: Files from skipped backtrack rounds for restore check. */
|
|
37
37
|
backtrackSkippedFiles?: string[];
|
|
38
|
+
/** M3 (v3.7.x): skipped-file git fingerprints at their failed rounds. */
|
|
39
|
+
backtrackSkippedFingerprints?: Record<string, string>;
|
|
38
40
|
/** v2.12: Git HEAD of the backtrack restore point (workspace restore check). */
|
|
39
41
|
backtrackTargetGitHead?: string;
|
|
40
42
|
}
|
|
41
43
|
export interface CompletedRound {
|
|
42
44
|
outcome: RoundTransactionOutcome;
|
|
43
|
-
actualEvidence:
|
|
45
|
+
actualEvidence: MachineObservation[];
|
|
44
46
|
}
|
|
45
47
|
export declare class RoundDriver {
|
|
46
48
|
private readonly engine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"round-driver.d.ts","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"round-driver.d.ts","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAC;AAMvB,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;sEACkE;IAClE,eAAe,CAAC,EAAE,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,OAAO,EAAE,CAAC;IAC7B,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,yEAAyE;IACzE,4BAA4B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,gFAAgF;IAChF,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,uBAAuB,CAAC;IACjC,cAAc,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;gBAEL,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,EAAE,SAAS;IAIjE,OAAO,CACX,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYhC,OAAO,CAAC,OAAO;IAgBf;oFACgF;IAC1E,YAAY,CAChB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,wBAAwB,EAClC,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,MAAM,GAC5B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAwBhC,OAAO,CAAC,aAAa;IAyBf,QAAQ,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBlE,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,uBAAuB,GAAG,IAAI;IAO3E,OAAO,CAAC,eAAe;CAMxB"}
|
package/dist/round-driver.js
CHANGED
|
@@ -85,10 +85,11 @@ export class RoundDriver {
|
|
|
85
85
|
selfEval: input.selfEval,
|
|
86
86
|
lastSelfEval: input.lastSelfEval,
|
|
87
87
|
consecutiveRejections: input.consecutiveRejections,
|
|
88
|
+
lastRejectionCheck: input.lastRejectionCheck,
|
|
88
89
|
successTrajectory: input.successTrajectory,
|
|
89
90
|
actualEvidence,
|
|
90
|
-
driftClarificationStreak: input.driftClarificationStreak,
|
|
91
91
|
backtrackSkippedFiles: input.backtrackSkippedFiles,
|
|
92
|
+
backtrackSkippedFingerprints: input.backtrackSkippedFingerprints,
|
|
92
93
|
backtrackTargetGitHead: input.backtrackTargetGitHead,
|
|
93
94
|
});
|
|
94
95
|
return { outcome, actualEvidence };
|
package/dist/round-driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"round-driver.js","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,
|
|
1
|
+
{"version":3,"file":"round-driver.js","sourceRoot":"","sources":["../src/round-driver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AA2ChC,MAAM,OAAO,WAAW;IAGO;IAFZ,KAAK,CAAY;IAElC,YAA6B,MAAuB,EAAE,KAAiB;QAA1C,WAAM,GAAN,MAAM,CAAiB;QAClD,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAO,CACX,OAAyB,EACzB,MAAc,EACd,KAAa;QAEb,uEAAuE;QACvE,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACrD,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAEO,OAAO,CACb,OAAyB,EACzB,MAAc,EACd,cAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAC5C,OAAO,EACP,SAAS,EACT,EAAE,cAAc,EAAE,CACnB,CAAC;QACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,MAAM;YAAE,OAAO,IAAI,CAAC;QACnC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;oFACgF;IAChF,KAAK,CAAC,YAAY,CAChB,OAAyB,EACzB,QAAkC,EAClC,eAAuB,EACvB,qBAA6B;QAE7B,MAAM,YAAY,GAAG;YACnB,GAAG,OAAO;YACV,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,GAAG,CAAC;YAC7B,sBAAsB,EAAE,qBAAqB;YAC7C,gBAAgB,EAAE,eAAe;YACjC,WAAW,EAAE,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;SAClC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ,EAAE,eAAe;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC5E,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAO;YACxB,QAAQ,EAAE,QAAQ,CAAC,eAAe;YAClC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,KAAK;YACrC,gBAAgB,EAAE,QAAQ,CAAC,cAAc;YACzC,QAAQ;YACR,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB;YAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,eAAe,EAAE,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,QAA2B,EAC3B,MAAc,EACd,KAAa,EACb,gBAAsC;QAEtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC;QAC1C,MAAM,QAAQ,GAAG,uBAAuB,CACtC,MAAM,EACN,KAAK,EACL,gBAAgB,EAChB,QAAQ,CACT,CAAC;QACF,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAO;YACxB,QAAQ;YACR,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,IAAI;YAC9B,gBAAgB;YAChB,QAAQ;YACR,gBAAgB,EAAE,QAAQ,CAAC,kBAAkB;YAC7C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,eAAe,EAAE,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAyB;QACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,IAAI,2BAA2B,CACjD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CACX,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;YAC5C,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;YAC1C,cAAc;YACd,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;YAClD,4BAA4B,EAAE,KAAK,CAAC,4BAA4B;YAChE,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;SACrD,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,QAAkC;QACxC,OAAO,IAAI,2BAA2B,CACpC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,KAAK,CACX,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAEO,eAAe,CACrB,MAAc,EACd,KAAyB;QAEzB,OAAO,iBAAiB,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/** v3.8.1: THE contract-fact derivation.
|
|
2
|
+
*
|
|
3
|
+
* The contract walker, the item reducer, the verified sub-goal facts and the
|
|
4
|
+
* verification debt are one pass over one history window. Before this module
|
|
5
|
+
* the compile path and the projection each ran the same reducers over their
|
|
6
|
+
* own window, so the prompt and the projection could tell different stories
|
|
7
|
+
* about what the machine had verified — and nothing stopped a third caller
|
|
8
|
+
* from picking a third window.
|
|
9
|
+
*
|
|
10
|
+
* Every caller passes `derivationRounds(entries, currentRound)` (the shared
|
|
11
|
+
* window from committed-round.ts) and receives the same bundle, so "one fact,
|
|
12
|
+
* one derivation" is a property of the types rather than a convention.
|
|
13
|
+
*/
|
|
14
|
+
import type { CommittedRoundView } from "./committed-round.js";
|
|
15
|
+
import type { ContractItemStatusView } from "./contract-items.js";
|
|
16
|
+
import type { CommandEvidencePolicy } from "./policy.js";
|
|
17
|
+
import type { ContractItemStatus, ExecutionReport, MachineObservation, SubGoal, VerifiedSubGoalFact } from "./protocol.js";
|
|
18
|
+
import type { ActiveContractView } from "./round-contract.js";
|
|
19
|
+
export interface RoundFacts {
|
|
20
|
+
/** The contract the NEXT round executes under — derived from committed
|
|
21
|
+
* rounds only, so a retry / resume / backtrack compile keeps showing it. */
|
|
22
|
+
activeContract: ActiveContractView | null;
|
|
23
|
+
/** Per-item status of `activeContract`. */
|
|
24
|
+
itemStatuses: ContractItemStatusView;
|
|
25
|
+
/** v3.8: machine-verified sub-goals. Never writes `SubGoal.status`. */
|
|
26
|
+
verifiedSubGoals: VerifiedSubGoalFact[];
|
|
27
|
+
/** `done` sub-goals no verified item backs, plus `insufficient` items. */
|
|
28
|
+
verificationDebt: string[];
|
|
29
|
+
/** v3.8.1: the machine fact about each criterion a contract item referenced,
|
|
30
|
+
* over the WHOLE committed history — the criterion-side twin of
|
|
31
|
+
* `verifiedSubGoals`, and read by the same callers. */
|
|
32
|
+
criterionFacts: CriterionMachineFact[];
|
|
33
|
+
}
|
|
34
|
+
/** v3.8.1: ONE criterion's machine fact. `status` is absent while every item
|
|
35
|
+
* referencing the criterion is still `pending` — "no claim yet" says nothing
|
|
36
|
+
* about the criterion, so the criterion keeps its claim-derived status. The
|
|
37
|
+
* links are explicit `subgoal_refs` only, and they survive their item's
|
|
38
|
+
* contract closing just like the status does. */
|
|
39
|
+
export interface CriterionMachineFact {
|
|
40
|
+
criterion_id: string;
|
|
41
|
+
status?: Exclude<ContractItemStatus, "pending">;
|
|
42
|
+
related_subgoal_ids: string[];
|
|
43
|
+
}
|
|
44
|
+
/** The in-flight slice of a round that is being decided but is not yet
|
|
45
|
+
* committed. A pure committed-history replay passes null / [] — the reducer
|
|
46
|
+
* then sees committed facts only, which is exactly what the compile path
|
|
47
|
+
* wants. */
|
|
48
|
+
export interface InFlightRoundSlice {
|
|
49
|
+
currentReport: ExecutionReport | null;
|
|
50
|
+
currentObservations: ReadonlyArray<MachineObservation>;
|
|
51
|
+
/** The in-flight round's own effective outcome. A `blocked` round CLOSES its
|
|
52
|
+
* contract, so closure cannot be derived from committed slices alone. */
|
|
53
|
+
currentOutcome?: string | null;
|
|
54
|
+
}
|
|
55
|
+
export declare const NO_IN_FLIGHT_ROUND: InFlightRoundSlice;
|
|
56
|
+
export declare function deriveRoundFacts(input: {
|
|
57
|
+
/** `derivationRounds(entries, currentRound)` — the shared window. */
|
|
58
|
+
rounds: ReadonlyArray<CommittedRoundView>;
|
|
59
|
+
currentRound: number;
|
|
60
|
+
inFlight: InFlightRoundSlice;
|
|
61
|
+
subGoals: ReadonlyArray<SubGoal>;
|
|
62
|
+
commands: ReadonlyArray<CommandEvidencePolicy>;
|
|
63
|
+
}): RoundFacts;
|
|
64
|
+
/** v3.8: Machine-verified sub-goal facts. DERIVED, never persisted. It never
|
|
65
|
+
* writes `SubGoal.status`: `done` stays the agent's declaration, and the fact
|
|
66
|
+
* is the machine's separate statement about it.
|
|
67
|
+
*
|
|
68
|
+
* Derived from the WHOLE committed history, not from the currently-open
|
|
69
|
+
* contract. A verified item is machine history — once proven, it stays
|
|
70
|
+
* proven — while the active contract necessarily disappears the moment its
|
|
71
|
+
* last item verifies. Deriving from the active contract alone made the fact
|
|
72
|
+
* vanish at exactly the moment it became fully true, and turned the
|
|
73
|
+
* verification-debt view into a false accusation ("agent reported done,
|
|
74
|
+
* machine verification absent") against a sub-goal the machine had just
|
|
75
|
+
* verified. Each round is read through `deriveRoundContractView`, the same
|
|
76
|
+
* derivation the coordinator, explain and audit use — one history
|
|
77
|
+
* interpretation, no second read model. That re-derivation is quadratic in the
|
|
78
|
+
* round count (≈40ms at 120 rounds) and is deliberately bought: an incremental
|
|
79
|
+
* walker would be a second implementation of the closure rule, which is the
|
|
80
|
+
* one thing this module must never grow.
|
|
81
|
+
*
|
|
82
|
+
* Attribution is per ITEM (`ContractItemProposal.subgoal_refs`), not per
|
|
83
|
+
* contract: an item backs exactly the sub-goals it references, so a contract
|
|
84
|
+
* whose item A verifies SubGoal 1 and whose item B verifies SubGoal 2 yields
|
|
85
|
+
* two facts with disjoint `contract_item_ids` instead of both sub-goals
|
|
86
|
+
* claiming every verified item. */
|
|
87
|
+
export declare function deriveVerifiedSubGoals(input: {
|
|
88
|
+
subGoals: ReadonlyArray<SubGoal>;
|
|
89
|
+
/** Committed rounds (rollback-excluded), ascending. */
|
|
90
|
+
rounds: ReadonlyArray<CommittedRoundView>;
|
|
91
|
+
commands: ReadonlyArray<CommandEvidencePolicy>;
|
|
92
|
+
}): VerifiedSubGoalFact[];
|
|
93
|
+
/** v3.8: Sub-goals the agent declared `done` that no verified contract item
|
|
94
|
+
* backs — verification debt, surfaced in the handoff's open risks. */
|
|
95
|
+
export declare function deriveVerificationDebt(subGoals: ReadonlyArray<SubGoal>, verified: ReadonlyArray<VerifiedSubGoalFact>, statuses: ContractItemStatusView): string[];
|
|
96
|
+
//# sourceMappingURL=round-facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-facts.d.ts","sourceRoot":"","sources":["../src/round-facts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,OAAO,EACP,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAI9D,MAAM,WAAW,UAAU;IACzB;iFAC6E;IAC7E,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC1C,2CAA2C;IAC3C,YAAY,EAAE,sBAAsB,CAAC;IACrC,uEAAuE;IACvE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B;;4DAEwD;IACxD,cAAc,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED;;;;kDAIkD;AAClD,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAChD,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;aAGa;AACb,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACvD;8EAC0E;IAC1E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,kBAIhC,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,qEAAqE;IACrE,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAChD,GAAG,UAAU,CA+Bb;AA6FD;;;;;;;;;;;;;;;;;;;;;;oCAsBoC;AACpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,uDAAuD;IACvD,MAAM,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC1C,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAChD,GAAG,mBAAmB,EAAE,CAwCxB;AAED;uEACuE;AACvE,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,QAAQ,EAAE,aAAa,CAAC,mBAAmB,CAAC,EAC5C,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,EAAE,CAkBV"}
|