codex-workflow-v2 2.0.0-beta.13.5 → 2.0.0-beta.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -1
- package/dist/reviewer-runtime-build.json +13 -9
- package/dist/src/alpha6/root-cause-replan-carryover.d.ts +17 -0
- package/dist/src/alpha6/root-cause-replan-carryover.js +372 -0
- package/dist/src/alpha6/root-cause-replan-carryover.js.map +1 -0
- package/dist/src/cli-actions.d.ts +1 -1
- package/dist/src/cli-actions.js +1 -0
- package/dist/src/cli-actions.js.map +1 -1
- package/dist/src/cli.js +7 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +35 -0
- package/dist/src/dependency-provenance.d.ts +3 -2
- package/dist/src/dependency-provenance.js +33 -2
- package/dist/src/dependency-provenance.js.map +1 -1
- package/dist/src/gateway-handshake.js +1 -0
- package/dist/src/gateway-handshake.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/workflow.d.ts +2 -0
- package/dist/src/workflow.js +279 -9
- package/dist/src/workflow.js.map +1 -1
- package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
- package/docs/release.md +29 -0
- package/package.json +1 -1
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +37 -0
- package/schemas/task.schema.json +55 -0
package/README.md
CHANGED
|
@@ -54,6 +54,9 @@ automation do not import anything from the parent V1 project.
|
|
|
54
54
|
- beta.12.16 check-support authority: migration checksum/catalog modules imported directly by an
|
|
55
55
|
approved check must be owned by the producing Step; an already-running Step receives only the
|
|
56
56
|
exact machine-proved support path without a Human replan or a synthetic second failure;
|
|
57
|
+
- beta.13.6 binds dirty work retained by a mechanical root-cause replan to its source failure,
|
|
58
|
+
exact replacement Plan and audit, current authorization, unchanged HEAD and content hash;
|
|
59
|
+
navigation and execution share that assessment instead of demanding a clean checkout after replan;
|
|
57
60
|
- read-only Milestone progress projection with stable membership ordinals and replacement links;
|
|
58
61
|
- one project-monotonic `#NNN` chat registry with compact titles, exact readback, and deterministic fallback;
|
|
59
62
|
- narrow, read-only alpha.6 strict-review rescue preflight for the lifecycle deadlock fixed in alpha.7;
|
|
@@ -77,7 +80,7 @@ cross-machine synchronization are not part of its contract.
|
|
|
77
80
|
Node.js 22 or newer is required. Consumers pin the exact package version:
|
|
78
81
|
|
|
79
82
|
```bash
|
|
80
|
-
npm install --save-dev --save-exact codex-workflow-v2@2.0.0-beta.13.
|
|
83
|
+
npm install --save-dev --save-exact codex-workflow-v2@2.0.0-beta.13.6
|
|
81
84
|
npx codex-workflow gateway handshake --repo .
|
|
82
85
|
npx codex-workflow doctor --repo .
|
|
83
86
|
```
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"protocol": "codex-workflow-runtime-build-manifest-v1",
|
|
3
3
|
"packageName": "codex-workflow-v2",
|
|
4
|
-
"packageVersion": "2.0.0-beta.13.
|
|
5
|
-
"packageManifestSha256": "
|
|
4
|
+
"packageVersion": "2.0.0-beta.13.6",
|
|
5
|
+
"packageManifestSha256": "cf50d0d565c9f86727b724c03301c9d419fe948ecd744d3047354c5b4d871068",
|
|
6
6
|
"requiredEntrypoints": [
|
|
7
7
|
"dist/src/cli.js",
|
|
8
8
|
"dist/src/gateway-handshake.js",
|
|
@@ -70,6 +70,10 @@
|
|
|
70
70
|
"path": "dist/src/alpha6/review.js",
|
|
71
71
|
"sha256": "4eb05ae8fda755c70844f4b62e8bdc0d837376adc7f7ddec27e893fa1e9d3496"
|
|
72
72
|
},
|
|
73
|
+
{
|
|
74
|
+
"path": "dist/src/alpha6/root-cause-replan-carryover.js",
|
|
75
|
+
"sha256": "474123d4fce82dbfb1648c5fb9dc4561d7503f8de349fe419300ce75c22a5ba0"
|
|
76
|
+
},
|
|
73
77
|
{
|
|
74
78
|
"path": "dist/src/alpha6/store-sidecars.js",
|
|
75
79
|
"sha256": "74245dfe73ef7950ee0aff5d86c35c999347f39364efaba623857847372da2eb"
|
|
@@ -92,11 +96,11 @@
|
|
|
92
96
|
},
|
|
93
97
|
{
|
|
94
98
|
"path": "dist/src/cli-actions.js",
|
|
95
|
-
"sha256": "
|
|
99
|
+
"sha256": "136c3824b7f4b6eb8281d11e1045fc2153d25055fcf05f68ef6e2f2833e3c11b"
|
|
96
100
|
},
|
|
97
101
|
{
|
|
98
102
|
"path": "dist/src/cli.js",
|
|
99
|
-
"sha256": "
|
|
103
|
+
"sha256": "362831edd8b889937ecc321ebc8012c348222ecf7d5c6369542e9153e918b53c"
|
|
100
104
|
},
|
|
101
105
|
{
|
|
102
106
|
"path": "dist/src/contracts.js",
|
|
@@ -116,7 +120,7 @@
|
|
|
116
120
|
},
|
|
117
121
|
{
|
|
118
122
|
"path": "dist/src/dependency-provenance.js",
|
|
119
|
-
"sha256": "
|
|
123
|
+
"sha256": "3b8d66bb25764600c73341603d584ab81fe197c2051ec28cdbdf6066b3ee2aaf"
|
|
120
124
|
},
|
|
121
125
|
{
|
|
122
126
|
"path": "dist/src/diagnostics.js",
|
|
@@ -148,7 +152,7 @@
|
|
|
148
152
|
},
|
|
149
153
|
{
|
|
150
154
|
"path": "dist/src/gateway-handshake.js",
|
|
151
|
-
"sha256": "
|
|
155
|
+
"sha256": "17eaf24bda26450989ea72d5af0f15e2701f3840a87be6f4d4c528f39713b4f0"
|
|
152
156
|
},
|
|
153
157
|
{
|
|
154
158
|
"path": "dist/src/git.js",
|
|
@@ -312,11 +316,11 @@
|
|
|
312
316
|
},
|
|
313
317
|
{
|
|
314
318
|
"path": "dist/src/version.js",
|
|
315
|
-
"sha256": "
|
|
319
|
+
"sha256": "ef47a378d9627be5b4b49b601411b42fd1e8875f76fa02b99fddb451118e3afe"
|
|
316
320
|
},
|
|
317
321
|
{
|
|
318
322
|
"path": "dist/src/workflow.js",
|
|
319
|
-
"sha256": "
|
|
323
|
+
"sha256": "83ecbc00e0e11fabf4df133fdb02a60d2ca713bf40c6d66af170a5c46671d6ca"
|
|
320
324
|
}
|
|
321
325
|
],
|
|
322
326
|
"runtimeDependencies": [
|
|
@@ -1100,5 +1104,5 @@
|
|
|
1100
1104
|
]
|
|
1101
1105
|
}
|
|
1102
1106
|
],
|
|
1103
|
-
"fingerprint": "
|
|
1107
|
+
"fingerprint": "889f2687686e3668315040901586bbc11e666c157fefcc93537944a3ca3109e9"
|
|
1104
1108
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RootCauseReplanDirtyCarryoverCompatibility, TaskState } from '../contracts.js';
|
|
2
|
+
import type { FileStateStore } from '../state/store.js';
|
|
3
|
+
export interface RootCauseReplanDirtyCarryoverAssessment {
|
|
4
|
+
applicable: boolean;
|
|
5
|
+
eligible: boolean;
|
|
6
|
+
compatibility: RootCauseReplanDirtyCarryoverCompatibility | null;
|
|
7
|
+
blockers: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Proves that dirty bytes from the terminal repeated-cause failure survived one semantic
|
|
11
|
+
* corrective Plan replacement and are already inside the replacement Step's declared scope.
|
|
12
|
+
* This proof never grants or appends an allowedWrite.
|
|
13
|
+
*/
|
|
14
|
+
export declare function assessRootCauseReplanDirtyCarryover(store: FileStateStore, repositoryRoot: string, task: TaskState, stepId: string, options?: {
|
|
15
|
+
historyHead?: string;
|
|
16
|
+
binding?: RootCauseReplanDirtyCarryoverCompatibility | null;
|
|
17
|
+
}): RootCauseReplanDirtyCarryoverAssessment;
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
import { normalizePlanKnowledgeBinding, readVerifiedPlanArtifact } from '../domain/plan-semantics.js';
|
|
2
|
+
import { pathAllowed } from '../domain/validation.js';
|
|
3
|
+
import { hashCanonical } from '../lifecycle/fingerprint.js';
|
|
4
|
+
import { changedFiles, currentBranch, gitIsAncestor, headCommit } from '../repository.js';
|
|
5
|
+
import { validateTaskHistory } from '../git.js';
|
|
6
|
+
import { assertMechanicalFeasibilityFresh } from './mechanical-feasibility.js';
|
|
7
|
+
import { hashDirtyWorktree } from './downstream-proof.js';
|
|
8
|
+
import { hashCompletedSteps, hashExecutionAuthorization } from './preexecution-replan.js';
|
|
9
|
+
import { readCurrentPlanRiskAudit, readPlanRiskAuditEvents } from './plan-risk.js';
|
|
10
|
+
import { deriveRollingCauseDecision, readRemediationEvents } from './remediation.js';
|
|
11
|
+
import { readTaskC1Posture, readTaskHandoffEvents } from './handoff.js';
|
|
12
|
+
/**
|
|
13
|
+
* Proves that dirty bytes from the terminal repeated-cause failure survived one semantic
|
|
14
|
+
* corrective Plan replacement and are already inside the replacement Step's declared scope.
|
|
15
|
+
* This proof never grants or appends an allowedWrite.
|
|
16
|
+
*/
|
|
17
|
+
export function assessRootCauseReplanDirtyCarryover(store, repositoryRoot, task, stepId, options = {}) {
|
|
18
|
+
const historyHead = options.historyHead ?? options.binding?.sourceHeadCommit ?? headCommit(repositoryRoot);
|
|
19
|
+
const step = task.steps.find((candidate) => candidate.id === stepId) ?? null;
|
|
20
|
+
const allStepEvents = readRemediationEvents(store, task)
|
|
21
|
+
.filter((event) => event.stepId === stepId && event.failureKind === 'checks-failed');
|
|
22
|
+
const applicable = Boolean(step && task.planHash && allStepEvents.length >= 2);
|
|
23
|
+
if (!applicable || !step || !task.planHash) {
|
|
24
|
+
return { applicable, eligible: false, compatibility: null, blockers: [] };
|
|
25
|
+
}
|
|
26
|
+
const blockers = [];
|
|
27
|
+
const dirtyFiles = changedFiles(repositoryRoot).sort();
|
|
28
|
+
if (task.status !== 'ready')
|
|
29
|
+
blockers.push('The replacement Task must be execution-authorized and ready.');
|
|
30
|
+
if (step.status !== 'planned' || step.evidence !== null) {
|
|
31
|
+
blockers.push(`The replacement Step ${stepId} must be planned with no execution evidence.`);
|
|
32
|
+
}
|
|
33
|
+
if (task.steps.some((candidate) => candidate.status === 'in_progress'))
|
|
34
|
+
blockers.push('No Step may be in progress.');
|
|
35
|
+
if (task.workspaceOwner !== 'local')
|
|
36
|
+
blockers.push('Corrective carryover requires the recorded local Task workspace.');
|
|
37
|
+
if (!task.taskBranch || currentBranch(repositoryRoot) !== task.taskBranch) {
|
|
38
|
+
blockers.push('Current branch must equal the recorded Task branch.');
|
|
39
|
+
}
|
|
40
|
+
if (dirtyFiles.length === 0)
|
|
41
|
+
blockers.push('Corrective carryover requires retained dirty product bytes.');
|
|
42
|
+
const outsideAllowed = dirtyFiles.filter((file) => !pathAllowed(file, step.allowedWrites));
|
|
43
|
+
const forbidden = dirtyFiles.filter((file) => pathAllowed(file, step.forbiddenScope));
|
|
44
|
+
if (outsideAllowed.length > 0)
|
|
45
|
+
blockers.push(`Dirty files fall outside ${stepId} allowedWrites: ${outsideAllowed.join(', ')}`);
|
|
46
|
+
if (forbidden.length > 0)
|
|
47
|
+
blockers.push(`Dirty files intersect ${stepId} forbiddenScope: ${forbidden.join(', ')}`);
|
|
48
|
+
const incompleteDependencies = step.dependencies.filter((dependency) => !['completed', 'skipped'].includes(task.steps.find((candidate) => candidate.id === dependency)?.status ?? 'blocked'));
|
|
49
|
+
if (incompleteDependencies.length > 0)
|
|
50
|
+
blockers.push(`Replacement Step dependencies are incomplete: ${incompleteDependencies.join(', ')}`);
|
|
51
|
+
const audits = readPlanRiskAuditEvents(store, task);
|
|
52
|
+
const eventPlan = (event) => {
|
|
53
|
+
const revision = event.failureEvidence.executionTaskRevision;
|
|
54
|
+
if (revision === undefined)
|
|
55
|
+
return null;
|
|
56
|
+
const planHash = [...audits].reverse().find((audit) => audit.taskRevision <= revision)?.planHash ?? null;
|
|
57
|
+
if (!planHash || !task.planHash)
|
|
58
|
+
return null;
|
|
59
|
+
try {
|
|
60
|
+
return {
|
|
61
|
+
planHash,
|
|
62
|
+
semanticHash: normalizePlanKnowledgeBinding(readVerifiedPlanArtifact(store.taskRoot(task.projectId, task.id), planHash, task.planHash), `remediation ${event.eventId}`).semanticHash,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const terminal = allStepEvents.at(-1);
|
|
70
|
+
const terminalPlan = eventPlan(terminal);
|
|
71
|
+
const sourcePlanHash = terminalPlan?.planHash ?? null;
|
|
72
|
+
if (!sourcePlanHash || sourcePlanHash === task.planHash) {
|
|
73
|
+
blockers.push('The terminal repeated-cause event must resolve to one replaced source Plan.');
|
|
74
|
+
}
|
|
75
|
+
let cycleStart = allStepEvents.length - 1;
|
|
76
|
+
while (cycleStart > 0
|
|
77
|
+
&& eventPlan(allStepEvents[cycleStart - 1])?.semanticHash === terminalPlan?.semanticHash)
|
|
78
|
+
cycleStart -= 1;
|
|
79
|
+
const sourceCycle = allStepEvents.slice(cycleStart);
|
|
80
|
+
const priorEvents = allStepEvents.slice(0, cycleStart);
|
|
81
|
+
if (!terminalPlan || sourceCycle.some((event) => eventPlan(event)?.semanticHash !== terminalPlan.semanticHash)) {
|
|
82
|
+
blockers.push('The source remediation cycle has ambiguous Plan bindings.');
|
|
83
|
+
}
|
|
84
|
+
if (deriveRollingCauseDecision(sourceCycle, priorEvents) !== 'root-cause-replan') {
|
|
85
|
+
blockers.push('The source cycle does not end in a repeated authoritative mechanical cause.');
|
|
86
|
+
}
|
|
87
|
+
const priorFingerprints = new Set([...priorEvents, ...sourceCycle.slice(0, -1)]
|
|
88
|
+
.flatMap((event) => event.causeBindings?.filter((cause) => cause.authority === 'mechanical')
|
|
89
|
+
.map((cause) => cause.causeFingerprint) ?? []));
|
|
90
|
+
const repeated = [...new Set(terminal.causeBindings
|
|
91
|
+
?.filter((cause) => cause.authority === 'mechanical' && !cause.planConflict && priorFingerprints.has(cause.causeFingerprint))
|
|
92
|
+
.map((cause) => cause.causeFingerprint) ?? [])];
|
|
93
|
+
if (repeated.length !== 1)
|
|
94
|
+
blockers.push('The terminal failure must identify exactly one repeated mechanical cause.');
|
|
95
|
+
if (terminal.failureEvidence.executionTaskRevision === undefined) {
|
|
96
|
+
blockers.push('The terminal failure is missing its execution Task revision.');
|
|
97
|
+
}
|
|
98
|
+
if (!terminal.failureEvidence.dirtyWorktreeHash)
|
|
99
|
+
blockers.push('The terminal failure is missing its dirty-worktree hash.');
|
|
100
|
+
if (terminal.failureEvidence.completionCommit !== historyHead) {
|
|
101
|
+
blockers.push('Repository HEAD changed after the terminal repeated-cause failure.');
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
if ((task.invalidatedStepCommits ?? []).length > 0) {
|
|
105
|
+
throw new Error('Legacy carryover cannot time-classify invalidated completed-Step commits.');
|
|
106
|
+
}
|
|
107
|
+
const sourceHistoryTask = {
|
|
108
|
+
...task,
|
|
109
|
+
systemCommits: task.systemCommits.filter((commit) => gitIsAncestor(repositoryRoot, commit, historyHead)),
|
|
110
|
+
dependencyProvenanceRecoveries: (task.dependencyProvenanceRecoveries ?? []).filter((record) => gitIsAncestor(repositoryRoot, record.commitSha, historyHead)),
|
|
111
|
+
};
|
|
112
|
+
validateTaskHistory(repositoryRoot, sourceHistoryTask, historyHead);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
blockers.push(`Completed Step authority is not exactly retained at the source boundary: ${error instanceof Error ? error.message : String(error)}`);
|
|
116
|
+
}
|
|
117
|
+
let dirtyWorktreeHash = null;
|
|
118
|
+
try {
|
|
119
|
+
dirtyWorktreeHash = hashDirtyWorktree(repositoryRoot, dirtyFiles);
|
|
120
|
+
if (dirtyWorktreeHash !== terminal.failureEvidence.dirtyWorktreeHash) {
|
|
121
|
+
blockers.push('Dirty paths or bytes changed after the terminal repeated-cause failure.');
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
126
|
+
}
|
|
127
|
+
const replacementAuthorityPlanHash = options.binding?.replacementPlanHash ?? task.planHash;
|
|
128
|
+
let sourcePlanSemanticHash = null;
|
|
129
|
+
let replacementPlanSemanticHash = null;
|
|
130
|
+
try {
|
|
131
|
+
if (!sourcePlanHash)
|
|
132
|
+
throw new Error('Source Plan hash is unavailable.');
|
|
133
|
+
sourcePlanSemanticHash = normalizePlanKnowledgeBinding(readVerifiedPlanArtifact(store.taskRoot(task.projectId, task.id), sourcePlanHash, task.planHash), 'root-cause source').semanticHash;
|
|
134
|
+
replacementPlanSemanticHash = normalizePlanKnowledgeBinding(readVerifiedPlanArtifact(store.taskRoot(task.projectId, task.id), replacementAuthorityPlanHash, task.planHash), 'root-cause replacement').semanticHash;
|
|
135
|
+
if (sourcePlanSemanticHash === replacementPlanSemanticHash) {
|
|
136
|
+
blockers.push('Corrective carryover requires a semantic replacement Plan.');
|
|
137
|
+
}
|
|
138
|
+
const currentSemanticHash = normalizePlanKnowledgeBinding(readVerifiedPlanArtifact(store.taskRoot(task.projectId, task.id), task.planHash, task.planHash), 'current corrective Plan').semanticHash;
|
|
139
|
+
if (currentSemanticHash !== replacementPlanSemanticHash) {
|
|
140
|
+
blockers.push('The current Plan is not a knowledge-only descendant of the corrective replacement Plan.');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
145
|
+
}
|
|
146
|
+
let currentAudit = null;
|
|
147
|
+
let replacementSourceAudit = null;
|
|
148
|
+
try {
|
|
149
|
+
currentAudit = readCurrentPlanRiskAudit(store, task);
|
|
150
|
+
const sourceAudit = options.binding
|
|
151
|
+
? audits.find((audit) => audit.eventId === options.binding.replacementPlanRiskAuditEventId
|
|
152
|
+
&& audit.eventHash === options.binding.replacementPlanRiskAuditEventHash
|
|
153
|
+
&& audit.planHash === options.binding.replacementPlanHash) ?? null
|
|
154
|
+
: currentAudit?.audit ?? null;
|
|
155
|
+
replacementSourceAudit = sourceAudit;
|
|
156
|
+
if (!currentAudit || currentAudit.audit.planHash !== task.planHash
|
|
157
|
+
|| !currentAudit.reviewRequiredStepIds.includes(stepId)
|
|
158
|
+
|| !sourceAudit
|
|
159
|
+
|| sourceAudit.taskRevision <= (terminal.failureEvidence.executionTaskRevision ?? Number.MAX_SAFE_INTEGER)) {
|
|
160
|
+
blockers.push('A fresh replacement Plan Risk Audit must guard the exact corrective Step.');
|
|
161
|
+
}
|
|
162
|
+
if (sourceAudit && currentAudit
|
|
163
|
+
&& JSON.stringify(sourceAudit.stepClassifications) !== JSON.stringify(currentAudit.audit.stepClassifications)) {
|
|
164
|
+
blockers.push('Context refresh changed the replacement Plan Risk Audit classifications or proof bindings.');
|
|
165
|
+
}
|
|
166
|
+
if (sourceAudit && currentAudit) {
|
|
167
|
+
assertContiguousKnowledgeRebindChain(store.taskRoot(task.projectId, task.id), task, replacementAuthorityPlanHash, task.planHash, audits, sourceAudit, currentAudit.audit);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
172
|
+
}
|
|
173
|
+
const authorization = [...task.authorizations].reverse().find((event) => event.kind === 'execution' && event.decision === 'approved') ?? null;
|
|
174
|
+
const sourceAuthorization = options.binding
|
|
175
|
+
? task.authorizations.find((event) => hashExecutionAuthorization(event.kind === 'execution' && event.decision === 'superseded'
|
|
176
|
+
? { ...event, decision: 'approved' }
|
|
177
|
+
: event) === options.binding.executionAuthorizationHash
|
|
178
|
+
&& event.planHash === options.binding.replacementPlanHash
|
|
179
|
+
&& event.headCommit === options.binding.executionAuthorizationHead) ?? null
|
|
180
|
+
: authorization;
|
|
181
|
+
if (!authorization) {
|
|
182
|
+
blockers.push('The replacement Plan requires a current execution authorization.');
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
validateAuthorization(store, repositoryRoot, task, authorization, options.binding ? headCommit(repositoryRoot) : historyHead, blockers);
|
|
186
|
+
}
|
|
187
|
+
if (!sourceAuthorization)
|
|
188
|
+
blockers.push('The original corrective execution authorization is missing from immutable Task history.');
|
|
189
|
+
if (task.steps.some((candidate) => candidate.status === 'completed' && !candidate.evidence)) {
|
|
190
|
+
blockers.push('Every retained completed Step must preserve its execution evidence.');
|
|
191
|
+
}
|
|
192
|
+
const c1Posture = readTaskC1Posture(store, task);
|
|
193
|
+
const handoffEvents = readTaskHandoffEvents(store, task);
|
|
194
|
+
const sourceTaskRevision = options.binding?.sourceTaskRevision ?? task.revision;
|
|
195
|
+
const latestClaim = [...handoffEvents].reverse().find((event) => event.eventType === 'claim') ?? null;
|
|
196
|
+
const replacementAuditTime = replacementSourceAudit ? Date.parse(replacementSourceAudit.recordedAt) : null;
|
|
197
|
+
const claimTime = latestClaim ? Date.parse(latestClaim.recordedAt) : null;
|
|
198
|
+
const claimEvent = latestClaim
|
|
199
|
+
&& latestClaim.taskRevision === sourceTaskRevision
|
|
200
|
+
&& latestClaim.planHash === replacementAuthorityPlanHash
|
|
201
|
+
&& latestClaim.briefHash === task.briefHash
|
|
202
|
+
&& (!replacementSourceAudit || (claimTime !== null && Number.isFinite(claimTime)
|
|
203
|
+
&& replacementAuditTime !== null && Number.isFinite(replacementAuditTime)
|
|
204
|
+
&& claimTime >= replacementAuditTime
|
|
205
|
+
&& latestClaim.taskRevision > replacementSourceAudit.taskRevision))
|
|
206
|
+
? latestClaim
|
|
207
|
+
: null;
|
|
208
|
+
const correctiveYield = [...handoffEvents].reverse().find((event) => event.eventType === 'yield'
|
|
209
|
+
&& event.taskRevision === (terminal.failureEvidence.executionTaskRevision ?? -2) + 1
|
|
210
|
+
&& event.planHash !== null
|
|
211
|
+
&& eventPlan(terminal)?.semanticHash === normalizePlanKnowledgeBinding(readVerifiedPlanArtifact(store.taskRoot(task.projectId, task.id), event.planHash, task.planHash), `corrective yield ${event.eventId}`).semanticHash
|
|
212
|
+
&& Number.isFinite(Date.parse(event.recordedAt))
|
|
213
|
+
&& Number.isFinite(Date.parse(terminal.recordedAt))
|
|
214
|
+
&& Date.parse(event.recordedAt) >= Date.parse(terminal.recordedAt)
|
|
215
|
+
&& (!replacementSourceAudit || (replacementAuditTime !== null && Number.isFinite(replacementAuditTime)
|
|
216
|
+
&& Date.parse(event.recordedAt) <= replacementAuditTime
|
|
217
|
+
&& event.taskRevision < replacementSourceAudit.taskRevision))) ?? null;
|
|
218
|
+
if (c1Posture.state !== 'claimed' || !claimEvent || claimEvent.actor !== c1Posture.claimant) {
|
|
219
|
+
blockers.push('Corrective carryover requires the retained claimed C1 actor and its immutable claim event.');
|
|
220
|
+
}
|
|
221
|
+
if (!correctiveYield)
|
|
222
|
+
blockers.push('The terminal repeated cause is missing its completed corrective-yield boundary.');
|
|
223
|
+
if (blockers.length > 0 || !sourcePlanHash || !sourcePlanSemanticHash || !replacementPlanSemanticHash
|
|
224
|
+
|| !dirtyWorktreeHash || !currentAudit || !authorization || !sourceAuthorization
|
|
225
|
+
|| terminal.failureEvidence.executionTaskRevision === undefined || repeated.length !== 1
|
|
226
|
+
|| c1Posture.state !== 'claimed' || !claimEvent || !correctiveYield) {
|
|
227
|
+
return { applicable: true, eligible: false, compatibility: null, blockers: [...new Set(blockers)] };
|
|
228
|
+
}
|
|
229
|
+
const base = {
|
|
230
|
+
kind: 'root-cause-corrective-replan-dirty-carryover',
|
|
231
|
+
taskId: task.id,
|
|
232
|
+
sourceTaskRevision,
|
|
233
|
+
stepId,
|
|
234
|
+
sourcePlanHash,
|
|
235
|
+
sourcePlanSemanticHash,
|
|
236
|
+
replacementPlanHash: replacementAuthorityPlanHash,
|
|
237
|
+
replacementPlanSemanticHash,
|
|
238
|
+
sourceHeadCommit: terminal.failureEvidence.completionCommit,
|
|
239
|
+
remediationEvents: sourceCycle.map((event) => ({
|
|
240
|
+
eventId: event.eventId,
|
|
241
|
+
eventHash: event.eventHash,
|
|
242
|
+
attemptOrdinal: event.attemptOrdinal,
|
|
243
|
+
})),
|
|
244
|
+
terminalRemediationEventId: terminal.eventId,
|
|
245
|
+
terminalRemediationEventHash: terminal.eventHash,
|
|
246
|
+
terminalExecutionTaskRevision: terminal.failureEvidence.executionTaskRevision,
|
|
247
|
+
repeatedCauseFingerprint: repeated[0],
|
|
248
|
+
correctiveYieldEventId: correctiveYield.eventId,
|
|
249
|
+
correctiveYieldEventHash: correctiveYield.eventHash,
|
|
250
|
+
dirtyFiles,
|
|
251
|
+
dirtyWorktreeHash,
|
|
252
|
+
replacementPlanRiskAuditEventId: options.binding?.replacementPlanRiskAuditEventId ?? currentAudit.audit.eventId,
|
|
253
|
+
replacementPlanRiskAuditEventHash: options.binding?.replacementPlanRiskAuditEventHash ?? currentAudit.audit.eventHash,
|
|
254
|
+
executionAuthorizationHash: options.binding?.executionAuthorizationHash ?? hashExecutionAuthorization(sourceAuthorization),
|
|
255
|
+
executionAuthorizationHead: options.binding?.executionAuthorizationHead ?? sourceAuthorization.headCommit,
|
|
256
|
+
completedStepsHash: hashCompletedSteps(task),
|
|
257
|
+
c1ClaimEventId: claimEvent.eventId,
|
|
258
|
+
c1ClaimEventHash: claimEvent.eventHash,
|
|
259
|
+
claimant: c1Posture.claimant,
|
|
260
|
+
};
|
|
261
|
+
const compatibility = { ...base, compatibilityHash: hashCanonical({
|
|
262
|
+
domain: 'codex-workflow/root-cause-corrective-replan-dirty-carryover/v1',
|
|
263
|
+
...base,
|
|
264
|
+
}) };
|
|
265
|
+
if (options.binding && JSON.stringify(compatibility) !== JSON.stringify(options.binding)) {
|
|
266
|
+
return {
|
|
267
|
+
applicable: true,
|
|
268
|
+
eligible: false,
|
|
269
|
+
compatibility: null,
|
|
270
|
+
blockers: ['Recorded corrective carryover binding no longer matches the immutable Task, Plan, audit, authorization, C1, or dirty-byte evidence.'],
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
applicable: true,
|
|
275
|
+
eligible: true,
|
|
276
|
+
compatibility,
|
|
277
|
+
blockers: [],
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
function assertContiguousKnowledgeRebindChain(taskRoot, task, sourcePlanHash, currentPlanHash, audits, sourceAudit, currentAudit) {
|
|
281
|
+
if (sourcePlanHash === currentPlanHash) {
|
|
282
|
+
if (sourceAudit.eventHash !== currentAudit.eventHash) {
|
|
283
|
+
throw new Error('Corrective source Plan has ambiguous current Plan Risk Audit authority.');
|
|
284
|
+
}
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
for (let index = 0; index < task.knowledgeRebinds.length; index += 1) {
|
|
288
|
+
const timestamp = Date.parse(task.knowledgeRebinds[index].recordedAt);
|
|
289
|
+
if (!Number.isFinite(timestamp)
|
|
290
|
+
|| (index > 0 && timestamp <= Date.parse(task.knowledgeRebinds[index - 1].recordedAt))) {
|
|
291
|
+
throw new Error('Task knowledge-rebind timestamps are not finite and strictly increasing.');
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
let expected = sourcePlanHash;
|
|
295
|
+
const seen = new Set();
|
|
296
|
+
const start = task.knowledgeRebinds.findIndex((record) => record.previousPlanHash === sourcePlanHash);
|
|
297
|
+
if (start < 0)
|
|
298
|
+
throw new Error('Corrective Plan has no append-only Knowledge rebind chain.');
|
|
299
|
+
const chain = task.knowledgeRebinds.slice(start);
|
|
300
|
+
for (const record of chain) {
|
|
301
|
+
if (record.previousPlanHash !== expected) {
|
|
302
|
+
throw new Error('Corrective Plan knowledge-rebind provenance forks or skips a Plan hash.');
|
|
303
|
+
}
|
|
304
|
+
if (seen.has(record.reboundPlanHash) || record.reboundPlanHash === record.previousPlanHash) {
|
|
305
|
+
throw new Error('Corrective Plan knowledge-rebind chain is cyclic.');
|
|
306
|
+
}
|
|
307
|
+
seen.add(record.reboundPlanHash);
|
|
308
|
+
const before = readVerifiedPlanArtifact(taskRoot, record.previousPlanHash, currentPlanHash);
|
|
309
|
+
const after = readVerifiedPlanArtifact(taskRoot, record.reboundPlanHash, currentPlanHash);
|
|
310
|
+
if (normalizePlanKnowledgeBinding(before, 'corrective rebind source').normalized
|
|
311
|
+
!== normalizePlanKnowledgeBinding(after, 'corrective rebind target').normalized) {
|
|
312
|
+
throw new Error('Corrective Plan rebind changed semantics beyond the Knowledge Map binding.');
|
|
313
|
+
}
|
|
314
|
+
expected = record.reboundPlanHash;
|
|
315
|
+
}
|
|
316
|
+
if (expected !== currentPlanHash) {
|
|
317
|
+
throw new Error('Corrective Plan knowledge-rebind provenance is not contiguous to the current Plan.');
|
|
318
|
+
}
|
|
319
|
+
const planHashes = [sourcePlanHash, ...chain.map((record) => record.reboundPlanHash)];
|
|
320
|
+
const auditChain = planHashes.map((planHash) => audits.filter((audit) => audit.planHash === planHash));
|
|
321
|
+
if (auditChain.some((matches) => matches.length !== 1)
|
|
322
|
+
|| auditChain[0][0].eventHash !== sourceAudit.eventHash
|
|
323
|
+
|| auditChain.at(-1)[0].eventHash !== currentAudit.eventHash) {
|
|
324
|
+
throw new Error('Corrective Plan Risk Audit rebound chain is missing or ambiguous.');
|
|
325
|
+
}
|
|
326
|
+
const sourceAuditIndex = audits.indexOf(auditChain[0][0]);
|
|
327
|
+
if (sourceAuditIndex < 0
|
|
328
|
+
|| sourceAuditIndex + auditChain.length !== audits.length
|
|
329
|
+
|| auditChain.some((matches, index) => audits[sourceAuditIndex + index] !== matches[0])) {
|
|
330
|
+
throw new Error('Corrective Plan Risk Audit rebound evidence is not the contiguous current audit suffix.');
|
|
331
|
+
}
|
|
332
|
+
chain.forEach((record, index) => {
|
|
333
|
+
const before = auditChain[index][0];
|
|
334
|
+
const after = auditChain[index + 1][0];
|
|
335
|
+
const expectedSummary = `${before.summary} Rebound automatically after content-only Task context refresh.`;
|
|
336
|
+
if (before.knowledgeMapRevision !== record.fromKnowledgeMapRevision
|
|
337
|
+
|| before.knowledgeMapHash !== record.fromKnowledgeMapHash
|
|
338
|
+
|| after.knowledgeMapRevision !== record.toKnowledgeMapRevision
|
|
339
|
+
|| after.knowledgeMapHash !== record.toKnowledgeMapHash
|
|
340
|
+
|| after.previousEventHash !== before.eventHash
|
|
341
|
+
|| after.taskId !== before.taskId
|
|
342
|
+
|| after.briefHash !== before.briefHash
|
|
343
|
+
|| after.briefHash !== task.briefHash
|
|
344
|
+
|| before.planner !== after.planner
|
|
345
|
+
|| before.auditor !== after.auditor
|
|
346
|
+
|| before.decision !== after.decision
|
|
347
|
+
|| before.splitRationale !== after.splitRationale
|
|
348
|
+
|| after.summary !== expectedSummary
|
|
349
|
+
|| before.structuralProductionEdgeAuthority !== after.structuralProductionEdgeAuthority
|
|
350
|
+
|| JSON.stringify(before.stepClassifications) !== JSON.stringify(after.stepClassifications)) {
|
|
351
|
+
throw new Error('Corrective Plan Risk Audit rebound does not match a knowledge-only Plan hop.');
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
function validateAuthorization(store, repositoryRoot, task, authorization, expectedHead, blockers) {
|
|
356
|
+
try {
|
|
357
|
+
const root = store.taskRoot(task.projectId, task.id);
|
|
358
|
+
const briefHash = store.hashArtifact(root, 'brief.md');
|
|
359
|
+
const planHash = store.hashArtifact(root, 'plan.md');
|
|
360
|
+
if (task.briefHash !== briefHash || task.planHash !== planHash
|
|
361
|
+
|| authorization.briefHash !== briefHash || authorization.planHash !== planHash
|
|
362
|
+
|| !authorization.mechanicalFeasibility || authorization.headCommit !== expectedHead) {
|
|
363
|
+
blockers.push('Execution authorization does not bind the current Brief, Plan, and HEAD.');
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
assertMechanicalFeasibilityFresh(repositoryRoot, task, authorization.mechanicalFeasibility, briefHash, planHash);
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
//# sourceMappingURL=root-cause-replan-carryover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root-cause-replan-carryover.js","sourceRoot":"","sources":["../../../src/alpha6/root-cause-replan-carryover.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
declare const CLI_ACTIONS_LITERAL: {
|
|
8
8
|
readonly gateway: readonly ["handshake"];
|
|
9
|
-
readonly update: readonly ["preflight", "pending-review-source-preflight", "pending-review-dependency-preflight", "pending-review-dependency-recover", "rescue-preflight", "dependency-provenance-preflight", "dependency-provenance-recover", "historical-step-dependency-preflight", "historical-step-dependency-recover", "downstream-proof-dependency-preflight", "downstream-proof-dependency-recover", "downstream-proof-replan-update-preflight", "downstream-proof-replan-dependency-preflight", "downstream-proof-replan-dependency-recover", "plan-integrity-update-preflight", "plan-integrity-dependency-preflight", "plan-integrity-dependency-recover"];
|
|
9
|
+
readonly update: readonly ["preflight", "pending-review-source-preflight", "pending-review-dependency-preflight", "pending-review-dependency-recover", "rescue-preflight", "dependency-provenance-preflight", "corrective-carryover-preflight", "dependency-provenance-recover", "historical-step-dependency-preflight", "historical-step-dependency-recover", "downstream-proof-dependency-preflight", "downstream-proof-dependency-recover", "downstream-proof-replan-update-preflight", "downstream-proof-replan-dependency-preflight", "downstream-proof-replan-dependency-recover", "plan-integrity-update-preflight", "plan-integrity-dependency-preflight", "plan-integrity-dependency-recover"];
|
|
10
10
|
readonly delegation: readonly ["prepare", "grant", "list", "show", "revoke"];
|
|
11
11
|
readonly 'project-memory': readonly ["scan", "show", "status", "approve", "reconcile"];
|
|
12
12
|
readonly state: readonly ["migrate", "adoption-prepare", "adoption-apply"];
|
package/dist/src/cli-actions.js
CHANGED
|
@@ -13,6 +13,7 @@ const CLI_ACTIONS_LITERAL = {
|
|
|
13
13
|
'pending-review-dependency-recover',
|
|
14
14
|
'rescue-preflight',
|
|
15
15
|
'dependency-provenance-preflight',
|
|
16
|
+
'corrective-carryover-preflight',
|
|
16
17
|
'dependency-provenance-recover',
|
|
17
18
|
'historical-step-dependency-preflight',
|
|
18
19
|
'historical-step-dependency-recover',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-actions.js","sourceRoot":"","sources":["../../src/cli-actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG;IAC1B,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,MAAM,EAAE;QACN,WAAW;QACX,iCAAiC;QACjC,qCAAqC;QACrC,mCAAmC;QACnC,kBAAkB;QAClB,iCAAiC;QACjC,+BAA+B;QAC/B,sCAAsC;QACtC,oCAAoC;QACpC,uCAAuC;QACvC,qCAAqC;QACrC,0CAA0C;QAC1C,8CAA8C;QAC9C,4CAA4C;QAC5C,iCAAiC;QACjC,qCAAqC;QACrC,mCAAmC;KACpC;IACD,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;IACpE,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;IACxD,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC;IACnE,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC;IACrD,IAAI,EAAE;QACJ,MAAM;QACN,yBAAyB;QACzB,qBAAqB;QACrB,UAAU;QACV,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;QACX,iBAAiB;QACjB,OAAO;QACP,KAAK;QACL,eAAe;QACf,QAAQ;QACR,eAAe;QACf,eAAe;QACf,eAAe;QACf,sBAAsB;QACtB,aAAa;QACb,oBAAoB;QACpB,oBAAoB;QACpB,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,0BAA0B;QAC1B,iCAAiC;QACjC,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,kBAAkB;QAClB,0BAA0B;QAC1B,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,sCAAsC;QACtC,oCAAoC;QACpC,SAAS;QACT,iBAAiB;QACjB,iBAAiB;QACjB,cAAc;QACd,OAAO;QACP,2BAA2B;QAC3B,UAAU;QACV,iBAAiB;QACjB,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,OAAO;QACP,eAAe;KAChB;IACD,SAAS,EAAE;QACT,SAAS;QACT,MAAM;QACN,UAAU;QACV,UAAU;QACV,yBAAyB;QACzB,sBAAsB;QACtB,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,WAAW;QACX,UAAU;QACV,QAAQ;QACR,QAAQ;KACT;IACD,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAgD,mBAAmB,CAAC;AAO5F,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAY,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAkC,CAAC;IACrE,OAAO,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli-actions.js","sourceRoot":"","sources":["../../src/cli-actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG;IAC1B,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,MAAM,EAAE;QACN,WAAW;QACX,iCAAiC;QACjC,qCAAqC;QACrC,mCAAmC;QACnC,kBAAkB;QAClB,iCAAiC;QACjC,gCAAgC;QAChC,+BAA+B;QAC/B,sCAAsC;QACtC,oCAAoC;QACpC,uCAAuC;QACvC,qCAAqC;QACrC,0CAA0C;QAC1C,8CAA8C;QAC9C,4CAA4C;QAC5C,iCAAiC;QACjC,qCAAqC;QACrC,mCAAmC;KACpC;IACD,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;IAC1D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;IACpE,KAAK,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,gBAAgB,CAAC;IACxD,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,CAAC;IACnE,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC;IACrD,IAAI,EAAE;QACJ,MAAM;QACN,yBAAyB;QACzB,qBAAqB;QACrB,UAAU;QACV,kBAAkB;QAClB,iBAAiB;QACjB,WAAW;QACX,iBAAiB;QACjB,OAAO;QACP,KAAK;QACL,eAAe;QACf,QAAQ;QACR,eAAe;QACf,eAAe;QACf,eAAe;QACf,sBAAsB;QACtB,aAAa;QACb,oBAAoB;QACpB,oBAAoB;QACpB,6BAA6B;QAC7B,0BAA0B;QAC1B,wBAAwB;QACxB,0BAA0B;QAC1B,iCAAiC;QACjC,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,kBAAkB;QAClB,0BAA0B;QAC1B,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,2BAA2B;QAC3B,sCAAsC;QACtC,oCAAoC;QACpC,SAAS;QACT,iBAAiB;QACjB,iBAAiB;QACjB,cAAc;QACd,OAAO;QACP,2BAA2B;QAC3B,UAAU;QACV,iBAAiB;QACjB,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,OAAO;QACP,eAAe;KAChB;IACD,SAAS,EAAE;QACT,SAAS;QACT,MAAM;QACN,UAAU;QACV,UAAU;QACV,yBAAyB;QACzB,sBAAsB;QACtB,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,WAAW;QACX,UAAU;QACV,QAAQ;QACR,QAAQ;KACT;IACD,KAAK,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAgD,mBAAmB,CAAC;AAO5F,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAY,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAkC,CAAC;IACrE,OAAO,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;AAC9C,CAAC"}
|
package/dist/src/cli.js
CHANGED
|
@@ -26,6 +26,10 @@ const CLI_HELP_SPECS = {
|
|
|
26
26
|
requiredOptions: ['--id'],
|
|
27
27
|
optionalOptions: ['--repo', '--json'],
|
|
28
28
|
},
|
|
29
|
+
'update corrective-carryover-preflight': {
|
|
30
|
+
requiredOptions: ['--id'],
|
|
31
|
+
optionalOptions: ['--repo', '--json'],
|
|
32
|
+
},
|
|
29
33
|
'task historical-step-provenance-preflight': {
|
|
30
34
|
requiredOptions: ['--id'],
|
|
31
35
|
optionalOptions: ['--repo', '--json'],
|
|
@@ -531,6 +535,9 @@ async function dispatch(args) {
|
|
|
531
535
|
if (noun === 'update' && action === 'dependency-provenance-preflight') {
|
|
532
536
|
return workflow.dependencyProvenanceRecoveryPreflight(repo, required(args, 'id'));
|
|
533
537
|
}
|
|
538
|
+
if (noun === 'update' && action === 'corrective-carryover-preflight') {
|
|
539
|
+
return workflow.correctiveCarryoverUpdatePreflight(repo, required(args, 'id'));
|
|
540
|
+
}
|
|
534
541
|
if (noun === 'task' && action === 'historical-step-provenance-preflight') {
|
|
535
542
|
return workflow.historicalStepProvenanceRecoveryPreflight(repo, required(args, 'id'));
|
|
536
543
|
}
|