audit-tools 0.55.5 → 0.55.7
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 +15 -1
- package/dist/audit/cli/auditStep.d.ts.map +1 -1
- package/dist/audit/cli/auditStep.js +24 -11
- package/dist/audit/cli/auditStep.js.map +1 -1
- package/dist/audit/cli/cleanup.d.ts.map +1 -1
- package/dist/audit/cli/cleanup.js +26 -2
- package/dist/audit/cli/cleanup.js.map +1 -1
- package/dist/audit/cli/conceptualDispatch.d.ts +2 -0
- package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
- package/dist/audit/cli/conceptualDispatch.js +29 -8
- package/dist/audit/cli/conceptualDispatch.js.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts +37 -3
- package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.js +185 -16
- package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
- package/dist/audit/cli/fanoutLanes.d.ts +30 -0
- package/dist/audit/cli/fanoutLanes.d.ts.map +1 -1
- package/dist/audit/cli/fanoutLanes.js +76 -8
- package/dist/audit/cli/fanoutLanes.js.map +1 -1
- package/dist/audit/cli/lineIndex.d.ts.map +1 -1
- package/dist/audit/cli/lineIndex.js +19 -41
- package/dist/audit/cli/lineIndex.js.map +1 -1
- package/dist/audit/cli/nextStepCommand.d.ts +3 -0
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +109 -68
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +55 -20
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +215 -196
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/reviewRun.d.ts +4 -0
- package/dist/audit/cli/reviewRun.d.ts.map +1 -1
- package/dist/audit/cli/reviewRun.js +1 -1
- package/dist/audit/cli/reviewRun.js.map +1 -1
- package/dist/audit/cli/semanticReviewStep.d.ts +2 -0
- package/dist/audit/cli/semanticReviewStep.d.ts.map +1 -1
- package/dist/audit/cli/semanticReviewStep.js +5 -50
- package/dist/audit/cli/semanticReviewStep.js.map +1 -1
- package/dist/audit/cli/validateResultsCommand.d.ts.map +1 -1
- package/dist/audit/cli/validateResultsCommand.js +3 -1
- package/dist/audit/cli/validateResultsCommand.js.map +1 -1
- package/dist/audit/extractors/disposition.d.ts.map +1 -1
- package/dist/audit/extractors/disposition.js +14 -38
- package/dist/audit/extractors/disposition.js.map +1 -1
- package/dist/audit/extractors/fsIntake.d.ts +13 -0
- package/dist/audit/extractors/fsIntake.d.ts.map +1 -1
- package/dist/audit/extractors/fsIntake.js +11 -1
- package/dist/audit/extractors/fsIntake.js.map +1 -1
- package/dist/audit/extractors/readFileText.d.ts.map +1 -1
- package/dist/audit/extractors/readFileText.js +34 -5
- package/dist/audit/extractors/readFileText.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +35 -9
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +84 -67
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/io/rollover.d.ts +18 -0
- package/dist/audit/io/rollover.d.ts.map +1 -0
- package/dist/audit/io/rollover.js +152 -0
- package/dist/audit/io/rollover.js.map +1 -0
- package/dist/audit/io/runSnapshot.d.ts +149 -0
- package/dist/audit/io/runSnapshot.d.ts.map +1 -0
- package/dist/audit/io/runSnapshot.js +710 -0
- package/dist/audit/io/runSnapshot.js.map +1 -0
- package/dist/audit/orchestrator/acquisitionExecutor.d.ts +5 -2
- package/dist/audit/orchestrator/acquisitionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/acquisitionExecutor.js +28 -22
- package/dist/audit/orchestrator/acquisitionExecutor.js.map +1 -1
- package/dist/audit/orchestrator/advanceTypes.d.ts +11 -0
- package/dist/audit/orchestrator/advanceTypes.d.ts.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.d.ts +9 -0
- package/dist/audit/orchestrator/autoFixExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/autoFixExecutor.js +22 -2
- package/dist/audit/orchestrator/autoFixExecutor.js.map +1 -1
- package/dist/audit/orchestrator/charterExtractionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterExtractionExecutor.js +18 -3
- package/dist/audit/orchestrator/charterExtractionExecutor.js.map +1 -1
- package/dist/audit/orchestrator/charterPackets.d.ts +11 -1
- package/dist/audit/orchestrator/charterPackets.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterPackets.js +13 -0
- package/dist/audit/orchestrator/charterPackets.js.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.d.ts +9 -0
- package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewPrompt.js +69 -31
- package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
- package/dist/audit/orchestrator/designReviewSnapshot.d.ts +1 -0
- package/dist/audit/orchestrator/designReviewSnapshot.d.ts.map +1 -1
- package/dist/audit/orchestrator/designReviewSnapshot.js +2 -1
- package/dist/audit/orchestrator/designReviewSnapshot.js.map +1 -1
- package/dist/audit/orchestrator/executorRunners.d.ts.map +1 -1
- package/dist/audit/orchestrator/executorRunners.js +13 -4
- package/dist/audit/orchestrator/executorRunners.js.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts +8 -1
- package/dist/audit/orchestrator/intakeExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/intakeExecutors.js +13 -4
- package/dist/audit/orchestrator/intakeExecutors.js.map +1 -1
- package/dist/audit/orchestrator/obligationPolicy.d.ts.map +1 -1
- package/dist/audit/orchestrator/obligationPolicy.js +4 -1
- package/dist/audit/orchestrator/obligationPolicy.js.map +1 -1
- package/dist/audit/orchestrator/planningExecutors.d.ts +1 -1
- package/dist/audit/orchestrator/planningExecutors.d.ts.map +1 -1
- package/dist/audit/orchestrator/planningExecutors.js +40 -6
- package/dist/audit/orchestrator/planningExecutors.js.map +1 -1
- package/dist/audit/orchestrator/reviewPacketSizing.d.ts +4 -4
- package/dist/audit/orchestrator/reviewPacketSizing.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPacketSizing.js +5 -5
- package/dist/audit/orchestrator/reviewPacketSizing.js.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.d.ts.map +1 -1
- package/dist/audit/orchestrator/reviewPackets.js +10 -5
- package/dist/audit/orchestrator/reviewPackets.js.map +1 -1
- package/dist/audit/orchestrator/runtimeCommand.d.ts +9 -2
- package/dist/audit/orchestrator/runtimeCommand.d.ts.map +1 -1
- package/dist/audit/orchestrator/runtimeCommand.js +14 -22
- package/dist/audit/orchestrator/runtimeCommand.js.map +1 -1
- package/dist/audit/orchestrator/scopeIndexBaseline.d.ts.map +1 -1
- package/dist/audit/orchestrator/scopeIndexBaseline.js +7 -29
- package/dist/audit/orchestrator/scopeIndexBaseline.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/conflict.d.ts +6 -2
- package/dist/audit/orchestrator/selectiveDeepening/conflict.d.ts.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/conflict.js +45 -4
- package/dist/audit/orchestrator/selectiveDeepening/conflict.js.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/index.d.ts.map +1 -1
- package/dist/audit/orchestrator/selectiveDeepening/index.js +4 -4
- package/dist/audit/orchestrator/selectiveDeepening/index.js.map +1 -1
- package/dist/audit/orchestrator/systemicChallengeExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/systemicChallengeExecutor.js +4 -1
- package/dist/audit/orchestrator/systemicChallengeExecutor.js.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.d.ts +20 -0
- package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.js +80 -18
- package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
- package/dist/audit/systemic/reviewFileMap.d.ts +72 -21
- package/dist/audit/systemic/reviewFileMap.d.ts.map +1 -1
- package/dist/audit/systemic/reviewFileMap.js +96 -45
- package/dist/audit/systemic/reviewFileMap.js.map +1 -1
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +7 -0
- package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js +39 -8
- package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +29 -11
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/phases/closeAcceptance.d.ts.map +1 -1
- package/dist/remediate/phases/closeAcceptance.js +2 -0
- package/dist/remediate/phases/closeAcceptance.js.map +1 -1
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts +2 -1
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.d.ts.map +1 -1
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.js +10 -9
- package/dist/remediate/phases/closeVerifyAnalyzerLeads.js.map +1 -1
- package/dist/remediate/phases/triage.d.ts +2 -1
- package/dist/remediate/phases/triage.d.ts.map +1 -1
- package/dist/remediate/phases/triage.js +46 -25
- package/dist/remediate/phases/triage.js.map +1 -1
- package/dist/remediate/phases/triageConformance.d.ts +14 -0
- package/dist/remediate/phases/triageConformance.d.ts.map +1 -0
- package/dist/remediate/phases/triageConformance.js +189 -0
- package/dist/remediate/phases/triageConformance.js.map +1 -0
- package/dist/remediate/state/decisionConsumption.d.ts +110 -0
- package/dist/remediate/state/decisionConsumption.d.ts.map +1 -0
- package/dist/remediate/state/decisionConsumption.js +122 -0
- package/dist/remediate/state/decisionConsumption.js.map +1 -0
- package/dist/remediate/state/dirtyBaseline.d.ts +10 -0
- package/dist/remediate/state/dirtyBaseline.d.ts.map +1 -0
- package/dist/remediate/state/dirtyBaseline.js +18 -0
- package/dist/remediate/state/dirtyBaseline.js.map +1 -0
- package/dist/remediate/state/store.d.ts +8 -4
- package/dist/remediate/state/store.d.ts.map +1 -1
- package/dist/remediate/state/store.js +24 -0
- package/dist/remediate/state/store.js.map +1 -1
- package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts +9 -0
- package/dist/remediate/steps/dispatch/contractConformanceReview.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/contractConformanceReview.js +32 -14
- package/dist/remediate/steps/dispatch/contractConformanceReview.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostCorroboration.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostCorroboration.js +34 -82
- package/dist/remediate/steps/dispatch/hostCorroboration.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js +10 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
- package/dist/remediate/steps/finalGate.d.ts.map +1 -1
- package/dist/remediate/steps/finalGate.js +11 -5
- package/dist/remediate/steps/finalGate.js.map +1 -1
- package/dist/remediate/steps/gateCommands.d.ts +1 -0
- package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
- package/dist/remediate/steps/gateCommands.js +13 -63
- package/dist/remediate/steps/gateCommands.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +7 -0
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +93 -33
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.d.ts +12 -5
- package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.js +86 -38
- package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.d.ts +17 -41
- package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.js +260 -227
- package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/shared/analyzers/binaryFetcher.d.ts +4 -0
- package/dist/shared/analyzers/binaryFetcher.d.ts.map +1 -0
- package/dist/shared/analyzers/binaryFetcher.js +79 -0
- package/dist/shared/analyzers/binaryFetcher.js.map +1 -0
- package/dist/shared/analyzers/binaryVersions.d.ts +5 -0
- package/dist/shared/analyzers/binaryVersions.d.ts.map +1 -0
- package/dist/shared/analyzers/binaryVersions.js +31 -0
- package/dist/shared/analyzers/binaryVersions.js.map +1 -0
- package/dist/shared/analyzers/candidates.d.ts +3 -3
- package/dist/shared/analyzers/candidates.d.ts.map +1 -1
- package/dist/shared/analyzers/candidates.js +35 -12
- package/dist/shared/analyzers/candidates.js.map +1 -1
- package/dist/shared/contentKey.d.ts +3 -2
- package/dist/shared/contentKey.d.ts.map +1 -1
- package/dist/shared/contentKey.js +3 -2
- package/dist/shared/contentKey.js.map +1 -1
- package/dist/shared/decompose/charterExtraction.d.ts +189 -1
- package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
- package/dist/shared/decompose/charterExtraction.js +17 -2
- package/dist/shared/decompose/charterExtraction.js.map +1 -1
- package/dist/shared/git.d.ts +58 -2
- package/dist/shared/git.d.ts.map +1 -1
- package/dist/shared/git.js +214 -56
- package/dist/shared/git.js.map +1 -1
- package/dist/shared/gitTrackedPaths.d.ts +39 -0
- package/dist/shared/gitTrackedPaths.d.ts.map +1 -0
- package/dist/shared/gitTrackedPaths.js +29 -0
- package/dist/shared/gitTrackedPaths.js.map +1 -0
- package/dist/shared/index.d.ts +4 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +4 -2
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/io/sourcePath.d.ts +8 -0
- package/dist/shared/io/sourcePath.d.ts.map +1 -0
- package/dist/shared/io/sourcePath.js +38 -0
- package/dist/shared/io/sourcePath.js.map +1 -0
- package/dist/shared/loopCorePaths.d.ts.map +1 -1
- package/dist/shared/loopCorePaths.js +2 -0
- package/dist/shared/loopCorePaths.js.map +1 -1
- package/dist/shared/prompts.d.ts +2 -0
- package/dist/shared/prompts.d.ts.map +1 -1
- package/dist/shared/prompts.js +8 -2
- package/dist/shared/prompts.js.map +1 -1
- package/dist/shared/submission/ingestReport.d.ts.map +1 -1
- package/dist/shared/submission/ingestReport.js +19 -1
- package/dist/shared/submission/ingestReport.js.map +1 -1
- package/dist/shared/tooling/exec.d.ts +1 -0
- package/dist/shared/tooling/exec.d.ts.map +1 -1
- package/dist/shared/tooling/exec.js +20 -4
- package/dist/shared/tooling/exec.js.map +1 -1
- package/dist/shared/tooling/resolveExecutable.d.ts +10 -0
- package/dist/shared/tooling/resolveExecutable.d.ts.map +1 -0
- package/dist/shared/tooling/resolveExecutable.js +46 -0
- package/dist/shared/tooling/resolveExecutable.js.map +1 -0
- package/dist/shared/types/charter.d.ts +9 -0
- package/dist/shared/types/charter.d.ts.map +1 -1
- package/dist/shared/types/charter.js +7 -0
- package/dist/shared/types/charter.js.map +1 -1
- package/dist/shared/validation/citationGrounding.d.ts +1 -1
- package/dist/shared/validation/citationGrounding.d.ts.map +1 -1
- package/dist/shared/validation/citationGrounding.js +24 -11
- package/dist/shared/validation/citationGrounding.js.map +1 -1
- package/dist/shared/validation/findingGrounding.d.ts +1 -1
- package/dist/shared/validation/findingGrounding.d.ts.map +1 -1
- package/dist/shared/validation/findingGrounding.js +11 -23
- package/dist/shared/validation/findingGrounding.js.map +1 -1
- package/docs/audit-pkg/contracts.md +6 -2
- package/docs/audit-pkg/operator-guide.md +13 -4
- package/package.json +2 -1
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
import { readDecisionSnapshot, decisionContextDigest } from "../state/decisionConsumption.js";
|
|
1
2
|
// sites-pinned: tests/remediate/phase-triage.test.ts
|
|
2
3
|
import { runRequiredTest } from "../steps/dispatch/requiredTests.js";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
+
import { relative, join } from "node:path";
|
|
4
5
|
import { existsSync } from "node:fs";
|
|
5
6
|
import { rename } from "node:fs/promises";
|
|
6
|
-
import {
|
|
7
|
+
import { writeJsonFile, formatValidationIssues, withFsRetry, commandLeavesDeclaredShape } from "audit-tools/shared";
|
|
7
8
|
import { validateTriageResolution } from "../validation/remediationState.js";
|
|
8
9
|
import { isTerminalStatus } from "../state/itemStatus.js";
|
|
9
10
|
import { rationaleAsksForRetry } from "../steps/stepUtils.js";
|
|
10
11
|
import { remediationHostResultFilePath } from "../steps/dispatch/hostHandoff.js";
|
|
12
|
+
import { stableStringify } from "../../shared/stableStringify.js";
|
|
13
|
+
import { triageEvidenceContext, readTriageObservation, writeTriageObservation, checkTriageConformance } from "./triageConformance.js";
|
|
11
14
|
function markRetry(item) {
|
|
12
15
|
item.started_at ??= new Date().toISOString();
|
|
13
16
|
delete item.completed_at;
|
|
@@ -100,19 +103,6 @@ async function archiveIfPresent(path, suffix) {
|
|
|
100
103
|
return;
|
|
101
104
|
await withFsRetry(() => rename(path, `${path}.${suffix}-${Date.now()}`));
|
|
102
105
|
}
|
|
103
|
-
async function archiveImplementResultsForRetries(state, options, unitIds) {
|
|
104
|
-
const runId = state.plan?.plan_id;
|
|
105
|
-
if (!runId || unitIds.size === 0)
|
|
106
|
-
return;
|
|
107
|
-
for (const unitId of unitIds) {
|
|
108
|
-
await archiveIfPresent(remediationHostResultFilePath({
|
|
109
|
-
root: options.root,
|
|
110
|
-
artifactsDir: options.artifactsDir,
|
|
111
|
-
runId,
|
|
112
|
-
workItemId: unitId,
|
|
113
|
-
}), "stale");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
106
|
// ── The ONE closing INTENT out of triage ─────────────────────────────────────
|
|
117
107
|
// INV-RS-10 / OBL-seam-prep-remediate-core-inv-1..4 (CP-NODE-3 review finding):
|
|
118
108
|
// triage never PERSISTS `closing` itself — its single caller
|
|
@@ -165,7 +155,7 @@ function reconciledToClosing(state) {
|
|
|
165
155
|
closing_plan: state.closing_plan ?? { action: "none" },
|
|
166
156
|
};
|
|
167
157
|
}
|
|
168
|
-
export async function runTriagePhase(state, options) {
|
|
158
|
+
export async function runTriagePhase(state, options, onConformanceIssue) {
|
|
169
159
|
console.log("Running Triage Phase...");
|
|
170
160
|
if (!state.items) {
|
|
171
161
|
throw new Error("Cannot run triage phase: items missing from state.");
|
|
@@ -173,7 +163,9 @@ export async function runTriagePhase(state, options) {
|
|
|
173
163
|
const blockedItems = Object.values(state.items).filter((item) => item.status === "blocked");
|
|
174
164
|
if (blockedItems.length > 0) {
|
|
175
165
|
const resolutionPath = join(options.artifactsDir, "triage_resolution.json");
|
|
176
|
-
|
|
166
|
+
const inputSnapshot = await readDecisionSnapshot(resolutionPath);
|
|
167
|
+
const contextDigest = decisionContextDigest(state);
|
|
168
|
+
let resolution = inputSnapshot ? JSON.parse(inputSnapshot.bytes) : undefined;
|
|
177
169
|
// INV-RSM-RESOLUTION-CORRELATE (COR-227a02ae class): a resolution written
|
|
178
170
|
// for a DIFFERENT plan (a leftover from an earlier run in the same
|
|
179
171
|
// artifacts dir) must never be applied to this run's items. Archive it as
|
|
@@ -193,15 +185,21 @@ export async function runTriagePhase(state, options) {
|
|
|
193
185
|
}
|
|
194
186
|
console.log("Found triage_resolution.json. Processing resolutions...");
|
|
195
187
|
let requiresRetry = false;
|
|
196
|
-
const retryUnitIds = new Set();
|
|
197
188
|
// Triage outcome artifact — records per-finding resolution actions.
|
|
198
189
|
const triageOutcome = [];
|
|
190
|
+
const receipt = {
|
|
191
|
+
input: "triage_resolution.json", input_sha256: inputSnapshot.sha256, input_identity_sha256: inputSnapshot.identity_sha256, context_sha256: contextDigest,
|
|
192
|
+
run_id: state.plan.plan_id, revision_sha256: state.plan.review_revision_sha256,
|
|
193
|
+
applied_at: new Date().toISOString(), retry_results: [],
|
|
194
|
+
outcome: { resolved_at: new Date().toISOString(), items: triageOutcome },
|
|
195
|
+
};
|
|
196
|
+
if (!inputSnapshot)
|
|
197
|
+
throw new Error("Triage input changed during application; retry without accepting it.");
|
|
198
|
+
(state.decision_applications ??= []).push(receipt);
|
|
199
199
|
for (const res of resolution.items) {
|
|
200
200
|
if (res.action === "halt") {
|
|
201
|
-
await archiveIfPresent(resolutionPath, "consumed");
|
|
202
201
|
console.log("Halt requested during triage. Routing through close (partial report).");
|
|
203
202
|
triageOutcome.push({ unit_id: res.unit_id, action: "halted" });
|
|
204
|
-
await writeJsonFile(join(options.artifactsDir, "triage-outcome.json"), { resolved_at: new Date().toISOString(), items: triageOutcome });
|
|
205
203
|
return haltToClosing(state);
|
|
206
204
|
}
|
|
207
205
|
const item = state.items[res.unit_id];
|
|
@@ -212,7 +210,11 @@ export async function runTriagePhase(state, options) {
|
|
|
212
210
|
(res.action === undefined && rationaleAsksForRetry(res.rationale));
|
|
213
211
|
if (shouldRetry) {
|
|
214
212
|
retryBlockedItem(item);
|
|
215
|
-
|
|
213
|
+
const resultPath = remediationHostResultFilePath({ root: options.root, artifactsDir: options.artifactsDir,
|
|
214
|
+
runId: state.plan.plan_id, workItemId: res.unit_id });
|
|
215
|
+
const snapshot = await readDecisionSnapshot(resultPath);
|
|
216
|
+
if (snapshot)
|
|
217
|
+
receipt.retry_results.push({ path: relative(options.artifactsDir, resultPath), sha256: snapshot.sha256, identity_sha256: snapshot.identity_sha256 });
|
|
216
218
|
requiresRetry = true;
|
|
217
219
|
triageOutcome.push({ unit_id: res.unit_id, action: "retried" });
|
|
218
220
|
}
|
|
@@ -224,10 +226,7 @@ export async function runTriagePhase(state, options) {
|
|
|
224
226
|
}
|
|
225
227
|
}
|
|
226
228
|
}
|
|
227
|
-
await archiveIfPresent(resolutionPath, "consumed");
|
|
228
|
-
await writeJsonFile(join(options.artifactsDir, "triage-outcome.json"), { resolved_at: new Date().toISOString(), items: triageOutcome });
|
|
229
229
|
if (requiresRetry) {
|
|
230
|
-
await archiveImplementResultsForRetries(state, options, retryUnitIds);
|
|
231
230
|
return { ...state, status: "implementing" };
|
|
232
231
|
}
|
|
233
232
|
// Post-resolution still-blocked guard (COR-87f78167): a resolution that
|
|
@@ -255,13 +254,31 @@ export async function runTriagePhase(state, options) {
|
|
|
255
254
|
// retry budget before escalating to human triage. The run was approved at
|
|
256
255
|
// the review gate; only budget-exhausted items fall through to a human prompt.
|
|
257
256
|
let autoRetried = false;
|
|
257
|
+
let awaitingConformance = false;
|
|
258
258
|
for (const item of blockedItems) {
|
|
259
259
|
// Re-verify against the CURRENT tree BEFORE retrying (takes precedence
|
|
260
260
|
// over the retry budget): if the node's own verification now passes, the
|
|
261
261
|
// finding is already satisfied — a lean/hand lap landed it, or this is an
|
|
262
262
|
// obsolete run being resumed after the work shipped — so reconcile to
|
|
263
263
|
// resolved_no_change rather than re-hitting an already-fixed state.
|
|
264
|
-
|
|
264
|
+
const reviewRequired = state.conformance_review?.enabled === true;
|
|
265
|
+
const context = reviewRequired ? await triageEvidenceContext(options.root, state, item.unit_id) : null;
|
|
266
|
+
const previousObservation = context && reviewRequired ? await readTriageObservation(options.artifactsDir, state.plan.plan_id, item.unit_id, context) : null;
|
|
267
|
+
const verified = previousObservation ? "satisfied" : await reverifyBlockedItemAgainstTree(item, state, options);
|
|
268
|
+
if (verified === "satisfied") {
|
|
269
|
+
if (reviewRequired) {
|
|
270
|
+
const after = await triageEvidenceContext(options.root, state, item.unit_id);
|
|
271
|
+
if (context && stableStringify(context) === stableStringify(after) && !previousObservation) {
|
|
272
|
+
await writeTriageObservation(options.artifactsDir, state.plan.plan_id, item.unit_id, context, state.plan.units.find(unit => unit.id === item.unit_id).required_tests);
|
|
273
|
+
}
|
|
274
|
+
const checked = await checkTriageConformance(options.root, options.artifactsDir, state, item.unit_id, context);
|
|
275
|
+
if (!checked.ok) {
|
|
276
|
+
awaitingConformance = true;
|
|
277
|
+
onConformanceIssue?.(checked.issue);
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
item.conformance_review = checked.receipt;
|
|
281
|
+
}
|
|
265
282
|
item.status = "resolved_no_change";
|
|
266
283
|
markTerminal(item);
|
|
267
284
|
// NB: do not write `last_successful_step` here — dispatch.ts is its
|
|
@@ -286,6 +303,8 @@ export async function runTriagePhase(state, options) {
|
|
|
286
303
|
retryBlockedItem(item);
|
|
287
304
|
autoRetried = true;
|
|
288
305
|
}
|
|
306
|
+
if (awaitingConformance)
|
|
307
|
+
return { ...state, status: "triage" };
|
|
289
308
|
if (autoRetried) {
|
|
290
309
|
console.log("Auto-retrying blocked findings within their retry budget.");
|
|
291
310
|
return { ...state, status: "implementing" };
|
|
@@ -294,6 +313,8 @@ export async function runTriagePhase(state, options) {
|
|
|
294
313
|
// resolved_no_change above; only the genuinely-still-open ones remain.
|
|
295
314
|
const stillBlocked = blockedItems.filter((item) => item.status === "blocked");
|
|
296
315
|
if (stillBlocked.length === 0) {
|
|
316
|
+
if (Object.values(state.items).some(item => item.status === "pending"))
|
|
317
|
+
return { ...state, status: "implementing" };
|
|
297
318
|
// Every blocked item was already satisfied in the tree — the run is an
|
|
298
319
|
// obsolete/already-landed one; close it cleanly instead of looping its
|
|
299
320
|
// stale nodes through human triage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../src/remediate/phases/triage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"triage.js","sourceRoot":"","sources":["../../../src/remediate/phases/triage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RemediationState } from "../state/store.js";
|
|
2
|
+
import { type ConformanceReviewCheck } from "../steps/dispatch/contractConformanceReview.js";
|
|
3
|
+
/** Historical evidence only; admission continues to use the run's live request and state. */
|
|
4
|
+
export declare function archiveConformanceSubjects(artifactsDir: string, outputDir: string): Promise<void>;
|
|
5
|
+
/** The full nonignored tree plus declared files, including ignored deliverables. */
|
|
6
|
+
export declare function triageEvidenceContext(root: string, state: RemediationState, itemId: string): Promise<unknown | null>;
|
|
7
|
+
export declare function readTriageObservation(artifactsDir: string, runId: string, itemId: string, context: unknown): Promise<unknown | null>;
|
|
8
|
+
export declare function checkTriageConformance(root: string, artifactsDir: string, state: RemediationState, itemId: string, context: unknown | null): Promise<ConformanceReviewCheck>;
|
|
9
|
+
export declare function writeTriageObservation(artifactsDir: string, runId: string, itemId: string, context: unknown, commands: readonly string[]): Promise<void>;
|
|
10
|
+
/** Successful terminal units must retain the receipt for their current review subject. */
|
|
11
|
+
export declare function assertSuccessfulConformance(root: string, artifactsDir: string, state: RemediationState): Promise<void>;
|
|
12
|
+
/** Refresh stale mutable-tree successes, or abandon them after an explicit halt; retain historical receipts. */
|
|
13
|
+
export declare function reopenStaleTriageSuccesses(root: string, artifactsDir: string, state: RemediationState): Promise<boolean>;
|
|
14
|
+
//# sourceMappingURL=triageConformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triageConformance.d.ts","sourceRoot":"","sources":["../../../src/remediate/phases/triageConformance.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAmD,KAAK,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AAK9I,6FAA6F;AAC7F,wBAAsB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAavG;AAMD,oFAAoF;AACpF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAuC1H;AAMD,wBAAsB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAM1I;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAYlL;AAED,wBAAsB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9J;AAED,0FAA0F;AAC1F,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5H;AAED,gHAAgH;AAChH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAyB9H"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
// sites-pinned: tests/remediate/phase-triage.test.ts, tests/remediate/host-handoff-corroboration-obligations.test.ts
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { readFile, readdir, lstat, readlink } from "node:fs/promises";
|
|
5
|
+
import { hashContent } from "../../shared/hash.js";
|
|
6
|
+
import { stableStringify } from "../../shared/stableStringify.js";
|
|
7
|
+
import { headCommit } from "../../shared/git.js";
|
|
8
|
+
import { AUDIT_TOOLS_DIRNAME, readOptionalJsonFile, writeJsonFile, parseCommandString, resolveWithinRoot } from "audit-tools/shared";
|
|
9
|
+
import { worktreeContentId } from "../steps/gateCommands.js";
|
|
10
|
+
import { checkConformanceSubject, conformanceReviewPaths } from "../steps/dispatch/contractConformanceReview.js";
|
|
11
|
+
import { readSubmissionDocument } from "../../shared/submission/submissionClassifier.js";
|
|
12
|
+
const digest = (value) => hashContent(stableStringify(value));
|
|
13
|
+
/** Historical evidence only; admission continues to use the run's live request and state. */
|
|
14
|
+
export async function archiveConformanceSubjects(artifactsDir, outputDir) {
|
|
15
|
+
const sourceDir = join(artifactsDir, "conformance-review", "subjects");
|
|
16
|
+
let names;
|
|
17
|
+
try {
|
|
18
|
+
names = await readdir(sourceDir);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
if (error.code === "ENOENT")
|
|
22
|
+
return;
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
for (const name of names.sort()) {
|
|
26
|
+
if (!/^[a-f0-9]{64}(?:\.review)?\.json$/.test(name))
|
|
27
|
+
throw new Error(`Unexpected conformance subject filename: ${name}`);
|
|
28
|
+
const document = JSON.parse(await readFile(join(sourceDir, name), "utf8"));
|
|
29
|
+
await writeJsonFile(join(outputDir, "remediation-conformance", name), document);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const ObservationSchema = z.object({
|
|
33
|
+
schema_version: z.literal("triage-verification/v1"), producer: z.literal("triage_required_tests"),
|
|
34
|
+
context: z.unknown(), verification: z.array(z.object({ command: z.string().min(1), outcome: z.literal("passed"), exit_code: z.literal(0) }).strict()).min(1),
|
|
35
|
+
}).strict();
|
|
36
|
+
/** The full nonignored tree plus declared files, including ignored deliverables. */
|
|
37
|
+
export async function triageEvidenceContext(root, state, itemId) {
|
|
38
|
+
const unit = state.plan?.units.find(entry => entry.id === itemId);
|
|
39
|
+
if (!unit || !state.plan)
|
|
40
|
+
return null;
|
|
41
|
+
const tree = await worktreeContentId(root);
|
|
42
|
+
const head = await headCommit(root);
|
|
43
|
+
if (!tree || !head)
|
|
44
|
+
return null;
|
|
45
|
+
const files = {};
|
|
46
|
+
const visit = async (relative) => {
|
|
47
|
+
const normalized = relative.replaceAll("\\", "/").replace(/^\.\//u, "");
|
|
48
|
+
if (normalized === ".git" || normalized.startsWith(".git/") || normalized === AUDIT_TOOLS_DIRNAME || normalized.startsWith(AUDIT_TOOLS_DIRNAME + "/"))
|
|
49
|
+
return;
|
|
50
|
+
const stats = await lstat(join(root, relative));
|
|
51
|
+
if (stats.isSymbolicLink())
|
|
52
|
+
files[relative] = digest({ symlink: await readlink(join(root, relative)), target_hash: hashContent(await readFile(join(root, relative))) });
|
|
53
|
+
else if (stats.isDirectory()) {
|
|
54
|
+
files[relative] = "directory";
|
|
55
|
+
for (const child of (await readdir(join(root, relative))).sort())
|
|
56
|
+
await visit(join(relative, child));
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
files[relative] = hashContent(await readFile(join(root, relative)));
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
for (const path of [...new Set([...unit.allowed_files, ...unit.read_paths])].sort())
|
|
63
|
+
await visit(path);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
// Explicit test scripts can live in ignored scratch; bind their bytes too.
|
|
69
|
+
for (const command of unit.required_tests)
|
|
70
|
+
for (const argument of parseCommandString(command).slice(1)) {
|
|
71
|
+
if (argument.startsWith("-"))
|
|
72
|
+
continue;
|
|
73
|
+
const path = resolveWithinRoot(root, argument);
|
|
74
|
+
if (!path)
|
|
75
|
+
continue;
|
|
76
|
+
const rel = relative(root, path);
|
|
77
|
+
try {
|
|
78
|
+
const stats = await lstat(path);
|
|
79
|
+
if (stats.isFile() || stats.isSymbolicLink())
|
|
80
|
+
files[`test:${rel}`] = hashContent(await readFile(path));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error.code !== "ENOENT")
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
repository_root: root, run_id: state.plan.plan_id, work_item_id: itemId,
|
|
89
|
+
verified_head: head, verified_worktree: tree, declared_file_hashes: files,
|
|
90
|
+
requirements: state.plan.requirements.filter(requirement => unit.requirement_ids.includes(requirement.id)),
|
|
91
|
+
unit, review_revision_sha256: state.plan.review_revision_sha256,
|
|
92
|
+
accepted_counterexamples: (state.plan.review_counterexamples ?? []).filter(example => unit.addresses_counterexample_ids.includes(example.id)),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function triageObservationPath(artifactsDir, runId, itemId) {
|
|
96
|
+
return join(artifactsDir, "conformance-review", `${digest({ run_id: runId, work_item_id: itemId })}.observation.json`);
|
|
97
|
+
}
|
|
98
|
+
export async function readTriageObservation(artifactsDir, runId, itemId, context) {
|
|
99
|
+
const document = await readSubmissionDocument(triageObservationPath(artifactsDir, runId, itemId));
|
|
100
|
+
const parsed = ObservationSchema.safeParse(document.kind === "value" ? document.value : null);
|
|
101
|
+
if (!parsed.success || stableStringify(parsed.data.context) !== stableStringify(context))
|
|
102
|
+
return null;
|
|
103
|
+
const commands = context.unit.required_tests;
|
|
104
|
+
return stableStringify(parsed.data.verification.map(entry => entry.command)) === stableStringify(commands) ? parsed.data : null;
|
|
105
|
+
}
|
|
106
|
+
export async function checkTriageConformance(root, artifactsDir, state, itemId, context) {
|
|
107
|
+
const unit = state.plan.units.find(entry => entry.id === itemId);
|
|
108
|
+
const observation = context ? await readTriageObservation(artifactsDir, state.plan.plan_id, itemId, context) : null;
|
|
109
|
+
const checked = await checkConformanceSubject({ artifactsDir, runId: state.plan.plan_id, itemId,
|
|
110
|
+
obligationIds: unit.requirement_ids, content: { context, observation },
|
|
111
|
+
evidenceInstruction: "This is a tool-owned observation, not a host implementation result. Inspect the current working tree identified by verified_worktree and declared_file_hashes, including the required tests and contract. HEAD alone does not identify the reviewed uncommitted source. Explain why the observed tests and source satisfy every obligation. The full tree identity omits ignored files and run scratch; declared deliverables are also hashed explicitly.", });
|
|
112
|
+
if (!observation || stableStringify(await triageEvidenceContext(root, state, itemId)) !== stableStringify(context)) {
|
|
113
|
+
const paths = conformanceReviewPaths(artifactsDir, state.plan.plan_id, itemId);
|
|
114
|
+
return { ok: false, issue: { code: "conformance_review_required", work_item_id: itemId, result_path: paths.response, review_request_path: paths.request, message: "The working-tree verification context is unavailable or changed. Keep this unit blocked; resume against stable readable source before obtaining conformance review." } };
|
|
115
|
+
}
|
|
116
|
+
return checked;
|
|
117
|
+
}
|
|
118
|
+
export async function writeTriageObservation(artifactsDir, runId, itemId, context, commands) {
|
|
119
|
+
await writeJsonFile(triageObservationPath(artifactsDir, runId, itemId), { schema_version: "triage-verification/v1", producer: "triage_required_tests", context,
|
|
120
|
+
verification: commands.map(command => ({ command, outcome: "passed", exit_code: 0 })),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/** Successful terminal units must retain the receipt for their current review subject. */
|
|
124
|
+
export async function assertSuccessfulConformance(root, artifactsDir, state) {
|
|
125
|
+
if (!state.conformance_review?.enabled || !state.plan)
|
|
126
|
+
return;
|
|
127
|
+
for (const unit of state.plan.units) {
|
|
128
|
+
const item = state.items?.[unit.id];
|
|
129
|
+
if (!item || (item.status !== "resolved" && item.status !== "resolved_no_change"))
|
|
130
|
+
continue;
|
|
131
|
+
const fail = () => { throw new Error(`conformance_review_required: ${unit.id} lacks a current independently reviewed success receipt.`); };
|
|
132
|
+
const receipt = item.conformance_review;
|
|
133
|
+
if (!receipt || receipt.review.mode !== "independent")
|
|
134
|
+
fail();
|
|
135
|
+
const paths = conformanceReviewPaths(artifactsDir, state.plan.plan_id, unit.id);
|
|
136
|
+
const request = await readOptionalJsonFile(paths.request);
|
|
137
|
+
if (!request || request.binding !== receipt.binding || digest(request.content) !== receipt.binding)
|
|
138
|
+
fail();
|
|
139
|
+
const content = request.content;
|
|
140
|
+
if ("observation" in content) {
|
|
141
|
+
const context = await triageEvidenceContext(root, state, unit.id);
|
|
142
|
+
const observation = context && await readTriageObservation(artifactsDir, state.plan.plan_id, unit.id, context);
|
|
143
|
+
if (!observation || digest({ context, observation }) !== receipt.binding)
|
|
144
|
+
fail();
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const requirements = state.plan.requirements.filter(requirement => unit.requirement_ids.includes(requirement.id));
|
|
148
|
+
const examples = (state.plan.review_counterexamples ?? []).filter(example => unit.addresses_counterexample_ids.includes(example.id));
|
|
149
|
+
if (content.run_id !== state.plan.plan_id || content.work_item_id !== unit.id || content.review_revision_sha256 !== state.plan.review_revision_sha256 ||
|
|
150
|
+
stableStringify(content.unit) !== stableStringify(unit) || stableStringify(content.requirements) !== stableStringify(requirements) ||
|
|
151
|
+
stableStringify(content.accepted_counterexamples) !== stableStringify(examples))
|
|
152
|
+
fail();
|
|
153
|
+
// Host success is a review of immutable committed evidence; later units may land.
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** Refresh stale mutable-tree successes, or abandon them after an explicit halt; retain historical receipts. */
|
|
158
|
+
export async function reopenStaleTriageSuccesses(root, artifactsDir, state) {
|
|
159
|
+
if (!state.conformance_review?.enabled || !state.plan)
|
|
160
|
+
return false;
|
|
161
|
+
let reopened = false;
|
|
162
|
+
for (const unit of state.plan.units) {
|
|
163
|
+
const item = state.items?.[unit.id];
|
|
164
|
+
if (item?.status !== "resolved_no_change" || !item.conformance_review)
|
|
165
|
+
continue;
|
|
166
|
+
const request = await readOptionalJsonFile(conformanceReviewPaths(artifactsDir, state.plan.plan_id, unit.id).request);
|
|
167
|
+
if (!request || !("observation" in request.content))
|
|
168
|
+
continue;
|
|
169
|
+
const context = await triageEvidenceContext(root, state, unit.id);
|
|
170
|
+
const observation = context && await readTriageObservation(artifactsDir, state.plan.plan_id, unit.id, context);
|
|
171
|
+
if (!observation || digest({ context, observation }) !== item.conformance_review.binding) {
|
|
172
|
+
if (state.closing_context === "user_halted") {
|
|
173
|
+
item.status = "abandoned";
|
|
174
|
+
item.failure_reason = "The owner halted this run after the reviewed tool-owned success observation became stale. Historical conformance evidence is retained; current success is not claimed.";
|
|
175
|
+
item.completed_at = new Date().toISOString();
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
item.status = "blocked";
|
|
179
|
+
item.failure_reason = "The working tree changed since this tool-owned success observation was reviewed. Reverify and obtain a current bound review.";
|
|
180
|
+
delete item.completed_at;
|
|
181
|
+
}
|
|
182
|
+
reopened = true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (reopened && state.closing_context !== "user_halted")
|
|
186
|
+
state.status = "triage";
|
|
187
|
+
return reopened;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=triageConformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triageConformance.js","sourceRoot":"","sources":["../../../src/remediate/phases/triageConformance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { RemediationPlan, RemediationItemState } from "./types.js";
|
|
3
|
+
interface DecisionState {
|
|
4
|
+
plan?: RemediationPlan;
|
|
5
|
+
items?: Record<string, RemediationItemState>;
|
|
6
|
+
started_at?: string;
|
|
7
|
+
decision_applications?: DecisionApplicationReceipt[];
|
|
8
|
+
}
|
|
9
|
+
export declare const DecisionApplicationReceiptSchema: z.ZodObject<{
|
|
10
|
+
input: z.ZodEnum<["clarification_resolution.json", "triage_resolution.json"]>;
|
|
11
|
+
input_sha256: z.ZodString;
|
|
12
|
+
input_identity_sha256: z.ZodString;
|
|
13
|
+
context_sha256: z.ZodString;
|
|
14
|
+
run_id: z.ZodString;
|
|
15
|
+
revision_sha256: z.ZodString;
|
|
16
|
+
applied_at: z.ZodString;
|
|
17
|
+
cleanup_complete: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
retry_results: z.ZodArray<z.ZodObject<{
|
|
19
|
+
path: z.ZodEffects<z.ZodString, string, string>;
|
|
20
|
+
sha256: z.ZodString;
|
|
21
|
+
identity_sha256: z.ZodString;
|
|
22
|
+
}, "strict", z.ZodTypeAny, {
|
|
23
|
+
path: string;
|
|
24
|
+
sha256: string;
|
|
25
|
+
identity_sha256: string;
|
|
26
|
+
}, {
|
|
27
|
+
path: string;
|
|
28
|
+
sha256: string;
|
|
29
|
+
identity_sha256: string;
|
|
30
|
+
}>, "many">;
|
|
31
|
+
outcome: z.ZodOptional<z.ZodObject<{
|
|
32
|
+
resolved_at: z.ZodString;
|
|
33
|
+
items: z.ZodArray<z.ZodObject<{
|
|
34
|
+
unit_id: z.ZodString;
|
|
35
|
+
action: z.ZodString;
|
|
36
|
+
}, "strict", z.ZodTypeAny, {
|
|
37
|
+
unit_id: string;
|
|
38
|
+
action: string;
|
|
39
|
+
}, {
|
|
40
|
+
unit_id: string;
|
|
41
|
+
action: string;
|
|
42
|
+
}>, "many">;
|
|
43
|
+
}, "strict", z.ZodTypeAny, {
|
|
44
|
+
items: {
|
|
45
|
+
unit_id: string;
|
|
46
|
+
action: string;
|
|
47
|
+
}[];
|
|
48
|
+
resolved_at: string;
|
|
49
|
+
}, {
|
|
50
|
+
items: {
|
|
51
|
+
unit_id: string;
|
|
52
|
+
action: string;
|
|
53
|
+
}[];
|
|
54
|
+
resolved_at: string;
|
|
55
|
+
}>>;
|
|
56
|
+
}, "strict", z.ZodTypeAny, {
|
|
57
|
+
run_id: string;
|
|
58
|
+
input: "clarification_resolution.json" | "triage_resolution.json";
|
|
59
|
+
revision_sha256: string;
|
|
60
|
+
input_sha256: string;
|
|
61
|
+
input_identity_sha256: string;
|
|
62
|
+
context_sha256: string;
|
|
63
|
+
applied_at: string;
|
|
64
|
+
retry_results: {
|
|
65
|
+
path: string;
|
|
66
|
+
sha256: string;
|
|
67
|
+
identity_sha256: string;
|
|
68
|
+
}[];
|
|
69
|
+
outcome?: {
|
|
70
|
+
items: {
|
|
71
|
+
unit_id: string;
|
|
72
|
+
action: string;
|
|
73
|
+
}[];
|
|
74
|
+
resolved_at: string;
|
|
75
|
+
} | undefined;
|
|
76
|
+
cleanup_complete?: boolean | undefined;
|
|
77
|
+
}, {
|
|
78
|
+
run_id: string;
|
|
79
|
+
input: "clarification_resolution.json" | "triage_resolution.json";
|
|
80
|
+
revision_sha256: string;
|
|
81
|
+
input_sha256: string;
|
|
82
|
+
input_identity_sha256: string;
|
|
83
|
+
context_sha256: string;
|
|
84
|
+
applied_at: string;
|
|
85
|
+
retry_results: {
|
|
86
|
+
path: string;
|
|
87
|
+
sha256: string;
|
|
88
|
+
identity_sha256: string;
|
|
89
|
+
}[];
|
|
90
|
+
outcome?: {
|
|
91
|
+
items: {
|
|
92
|
+
unit_id: string;
|
|
93
|
+
action: string;
|
|
94
|
+
}[];
|
|
95
|
+
resolved_at: string;
|
|
96
|
+
} | undefined;
|
|
97
|
+
cleanup_complete?: boolean | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
export type DecisionApplicationReceipt = z.infer<typeof DecisionApplicationReceiptSchema>;
|
|
100
|
+
/** Hash and parse consumers use the same open-file snapshot, even if its path is replaced. */
|
|
101
|
+
export declare function readDecisionSnapshot(path: string): Promise<{
|
|
102
|
+
bytes: string;
|
|
103
|
+
sha256: string;
|
|
104
|
+
identity_sha256: string;
|
|
105
|
+
} | undefined>;
|
|
106
|
+
export declare function decisionContextDigest(state: DecisionState): string;
|
|
107
|
+
/** Only a durably committed receipt may authorize cleanup; mismatching replacement bytes survive. */
|
|
108
|
+
export declare function reconcileDecisionCleanup(state: DecisionState, artifactsDir: string): Promise<boolean>;
|
|
109
|
+
export {};
|
|
110
|
+
//# sourceMappingURL=decisionConsumption.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decisionConsumption.d.ts","sourceRoot":"","sources":["../../../src/remediate/state/decisionConsumption.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACxE,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,0BAA0B,EAAE,CAAC;CACtD;AAGD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWlC,CAAC;AACZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,8FAA8F;AAC9F,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAgBxI;AAwBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAUlE;AAED,qGAAqG;AACrG,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA6B3G"}
|