loopforge 3.9.0 → 3.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/audit.d.ts +13 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +18 -3
- package/dist/audit.js.map +1 -1
- package/dist/committed-round.d.ts +29 -32
- package/dist/committed-round.d.ts.map +1 -1
- package/dist/committed-round.js +164 -157
- package/dist/committed-round.js.map +1 -1
- package/dist/contract-items.d.ts +3 -2
- package/dist/contract-items.d.ts.map +1 -1
- package/dist/contract-items.js +18 -7
- package/dist/contract-items.js.map +1 -1
- package/dist/enforcement-gate.d.ts.map +1 -1
- package/dist/enforcement-gate.js +13 -61
- package/dist/enforcement-gate.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +16 -9
- package/dist/engine.js.map +1 -1
- package/dist/evidence-claims.d.ts +6 -5
- package/dist/evidence-claims.d.ts.map +1 -1
- package/dist/evidence-claims.js +21 -20
- package/dist/evidence-claims.js.map +1 -1
- package/dist/evidence-provider.d.ts +73 -42
- package/dist/evidence-provider.d.ts.map +1 -1
- package/dist/evidence-provider.js +437 -138
- package/dist/evidence-provider.js.map +1 -1
- package/dist/explain.d.ts +18 -3
- package/dist/explain.d.ts.map +1 -1
- package/dist/explain.js +26 -5
- package/dist/explain.js.map +1 -1
- package/dist/field-accounting.d.ts +29 -0
- package/dist/field-accounting.d.ts.map +1 -0
- package/dist/field-accounting.js +132 -0
- package/dist/field-accounting.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/loop-compiler.d.ts +5 -11
- package/dist/loop-compiler.d.ts.map +1 -1
- package/dist/loop-compiler.js +29 -86
- package/dist/loop-compiler.js.map +1 -1
- package/dist/loop-store.d.ts +3 -0
- package/dist/loop-store.d.ts.map +1 -1
- package/dist/loop-store.js +21 -11
- package/dist/loop-store.js.map +1 -1
- package/dist/mcp/round-lifecycle.d.ts +26 -2
- package/dist/mcp/round-lifecycle.d.ts.map +1 -1
- package/dist/mcp/round-lifecycle.js +193 -25
- package/dist/mcp/round-lifecycle.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +17 -14
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/session.d.ts +15 -1
- package/dist/mcp/session.d.ts.map +1 -1
- package/dist/mcp/session.js +34 -1
- package/dist/mcp/session.js.map +1 -1
- package/dist/mcp/submission-boundary.d.ts +5 -2
- package/dist/mcp/submission-boundary.d.ts.map +1 -1
- package/dist/mcp/submission-boundary.js +38 -6
- package/dist/mcp/submission-boundary.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +73 -39
- package/dist/mcp/tools.js.map +1 -1
- package/dist/policy-metrics.d.ts +14 -0
- package/dist/policy-metrics.d.ts.map +1 -1
- package/dist/policy-metrics.js +53 -1
- package/dist/policy-metrics.js.map +1 -1
- package/dist/prompt-assembler.d.ts.map +1 -1
- package/dist/prompt-assembler.js +63 -11
- package/dist/prompt-assembler.js.map +1 -1
- package/dist/protocol.d.ts +182 -11
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +4 -1
- package/dist/protocol.js.map +1 -1
- package/dist/replay.d.ts +3 -0
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +46 -7
- package/dist/replay.js.map +1 -1
- package/dist/round-contract.d.ts +5 -4
- package/dist/round-contract.d.ts.map +1 -1
- package/dist/round-contract.js +4 -4
- package/dist/round-contract.js.map +1 -1
- package/dist/round-coordinator.d.ts +2 -1
- package/dist/round-coordinator.d.ts.map +1 -1
- package/dist/round-coordinator.js +17 -9
- package/dist/round-coordinator.js.map +1 -1
- package/dist/round-driver.d.ts +4 -1
- package/dist/round-driver.d.ts.map +1 -1
- package/dist/round-driver.js +2 -0
- package/dist/round-driver.js.map +1 -1
- package/dist/round-facts.d.ts +3 -2
- package/dist/round-facts.d.ts.map +1 -1
- package/dist/round-facts.js +4 -4
- package/dist/round-facts.js.map +1 -1
- package/dist/round-transaction.d.ts +21 -10
- package/dist/round-transaction.d.ts.map +1 -1
- package/dist/round-transaction.js +81 -19
- package/dist/round-transaction.js.map +1 -1
- package/dist/self-eval.d.ts +28 -10
- package/dist/self-eval.d.ts.map +1 -1
- package/dist/self-eval.js +522 -124
- package/dist/self-eval.js.map +1 -1
- package/dist/submission-diagnostics.d.ts +12 -0
- package/dist/submission-diagnostics.d.ts.map +1 -0
- package/dist/submission-diagnostics.js +12 -0
- package/dist/submission-diagnostics.js.map +1 -0
- package/dist/submission-guidance.d.ts +119 -0
- package/dist/submission-guidance.d.ts.map +1 -0
- package/dist/submission-guidance.js +766 -0
- package/dist/submission-guidance.js.map +1 -0
- package/dist/submission-receipt.d.ts +48 -0
- package/dist/submission-receipt.d.ts.map +1 -0
- package/dist/submission-receipt.js +336 -0
- package/dist/submission-receipt.js.map +1 -0
- package/dist/verification-gate.d.ts +10 -6
- package/dist/verification-gate.d.ts.map +1 -1
- package/dist/verification-gate.js +95 -87
- package/dist/verification-gate.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
- package/skills/perception/SKILL.md +66 -27
package/dist/evidence-claims.js
CHANGED
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* - downgraded to `contradicted` when error-level verification flags say
|
|
15
15
|
* the machine contradicted the claim.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import { isPassedAfterObservation } from "./evidence-provider.js";
|
|
17
|
+
import { readOnlyRounds } from "./committed-round.js";
|
|
18
|
+
import { afterObservations, gitDeltaState, isPassedAfterObservation, } from "./evidence-provider.js";
|
|
19
19
|
import { claimedMetCriteria } from "./self-eval.js";
|
|
20
20
|
/** Contradicting error flags that invalidate agent claims. */
|
|
21
21
|
// NOTE: keep these as literals — importing the CHECK_* constants here would
|
|
@@ -32,19 +32,19 @@ function hasPassingTestEvidence(selfEval) {
|
|
|
32
32
|
results.failed === 0 &&
|
|
33
33
|
results.passed > 0;
|
|
34
34
|
}
|
|
35
|
-
function hasPassedAfterCommand(
|
|
35
|
+
function hasPassedAfterCommand(deltas) {
|
|
36
36
|
// v3.8: ONE predicate — the gate's entrypoint-tamper exclusion and this
|
|
37
37
|
// module's check were two divergent definitions of "machine-backed".
|
|
38
|
-
const git =
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
const git = gitDeltaState(deltas);
|
|
39
|
+
return afterObservations(deltas)
|
|
40
|
+
.some((observation) => isPassedAfterObservation(observation, git));
|
|
41
41
|
}
|
|
42
42
|
/** Derive the runtime claim view for a round. No file-level or text-level
|
|
43
43
|
* guessing: git observations only serve the evidence_integrity warn. */
|
|
44
|
-
export function deriveClaimView(selfEval,
|
|
44
|
+
export function deriveClaimView(selfEval, evidenceDeltas) {
|
|
45
45
|
const met = claimedMetCriteria(selfEval.execution_report);
|
|
46
46
|
const machineVerified = hasPassingTestEvidence(selfEval) &&
|
|
47
|
-
hasPassedAfterCommand(
|
|
47
|
+
hasPassedAfterCommand(evidenceDeltas);
|
|
48
48
|
const claims = met.map((targetId) => ({
|
|
49
49
|
targetId,
|
|
50
50
|
status: machineVerified ? "verified" : "claimed",
|
|
@@ -59,14 +59,14 @@ export function deriveClaimView(selfEval, evidenceSnapshots) {
|
|
|
59
59
|
// claim, not evidence. Without a passed command, R8 and the
|
|
60
60
|
// criteria-claims check can no longer be satisfied by fabrication.
|
|
61
61
|
hasMachineEvidence: hasPassingTestEvidence(selfEval) &&
|
|
62
|
-
hasPassedAfterCommand(
|
|
62
|
+
hasPassedAfterCommand(evidenceDeltas),
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
/** Re-derive a claim view including the contradiction downgrade driven by
|
|
66
66
|
* verification flags. Used by audit and listVerifiedClaims on persisted
|
|
67
67
|
* snapshots; the live round path uses deriveClaimView only. */
|
|
68
|
-
export function rederiveClaimViewWithFlags(selfEval,
|
|
69
|
-
const view = deriveClaimView(selfEval,
|
|
68
|
+
export function rederiveClaimViewWithFlags(selfEval, evidenceDeltas, flags) {
|
|
69
|
+
const view = deriveClaimView(selfEval, evidenceDeltas);
|
|
70
70
|
const contradicted = flags.some((flag) => flag.severity === "error" && CONTRADICTING_CHECKS.has(flag.check));
|
|
71
71
|
if (contradicted) {
|
|
72
72
|
view.claims = view.claims.map((claim) => ({
|
|
@@ -79,18 +79,18 @@ export function rederiveClaimViewWithFlags(selfEval, evidenceSnapshots, flags) {
|
|
|
79
79
|
}
|
|
80
80
|
return view;
|
|
81
81
|
}
|
|
82
|
-
/** Files actually changed in a committed round
|
|
83
|
-
*
|
|
82
|
+
/** Files actually changed in a committed round — the shared observation
|
|
83
|
+
* delta, not the full after snapshot. Returns null when the round has no
|
|
84
|
+
* observable Git boundary. */
|
|
84
85
|
export function resolveRoundFiles(vaultEntries, loopId, round) {
|
|
85
86
|
const committed = readOnlyRounds(vaultEntries)
|
|
86
87
|
.find((view) => view.loopId === loopId && view.round === round);
|
|
87
|
-
if (!committed)
|
|
88
|
+
if (!committed || committed.evidenceIncomplete)
|
|
88
89
|
return null;
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
if (!git)
|
|
90
|
+
const git = committed.observationDelta.find((delta) => delta.kind === "git");
|
|
91
|
+
if (!git || git.changedFiles === null)
|
|
92
92
|
return null;
|
|
93
|
-
return git.
|
|
93
|
+
return [...git.changedFiles];
|
|
94
94
|
}
|
|
95
95
|
/** Stable cr-IDs (and criterion texts) backed by verified claims across all
|
|
96
96
|
* committed rounds. Criterion texts are mapped to cr-IDs by callers that
|
|
@@ -100,8 +100,9 @@ export function listVerifiedClaims(vaultEntries, loopId) {
|
|
|
100
100
|
for (const round of readOnlyRounds(vaultEntries)) {
|
|
101
101
|
if (round.loopId !== loopId || !round.evaluation)
|
|
102
102
|
continue;
|
|
103
|
-
|
|
104
|
-
|
|
103
|
+
// v3.9.1: claims are checked against what THAT round changed, not the
|
|
104
|
+
// whole after-snapshot (which would include pre-existing dirt).
|
|
105
|
+
const view = rederiveClaimViewWithFlags(round.evaluation, round.observationDelta, round.verificationFlags);
|
|
105
106
|
for (const claim of view.claims) {
|
|
106
107
|
if (claim.status === "verified")
|
|
107
108
|
verified.add(claim.targetId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-claims.js","sourceRoot":"","sources":["../src/evidence-claims.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"evidence-claims.js","sourceRoot":"","sources":["../src/evidence-claims.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* Built-in: GitEvidenceProvider — git file state capture with parallel async
|
|
10
10
|
* execution (v2.0.1), plus explicitly configured shell-free command providers.
|
|
11
11
|
*/
|
|
12
|
-
import type { CommandObservation, ConfiguredCapability, EvidenceCapability,
|
|
12
|
+
import type { CommandObservation, ConfiguredCapability, EvidenceCapability, MachineObservation, ObservedCapability } from "./protocol.js";
|
|
13
13
|
import type { CommandEvidencePolicy, LoopPolicy } from "./policy.js";
|
|
14
14
|
/** Interface for evidence capture providers.
|
|
15
15
|
*
|
|
@@ -52,15 +52,15 @@ export declare function isProviderRegistered(name: string): boolean;
|
|
|
52
52
|
/** v3.8: The ONE machine-backed predicate. A command observation proves a
|
|
53
53
|
* claim only when it is an after-phase command that PASSED and whose
|
|
54
54
|
* entrypoint was not modified in the same round. Before-phase observations
|
|
55
|
-
* are the baseline and never evidence.
|
|
56
|
-
*
|
|
55
|
+
* are the baseline and never evidence.
|
|
56
|
+
*
|
|
57
|
+
* `not_applicable` (no Git provider participated) leaves the entrypoint arm
|
|
58
|
+
* out; `unknown` (a Git boundary existed but its change set is unobservable)
|
|
59
|
+
* is NOT a pass — the boundary cannot rule out entrypoint tampering.
|
|
57
60
|
*
|
|
58
61
|
* v3.8 replaced two divergent implementations (the gate excluded tampered
|
|
59
62
|
* commands, evidence-claims did not) with this single function. */
|
|
60
|
-
export declare function isPassedAfterObservation(observation: MachineObservation,
|
|
61
|
-
/** v3.8: The changed-file set of a round's git observation, or null when no
|
|
62
|
-
* git observation exists (entrypoint checks then fail open). */
|
|
63
|
-
export declare function gitChangedFiles(observations: ReadonlyArray<MachineObservation>): Set<string> | null;
|
|
63
|
+
export declare function isPassedAfterObservation(observation: MachineObservation, git: GitDeltaState): boolean;
|
|
64
64
|
/** v3.8: Live capability derived from observations. Rendered only — never
|
|
65
65
|
* hashed, never persisted independently (it is a pure function of the
|
|
66
66
|
* observations it is given). */
|
|
@@ -156,50 +156,81 @@ export declare class CommandEvidenceProvider implements EvidenceProvider {
|
|
|
156
156
|
capture(context?: EvidenceCaptureContext): Promise<CommandObservation | null>;
|
|
157
157
|
private observation;
|
|
158
158
|
}
|
|
159
|
-
/**
|
|
159
|
+
/** A tracked index entry. `mode` is the stage mode (100644, 100755, 120000,
|
|
160
|
+
* 160000); `object` is the index blob/commit id. */
|
|
161
|
+
export interface GitTrackedEntry {
|
|
162
|
+
path: string;
|
|
163
|
+
mode: string;
|
|
164
|
+
object: string;
|
|
165
|
+
}
|
|
166
|
+
/** v3.9.1: the complete workspace boundary at one instant. */
|
|
160
167
|
export interface GitFileState {
|
|
161
|
-
/**
|
|
162
|
-
tracked:
|
|
163
|
-
/**
|
|
164
|
-
staged: string[];
|
|
165
|
-
/** Untracked files not yet known to git (git ls-files --others --exclude-standard). */
|
|
168
|
+
/** Every path in the index, including paths deleted from the worktree. */
|
|
169
|
+
tracked: GitTrackedEntry[];
|
|
170
|
+
/** Non-ignored untracked paths. */
|
|
166
171
|
untracked: string[];
|
|
167
|
-
/**
|
|
168
|
-
|
|
172
|
+
/** Dirty-since-HEAD paths, for display only. */
|
|
173
|
+
dirty: string[];
|
|
174
|
+
/** HEAD at this boundary; absent in a repository with no commit. */
|
|
169
175
|
head?: string;
|
|
170
176
|
}
|
|
171
|
-
/**
|
|
172
|
-
*
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
*
|
|
177
|
+
/** An explicit capture failure. The collector records the status; null is no
|
|
178
|
+
* longer used as an ambiguous "unavailable". */
|
|
179
|
+
export type GitCaptureResult = {
|
|
180
|
+
ok: true;
|
|
181
|
+
state: GitFileState;
|
|
182
|
+
} | {
|
|
183
|
+
ok: false;
|
|
184
|
+
status: "timeout" | "unavailable" | "aborted" | "error";
|
|
185
|
+
detail: string;
|
|
186
|
+
};
|
|
187
|
+
/** v3.9.1: capture the complete boundary. All required git commands run in
|
|
188
|
+
* one parallel batch; HEAD is best-effort (a repository with no commit is a
|
|
189
|
+
* valid boundary with no head). Any required-command failure returns an
|
|
190
|
+
* explicit status — never an empty-but-observed boundary. */
|
|
183
191
|
export declare function captureGitFileStateAsync(signal?: AbortSignal, timeoutMs?: number,
|
|
184
192
|
/** Workspace root; injectable so tests can capture against a temp repo.
|
|
185
193
|
* Defaults to the process cwd, matching the evidence providers. */
|
|
186
|
-
cwd?: string): Promise<
|
|
194
|
+
cwd?: string): Promise<GitCaptureResult>;
|
|
187
195
|
export declare class GitEvidenceProvider implements EvidenceProvider {
|
|
188
196
|
readonly name = "git";
|
|
189
197
|
readonly kind: "git";
|
|
190
|
-
capture(context?: EvidenceCaptureContext): Promise<
|
|
198
|
+
capture(context?: EvidenceCaptureContext): Promise<MachineObservation | null>;
|
|
191
199
|
}
|
|
192
|
-
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
*
|
|
197
|
-
export
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
200
|
+
/** v3.9.1: One provider's derived before→after view. `before`/`after` are
|
|
201
|
+
* references to the persisted observations — never copies, never mutated.
|
|
202
|
+
* Only `changedFiles` is a derived fact; it is null for every non-Git
|
|
203
|
+
* provider (command entrypoints are not a change set) and for any Git pair
|
|
204
|
+
* whose boundary cannot be compared. */
|
|
205
|
+
export interface ObservationDelta {
|
|
206
|
+
providerId: string;
|
|
207
|
+
kind: MachineObservation["kind"];
|
|
208
|
+
before: MachineObservation | null;
|
|
209
|
+
after: MachineObservation | null;
|
|
210
|
+
/** Git only. [] = observed no change; null = unknown.
|
|
211
|
+
* command/custom always null (no file-change concept). */
|
|
212
|
+
changedFiles: string[] | null;
|
|
213
|
+
}
|
|
214
|
+
/** The Git change set for a round, with applicability kept distinct from
|
|
215
|
+
* observability: no Git provider is `not_applicable`; a Git provider whose
|
|
216
|
+
* boundary cannot be compared is `unknown` (never an empty set). */
|
|
217
|
+
export type GitDeltaState = {
|
|
218
|
+
state: "not_applicable";
|
|
219
|
+
} | {
|
|
220
|
+
state: "unknown";
|
|
221
|
+
} | {
|
|
222
|
+
state: "observed";
|
|
223
|
+
changedFiles: ReadonlySet<string>;
|
|
224
|
+
};
|
|
225
|
+
/** The ONE before→after derivation. Delta entries are one per
|
|
226
|
+
* kind+providerId in the union of both collections, in deterministic order.
|
|
227
|
+
* Missing sides and duplicate keys are explicit; they never masquerade as an
|
|
228
|
+
* observed no-change. */
|
|
229
|
+
export declare function deriveObservationDeltas(before: readonly MachineObservation[], after: readonly MachineObservation[]): ObservationDelta[];
|
|
230
|
+
/** Resolve the round's Git change state once. No Git provider =
|
|
231
|
+
* not_applicable; any Git delta with an unknown change set = unknown; else
|
|
232
|
+
* the union of every observed Git change set. */
|
|
233
|
+
export declare function gitDeltaState(deltas: readonly ObservationDelta[]): GitDeltaState;
|
|
234
|
+
/** The after-phase observations referenced by a delta collection. */
|
|
235
|
+
export declare function afterObservations(deltas: readonly ObservationDelta[]): MachineObservation[];
|
|
205
236
|
//# sourceMappingURL=evidence-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-provider.d.ts","sourceRoot":"","sources":["../src/evidence-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"evidence-provider.d.ts","sourceRoot":"","sources":["../src/evidence-provider.ts"],"names":[],"mappings":"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"}
|