audit-tools 0.42.1 → 0.44.0
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/dispatch/merge-results.mjs +229 -140
- package/dispatch/validate-result.mjs +98 -40
- package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
- package/dist/audit/cli/conceptualDispatch.js +35 -3
- package/dist/audit/cli/conceptualDispatch.js.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts +9 -1
- package/dist/audit/cli/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/audit/cli/dispatch/hostHandoff.js +94 -38
- package/dist/audit/cli/dispatch/hostHandoff.js.map +1 -1
- package/dist/audit/cli/laneSubmissions.d.ts +2 -2
- package/dist/audit/cli/laneSubmissions.js +2 -2
- package/dist/audit/cli/nextStepCommand.d.ts +64 -0
- package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
- package/dist/audit/cli/nextStepCommand.js +877 -783
- package/dist/audit/cli/nextStepCommand.js.map +1 -1
- package/dist/audit/cli/nextStepHelpers.d.ts +12 -36
- package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
- package/dist/audit/cli/nextStepHelpers.js +34 -77
- package/dist/audit/cli/nextStepHelpers.js.map +1 -1
- package/dist/audit/cli/steps.d.ts +2 -2
- package/dist/audit/extractors/graph.d.ts +28 -2
- package/dist/audit/extractors/graph.d.ts.map +1 -1
- package/dist/audit/extractors/graph.js +122 -11
- package/dist/audit/extractors/graph.js.map +1 -1
- package/dist/audit/extractors/graphRoutes.d.ts +8 -0
- package/dist/audit/extractors/graphRoutes.d.ts.map +1 -1
- package/dist/audit/extractors/graphRoutes.js +71 -4
- package/dist/audit/extractors/graphRoutes.js.map +1 -1
- package/dist/audit/io/artifacts.d.ts +55 -0
- package/dist/audit/io/artifacts.d.ts.map +1 -1
- package/dist/audit/io/artifacts.js +189 -12
- package/dist/audit/io/artifacts.js.map +1 -1
- package/dist/audit/io/toolingManifest.d.ts +11 -0
- package/dist/audit/io/toolingManifest.d.ts.map +1 -1
- package/dist/audit/io/toolingManifest.js +13 -3
- package/dist/audit/io/toolingManifest.js.map +1 -1
- package/dist/audit/orchestrator/advance.d.ts +64 -0
- package/dist/audit/orchestrator/advance.d.ts.map +1 -1
- package/dist/audit/orchestrator/advance.js +191 -57
- package/dist/audit/orchestrator/advance.js.map +1 -1
- package/dist/audit/orchestrator/charterClarificationExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/charterClarificationExecutor.js +55 -21
- package/dist/audit/orchestrator/charterClarificationExecutor.js.map +1 -1
- package/dist/audit/orchestrator/flowCoverage.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowCoverage.js +7 -10
- package/dist/audit/orchestrator/flowCoverage.js.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.d.ts +54 -1
- package/dist/audit/orchestrator/flowPlanning.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowPlanning.js +77 -18
- package/dist/audit/orchestrator/flowPlanning.js.map +1 -1
- package/dist/audit/orchestrator/flowRequeue.d.ts.map +1 -1
- package/dist/audit/orchestrator/flowRequeue.js +6 -10
- package/dist/audit/orchestrator/flowRequeue.js.map +1 -1
- package/dist/audit/orchestrator/requeueFold.d.ts.map +1 -1
- package/dist/audit/orchestrator/requeueFold.js +18 -5
- package/dist/audit/orchestrator/requeueFold.js.map +1 -1
- package/dist/audit/orchestrator/staleness.d.ts +24 -1
- package/dist/audit/orchestrator/staleness.d.ts.map +1 -1
- package/dist/audit/orchestrator/staleness.js +147 -16
- package/dist/audit/orchestrator/staleness.js.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts +26 -0
- package/dist/audit/orchestrator/syntaxResolutionExecutor.d.ts.map +1 -1
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js +97 -12
- package/dist/audit/orchestrator/syntaxResolutionExecutor.js.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.d.ts.map +1 -1
- package/dist/audit/orchestrator/taskBuilder.js +111 -21
- package/dist/audit/orchestrator/taskBuilder.js.map +1 -1
- package/dist/audit/orchestrator/trivialAudit.d.ts +17 -1
- package/dist/audit/orchestrator/trivialAudit.d.ts.map +1 -1
- package/dist/audit/orchestrator/trivialAudit.js +31 -4
- package/dist/audit/orchestrator/trivialAudit.js.map +1 -1
- package/dist/audit/types/analyzerCapability.d.ts +6 -6
- package/dist/audit/types/charterRegister.d.ts +30 -12
- package/dist/audit/types/charterRegister.d.ts.map +1 -1
- package/dist/audit/types/charterRegister.js +22 -9
- package/dist/audit/types/charterRegister.js.map +1 -1
- package/dist/audit/validation/anchorGrounding.d.ts.map +1 -1
- package/dist/audit/validation/anchorGrounding.js +17 -0
- package/dist/audit/validation/anchorGrounding.js.map +1 -1
- package/dist/audit/validation/auditResults.d.ts +17 -0
- package/dist/audit/validation/auditResults.d.ts.map +1 -1
- package/dist/audit/validation/auditResults.js +50 -17
- package/dist/audit/validation/auditResults.js.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts +48 -0
- package/dist/remediate/contractPipeline/cyclicSeamResolution.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js +128 -0
- package/dist/remediate/contractPipeline/cyclicSeamResolution.js.map +1 -1
- package/dist/remediate/contractPipeline/derive.d.ts +8 -5
- package/dist/remediate/contractPipeline/derive.d.ts.map +1 -1
- package/dist/remediate/contractPipeline/derive.js +8 -16
- package/dist/remediate/contractPipeline/derive.js.map +1 -1
- package/dist/remediate/index.d.ts.map +1 -1
- package/dist/remediate/index.js +43 -2
- package/dist/remediate/index.js.map +1 -1
- package/dist/remediate/intent/intentOrdering.d.ts +13 -5
- package/dist/remediate/intent/intentOrdering.d.ts.map +1 -1
- package/dist/remediate/intent/intentOrdering.js +56 -25
- package/dist/remediate/intent/intentOrdering.js.map +1 -1
- package/dist/remediate/phases/close.d.ts +57 -2
- package/dist/remediate/phases/close.d.ts.map +1 -1
- package/dist/remediate/phases/close.js +260 -36
- package/dist/remediate/phases/close.js.map +1 -1
- package/dist/remediate/phases/triage.d.ts.map +1 -1
- package/dist/remediate/phases/triage.js +14 -2
- package/dist/remediate/phases/triage.js.map +1 -1
- package/dist/remediate/state/disposition.d.ts +26 -4
- package/dist/remediate/state/disposition.d.ts.map +1 -1
- package/dist/remediate/state/itemStatus.d.ts +33 -6
- package/dist/remediate/state/itemStatus.d.ts.map +1 -1
- package/dist/remediate/state/itemStatus.js +154 -39
- package/dist/remediate/state/itemStatus.js.map +1 -1
- package/dist/remediate/state/types.d.ts +41 -2
- package/dist/remediate/state/types.d.ts.map +1 -1
- package/dist/remediate/state/types.js.map +1 -1
- package/dist/remediate/steps/contractPipeline.d.ts +296 -15
- package/dist/remediate/steps/contractPipeline.d.ts.map +1 -1
- package/dist/remediate/steps/contractPipeline.js +1783 -1001
- package/dist/remediate/steps/contractPipeline.js.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts +137 -2
- package/dist/remediate/steps/dispatch/hostHandoff.d.ts.map +1 -1
- package/dist/remediate/steps/dispatch/hostHandoff.js +657 -59
- package/dist/remediate/steps/dispatch/hostHandoff.js.map +1 -1
- package/dist/remediate/steps/finalGate.d.ts +136 -37
- package/dist/remediate/steps/finalGate.d.ts.map +1 -1
- package/dist/remediate/steps/finalGate.js +120 -86
- package/dist/remediate/steps/finalGate.js.map +1 -1
- package/dist/remediate/steps/gateCommands.d.ts +8 -0
- package/dist/remediate/steps/gateCommands.d.ts.map +1 -1
- package/dist/remediate/steps/gateCommands.js +40 -11
- package/dist/remediate/steps/gateCommands.js.map +1 -1
- package/dist/remediate/steps/nextStep.d.ts +96 -5
- package/dist/remediate/steps/nextStep.d.ts.map +1 -1
- package/dist/remediate/steps/nextStep.js +668 -147
- package/dist/remediate/steps/nextStep.js.map +1 -1
- package/dist/remediate/steps/types.d.ts +4 -3
- package/dist/remediate/steps/types.d.ts.map +1 -1
- package/dist/remediate/steps/types.js +10 -2
- package/dist/remediate/steps/types.js.map +1 -1
- package/dist/remediate/validation/artifacts.d.ts +20 -2
- package/dist/remediate/validation/artifacts.d.ts.map +1 -1
- package/dist/remediate/validation/artifacts.js +224 -130
- package/dist/remediate/validation/artifacts.js.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.d.ts +58 -0
- package/dist/remediate/validation/contractPipelineGates.d.ts.map +1 -1
- package/dist/remediate/validation/contractPipelineGates.js +143 -27
- package/dist/remediate/validation/contractPipelineGates.js.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.d.ts +72 -25
- package/dist/shared/analyzers/acquisitionEngine.d.ts.map +1 -1
- package/dist/shared/analyzers/acquisitionEngine.js +149 -15
- package/dist/shared/analyzers/acquisitionEngine.js.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.d.ts +27 -2
- package/dist/shared/analyzers/binaryAcquisition.d.ts.map +1 -1
- package/dist/shared/analyzers/binaryAcquisition.js +149 -43
- package/dist/shared/analyzers/binaryAcquisition.js.map +1 -1
- package/dist/shared/analyzers/candidates.d.ts +9 -8
- package/dist/shared/analyzers/candidates.d.ts.map +1 -1
- package/dist/shared/analyzers/candidates.js +96 -64
- package/dist/shared/analyzers/candidates.js.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.d.ts +40 -12
- package/dist/shared/analyzers/normalizeExternal.d.ts.map +1 -1
- package/dist/shared/analyzers/normalizeExternal.js +74 -18
- package/dist/shared/analyzers/normalizeExternal.js.map +1 -1
- package/dist/shared/analyzers/rubocop.d.ts +14 -13
- package/dist/shared/analyzers/rubocop.d.ts.map +1 -1
- package/dist/shared/analyzers/rubocop.js +29 -6
- package/dist/shared/analyzers/rubocop.js.map +1 -1
- package/dist/shared/analyzers/types.d.ts +196 -13
- package/dist/shared/analyzers/types.d.ts.map +1 -1
- package/dist/shared/analyzers/types.js +122 -9
- package/dist/shared/analyzers/types.js.map +1 -1
- package/dist/shared/decompose/charterClarification.d.ts +12 -1
- package/dist/shared/decompose/charterClarification.d.ts.map +1 -1
- package/dist/shared/decompose/charterClarification.js +11 -4
- package/dist/shared/decompose/charterClarification.js.map +1 -1
- package/dist/shared/decompose/charterExtraction.d.ts +20 -10
- package/dist/shared/decompose/charterExtraction.d.ts.map +1 -1
- package/dist/shared/decompose/charterExtraction.js +52 -23
- package/dist/shared/decompose/charterExtraction.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/intent/freeFormIntentInterpreter.d.ts +12 -2
- package/dist/shared/intent/freeFormIntentInterpreter.d.ts.map +1 -1
- package/dist/shared/intent/freeFormIntentInterpreter.js +27 -22
- package/dist/shared/intent/freeFormIntentInterpreter.js.map +1 -1
- package/dist/shared/intent/pathScope.d.ts +12 -1
- package/dist/shared/intent/pathScope.d.ts.map +1 -1
- package/dist/shared/intent/pathScope.js +56 -19
- package/dist/shared/intent/pathScope.js.map +1 -1
- package/dist/shared/intent/sharedIntentData.d.ts +19 -1
- package/dist/shared/intent/sharedIntentData.d.ts.map +1 -1
- package/dist/shared/intent/sharedIntentData.js +33 -8
- package/dist/shared/intent/sharedIntentData.js.map +1 -1
- package/dist/shared/io/fileLock.d.ts +12 -0
- package/dist/shared/io/fileLock.d.ts.map +1 -1
- package/dist/shared/io/fileLock.js +48 -5
- package/dist/shared/io/fileLock.js.map +1 -1
- package/dist/shared/io/json.d.ts +13 -0
- package/dist/shared/io/json.d.ts.map +1 -1
- package/dist/shared/io/json.js +19 -1
- package/dist/shared/io/json.js.map +1 -1
- package/dist/shared/steps/stepEmissionScaffold.d.ts +69 -0
- package/dist/shared/steps/stepEmissionScaffold.d.ts.map +1 -0
- package/dist/shared/steps/stepEmissionScaffold.js +83 -0
- package/dist/shared/steps/stepEmissionScaffold.js.map +1 -0
- package/dist/shared/submission/handRecovery.d.ts.map +1 -1
- package/dist/shared/submission/handRecovery.js +69 -4
- package/dist/shared/submission/handRecovery.js.map +1 -1
- package/dist/shared/submission/submissionIdentity.d.ts +10 -1
- package/dist/shared/submission/submissionIdentity.d.ts.map +1 -1
- package/dist/shared/submission/submissionIdentity.js +12 -3
- package/dist/shared/submission/submissionIdentity.js.map +1 -1
- package/dist/shared/submission/submissionLedger.d.ts +43 -2
- package/dist/shared/submission/submissionLedger.d.ts.map +1 -1
- package/dist/shared/submission/submissionLedger.js +50 -7
- package/dist/shared/submission/submissionLedger.js.map +1 -1
- package/dist/shared/tooling/allowlistedExec.d.ts +9 -0
- package/dist/shared/tooling/allowlistedExec.d.ts.map +1 -1
- package/dist/shared/tooling/allowlistedExec.js +19 -2
- package/dist/shared/tooling/allowlistedExec.js.map +1 -1
- package/dist/shared/tooling/commandShape.d.ts +21 -0
- package/dist/shared/tooling/commandShape.d.ts.map +1 -0
- package/dist/shared/tooling/commandShape.js +120 -0
- package/dist/shared/tooling/commandShape.js.map +1 -0
- package/dist/shared/types/charter.d.ts +24 -0
- package/dist/shared/types/charter.d.ts.map +1 -1
- package/dist/shared/types/charter.js +9 -0
- package/dist/shared/types/charter.js.map +1 -1
- package/dist/shared/types/remediationOutcome.d.ts +282 -9
- package/dist/shared/types/remediationOutcome.d.ts.map +1 -1
- package/dist/shared/types/remediationOutcome.js +174 -1
- package/dist/shared/types/remediationOutcome.js.map +1 -1
- package/package.json +2 -1
- package/remediate-code.mjs +15 -0
- package/wrapper/remediate-code-wrapper-install-hosts.mjs +45 -4
- package/wrapper/remediate-code-wrapper-install-renderers.mjs +12 -2
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { readdir } from "node:fs/promises";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { readJsonFile } from "audit-tools/shared";
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
4
|
+
import { absoluteSubmissionPath, readJsonFile, readSubmissionLedger, } from "audit-tools/shared";
|
|
5
5
|
import { verificationReportPath } from "../../shared/io/auditToolsPaths.js";
|
|
6
6
|
import { StateStore } from "../state/store.js";
|
|
7
|
+
import { isInProgressStatus } from "../state/itemStatus.js";
|
|
7
8
|
import { validateClarificationRequest, validateItemSpec, validateRemediationPlan, validateTriageResolution, } from "./remediationState.js";
|
|
8
9
|
import { formatValidationIssues, isRecord, pushValidationIssue, } from "audit-tools/shared";
|
|
9
|
-
import { REMEDIATION_CLOSING_RESULT_CONTRACT_VERSION,
|
|
10
|
-
import { CONTRACT_PIPELINE_VALIDATORS, validateVerificationReport,
|
|
10
|
+
import { REMEDIATION_CLOSING_RESULT_CONTRACT_VERSION, REMEDIATION_HOST_DECISION_CONTRACT_VERSION, REMEDIATION_HOST_RESULT_CONTRACT_VERSION, REMEDIATION_STEP_CONTRACT_VERSION, } from "../steps/types.js";
|
|
11
|
+
import { CONTRACT_PIPELINE_VALIDATORS, validateVerificationReport, } from "./contractPipeline.js";
|
|
12
|
+
// The OUTCOMES variant, imported from the gate module directly (the same import
|
|
13
|
+
// the next-step gates use): it reports which gates actually ran, so an empty
|
|
14
|
+
// issues array from a gate whose input was absent is not read as proof-of-clean.
|
|
15
|
+
import { evaluateContractPipelineCrossGateOutcomes } from "./contractPipelineGates.js";
|
|
11
16
|
import { CP_ARTIFACT_NAMES, contractPipelineDir, } from "../contractPipeline/artifactStore.js";
|
|
12
17
|
import { intakePaths } from "../intake.js";
|
|
13
18
|
/**
|
|
@@ -86,100 +91,6 @@ function validateCurrentStep(value, path) {
|
|
|
86
91
|
}
|
|
87
92
|
return issues;
|
|
88
93
|
}
|
|
89
|
-
function validateDispatchPlan(value, path) {
|
|
90
|
-
const issues = [];
|
|
91
|
-
const resultPaths = [];
|
|
92
|
-
if (!isRecord(value)) {
|
|
93
|
-
pushValidationIssue(issues, path, `${path} must be an object.`);
|
|
94
|
-
return { issues, resultPaths };
|
|
95
|
-
}
|
|
96
|
-
if (value.contract_version !== REMEDIATION_DISPATCH_PLAN_CONTRACT_VERSION) {
|
|
97
|
-
pushValidationIssue(issues, `${path}.contract_version`, `${path} has unsupported contract_version.`);
|
|
98
|
-
}
|
|
99
|
-
const phase = value.phase === "implement" || value.phase === "document"
|
|
100
|
-
? value.phase
|
|
101
|
-
: undefined;
|
|
102
|
-
if (!phase) {
|
|
103
|
-
pushValidationIssue(issues, `${path}.phase`, `${path}.phase must be "document" or "implement".`);
|
|
104
|
-
}
|
|
105
|
-
for (const key of ["run_id", "repo_root", "artifacts_dir"]) {
|
|
106
|
-
if (typeof value[key] !== "string") {
|
|
107
|
-
pushValidationIssue(issues, `${path}.${key}`, `${path}.${key} must be a string.`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
if (!Array.isArray(value.items)) {
|
|
111
|
-
pushValidationIssue(issues, `${path}.items`, `${path}.items must be an array.`);
|
|
112
|
-
return { issues, phase, resultPaths };
|
|
113
|
-
}
|
|
114
|
-
for (const [index, item] of value.items.entries()) {
|
|
115
|
-
const itemPath = `${path}.items[${index}]`;
|
|
116
|
-
if (!isRecord(item)) {
|
|
117
|
-
pushValidationIssue(issues, itemPath, `${itemPath} must be an object.`);
|
|
118
|
-
continue;
|
|
119
|
-
}
|
|
120
|
-
for (const key of ["task_id", "prompt_path", "result_path"]) {
|
|
121
|
-
if (typeof item[key] !== "string") {
|
|
122
|
-
pushValidationIssue(issues, `${itemPath}.${key}`, `${itemPath}.${key} must be a string.`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
if (phase === "implement" && typeof item.block_id !== "string") {
|
|
126
|
-
pushValidationIssue(issues, `${itemPath}.block_id`, `${itemPath}.block_id must be a string for implement dispatch.`);
|
|
127
|
-
}
|
|
128
|
-
// The fit gates read this off the item and deliberately do not default it, so
|
|
129
|
-
// a plan that omits it would strand the node rather than mis-size it. Refuse
|
|
130
|
-
// it here, where the producer bug is still attributable to the producer.
|
|
131
|
-
if (phase === "implement" &&
|
|
132
|
-
(typeof item.estimated_input_tokens !== "number" ||
|
|
133
|
-
!Number.isFinite(item.estimated_input_tokens) ||
|
|
134
|
-
item.estimated_input_tokens <= 0)) {
|
|
135
|
-
pushValidationIssue(issues, `${itemPath}.estimated_input_tokens`, `${itemPath}.estimated_input_tokens must be a positive number for implement dispatch.`);
|
|
136
|
-
}
|
|
137
|
-
if (phase === "document" && typeof item.finding_id !== "string") {
|
|
138
|
-
pushValidationIssue(issues, `${itemPath}.finding_id`, `${itemPath}.finding_id must be a string for document dispatch.`);
|
|
139
|
-
}
|
|
140
|
-
if (typeof item.prompt_path === "string" && !existsSync(item.prompt_path)) {
|
|
141
|
-
pushValidationIssue(issues, `${itemPath}.prompt_path`, `${itemPath}.prompt_path points to a missing file: ${item.prompt_path}.`);
|
|
142
|
-
}
|
|
143
|
-
if (typeof item.result_path === "string") {
|
|
144
|
-
resultPaths.push(item.result_path);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return { issues, phase, resultPaths };
|
|
148
|
-
}
|
|
149
|
-
export function validateImplementWorkerResult(value, path) {
|
|
150
|
-
const issues = [];
|
|
151
|
-
if (!isRecord(value)) {
|
|
152
|
-
pushValidationIssue(issues, path, `${path} implement worker result must be an object.`);
|
|
153
|
-
return issues;
|
|
154
|
-
}
|
|
155
|
-
if (value.contract_version !== REMEDIATION_WORKER_RESULT_CONTRACT_VERSION) {
|
|
156
|
-
pushValidationIssue(issues, `${path}.contract_version`, `${path} implement worker result has unsupported contract_version.`);
|
|
157
|
-
}
|
|
158
|
-
if (value.phase !== "implement") {
|
|
159
|
-
pushValidationIssue(issues, `${path}.phase`, `${path} implement worker result phase must be implement.`);
|
|
160
|
-
}
|
|
161
|
-
if (!Array.isArray(value.item_results)) {
|
|
162
|
-
pushValidationIssue(issues, `${path}.item_results`, `${path} implement worker result item_results must be an array.`);
|
|
163
|
-
return issues;
|
|
164
|
-
}
|
|
165
|
-
for (const [index, result] of value.item_results.entries()) {
|
|
166
|
-
const resultPath = `${path}.item_results[${index}]`;
|
|
167
|
-
if (!isRecord(result)) {
|
|
168
|
-
pushValidationIssue(issues, resultPath, `${resultPath} must be an object.`);
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (typeof result.finding_id !== "string") {
|
|
172
|
-
pushValidationIssue(issues, `${resultPath}.finding_id`, `${resultPath}.finding_id must be a string.`);
|
|
173
|
-
}
|
|
174
|
-
if (result.status !== "resolved" &&
|
|
175
|
-
result.status !== "resolved_no_change" &&
|
|
176
|
-
result.status !== "blocked" &&
|
|
177
|
-
result.status !== "needs_clarification") {
|
|
178
|
-
pushValidationIssue(issues, `${resultPath}.status`, `${resultPath}.status must be resolved, resolved_no_change, blocked, or needs_clarification.`);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return issues;
|
|
182
|
-
}
|
|
183
94
|
function validateClosingResult(value, path) {
|
|
184
95
|
const issues = [];
|
|
185
96
|
if (!isRecord(value)) {
|
|
@@ -213,35 +124,199 @@ function validateClosingResult(value, path) {
|
|
|
213
124
|
}
|
|
214
125
|
return issues;
|
|
215
126
|
}
|
|
216
|
-
|
|
127
|
+
/**
|
|
128
|
+
* The ONE filename rule a host submission lands under: the sha256 of the
|
|
129
|
+
* submission id. This is the join the discovery scan needs.
|
|
130
|
+
*/
|
|
131
|
+
const HOST_SUBMISSION_FILENAME = /^[0-9a-f]{64}\.json$/u;
|
|
132
|
+
/** OS-agnostic identity for two absolute paths derived in the same process. */
|
|
133
|
+
function pathKey(path) {
|
|
134
|
+
return resolve(path).replaceAll("\\", "/");
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The run id owning a file beneath `runs/` — its first path segment, which is
|
|
138
|
+
* the run directory the boundary mints. Undefined for anything not actually
|
|
139
|
+
* under `runs/`, so a caller filtering on it excludes rather than guesses.
|
|
140
|
+
*/
|
|
141
|
+
function runDirectoryOf(runsDir, file) {
|
|
142
|
+
const rel = relative(resolve(runsDir), resolve(file));
|
|
143
|
+
if (rel.length === 0 || isAbsolute(rel) || rel.startsWith("..")) {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
return rel.split(/[\\/]/u)[0];
|
|
147
|
+
}
|
|
148
|
+
function validateHostSubmission(value, path) {
|
|
149
|
+
const issues = [];
|
|
150
|
+
if (!isRecord(value)) {
|
|
151
|
+
pushValidationIssue(issues, path, `${path} host submission must be an object.`);
|
|
152
|
+
return issues;
|
|
153
|
+
}
|
|
154
|
+
const version = value.contract_version;
|
|
155
|
+
const isDecision = version === REMEDIATION_HOST_DECISION_CONTRACT_VERSION;
|
|
156
|
+
if (version !== REMEDIATION_HOST_RESULT_CONTRACT_VERSION && !isDecision) {
|
|
157
|
+
pushValidationIssue(issues, `${path}.contract_version`, `${path} host submission has unsupported contract_version.`);
|
|
158
|
+
return issues;
|
|
159
|
+
}
|
|
160
|
+
for (const key of ["result_id", "run_id", "work_item_id", "prompt_sha256"]) {
|
|
161
|
+
if (typeof value[key] !== "string" || value[key].length === 0) {
|
|
162
|
+
pushValidationIssue(issues, `${path}.${key}`, `${path}.${key} must be a non-empty string.`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (isDecision) {
|
|
166
|
+
if (!isRecord(value.outcome) || typeof value.outcome.status !== "string") {
|
|
167
|
+
pushValidationIssue(issues, `${path}.outcome`, `${path}.outcome must be an object carrying a status string.`);
|
|
168
|
+
}
|
|
169
|
+
return issues;
|
|
170
|
+
}
|
|
171
|
+
validateStringArray(value.changed_files, `${path}.changed_files`, issues);
|
|
172
|
+
if (Array.isArray(value.changed_files) && value.changed_files.length === 0) {
|
|
173
|
+
pushValidationIssue(issues, `${path}.changed_files`, `${path}.changed_files must be non-empty for a landed result.`);
|
|
174
|
+
}
|
|
175
|
+
for (const key of ["commit_evidence", "worktree_evidence", "acceptance", "merge"]) {
|
|
176
|
+
if (!isRecord(value[key])) {
|
|
177
|
+
pushValidationIssue(issues, `${path}.${key}`, `${path}.${key} must be an object.`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!Array.isArray(value.test_evidence)) {
|
|
181
|
+
pushValidationIssue(issues, `${path}.test_evidence`, `${path}.test_evidence must be an array.`);
|
|
182
|
+
}
|
|
183
|
+
return issues;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Work-item (block) ids this run has ALREADY recorded a submission for, read
|
|
187
|
+
* from the records the acceptance path persists — never from the live workload,
|
|
188
|
+
* which is rewritten frontier-by-frontier and therefore remembers nothing.
|
|
189
|
+
*
|
|
190
|
+
* Two sources, both artifactsDir-scoped:
|
|
191
|
+
* - state.json item records, via `!isInProgressStatus`.
|
|
192
|
+
* - the submission ledger, whose events name the submission they accepted.
|
|
193
|
+
*
|
|
194
|
+
* `!isInProgressStatus` DELIBERATELY OVER-APPROXIMATES. It is not "a submission
|
|
195
|
+
* was ingested for this block" — `ignored`, `deemed_inappropriate` and
|
|
196
|
+
* `abandoned` are all reachable with no submission at all (the planning review
|
|
197
|
+
* gate's batched decline; the force-close backstop). The over-approximation is
|
|
198
|
+
* the point, in both directions: it errs toward never flagging accepted-or-
|
|
199
|
+
* adjacent work, and it is also what keeps a `blocked` or `needs_clarification`
|
|
200
|
+
* item's DECISION document — a real host submission that resolved nothing — from
|
|
201
|
+
* being reported as stale. The cost of admitting a block that never submitted is
|
|
202
|
+
* one path that matches no file on disk; the cost of missing one is a false
|
|
203
|
+
* "stale" against real work, so the bias is chosen, not accidental.
|
|
204
|
+
*
|
|
205
|
+
* A malformed or absent ledger contributes nothing rather than failing the scan:
|
|
206
|
+
* this set only ever WIDENS what counts as referenced, so an empty answer is the
|
|
207
|
+
* strict one.
|
|
208
|
+
*/
|
|
209
|
+
async function recordedSubmissionIds(artifactsDir, state) {
|
|
210
|
+
const recorded = new Set();
|
|
211
|
+
for (const item of Object.values(state?.items ?? {})) {
|
|
212
|
+
if (item.block_id && !isInProgressStatus(item.status)) {
|
|
213
|
+
recorded.add(item.block_id);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
try {
|
|
217
|
+
for (const event of await readSubmissionLedger(artifactsDir)) {
|
|
218
|
+
if (event.submission_id)
|
|
219
|
+
recorded.add(event.submission_id);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
// See above: an unreadable ledger narrows the set, never breaks the scan.
|
|
224
|
+
}
|
|
225
|
+
return recorded;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Scan the dispatch/result surface: the host workloads the boundary writes and
|
|
229
|
+
* the submissions it reads back, joined on the filenames the tool actually
|
|
230
|
+
* mints. Returns what it examined, so a caller can tell a clean run from an
|
|
231
|
+
* unscanned one.
|
|
232
|
+
*
|
|
233
|
+
* The join is the live frontier UNION THE RUN'S RECORDED HISTORY. `prepare`
|
|
234
|
+
* REWRITES host-workload.json with the current dependency frontier alone, and an
|
|
235
|
+
* accepted block leaves that frontier — so a join against the live workload by
|
|
236
|
+
* itself reported every accepted submission of the run as stale, which is the
|
|
237
|
+
* whole result surface of any run that got past its first level. Recorded
|
|
238
|
+
* submissions are re-minted through the SAME shared identity rule the boundary
|
|
239
|
+
* writes with, so this is the producer's join, not a second copy of it.
|
|
240
|
+
*
|
|
241
|
+
* Scoped to ONE run. `runs/` accumulates: nothing deletes a finished run's
|
|
242
|
+
* directory, and the records a stale check joins against — state.json, the
|
|
243
|
+
* ledger — describe the CURRENT run only. Scanning every run directory therefore
|
|
244
|
+
* reported the previous run's accepted submissions as stale from run 2 onward,
|
|
245
|
+
* permanently. A run directory that is not this run's is skipped whole: its
|
|
246
|
+
* result surface was validated while it WAS the current run, and this call has
|
|
247
|
+
* nothing left to say about it.
|
|
248
|
+
*/
|
|
249
|
+
async function validateHostSubmissions(artifactsDir, root, issues,
|
|
250
|
+
/**
|
|
251
|
+
* Work-item ids the persisted records say this run already has a submission
|
|
252
|
+
* for — see {@link recordedSubmissionIds}. Empty when there is no state and no
|
|
253
|
+
* ledger, which leaves the join exactly as strict as the live workload alone.
|
|
254
|
+
*/
|
|
255
|
+
recordedIds,
|
|
256
|
+
/**
|
|
257
|
+
* The run whose directory is in scope — the plan id, which IS the host run id
|
|
258
|
+
* (`stateRunId`). Undefined when there is no persisted plan to name a current
|
|
259
|
+
* run, and then every run directory is scanned, exactly as before.
|
|
260
|
+
*/
|
|
261
|
+
currentRunId) {
|
|
217
262
|
const runsDir = join(artifactsDir, "runs");
|
|
218
|
-
const files = await collectFiles(runsDir)
|
|
219
|
-
|
|
220
|
-
const
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
263
|
+
const files = (await collectFiles(runsDir)).filter((file) => currentRunId === undefined ||
|
|
264
|
+
runDirectoryOf(runsDir, file) === currentRunId);
|
|
265
|
+
const submissions = files.filter((file) => HOST_SUBMISSION_FILENAME.test(basename(file)));
|
|
266
|
+
const bound = new Set();
|
|
267
|
+
const submissionDirs = new Set();
|
|
268
|
+
for (const file of files.filter((candidate) => basename(candidate) === "host-workload.json")) {
|
|
269
|
+
const workload = await readJsonForValidation(file, issues);
|
|
270
|
+
if (workload === undefined)
|
|
225
271
|
continue;
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
if (!phase)
|
|
272
|
+
if (!isRecord(workload) || !Array.isArray(workload.work_items)) {
|
|
273
|
+
issues.push(`${file} is not a host workload with a work_items array.`);
|
|
229
274
|
continue;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
275
|
+
}
|
|
276
|
+
for (const item of workload.work_items) {
|
|
277
|
+
if (isRecord(item) && typeof item.result_path === "string") {
|
|
278
|
+
const absolute = join(root, item.result_path);
|
|
279
|
+
bound.add(pathKey(absolute));
|
|
280
|
+
// Derived from the workload's own bound paths rather than by rebuilding
|
|
281
|
+
// the run directory here: the boundary owns where submissions land, and
|
|
282
|
+
// a second copy of that layout would drift.
|
|
283
|
+
submissionDirs.add(dirname(absolute));
|
|
284
|
+
}
|
|
238
285
|
}
|
|
239
286
|
}
|
|
240
|
-
for (const
|
|
241
|
-
|
|
242
|
-
|
|
287
|
+
for (const submissionDir of submissionDirs) {
|
|
288
|
+
for (const workItemId of recordedIds) {
|
|
289
|
+
try {
|
|
290
|
+
bound.add(pathKey(absoluteSubmissionPath({ root, submissionDir }, workItemId)));
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
// An id the shared rule refuses to mint a path for cannot have produced
|
|
294
|
+
// a submission, so it contributes nothing to the join.
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
// AN EMPTY SCAN IS NOT A PASS. If a live workload's bound submissions exist on
|
|
299
|
+
// disk and the discovery filter matched none of them, the join is broken —
|
|
300
|
+
// which is exactly the state that returned `ok` with issue_count 0 for a run
|
|
301
|
+
// whose whole result surface went unchecked. Report it rather than pass.
|
|
302
|
+
const boundOnDisk = [...bound.keys()].filter((path) => existsSync(path));
|
|
303
|
+
if (boundOnDisk.length > 0 && submissions.length === 0) {
|
|
304
|
+
issues.push(`No host submissions were discovered under ${join(artifactsDir, "runs")}, yet ` +
|
|
305
|
+
`${String(boundOnDisk.length)} bound submission file(s) exist on disk — the validator's ` +
|
|
306
|
+
"filename join no longer matches what the host handoff mints.");
|
|
307
|
+
}
|
|
308
|
+
let validated = 0;
|
|
309
|
+
for (const submission of submissions) {
|
|
310
|
+
const payload = await readJsonForValidation(submission, issues);
|
|
311
|
+
if (payload === undefined)
|
|
312
|
+
continue;
|
|
313
|
+
validated += 1;
|
|
314
|
+
pushErrorIssues(issues, validateHostSubmission(payload, submission));
|
|
315
|
+
if (bound.size > 0 && !bound.has(pathKey(submission))) {
|
|
316
|
+
issues.push(`Stale host submission is not referenced by any host workload: ${submission}.`);
|
|
243
317
|
}
|
|
244
318
|
}
|
|
319
|
+
return { discovered: submissions.length, validated };
|
|
245
320
|
}
|
|
246
321
|
export async function validateArtifacts(artifactsDir, root = ".") {
|
|
247
322
|
const issues = [];
|
|
@@ -298,7 +373,7 @@ export async function validateArtifacts(artifactsDir, root = ".") {
|
|
|
298
373
|
if (currentStep) {
|
|
299
374
|
pushErrorIssues(issues, validateCurrentStep(currentStep, "current-step.json"));
|
|
300
375
|
}
|
|
301
|
-
await
|
|
376
|
+
const submissionScan = await validateHostSubmissions(artifactsDir, root, issues, await recordedSubmissionIds(artifactsDir, state), state?.plan?.plan_id);
|
|
302
377
|
const closingResultPath = join(artifactsDir, "remediation-closing-result.json");
|
|
303
378
|
const closingResult = await readJsonForValidation(closingResultPath, issues);
|
|
304
379
|
if (closingResult) {
|
|
@@ -323,21 +398,34 @@ export async function validateArtifacts(artifactsDir, root = ".") {
|
|
|
323
398
|
cpPayloads.set(name, payload);
|
|
324
399
|
pushErrorIssues(issues, CONTRACT_PIPELINE_VALIDATORS[name](payload, name), `${cpPath}:`);
|
|
325
400
|
}
|
|
326
|
-
// Cross-artifact + decomposition gates.
|
|
327
|
-
//
|
|
328
|
-
//
|
|
329
|
-
//
|
|
330
|
-
//
|
|
331
|
-
//
|
|
332
|
-
//
|
|
401
|
+
// Cross-artifact + decomposition gates. Each gate is individually tolerant of
|
|
402
|
+
// an absent input (returns [] when its primary payload is missing/malformed),
|
|
403
|
+
// so an incomplete pipeline never fabricates errors — only present artifacts
|
|
404
|
+
// are gated.
|
|
405
|
+
//
|
|
406
|
+
// NOT the same function as the singular self-check: this plural sweep calls
|
|
407
|
+
// `evaluateContractPipelineCrossGateOutcomes` (which reports which gates ran)
|
|
408
|
+
// while `index.ts`'s `validate-artifact --name X` calls
|
|
409
|
+
// `evaluateContractPipelineCrossGates` (issues only). They are two entry
|
|
410
|
+
// points over one gate list, so they CAN diverge — what holds them together is
|
|
411
|
+
// the drift test that runs both over the same payloads
|
|
412
|
+
// (tests/remediate/validate-artifact-cross-gates.test.ts, "is additive"), not a
|
|
413
|
+
// shared call. Collapsing the pair into one evaluator is tracked as backlog
|
|
414
|
+
// work.
|
|
415
|
+
let gatesEvaluated = 0;
|
|
416
|
+
let gatesSkipped = 0;
|
|
333
417
|
if (cpPayloads.size > 0) {
|
|
334
418
|
const findingEnumeration = await readJsonForValidation(intakePaths(artifactsDir).findingEnumeration, issues);
|
|
335
|
-
for (const
|
|
419
|
+
for (const outcome of evaluateContractPipelineCrossGateOutcomes({
|
|
336
420
|
payloads: cpPayloads,
|
|
337
421
|
findingEnumeration,
|
|
338
422
|
root,
|
|
339
423
|
})) {
|
|
340
|
-
|
|
424
|
+
if (outcome.evaluated)
|
|
425
|
+
gatesEvaluated += 1;
|
|
426
|
+
else
|
|
427
|
+
gatesSkipped += 1;
|
|
428
|
+
pushErrorIssues(issues, outcome.issues);
|
|
341
429
|
}
|
|
342
430
|
}
|
|
343
431
|
// Verification report at the root artifacts dir (from FINDING-027).
|
|
@@ -350,6 +438,12 @@ export async function validateArtifacts(artifactsDir, root = ".") {
|
|
|
350
438
|
status: issues.length > 0 ? "error" : "ok",
|
|
351
439
|
issue_count: issues.length,
|
|
352
440
|
issues,
|
|
441
|
+
scan: {
|
|
442
|
+
submissions_discovered: submissionScan.discovered,
|
|
443
|
+
submissions_validated: submissionScan.validated,
|
|
444
|
+
gates_evaluated: gatesEvaluated,
|
|
445
|
+
gates_skipped: gatesSkipped,
|
|
446
|
+
},
|
|
353
447
|
};
|
|
354
448
|
}
|
|
355
449
|
//# sourceMappingURL=artifacts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/remediate/validation/artifacts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../src/remediate/validation/artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,27 @@ export declare function validateGoalIdConsistency(artifacts: Record<string, unkn
|
|
|
39
39
|
* is responsible for ensuring the artifacts exist before calling this gate).
|
|
40
40
|
*/
|
|
41
41
|
export declare function validateImplementationDAGIntegrity(dagPayload: unknown, obligationLedgerPayload: unknown, counterexamplePayload: unknown, judgeReportPayload: unknown): ValidationIssue[];
|
|
42
|
+
/**
|
|
43
|
+
* Testable obligation kinds — THE single source of truth for whether an
|
|
44
|
+
* obligation needs a test-plan spec (derive.ts's buildTestValidatorPlanScaffold)
|
|
45
|
+
* and whether the coverage gate below requires that spec to be filled
|
|
46
|
+
* (validatePairedObligations). MNT-e10b9d9b: previously duplicated by hand as
|
|
47
|
+
* TESTABLE_KINDS in derive.ts and TESTABLE_OBLIGATION_KINDS here, and the two
|
|
48
|
+
* copies had already diverged — derive.ts failed OPEN on an unrecognized kind
|
|
49
|
+
* (conservatively testable) while this file failed CLOSED (silently skipped,
|
|
50
|
+
* i.e. treated as non-testable, so a scaffold-offered spec was never actually
|
|
51
|
+
* required). Single-sourced here; derive.ts imports isTestablePhaseObligation
|
|
52
|
+
* from this module instead of re-declaring it.
|
|
53
|
+
*/
|
|
54
|
+
export declare const TESTABLE_OBLIGATION_KINDS: Set<string>;
|
|
55
|
+
/**
|
|
56
|
+
* testable (invariant/behavioral) → true; the structural contract-conformance
|
|
57
|
+
* kind → false; an unrecognized/unexpected kind → true (fail-OPEN into the
|
|
58
|
+
* paired-test gate rather than silently skipping coverage — matches
|
|
59
|
+
* derive.ts's original scaffold semantics, which this predicate now also
|
|
60
|
+
* governs on the coverage-gate side, closing the divergence).
|
|
61
|
+
*/
|
|
62
|
+
export declare function isTestablePhaseObligation(kind: string): boolean;
|
|
42
63
|
/**
|
|
43
64
|
* OBL-CO-01 / DC-5 — paired-obligation gate (fail-closed, change-scoped).
|
|
44
65
|
*
|
|
@@ -221,6 +242,32 @@ export declare function validateDecompositionFileScope(moduleDecompositionPayloa
|
|
|
221
242
|
* a partial single-artifact self-check, must never fabricate an issue).
|
|
222
243
|
*/
|
|
223
244
|
export declare function validateFinalizedModuleSetPreserved(draftedModuleContracts: unknown, finalizedModuleContracts: unknown): ValidationIssue[];
|
|
245
|
+
/**
|
|
246
|
+
* Whether one of the eight cross-artifact gates genuinely ran (`evaluated`),
|
|
247
|
+
* or was skipped because its primary input was absent, malformed, or (digest
|
|
248
|
+
* coverage only) its source was not enumerable — OBS-cca3801c / OBS-cca3801c-2.
|
|
249
|
+
* An empty `issues` array alone cannot distinguish "ran clean" from "never
|
|
250
|
+
* ran"; `evaluated` can. `reason` is present only when `evaluated` is false.
|
|
251
|
+
*
|
|
252
|
+
* INV-CPGV-OUTCOME-RECORD-OWNER: this module owns this record. The finalized
|
|
253
|
+
* module contract's fuller design places the shared type in audit-tools/shared
|
|
254
|
+
* so both adopters (contract-pipeline-orchestration,
|
|
255
|
+
* remediate-nextstep-and-final-gate) import one shape — that relocation needs
|
|
256
|
+
* an edit outside this work item's write scope (src/remediate/validation/ +
|
|
257
|
+
* src/remediate/contractPipeline/ only), so it is deliberately deferred to
|
|
258
|
+
* whichever work item can touch src/shared. The type is defined here,
|
|
259
|
+
* additively, alongside the gates it classifies, so the OBS-cca3801c /
|
|
260
|
+
* OBS-cca3801c-2 signalling obligation is discharged now rather than blocked
|
|
261
|
+
* on that follow-up; see CP-BLOCK-CP-NODE-14's result deviations.
|
|
262
|
+
*/
|
|
263
|
+
export interface GateOutcome {
|
|
264
|
+
/** Stable identity, in evaluateContractPipelineCrossGates's fixed canonical order. */
|
|
265
|
+
gate: "paired_obligations" | "evidence_threaded" | "digest_coverage" | "reconciliation_derivation" | "design_spec" | "implementation_dag_integrity" | "decomposition_file_scope" | "finalized_module_set_preserved";
|
|
266
|
+
evaluated: boolean;
|
|
267
|
+
issues: ValidationIssue[];
|
|
268
|
+
/** Present only when `evaluated` is false. */
|
|
269
|
+
reason?: string;
|
|
270
|
+
}
|
|
224
271
|
/** Input to {@link evaluateContractPipelineCrossGates}. */
|
|
225
272
|
export interface ContractPipelineCrossGateInputs {
|
|
226
273
|
/** Every contract-pipeline artifact payload currently known, by name. An
|
|
@@ -275,4 +322,15 @@ export interface ContractPipelineCrossGateInputs {
|
|
|
275
322
|
* lacking its input contributes an empty array, not a fabricated issue.
|
|
276
323
|
*/
|
|
277
324
|
export declare function evaluateContractPipelineCrossGates(inputs: ContractPipelineCrossGateInputs): ValidationIssue[][];
|
|
325
|
+
/**
|
|
326
|
+
* Evaluate the SAME 8 cross-artifact gates {@link evaluateContractPipelineCrossGates}
|
|
327
|
+
* calls, in the SAME canonical order, additionally classifying each as
|
|
328
|
+
* evaluated or skipped-with-reason (OBS-cca3801c / OBS-cca3801c-2, see
|
|
329
|
+
* {@link GateOutcome}). Additive: evaluateContractPipelineCrossGates keeps its
|
|
330
|
+
* existing `ValidationIssue[][]` shape unchanged for its existing callers
|
|
331
|
+
* (validation/artifacts.ts, index.ts) — this is a parallel, richer view for a
|
|
332
|
+
* caller that must refuse an empty `issues` array as proof-of-clean without
|
|
333
|
+
* checking `evaluated` first.
|
|
334
|
+
*/
|
|
335
|
+
export declare function evaluateContractPipelineCrossGateOutcomes(inputs: ContractPipelineCrossGateInputs): GateOutcome[];
|
|
278
336
|
//# sourceMappingURL=contractPipelineGates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractPipelineGates.d.ts","sourceRoot":"","sources":["../../../src/remediate/validation/contractPipelineGates.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,OAAO,EAUb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AAIzF;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,OAAO,EACnB,gBAAgB,CAAC,EAAE,OAAO,GACzB,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"contractPipelineGates.d.ts","sourceRoot":"","sources":["../../../src/remediate/validation/contractPipelineGates.ts"],"names":[],"mappings":"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"}
|