codex-workflow-v2 2.0.0-beta.13.3 → 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 +23 -11
- package/dist/src/alpha6/plan-risk.d.ts +1 -0
- package/dist/src/alpha6/plan-risk.js +9 -6
- package/dist/src/alpha6/plan-risk.js.map +1 -1
- package/dist/src/alpha6/preexecution-replan.d.ts +38 -0
- package/dist/src/alpha6/preexecution-replan.js +130 -0
- package/dist/src/alpha6/preexecution-replan.js.map +1 -0
- package/dist/src/alpha6/remediation.d.ts +4 -3
- package/dist/src/alpha6/remediation.js +147 -21
- package/dist/src/alpha6/remediation.js.map +1 -1
- 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 +2 -2
- package/dist/src/cli-actions.js +2 -0
- package/dist/src/cli-actions.js.map +1 -1
- package/dist/src/cli.js +51 -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/domain/plan-semantics.d.ts +11 -0
- package/dist/src/domain/plan-semantics.js +49 -0
- package/dist/src/domain/plan-semantics.js.map +1 -0
- 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 +21 -1
- package/dist/src/workflow.js +793 -89
- 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/pdf/sources/codex-workflow-v2-architecture-ru.md +1 -1
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +2 -2
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +2 -2
- package/docs/release.md +72 -0
- package/package.json +1 -1
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +72 -2
- package/schemas/preexecution-replan-event.schema.json +45 -0
- package/schemas/task.schema.json +55 -0
|
@@ -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,13 +6,13 @@
|
|
|
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"];
|
|
13
13
|
readonly graph: readonly ["prepare", "status", "refresh-request", "bind", "fallback"];
|
|
14
14
|
readonly discovery: readonly ["start", "update", "show", "materialize"];
|
|
15
|
-
readonly task: readonly ["show", "replacement-materialize", "plan-set", "knowledge-rebind", "context-refresh", "authorize", "plan-risk-audit", "start", "run", "step-complete", "submit", "review-record", "review-launch", "review-packet", "review-sealed-record", "step-review", "step-review-packet", "step-review-record", "corrective-decision-recover", "remediation-mode-recover", "plan-integrity-recover", "downstream-proof-recover", "downstream-proof-replan-recover", "stop-override-prepare", "stop-override-apply", "corrective-decision", "corrective-yield", "corrective-yield-recover", "corrective-replan-prepare", "corrective-replan-confirm", "corrective-replan-execute", "corrective-replan-recover", "historical-step-provenance-preflight", "historical-step-provenance-recover", "handoff", "handoff-prepare", "handoff-replace", "handoff-show", "claim", "writer-credential-replace", "handback", "handback-create", "result-set", "accept", "sync-base", "merge", "merge-confirm"];
|
|
15
|
+
readonly task: readonly ["show", "replacement-materialize", "preexecution-replan", "plan-set", "knowledge-rebind", "context-refresh", "authorize", "plan-risk-audit", "start", "run", "step-complete", "submit", "review-record", "review-launch", "review-packet", "review-sealed-record", "step-review", "step-review-packet", "step-review-record", "corrective-decision-recover", "remediation-mode-recover", "plan-integrity-recover", "downstream-proof-recover", "downstream-proof-replan-recover", "stop-override-prepare", "stop-override-apply", "corrective-decision", "corrective-yield", "corrective-yield-recover", "corrective-replan-prepare", "corrective-replan-confirm", "corrective-replan-execute", "corrective-replan-recover", "historical-step-provenance-preflight", "historical-step-provenance-recover", "handoff", "handoff-prepare", "handoff-replace", "handoff-show", "claim", "writer-credential-replace", "handback", "handback-create", "result-set", "accept", "sync-base", "merge", "merge-confirm"];
|
|
16
16
|
readonly milestone: readonly ["recover", "show", "progress", "plan-set", "remediation-materialize", "scope-change-prepare", "scope-change-apply", "autonomy-prepare", "autonomy-grant", "autonomy-evolve", "authorize", "validate", "accept", "cancel"];
|
|
17
17
|
readonly locks: readonly ["inspect", "repair"];
|
|
18
18
|
};
|
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',
|
|
@@ -33,6 +34,7 @@ const CLI_ACTIONS_LITERAL = {
|
|
|
33
34
|
task: [
|
|
34
35
|
'show',
|
|
35
36
|
'replacement-materialize',
|
|
37
|
+
'preexecution-replan',
|
|
36
38
|
'plan-set',
|
|
37
39
|
'knowledge-rebind',
|
|
38
40
|
'context-refresh',
|
|
@@ -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,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'],
|
|
@@ -98,6 +102,13 @@ const CLI_HELP_SPECS = {
|
|
|
98
102
|
requiredOptions: ['--id', '--expected-revision', '--file', '--risk-audit-file'],
|
|
99
103
|
optionalOptions: ['--corrective-audit-file', '--repo', '--json'],
|
|
100
104
|
},
|
|
105
|
+
'task preexecution-replan': {
|
|
106
|
+
requiredOptions: [
|
|
107
|
+
'--id', '--expected-revision', '--actor', '--reason', '--file', '--expected-brief-hash',
|
|
108
|
+
'--expected-plan-hash', '--expected-plan-risk-audit-event-hash', '--expected-head-commit',
|
|
109
|
+
],
|
|
110
|
+
optionalOptions: ['--repo', '--json'],
|
|
111
|
+
},
|
|
101
112
|
'task handoff-replace': {
|
|
102
113
|
requiredOptions: ['--id', '--expected-revision', '--actor', '--target-actor', '--reason'],
|
|
103
114
|
optionalOptions: ['--writer-credential-ref', '--delegation-grant', '--expires-at', '--repo', '--json'],
|
|
@@ -193,6 +204,20 @@ const CLI_HELP_SPECS = {
|
|
|
193
204
|
'task review-sealed-record': {
|
|
194
205
|
requiredOptions: ['--id', '--expected-revision', '--actor', '--file'],
|
|
195
206
|
optionalOptions: ['--writer-credential-ref', '--repo', '--json'],
|
|
207
|
+
fileInput: {
|
|
208
|
+
description: 'Full ExternalStrictTaskReviewInput envelope; reviewMode is a top-level JSON field.',
|
|
209
|
+
requiredTopLevelFields: ['protocol', 'packetHash', 'repositorySealHash', 'reviewerThreadId', 'reviewMode', 'review'],
|
|
210
|
+
reviewMode: 'ordinary | security',
|
|
211
|
+
nestedReviewRequiredFields: ['status', 'reviewer', 'summary', 'findings'],
|
|
212
|
+
example: {
|
|
213
|
+
protocol: 'codex-workflow-external-strict-task-review-v1',
|
|
214
|
+
packetHash: '<packet.packetHash>',
|
|
215
|
+
repositorySealHash: '<packet.repositorySealHash>',
|
|
216
|
+
reviewerThreadId: '<separate-reviewer-thread-id>',
|
|
217
|
+
reviewMode: 'ordinary',
|
|
218
|
+
review: { status: 'passed', reviewer: '<reviewer>', summary: '<summary>', findings: [] },
|
|
219
|
+
},
|
|
220
|
+
},
|
|
196
221
|
},
|
|
197
222
|
'task step-review-packet': {
|
|
198
223
|
requiredOptions: ['--id', '--step', '--expected-revision', '--review-mode'],
|
|
@@ -201,6 +226,20 @@ const CLI_HELP_SPECS = {
|
|
|
201
226
|
'task step-review-record': {
|
|
202
227
|
requiredOptions: ['--id', '--step', '--expected-revision', '--actor', '--file'],
|
|
203
228
|
optionalOptions: ['--writer-credential-ref', '--repo', '--json'],
|
|
229
|
+
fileInput: {
|
|
230
|
+
description: 'Full ExternalStrictStepReviewInput envelope; reviewMode is a top-level JSON field.',
|
|
231
|
+
requiredTopLevelFields: ['protocol', 'packetHash', 'repositorySealHash', 'reviewerThreadId', 'reviewMode', 'review'],
|
|
232
|
+
reviewMode: 'ordinary | security',
|
|
233
|
+
nestedReviewRequiredFields: ['status', 'reviewer', 'summary', 'findings'],
|
|
234
|
+
example: {
|
|
235
|
+
protocol: 'codex-workflow-external-strict-step-review-v1',
|
|
236
|
+
packetHash: '<packet.packetHash>',
|
|
237
|
+
repositorySealHash: '<packet.repositorySealHash>',
|
|
238
|
+
reviewerThreadId: '<separate-reviewer-thread-id>',
|
|
239
|
+
reviewMode: 'ordinary',
|
|
240
|
+
review: { status: 'passed', reviewer: '<reviewer>', summary: '<summary>', findings: [] },
|
|
241
|
+
},
|
|
242
|
+
},
|
|
204
243
|
},
|
|
205
244
|
'task result-set': {
|
|
206
245
|
requiredOptions: ['--id', '--expected-revision', '--summary', '--writer-credential-ref'],
|
|
@@ -302,6 +341,7 @@ function cliHelp(args) {
|
|
|
302
341
|
requiredOptions: spec?.requiredOptions ?? null,
|
|
303
342
|
optionalOptions: spec?.optionalOptions ?? null,
|
|
304
343
|
exactOptionContractAvailable: Boolean(spec),
|
|
344
|
+
...(spec?.fileInput ? { fileInput: spec.fileInput } : {}),
|
|
305
345
|
...(spec ? {} : { note: 'Consult the packaged protocol for this action option contract.' }),
|
|
306
346
|
};
|
|
307
347
|
}
|
|
@@ -495,6 +535,9 @@ async function dispatch(args) {
|
|
|
495
535
|
if (noun === 'update' && action === 'dependency-provenance-preflight') {
|
|
496
536
|
return workflow.dependencyProvenanceRecoveryPreflight(repo, required(args, 'id'));
|
|
497
537
|
}
|
|
538
|
+
if (noun === 'update' && action === 'corrective-carryover-preflight') {
|
|
539
|
+
return workflow.correctiveCarryoverUpdatePreflight(repo, required(args, 'id'));
|
|
540
|
+
}
|
|
498
541
|
if (noun === 'task' && action === 'historical-step-provenance-preflight') {
|
|
499
542
|
return workflow.historicalStepProvenanceRecoveryPreflight(repo, required(args, 'id'));
|
|
500
543
|
}
|
|
@@ -669,6 +712,14 @@ async function dispatch(args) {
|
|
|
669
712
|
if (noun === 'task' && action === 'replacement-materialize') {
|
|
670
713
|
return workflow.replaceSplitRequiredTask(repo, required(args, 'id'), revision(args), required(args, 'discovery'), positiveIntegerOption(args, 'expected-discovery-revision'), positiveIntegerOption(args, 'expected-milestone-revision'), required(args, 'title'), option(args, 'actor') ?? 'user');
|
|
671
714
|
}
|
|
715
|
+
if (noun === 'task' && action === 'preexecution-replan') {
|
|
716
|
+
return workflow.recordPreExecutionReplan(repo, required(args, 'id'), revision(args), required(args, 'actor'), required(args, 'reason'), {
|
|
717
|
+
expectedBriefHash: required(args, 'expected-brief-hash'),
|
|
718
|
+
expectedPlanHash: required(args, 'expected-plan-hash'),
|
|
719
|
+
expectedPlanRiskAuditEventHash: required(args, 'expected-plan-risk-audit-event-hash'),
|
|
720
|
+
expectedHeadCommit: required(args, 'expected-head-commit'),
|
|
721
|
+
}, jsonFile(args));
|
|
722
|
+
}
|
|
672
723
|
if (noun === 'task' && action === 'plan-set') {
|
|
673
724
|
return workflow.setTaskPlan(repo, required(args, 'id'), revision(args), jsonFile(args), option(args, 'corrective-audit-file')
|
|
674
725
|
? jsonFile(args, 'corrective-audit-file')
|