audit-tools 0.30.2 → 0.30.4
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/audit/cli/auditStep.d.ts.map +1 -1
- package/dist/audit/cli/auditStep.js +24 -13
- package/dist/audit/cli/auditStep.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +11 -6
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/prompts.d.ts.map +1 -1
- package/dist/audit/cli/prompts.js +3 -1
- package/dist/audit/cli/prompts.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +9 -4
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/contracts/workerSchemas.d.ts +22 -4
- package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
- package/dist/audit/contracts/wrapperResponse.d.ts +12 -12
- package/dist/audit/orchestrator/artifactFreshness.d.ts +2 -1
- package/dist/audit/orchestrator/artifactFreshness.d.ts.map +1 -1
- package/dist/audit/orchestrator/artifactFreshness.js +5 -15
- package/dist/audit/orchestrator/artifactFreshness.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +10 -9
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/ingestionExecutors.js +5 -1
- package/dist/audit/orchestrator/ingestionExecutors.js.map +1 -1
- package/dist/audit/orchestrator/intentCheckpointGate.d.ts +129 -0
- package/dist/audit/orchestrator/intentCheckpointGate.d.ts.map +1 -0
- package/dist/audit/orchestrator/intentCheckpointGate.js +193 -0
- package/dist/audit/orchestrator/intentCheckpointGate.js.map +1 -0
- package/dist/audit/orchestrator/ledger.d.ts +30 -0
- package/dist/audit/orchestrator/ledger.d.ts.map +1 -0
- package/dist/audit/orchestrator/ledger.js +126 -0
- package/dist/audit/orchestrator/ledger.js.map +1 -0
- package/dist/audit/orchestrator/nextStep.d.ts +11 -29
- package/dist/audit/orchestrator/nextStep.d.ts.map +1 -1
- package/dist/audit/orchestrator/nextStep.js +11 -29
- package/dist/audit/orchestrator/nextStep.js.map +1 -1
- package/dist/audit/orchestrator/resultBaseline.d.ts +82 -0
- package/dist/audit/orchestrator/resultBaseline.d.ts.map +1 -0
- package/dist/audit/orchestrator/resultBaseline.js +79 -0
- package/dist/audit/orchestrator/resultBaseline.js.map +1 -0
- package/dist/audit/quota/index.d.ts +17 -12
- package/dist/audit/quota/index.d.ts.map +1 -1
- package/dist/audit/types/artifactMetadata.d.ts +9 -0
- package/dist/audit/types/artifactMetadata.d.ts.map +1 -1
- package/dist/audit/types.d.ts +13 -4
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js +8 -0
- package/dist/audit/types.js.map +1 -1
- package/dist/remediate/steps/dispatch.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch.js +16 -22
- package/dist/remediate/steps/dispatch.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +11 -23
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +49 -43
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/shared/contentKey.d.ts +83 -0
- package/dist/shared/contentKey.d.ts.map +1 -0
- package/dist/shared/contentKey.js +163 -0
- package/dist/shared/contentKey.js.map +1 -0
- package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
- package/dist/shared/dispatch/rollingDispatch.js +7 -3
- package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
- package/dist/shared/friction/captureFrictionEvent.d.ts +50 -0
- package/dist/shared/friction/captureFrictionEvent.d.ts.map +1 -0
- package/dist/shared/friction/captureFrictionEvent.js +34 -0
- package/dist/shared/friction/captureFrictionEvent.js.map +1 -0
- package/dist/shared/friction/triage.d.ts +126 -0
- package/dist/shared/friction/triage.d.ts.map +1 -0
- package/dist/shared/friction/triage.js +149 -0
- package/dist/shared/friction/triage.js.map +1 -0
- package/dist/shared/index.d.ts +15 -3
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +11 -3
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/auditToolsPaths.d.ts +9 -0
- package/dist/shared/io/auditToolsPaths.d.ts.map +1 -1
- package/dist/shared/io/auditToolsPaths.js +11 -0
- package/dist/shared/io/auditToolsPaths.js.map +1 -1
- package/dist/shared/io/frictionCapture.d.ts +2 -0
- package/dist/shared/io/frictionCapture.d.ts.map +1 -1
- package/dist/shared/io/frictionCapture.js +1 -1
- package/dist/shared/io/frictionCapture.js.map +1 -1
- package/dist/shared/quota/apiPool.d.ts +1 -1
- package/dist/shared/quota/apiPool.d.ts.map +1 -1
- package/dist/shared/quota/apiPool.js +29 -7
- package/dist/shared/quota/apiPool.js.map +1 -1
- package/dist/shared/quota/capacity.d.ts +19 -4
- package/dist/shared/quota/capacity.d.ts.map +1 -1
- package/dist/shared/quota/capacity.js +5 -0
- package/dist/shared/quota/capacity.js.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.d.ts +8 -0
- package/dist/shared/quota/claudeOAuthQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/claudeOAuthQuotaSource.js +15 -0
- package/dist/shared/quota/claudeOAuthQuotaSource.js.map +1 -1
- package/dist/shared/quota/codexQuotaSource.d.ts +3 -0
- package/dist/shared/quota/codexQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/codexQuotaSource.js +8 -0
- package/dist/shared/quota/codexQuotaSource.js.map +1 -1
- package/dist/shared/quota/compositeQuotaSource.d.ts +22 -0
- package/dist/shared/quota/compositeQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/compositeQuotaSource.js +42 -0
- package/dist/shared/quota/compositeQuotaSource.js.map +1 -1
- package/dist/shared/quota/coverage.d.ts +45 -0
- package/dist/shared/quota/coverage.d.ts.map +1 -0
- package/dist/shared/quota/coverage.js +77 -0
- package/dist/shared/quota/coverage.js.map +1 -0
- package/dist/shared/quota/httpQuotaSource.d.ts +24 -1
- package/dist/shared/quota/httpQuotaSource.d.ts.map +1 -1
- package/dist/shared/quota/httpQuotaSource.js +46 -6
- package/dist/shared/quota/httpQuotaSource.js.map +1 -1
- package/dist/shared/quota/quotaCoverageNudge.d.ts +26 -0
- package/dist/shared/quota/quotaCoverageNudge.d.ts.map +1 -0
- package/dist/shared/quota/quotaCoverageNudge.js +82 -0
- package/dist/shared/quota/quotaCoverageNudge.js.map +1 -0
- package/dist/shared/quota/quotaSource.d.ts +25 -2
- package/dist/shared/quota/quotaSource.d.ts.map +1 -1
- package/dist/shared/quota/quotaSource.js +15 -0
- package/dist/shared/quota/quotaSource.js.map +1 -1
- package/dist/shared/quota/scheduler.d.ts +10 -2
- package/dist/shared/quota/scheduler.d.ts.map +1 -1
- package/dist/shared/quota/scheduler.js +12 -3
- package/dist/shared/quota/scheduler.js.map +1 -1
- package/dist/shared/repair/emitValidateRepair.d.ts +124 -0
- package/dist/shared/repair/emitValidateRepair.d.ts.map +1 -0
- package/dist/shared/repair/emitValidateRepair.js +179 -0
- package/dist/shared/repair/emitValidateRepair.js.map +1 -0
- package/dist/shared/repair/index.d.ts +8 -0
- package/dist/shared/repair/index.d.ts.map +1 -0
- package/dist/shared/repair/index.js +2 -0
- package/dist/shared/repair/index.js.map +1 -0
- package/dist/shared/stableStringify.d.ts +14 -0
- package/dist/shared/stableStringify.d.ts.map +1 -0
- package/dist/shared/stableStringify.js +28 -0
- package/dist/shared/stableStringify.js.map +1 -0
- package/dist/shared/types/sessionConfig.d.ts +16 -0
- package/dist/shared/types/sessionConfig.d.ts.map +1 -1
- package/dist/shared/types/sessionConfig.js.map +1 -1
- package/package.json +1 -1
- package/schemas/audit_result.schema.json +9 -0
- package/schemas/audit_results.schema.json +9 -0
|
@@ -58,12 +58,12 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
58
58
|
suggested_path: z.ZodString;
|
|
59
59
|
description: z.ZodString;
|
|
60
60
|
}, "strict", z.ZodTypeAny, {
|
|
61
|
-
description: string;
|
|
62
61
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
62
|
+
description: string;
|
|
63
63
|
suggested_path: string;
|
|
64
64
|
}, {
|
|
65
|
-
description: string;
|
|
66
65
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
66
|
+
description: string;
|
|
67
67
|
suggested_path: string;
|
|
68
68
|
}>, "many">;
|
|
69
69
|
suggested_commands: z.ZodArray<z.ZodString, "many">;
|
|
@@ -76,15 +76,15 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
76
76
|
audit_results_path: z.ZodString;
|
|
77
77
|
worker_command: z.ZodArray<z.ZodString, "many">;
|
|
78
78
|
}, "strict", z.ZodTypeAny, {
|
|
79
|
-
worker_command: string[];
|
|
80
79
|
run_id: string;
|
|
80
|
+
worker_command: string[];
|
|
81
81
|
audit_results_path: string;
|
|
82
82
|
task_path: string;
|
|
83
83
|
prompt_path: string;
|
|
84
84
|
pending_audit_tasks_path?: string | undefined;
|
|
85
85
|
}, {
|
|
86
|
-
worker_command: string[];
|
|
87
86
|
run_id: string;
|
|
87
|
+
worker_command: string[];
|
|
88
88
|
audit_results_path: string;
|
|
89
89
|
task_path: string;
|
|
90
90
|
prompt_path: string;
|
|
@@ -150,15 +150,15 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
150
150
|
};
|
|
151
151
|
pending_obligations: string[];
|
|
152
152
|
suggested_inputs: {
|
|
153
|
-
description: string;
|
|
154
153
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
154
|
+
description: string;
|
|
155
155
|
suggested_path: string;
|
|
156
156
|
}[];
|
|
157
157
|
suggested_commands: string[];
|
|
158
158
|
interactive_provider_hint: string | null;
|
|
159
159
|
active_review_run?: {
|
|
160
|
-
worker_command: string[];
|
|
161
160
|
run_id: string;
|
|
161
|
+
worker_command: string[];
|
|
162
162
|
audit_results_path: string;
|
|
163
163
|
task_path: string;
|
|
164
164
|
prompt_path: string;
|
|
@@ -187,15 +187,15 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
187
187
|
};
|
|
188
188
|
pending_obligations: string[];
|
|
189
189
|
suggested_inputs: {
|
|
190
|
-
description: string;
|
|
191
190
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
191
|
+
description: string;
|
|
192
192
|
suggested_path: string;
|
|
193
193
|
}[];
|
|
194
194
|
suggested_commands: string[];
|
|
195
195
|
interactive_provider_hint: string | null;
|
|
196
196
|
active_review_run?: {
|
|
197
|
-
worker_command: string[];
|
|
198
197
|
run_id: string;
|
|
198
|
+
worker_command: string[];
|
|
199
199
|
audit_results_path: string;
|
|
200
200
|
task_path: string;
|
|
201
201
|
prompt_path: string;
|
|
@@ -244,15 +244,15 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
244
244
|
};
|
|
245
245
|
pending_obligations: string[];
|
|
246
246
|
suggested_inputs: {
|
|
247
|
-
description: string;
|
|
248
247
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
248
|
+
description: string;
|
|
249
249
|
suggested_path: string;
|
|
250
250
|
}[];
|
|
251
251
|
suggested_commands: string[];
|
|
252
252
|
interactive_provider_hint: string | null;
|
|
253
253
|
active_review_run?: {
|
|
254
|
-
worker_command: string[];
|
|
255
254
|
run_id: string;
|
|
255
|
+
worker_command: string[];
|
|
256
256
|
audit_results_path: string;
|
|
257
257
|
task_path: string;
|
|
258
258
|
prompt_path: string;
|
|
@@ -301,15 +301,15 @@ export declare const AuditCodeResponseSchema: z.ZodObject<{
|
|
|
301
301
|
};
|
|
302
302
|
pending_obligations: string[];
|
|
303
303
|
suggested_inputs: {
|
|
304
|
-
description: string;
|
|
305
304
|
flag: "--batch-results" | "--results" | "--updates" | "--external-analyzer-results";
|
|
305
|
+
description: string;
|
|
306
306
|
suggested_path: string;
|
|
307
307
|
}[];
|
|
308
308
|
suggested_commands: string[];
|
|
309
309
|
interactive_provider_hint: string | null;
|
|
310
310
|
active_review_run?: {
|
|
311
|
-
worker_command: string[];
|
|
312
311
|
run_id: string;
|
|
312
|
+
worker_command: string[];
|
|
313
313
|
audit_results_path: string;
|
|
314
314
|
task_path: string;
|
|
315
315
|
prompt_path: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { stableStringify } from "../../shared/stableStringify.js";
|
|
2
|
+
export { stableStringify };
|
|
2
3
|
export declare function normalizeForMetadataHash(artifactName: string, value: unknown): unknown;
|
|
3
4
|
export declare function hashArtifactValue(artifactName: string, value: unknown): string;
|
|
4
5
|
//# sourceMappingURL=artifactFreshness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifactFreshness.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/artifactFreshness.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"artifactFreshness.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/artifactFreshness.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,CAAC;AA8E3B,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,OAAO,CAgBT;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,OAAO,GACb,MAAM,CAIR"}
|
|
@@ -1,19 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return JSON.stringify(value);
|
|
8
|
-
}
|
|
9
|
-
if (Array.isArray(value)) {
|
|
10
|
-
return `[${value.map((item) => stableStringify(item ?? null)).join(",")}]`;
|
|
11
|
-
}
|
|
12
|
-
const entries = Object.entries(value)
|
|
13
|
-
.filter(([, item]) => item !== undefined)
|
|
14
|
-
.sort(([a], [b]) => a.localeCompare(b));
|
|
15
|
-
return `{${entries.map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`).join(",")}}`;
|
|
16
|
-
}
|
|
2
|
+
// Single-sourced in src/shared/stableStringify.ts (INV-CK-2). Re-exported here so
|
|
3
|
+
// existing callers (and the single-serializer property) are preserved — there is
|
|
4
|
+
// exactly one serializer.
|
|
5
|
+
import { stableStringify } from "../../shared/stableStringify.js";
|
|
6
|
+
export { stableStringify };
|
|
17
7
|
// Non-semantic top-level fields stripped before hashing, per artifact. These
|
|
18
8
|
// are provenance (wall-clock stamps, run ids), NOT content: two rebuilds with
|
|
19
9
|
// identical data but different stamps must hash equal, or the artifact's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifactFreshness.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/artifactFreshness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"artifactFreshness.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/artifactFreshness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executorRunners.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/executorRunners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAyBlE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAahC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"executorRunners.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/executorRunners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAyBlE;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,SAAS,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,sEAAsE;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAahC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAuHhE,CAAC"}
|
|
@@ -83,12 +83,13 @@ export const EXECUTOR_RUNNERS = {
|
|
|
83
83
|
},
|
|
84
84
|
auto_fix_executor: async (bundle, { options }) => runAutoFixExecutor(bundle, requireRoot(options.root, "auto_fix_executor")),
|
|
85
85
|
syntax_resolution_executor: async (bundle, { options }) => runSyntaxResolutionExecutor(bundle, requireRoot(options.root, "syntax_resolution_executor")),
|
|
86
|
-
// Terminal friction close-out (parity with remediate-code
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
-
// defaults to the standard `.audit-tools/audit` location; the run id
|
|
91
|
-
// operator-handoff default of "run" when the caller has no explicit
|
|
86
|
+
// Terminal friction-TRIAGE close-out (parity with remediate-code; single-sourced
|
|
87
|
+
// in `audit-tools/shared`). The blocking triage stays unsatisfied ("dispose")
|
|
88
|
+
// until every captured mechanical event AND every surfaced agent-feedback
|
|
89
|
+
// reflection carries a disposition; an empty set is trivially "disposed". The
|
|
90
|
+
// artifacts dir defaults to the standard `.audit-tools/audit` location; the run id
|
|
91
|
+
// mirrors the operator-handoff default of "run" when the caller has no explicit
|
|
92
|
+
// run id.
|
|
92
93
|
friction_capture_executor: async (bundle, { options }) => {
|
|
93
94
|
const artifactsDir = options.artifactsDir ??
|
|
94
95
|
auditArtifactsDir(requireRoot(options.root, "friction_capture_executor"));
|
|
@@ -96,9 +97,9 @@ export const EXECUTOR_RUNNERS = {
|
|
|
96
97
|
return {
|
|
97
98
|
updated: bundle,
|
|
98
99
|
artifacts_written: ["friction/run.json"],
|
|
99
|
-
progress_summary: decision.action === "
|
|
100
|
-
? "Friction
|
|
101
|
-
:
|
|
100
|
+
progress_summary: decision.action === "disposed"
|
|
101
|
+
? "Friction triage disposed (all captured items have a disposition)."
|
|
102
|
+
: `Friction triage blocked: ${decision.pending.length} item(s) await a disposition.`,
|
|
102
103
|
};
|
|
103
104
|
},
|
|
104
105
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executorRunners.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/executorRunners.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executorRunners.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/executorRunners.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestionExecutors.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/ingestionExecutors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"ingestionExecutors.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/ingestionExecutors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAmB5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAqF7D,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,WAAW,EAAE,GACrB,iBAAiB,CAsGnB;AAED,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CA0E5B;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,uBAAuB,GAC/B,iBAAiB,CAkCnB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,cAAc,EACtB,eAAe,EAAE,uBAAuB,GACvC,iBAAiB,CAkBnB"}
|
|
@@ -3,6 +3,7 @@ import { buildFlowCoverage } from "./flowCoverage.js";
|
|
|
3
3
|
import { buildRequeuePayload } from "./requeueCommand.js";
|
|
4
4
|
import { buildRuntimeValidationTasks, mergeRuntimeValidationReport, } from "./runtimeValidation.js";
|
|
5
5
|
import { ingestAuditResults, updateAuditTaskStatuses, } from "./resultIngestion.js";
|
|
6
|
+
import { appendResultsToLedger } from "./ledger.js";
|
|
6
7
|
import { buildAuditPlanMetrics, sizeIndexFromManifest, } from "./reviewPackets.js";
|
|
7
8
|
import { updateRuntimeValidationReport } from "./runtimeValidationUpdate.js";
|
|
8
9
|
import { buildSelectiveDeepeningTasks } from "./selectiveDeepening.js";
|
|
@@ -88,7 +89,10 @@ export function runResultIngestionExecutor(bundle, results) {
|
|
|
88
89
|
const runtimeValidationReport = runtimeValidationTasks
|
|
89
90
|
? mergeRuntimeValidationReport(runtimeValidationTasks, bundle.runtime_validation_report)
|
|
90
91
|
: bundle.runtime_validation_report;
|
|
91
|
-
|
|
92
|
+
// Append-only, instance-keyed, IDEMPOTENT on idempotency_key (O2): a replay of
|
|
93
|
+
// an already-ingested logical result is a no-op; distinct results sharing a
|
|
94
|
+
// coordinate (base vs. deepening/steward) both persist. Never a naive concat.
|
|
95
|
+
const mergedResults = appendResultsToLedger(bundle.audit_results, results);
|
|
92
96
|
const completedAuditTasks = updateAuditTaskStatuses(bundle.audit_tasks, mergedResults);
|
|
93
97
|
const baseUpdatedBundle = {
|
|
94
98
|
...bundle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingestionExecutors.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/ingestionExecutors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ingestionExecutors.js","sourceRoot":"","sources":["../../../src/audit/orchestrator/ingestionExecutors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import type { IntentCheckpoint } from 'audit-tools/shared';
|
|
2
|
+
/** A gate verdict over a (prior, new) intent_checkpoint pair. */
|
|
3
|
+
export type IntentCheckpointVerdict = 'unchanged' | 'changed';
|
|
4
|
+
/**
|
|
5
|
+
* The bounded LLM judge. Returns `true` iff the two normalized intent values are
|
|
6
|
+
* semantically EQUIVALENT. A judge that is uncertain, errors, or returns a
|
|
7
|
+
* non-boolean is treated as `changed` by the caller (fail-safe) — the judge
|
|
8
|
+
* itself need not encode that policy. Provider-agnostic: the host supplies the
|
|
9
|
+
* actual LLM call; the gate never reaches for a specific backend.
|
|
10
|
+
*/
|
|
11
|
+
export type SemanticEquivalenceJudge = (input: {
|
|
12
|
+
priorNormalized: string;
|
|
13
|
+
newNormalized: string;
|
|
14
|
+
}) => Promise<boolean> | boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Deterministic normalization config. Bumping any field bumps `gate_version` and
|
|
17
|
+
* invalidates every cached verdict. Kept as data (not code) so the version hash
|
|
18
|
+
* captures the active policy, not the module's source text.
|
|
19
|
+
*/
|
|
20
|
+
export interface NormalizeConfig {
|
|
21
|
+
/** Schema/recipe version of the normalization itself. Bump on any change. */
|
|
22
|
+
readonly version: string;
|
|
23
|
+
/**
|
|
24
|
+
* Checkpoint fields that carry SEMANTIC intent and participate in the normal
|
|
25
|
+
* form. Volatile/provenance fields (timestamps, confirmed_by, schema_version)
|
|
26
|
+
* are excluded so a benign re-confirm normalizes identically.
|
|
27
|
+
*/
|
|
28
|
+
readonly semanticFields: readonly (keyof IntentCheckpoint)[];
|
|
29
|
+
}
|
|
30
|
+
/** The single active normalization config (INV-O2-inv-5 input). */
|
|
31
|
+
export declare const DEFAULT_NORMALIZE_CONFIG: NormalizeConfig;
|
|
32
|
+
/** Static prompt-template version — bump on any judge-prompt change. */
|
|
33
|
+
export declare const INTENT_GATE_PROMPT_TEMPLATE_VERSION = "intent-checkpoint-judge-prompt/v1";
|
|
34
|
+
/**
|
|
35
|
+
* Deterministically normalize an intent_checkpoint value to its semantic normal
|
|
36
|
+
* form. Only `config.semanticFields` participate; values are canonically
|
|
37
|
+
* serialized (stable key order) so reordering/whitespace is invisible. An absent
|
|
38
|
+
* checkpoint normalizes to a stable empty marker so present-vs-absent is a real
|
|
39
|
+
* difference, not a crash.
|
|
40
|
+
*/
|
|
41
|
+
export declare function normalizeCheckpointValue(checkpoint: IntentCheckpoint | undefined, config?: NormalizeConfig): string;
|
|
42
|
+
/**
|
|
43
|
+
* Compute the LOCALLY-resolved `gate_version` cache key component:
|
|
44
|
+
* `hash(normalizeConfig) + judge-id token + prompt-template version`.
|
|
45
|
+
*
|
|
46
|
+
* NO network/API probe (INV-O2-inv-6): the judge id is a caller-supplied LOCAL
|
|
47
|
+
* token (e.g. a configured model id string already known to the host, or a
|
|
48
|
+
* sentinel like `'host'`), never a live capability query. Bumping the normalize
|
|
49
|
+
* config, the judge id, or the prompt template deterministically invalidates the
|
|
50
|
+
* verdict cache.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeGateVersion(input: {
|
|
53
|
+
normalizeConfig?: NormalizeConfig;
|
|
54
|
+
/** Locally-resolved judge id token. No probe; supplied by the host. */
|
|
55
|
+
judgeId: string;
|
|
56
|
+
promptTemplateVersion?: string;
|
|
57
|
+
}): string;
|
|
58
|
+
/** A cached verdict keyed on (priorNormalized, newNormalized, gate_version). */
|
|
59
|
+
export interface VerdictCache {
|
|
60
|
+
get(key: string): IntentCheckpointVerdict | undefined;
|
|
61
|
+
set(key: string, verdict: IntentCheckpointVerdict): void;
|
|
62
|
+
}
|
|
63
|
+
/** Build the deterministic verdict-cache key from the version-keyed trio. */
|
|
64
|
+
export declare function verdictCacheKey(priorNormalized: string, newNormalized: string, gateVersion: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* The normalize-then-bounded-LLM-judge equivalence gate.
|
|
67
|
+
*
|
|
68
|
+
* 1. Normalize both values; equal normal forms ⟹ `unchanged`, no judge call.
|
|
69
|
+
* 2. Cache hit on (priorNormalized, newNormalized, gate_version) ⟹ cached verdict.
|
|
70
|
+
* 3. Otherwise run the bounded judge; FAIL-SAFE — uncertain/errored/non-boolean
|
|
71
|
+
* ⟹ `'changed'`. Cache and return.
|
|
72
|
+
*
|
|
73
|
+
* Pure decision: holds no lock and does no artifact IO. The lock-interleave
|
|
74
|
+
* discipline lives in `runIntentCheckpointGate`.
|
|
75
|
+
*/
|
|
76
|
+
export declare function intentCheckpointEquivalenceGate(input: {
|
|
77
|
+
prior: IntentCheckpoint | undefined;
|
|
78
|
+
next: IntentCheckpoint | undefined;
|
|
79
|
+
judge: SemanticEquivalenceJudge;
|
|
80
|
+
judgeId: string;
|
|
81
|
+
normalizeConfig?: NormalizeConfig;
|
|
82
|
+
promptTemplateVersion?: string;
|
|
83
|
+
cache?: VerdictCache;
|
|
84
|
+
}): Promise<{
|
|
85
|
+
verdict: IntentCheckpointVerdict;
|
|
86
|
+
gateVersion: string;
|
|
87
|
+
judged: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* A monotonic ledger/version token capturing the artifact-tree state at read.
|
|
91
|
+
* Any interleaved append moves it; comparing the read-time token to the
|
|
92
|
+
* post-judge token detects an interleave that must force a re-derive.
|
|
93
|
+
*/
|
|
94
|
+
export type LedgerVersionToken = string;
|
|
95
|
+
/**
|
|
96
|
+
* Run the intent_checkpoint gate under the O2 lock-interleave discipline.
|
|
97
|
+
*
|
|
98
|
+
* The judge is SLOW and runs OUTSIDE the held lock. Sequence per attempt:
|
|
99
|
+
* 1. Acquire the lock; read the current ledger/version token; release.
|
|
100
|
+
* 2. Run the bounded equivalence gate (judge) UNLOCKED.
|
|
101
|
+
* 3. Re-acquire the lock; read the token again. If unchanged, COMMIT the verdict
|
|
102
|
+
* under the lock and return. If an interleaved append moved the token,
|
|
103
|
+
* release and re-derive (bounded to `maxAttempts`).
|
|
104
|
+
* 4. On attempt exhaustion, take the lock ACROSS the judge for one final
|
|
105
|
+
* guaranteed-committing derivation, recording the fallback firing through the
|
|
106
|
+
* best-effort friction sink (CE-010 residual — never blocks the commit).
|
|
107
|
+
*
|
|
108
|
+
* `withLock` is the artifact-tree lock wrapper (e.g. `withFileLock` bound to the
|
|
109
|
+
* artifact-tree lock path); `commit` persists the decided verdict under the held
|
|
110
|
+
* lock and is the single mutation point.
|
|
111
|
+
*/
|
|
112
|
+
export declare function runIntentCheckpointGate<T>(deps: {
|
|
113
|
+
withLock: <R>(fn: () => Promise<R>) => Promise<R>;
|
|
114
|
+
readLedgerToken: () => Promise<LedgerVersionToken>;
|
|
115
|
+
gate: () => Promise<{
|
|
116
|
+
verdict: IntentCheckpointVerdict;
|
|
117
|
+
gateVersion: string;
|
|
118
|
+
}>;
|
|
119
|
+
commit: (verdict: IntentCheckpointVerdict) => Promise<T>;
|
|
120
|
+
/** Best-effort friction recording of the lock-across-judge fallback firing. */
|
|
121
|
+
artifactsDir?: string;
|
|
122
|
+
runId?: string;
|
|
123
|
+
maxAttempts?: number;
|
|
124
|
+
}): Promise<{
|
|
125
|
+
verdict: IntentCheckpointVerdict;
|
|
126
|
+
committed: T;
|
|
127
|
+
usedFallback: boolean;
|
|
128
|
+
}>;
|
|
129
|
+
//# sourceMappingURL=intentCheckpointGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intentCheckpointGate.d.ts","sourceRoot":"","sources":["../../../src/audit/orchestrator/intentCheckpointGate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* O2 — the intent_checkpoint semantic-equivalence gate.
|
|
3
|
+
*
|
|
4
|
+
* The ONE place that decides whether a re-confirmed intent_checkpoint value is
|
|
5
|
+
* semantically EQUIVALENT to the prior one (so dependents need not re-stale) or
|
|
6
|
+
* CHANGED (so the `intent_checkpoint_current` obligation must re-fire and
|
|
7
|
+
* downstream artifacts re-derive). A raw byte/JSON compare over-stales: a host
|
|
8
|
+
* re-confirming the same intent with reordered keys, whitespace, or a benign
|
|
9
|
+
* rephrase would needlessly invalidate the whole planning tree. A pure structural
|
|
10
|
+
* compare under-stales: a genuine intent change phrased to hash-collide on the
|
|
11
|
+
* normalized form would be silently dropped. So the gate is
|
|
12
|
+
* normalize-then-bounded-LLM-judge:
|
|
13
|
+
*
|
|
14
|
+
* 1. NORMALIZE both values deterministically (`normalizeCheckpointValue`). Equal
|
|
15
|
+
* normal forms ⟹ `unchanged` with no judge call (the common, free case).
|
|
16
|
+
* 2. Otherwise a BOUNDED LLM judge decides semantic equivalence. The judge is
|
|
17
|
+
* FAIL-SAFE: any uncertain / errored / malformed verdict resolves to
|
|
18
|
+
* `'changed'` (INV-O2-fail-3) — the gate never silently treats an
|
|
19
|
+
* unverified pair as equivalent.
|
|
20
|
+
*
|
|
21
|
+
* VERSION-KEYED VERDICT CACHE (INV-O2-inv-5): a judge verdict is cached on
|
|
22
|
+
* `(priorValue, newValue, gate_version)`. `gate_version` is a LOCALLY-resolved
|
|
23
|
+
* token — `hash(normalizeConfig) + judge-id token + prompt-template version` —
|
|
24
|
+
* computed with NO network/API probe (INV-O2-inv-6). Bumping the normalize
|
|
25
|
+
* config, swapping the locally-resolved judge, or revising the prompt template
|
|
26
|
+
* invalidates every cached verdict deterministically; an unchanged trio is a
|
|
27
|
+
* cache hit so a re-confirm never re-pays the judge.
|
|
28
|
+
*
|
|
29
|
+
* LOCK INTERLEAVE DISCIPLINE (INV-O2-inv-7 / inv-8, the O2 lock contract): the
|
|
30
|
+
* judge is SLOW and MUST run OUTSIDE the artifact-tree lock. `runIntentCheckpointGate`
|
|
31
|
+
* therefore: reads a ledger/version token under the lock, releases, runs the
|
|
32
|
+
* judge unlocked, then RE-ACQUIRES the lock and compares the token captured at
|
|
33
|
+
* read against the token now. Any interleaved append (token moved) forces a
|
|
34
|
+
* re-derive — bounded to N attempts. On exhaustion it falls back to taking the
|
|
35
|
+
* lock ACROSS the judge for one final guaranteed-committing derivation, and
|
|
36
|
+
* records that fallback firing through the best-effort friction sink (CE-010
|
|
37
|
+
* residual: a contended friction append under the held non-reentrant lock is
|
|
38
|
+
* swallowed best-effort, never blocking the commit).
|
|
39
|
+
*/
|
|
40
|
+
import { captureFrictionEvent, hashContent, stableStringify } from 'audit-tools/shared';
|
|
41
|
+
/** The single active normalization config (INV-O2-inv-5 input). */
|
|
42
|
+
export const DEFAULT_NORMALIZE_CONFIG = {
|
|
43
|
+
version: 'intent-checkpoint-normalize/v1',
|
|
44
|
+
semanticFields: ['scope_summary', 'intent_summary', 'free_form_intent', 'constraint_clauses'],
|
|
45
|
+
};
|
|
46
|
+
/** Static prompt-template version — bump on any judge-prompt change. */
|
|
47
|
+
export const INTENT_GATE_PROMPT_TEMPLATE_VERSION = 'intent-checkpoint-judge-prompt/v1';
|
|
48
|
+
/**
|
|
49
|
+
* Deterministically normalize an intent_checkpoint value to its semantic normal
|
|
50
|
+
* form. Only `config.semanticFields` participate; values are canonically
|
|
51
|
+
* serialized (stable key order) so reordering/whitespace is invisible. An absent
|
|
52
|
+
* checkpoint normalizes to a stable empty marker so present-vs-absent is a real
|
|
53
|
+
* difference, not a crash.
|
|
54
|
+
*/
|
|
55
|
+
export function normalizeCheckpointValue(checkpoint, config = DEFAULT_NORMALIZE_CONFIG) {
|
|
56
|
+
if (!checkpoint)
|
|
57
|
+
return stableStringify({ __absent: true });
|
|
58
|
+
const projection = {};
|
|
59
|
+
for (const field of config.semanticFields) {
|
|
60
|
+
const value = checkpoint[field];
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
// free_form_intent is whitespace-insensitive at the edges; clauses/objects
|
|
63
|
+
// are compared structurally via the stable serializer.
|
|
64
|
+
projection[field] =
|
|
65
|
+
typeof value === 'string' ? value.trim() : value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return stableStringify(projection);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Compute the LOCALLY-resolved `gate_version` cache key component:
|
|
72
|
+
* `hash(normalizeConfig) + judge-id token + prompt-template version`.
|
|
73
|
+
*
|
|
74
|
+
* NO network/API probe (INV-O2-inv-6): the judge id is a caller-supplied LOCAL
|
|
75
|
+
* token (e.g. a configured model id string already known to the host, or a
|
|
76
|
+
* sentinel like `'host'`), never a live capability query. Bumping the normalize
|
|
77
|
+
* config, the judge id, or the prompt template deterministically invalidates the
|
|
78
|
+
* verdict cache.
|
|
79
|
+
*/
|
|
80
|
+
export function computeGateVersion(input) {
|
|
81
|
+
const normalizeConfig = input.normalizeConfig ?? DEFAULT_NORMALIZE_CONFIG;
|
|
82
|
+
const promptTemplateVersion = input.promptTemplateVersion ?? INTENT_GATE_PROMPT_TEMPLATE_VERSION;
|
|
83
|
+
const configHash = hashContent(stableStringify(normalizeConfig), { length: 16 });
|
|
84
|
+
return `${configHash}:${input.judgeId}:${promptTemplateVersion}`;
|
|
85
|
+
}
|
|
86
|
+
/** Build the deterministic verdict-cache key from the version-keyed trio. */
|
|
87
|
+
export function verdictCacheKey(priorNormalized, newNormalized, gateVersion) {
|
|
88
|
+
return hashContent(stableStringify([priorNormalized, newNormalized, gateVersion]));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* The normalize-then-bounded-LLM-judge equivalence gate.
|
|
92
|
+
*
|
|
93
|
+
* 1. Normalize both values; equal normal forms ⟹ `unchanged`, no judge call.
|
|
94
|
+
* 2. Cache hit on (priorNormalized, newNormalized, gate_version) ⟹ cached verdict.
|
|
95
|
+
* 3. Otherwise run the bounded judge; FAIL-SAFE — uncertain/errored/non-boolean
|
|
96
|
+
* ⟹ `'changed'`. Cache and return.
|
|
97
|
+
*
|
|
98
|
+
* Pure decision: holds no lock and does no artifact IO. The lock-interleave
|
|
99
|
+
* discipline lives in `runIntentCheckpointGate`.
|
|
100
|
+
*/
|
|
101
|
+
export async function intentCheckpointEquivalenceGate(input) {
|
|
102
|
+
const config = input.normalizeConfig ?? DEFAULT_NORMALIZE_CONFIG;
|
|
103
|
+
const priorNormalized = normalizeCheckpointValue(input.prior, config);
|
|
104
|
+
const newNormalized = normalizeCheckpointValue(input.next, config);
|
|
105
|
+
const gateVersion = computeGateVersion({
|
|
106
|
+
normalizeConfig: config,
|
|
107
|
+
judgeId: input.judgeId,
|
|
108
|
+
promptTemplateVersion: input.promptTemplateVersion,
|
|
109
|
+
});
|
|
110
|
+
if (priorNormalized === newNormalized) {
|
|
111
|
+
return { verdict: 'unchanged', gateVersion, judged: false };
|
|
112
|
+
}
|
|
113
|
+
const cacheKey = verdictCacheKey(priorNormalized, newNormalized, gateVersion);
|
|
114
|
+
const cached = input.cache?.get(cacheKey);
|
|
115
|
+
if (cached !== undefined) {
|
|
116
|
+
return { verdict: cached, gateVersion, judged: false };
|
|
117
|
+
}
|
|
118
|
+
let verdict;
|
|
119
|
+
try {
|
|
120
|
+
const equivalent = await input.judge({ priorNormalized, newNormalized });
|
|
121
|
+
// FAIL-SAFE: only an explicit `true` resolves to unchanged; anything else
|
|
122
|
+
// (false, non-boolean, undefined) is treated as changed.
|
|
123
|
+
verdict = equivalent === true ? 'unchanged' : 'changed';
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// FAIL-SAFE: a judge error never silently passes as equivalent.
|
|
127
|
+
verdict = 'changed';
|
|
128
|
+
}
|
|
129
|
+
input.cache?.set(cacheKey, verdict);
|
|
130
|
+
return { verdict, gateVersion, judged: true };
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Run the intent_checkpoint gate under the O2 lock-interleave discipline.
|
|
134
|
+
*
|
|
135
|
+
* The judge is SLOW and runs OUTSIDE the held lock. Sequence per attempt:
|
|
136
|
+
* 1. Acquire the lock; read the current ledger/version token; release.
|
|
137
|
+
* 2. Run the bounded equivalence gate (judge) UNLOCKED.
|
|
138
|
+
* 3. Re-acquire the lock; read the token again. If unchanged, COMMIT the verdict
|
|
139
|
+
* under the lock and return. If an interleaved append moved the token,
|
|
140
|
+
* release and re-derive (bounded to `maxAttempts`).
|
|
141
|
+
* 4. On attempt exhaustion, take the lock ACROSS the judge for one final
|
|
142
|
+
* guaranteed-committing derivation, recording the fallback firing through the
|
|
143
|
+
* best-effort friction sink (CE-010 residual — never blocks the commit).
|
|
144
|
+
*
|
|
145
|
+
* `withLock` is the artifact-tree lock wrapper (e.g. `withFileLock` bound to the
|
|
146
|
+
* artifact-tree lock path); `commit` persists the decided verdict under the held
|
|
147
|
+
* lock and is the single mutation point.
|
|
148
|
+
*/
|
|
149
|
+
export async function runIntentCheckpointGate(deps) {
|
|
150
|
+
const maxAttempts = deps.maxAttempts ?? 3;
|
|
151
|
+
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
|
|
152
|
+
// (1) Capture the read-time token under the lock, then release.
|
|
153
|
+
const readToken = await deps.withLock(() => deps.readLedgerToken());
|
|
154
|
+
// (2) Run the slow judge UNLOCKED.
|
|
155
|
+
const { verdict } = await deps.gate();
|
|
156
|
+
// (3) Re-acquire; if no interleave, commit under the lock.
|
|
157
|
+
const outcome = await deps.withLock(async () => {
|
|
158
|
+
const nowToken = await deps.readLedgerToken();
|
|
159
|
+
if (nowToken !== readToken) {
|
|
160
|
+
// Interleaved append — bail out of this attempt and re-derive.
|
|
161
|
+
return { committed: undefined, interleaved: true };
|
|
162
|
+
}
|
|
163
|
+
const committed = await deps.commit(verdict);
|
|
164
|
+
return { committed, interleaved: false };
|
|
165
|
+
});
|
|
166
|
+
if (!outcome.interleaved) {
|
|
167
|
+
return { verdict, committed: outcome.committed, usedFallback: false };
|
|
168
|
+
}
|
|
169
|
+
// else: token moved during the unlocked judge — loop and re-derive.
|
|
170
|
+
}
|
|
171
|
+
// (4) Attempts exhausted under repeated contention: take the lock ACROSS the
|
|
172
|
+
// judge for one final guaranteed-committing derivation. Record the fallback
|
|
173
|
+
// firing best-effort (CE-010 residual: a contended friction append under the
|
|
174
|
+
// held non-reentrant lock is swallowed best-effort, never blocking the commit).
|
|
175
|
+
return deps.withLock(async () => {
|
|
176
|
+
if (deps.artifactsDir && deps.runId) {
|
|
177
|
+
// Fire-and-forget but awaited: captureFrictionEvent is itself best-effort
|
|
178
|
+
// and never throws, so it can never block the commit below.
|
|
179
|
+
await captureFrictionEvent(deps.artifactsDir, deps.runId, {
|
|
180
|
+
id: `intent-gate-lock-across-judge-fallback:${deps.runId}`,
|
|
181
|
+
category: 'trap',
|
|
182
|
+
severity: 'low',
|
|
183
|
+
area: 'intent_checkpoint gate',
|
|
184
|
+
note: 'intent_checkpoint gate fell back to taking the lock across the LLM judge after ' +
|
|
185
|
+
`${maxAttempts} interleaved re-derive attempts; one guaranteed-committing derivation ran under the held lock.`,
|
|
186
|
+
}, 'audit-code');
|
|
187
|
+
}
|
|
188
|
+
const { verdict } = await deps.gate();
|
|
189
|
+
const committed = await deps.commit(verdict);
|
|
190
|
+
return { verdict, committed, usedFallback: true };
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=intentCheckpointGate.js.map
|