codex-workflow-v2 2.0.0-beta.12.6 → 2.0.0-beta.12.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -3
- package/dist/src/alpha6/downstream-proof.d.ts +35 -1
- package/dist/src/alpha6/downstream-proof.js +310 -2
- package/dist/src/alpha6/downstream-proof.js.map +1 -1
- package/dist/src/alpha6/plan-risk.js +2 -2
- package/dist/src/alpha6/plan-risk.js.map +1 -1
- package/dist/src/cli.js +34 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +30 -1
- package/dist/src/dependency-provenance.d.ts +2 -2
- package/dist/src/dependency-provenance.js +26 -13
- package/dist/src/dependency-provenance.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 +8 -1
- package/dist/src/workflow.js +369 -30
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +7 -0
- package/docs/development-flow.md +9 -0
- 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 +18 -5
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +18 -7
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +25 -12
- package/docs/release.md +7 -1
- package/docs/updating-existing-project.md +24 -0
- package/docs/validation-report.md +90 -91
- package/package.json +2 -1
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +15 -0
- package/schemas/downstream-proof-invalidation-event.schema.json +1 -0
- package/schemas/downstream-proof-replan-recovery-event.schema.json +61 -0
- package/schemas/task.schema.json +34 -0
package/README.md
CHANGED
|
@@ -26,6 +26,8 @@ automation do not import anything from the parent V1 project.
|
|
|
26
26
|
proven by intact passed strict-review and reviewer-attestation chains;
|
|
27
27
|
- beta.12.6 active-downstream-proof update bridge: one exact dependency-only Task HEAD can be
|
|
28
28
|
registered while the already-classified proof work remains dirty and its Step remains active;
|
|
29
|
+
- beta.12.7 stranded-replan recovery: an accidental post-recovery Knowledge rebind cannot resurrect
|
|
30
|
+
the rejected Plan, and exact dirty bytes can be adopted by one newly authorized owning Step;
|
|
29
31
|
- bounded first-failure Plan-integrity recovery for legacy/in-flight contradictions that could not
|
|
30
32
|
be rejected by the current pre-authorization feasibility gate;
|
|
31
33
|
- read-only Milestone progress projection with stable membership ordinals and replacement links;
|
|
@@ -45,7 +47,7 @@ cross-machine synchronization are not part of its contract.
|
|
|
45
47
|
Node.js 22 or newer is required. Consumers pin the exact package version:
|
|
46
48
|
|
|
47
49
|
```bash
|
|
48
|
-
npm install --save-dev --save-exact codex-workflow-v2@2.0.0-beta.12.
|
|
50
|
+
npm install --save-dev --save-exact codex-workflow-v2@2.0.0-beta.12.7
|
|
49
51
|
npx codex-workflow gateway handshake --repo .
|
|
50
52
|
npx codex-workflow doctor --repo .
|
|
51
53
|
```
|
|
@@ -236,6 +238,15 @@ does not touch product bytes or end the Step, and makes the existing `task downs
|
|
|
236
238
|
route reachable. Unknown history, an unrelated dirty path, a non-dependency candidate, stale base,
|
|
237
239
|
or changed authority remains a hard stop.
|
|
238
240
|
|
|
241
|
+
If beta.12.6 already invalidated the predecessor but a later Project Knowledge approval rebound the
|
|
242
|
+
rejected Plan, beta.12.7 exposes a separate exact compatibility route. Run the new package's read-only
|
|
243
|
+
`update downstream-proof-replan-update-preflight` before changing dependencies. After the two
|
|
244
|
+
dependency-only commits, follow fresh `next` through replan dependency registration and
|
|
245
|
+
`task downstream-proof-replan-recover`. Knowledge refresh may follow, but it cannot replace the
|
|
246
|
+
required `task plan-set`. Preserved dirty bytes are executable only when one replacement Step owns the
|
|
247
|
+
entire path set and `next` reports `downstreamProofCarryover.state=validated`; normal checks, Core commit,
|
|
248
|
+
and strict review remain mandatory.
|
|
249
|
+
|
|
239
250
|
Docker socket `EPERM`/permission errors observed inside a sandbox are access-boundary evidence, not
|
|
240
251
|
daemon-failure evidence. The gateway repeats the exact read-only probe or Plan check once with
|
|
241
252
|
sandbox escalation without consuming a remediation/infra retry. Docker Desktop restart or image
|
|
@@ -329,11 +340,12 @@ alpha regressions that must not recur are tracked in the
|
|
|
329
340
|
- [Chat-only development guide](docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf)
|
|
330
341
|
- [Deep technical reference](docs/pdf/codex-workflow-v2-technical-reference-ru.pdf)
|
|
331
342
|
|
|
332
|
-
These beta.12.
|
|
343
|
+
These beta.12.7 documents cover delegated Discovery, Milestone Autonomy Contract issuance,
|
|
333
344
|
dependency-aware Task routing, C1 credential handling, external-sealed reviews, bounded
|
|
334
345
|
Plan-integrity recovery, Task-local dependency provenance recovery, the human-confirmed legacy
|
|
335
346
|
attempt-four stop override (including append-only multi-rebind, dependency-only HEAD continuation,
|
|
336
|
-
evidence-accounted post-audit recovery revisions),
|
|
347
|
+
evidence-accounted post-audit recovery revisions), both downstream-proof update bridges, exact
|
|
348
|
+
dirty-worktree carryover into a replacement Step, and the P04-A
|
|
337
349
|
structural-replacement stop boundary. Their reviewable
|
|
338
350
|
sources live in [`docs/pdf/sources`](docs/pdf/sources), and `npm run docs:pdf:check` proves the
|
|
339
351
|
tracked binaries were generated from the current source and package version. The PDFs remain
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DownstreamProofInvalidationEvent, TaskState } from '../contracts.js';
|
|
1
|
+
import type { DownstreamProofInvalidationEvent, DownstreamProofReplanCompatibility, DownstreamProofReplanRecoveryEvent, TaskState } from '../contracts.js';
|
|
2
2
|
import type { FileStateStore } from '../state/store.js';
|
|
3
3
|
export interface DownstreamProofInvalidatedStep {
|
|
4
4
|
stepId: string;
|
|
@@ -20,6 +20,27 @@ export interface PreparedDownstreamProofInvalidation {
|
|
|
20
20
|
event: DownstreamProofInvalidationEvent;
|
|
21
21
|
postimage: string;
|
|
22
22
|
}
|
|
23
|
+
export interface DownstreamProofReplanRecoveryAssessment {
|
|
24
|
+
applicable: boolean;
|
|
25
|
+
eligible: boolean;
|
|
26
|
+
invalidation: DownstreamProofInvalidationEvent | null;
|
|
27
|
+
rebind: TaskState['knowledgeRebinds'][number] | null;
|
|
28
|
+
compatibility: DownstreamProofReplanCompatibility | null;
|
|
29
|
+
dependencyRecoveryCommit: string | null;
|
|
30
|
+
blockers: string[];
|
|
31
|
+
}
|
|
32
|
+
export interface PreparedDownstreamProofReplanRecovery {
|
|
33
|
+
event: DownstreamProofReplanRecoveryEvent;
|
|
34
|
+
postimage: string;
|
|
35
|
+
}
|
|
36
|
+
export interface DownstreamProofCarryoverAssessment {
|
|
37
|
+
applicable: boolean;
|
|
38
|
+
eligible: boolean;
|
|
39
|
+
dirtyFiles: string[];
|
|
40
|
+
dirtyWorktreeHash: string | null;
|
|
41
|
+
invalidationEventId: string | null;
|
|
42
|
+
blockers: string[];
|
|
43
|
+
}
|
|
23
44
|
export declare function assessDownstreamProofRecovery(store: FileStateStore, repositoryRoot: string, task: TaskState, options?: {
|
|
24
45
|
historyBoundary?: string;
|
|
25
46
|
preservedHeadCommit?: string;
|
|
@@ -31,4 +52,17 @@ export declare function prepareDownstreamProofInvalidation(store: FileStateStore
|
|
|
31
52
|
}, now: Date): PreparedDownstreamProofInvalidation;
|
|
32
53
|
export declare function readDownstreamProofInvalidations(store: FileStateStore, task: TaskState): DownstreamProofInvalidationEvent[];
|
|
33
54
|
export declare function downstreamProofInvalidationSidecar(): string;
|
|
55
|
+
export declare function assessDownstreamProofReplanRecovery(store: FileStateStore, repositoryRoot: string, task: TaskState, options?: {
|
|
56
|
+
historyBoundary?: string;
|
|
57
|
+
preservedHeadCommit?: string;
|
|
58
|
+
currentPlanRiskAuditExists?: boolean;
|
|
59
|
+
}): DownstreamProofReplanRecoveryAssessment;
|
|
60
|
+
export declare function prepareDownstreamProofReplanRecovery(store: FileStateStore, resultTask: TaskState, assessment: DownstreamProofReplanRecoveryAssessment, input: {
|
|
61
|
+
previousTaskRevision: number;
|
|
62
|
+
actor: string;
|
|
63
|
+
reason: string;
|
|
64
|
+
}, now: Date): PreparedDownstreamProofReplanRecovery;
|
|
65
|
+
export declare function readDownstreamProofReplanRecoveries(store: FileStateStore, task: TaskState): DownstreamProofReplanRecoveryEvent[];
|
|
66
|
+
export declare function downstreamProofReplanRecoverySidecar(): string;
|
|
67
|
+
export declare function assessDownstreamProofCarryover(store: FileStateStore, repositoryRoot: string, task: TaskState, stepId: string): DownstreamProofCarryoverAssessment;
|
|
34
68
|
export declare function hashDirtyWorktree(repositoryRoot: string, dirtyFiles: readonly string[]): string;
|
|
@@ -9,9 +9,11 @@ import { createUlid } from '../ulid.js';
|
|
|
9
9
|
import { PACKAGE_VERSION } from '../version.js';
|
|
10
10
|
import { prepareSidecarAppend } from './store-sidecars.js';
|
|
11
11
|
const SIDECAR = 'downstream-proof-invalidations.jsonl';
|
|
12
|
+
const REPLAN_RECOVERY_SIDECAR = 'downstream-proof-replan-recoveries.jsonl';
|
|
12
13
|
const HASH_64 = /^[a-f0-9]{64}$/;
|
|
13
14
|
const GIT_HASH = /^[a-f0-9]{40}$/;
|
|
14
15
|
const EVENT_ID = /^DPI-[0-9A-HJKMNP-TV-Z]{26}$/;
|
|
16
|
+
const REPLAN_EVENT_ID = /^DPR-[0-9A-HJKMNP-TV-Z]{26}$/;
|
|
15
17
|
export function assessDownstreamProofRecovery(store, repositoryRoot, task, options = {}) {
|
|
16
18
|
readDownstreamProofInvalidations(store, task);
|
|
17
19
|
const activeStep = task.steps.find((step) => step.status === 'in_progress') ?? null;
|
|
@@ -126,6 +128,7 @@ export function prepareDownstreamProofInvalidation(store, resultTask, assessment
|
|
|
126
128
|
triggerFiles: [...step.triggerFiles],
|
|
127
129
|
})),
|
|
128
130
|
dirtyFiles: [...assessment.dirtyFiles],
|
|
131
|
+
dirtyWorktreeHash: assessment.dirtyWorktreeHash,
|
|
129
132
|
preservedHeadCommit: assessment.preservedHeadCommit,
|
|
130
133
|
actor,
|
|
131
134
|
reason,
|
|
@@ -141,6 +144,254 @@ export function readDownstreamProofInvalidations(store, task) {
|
|
|
141
144
|
export function downstreamProofInvalidationSidecar() {
|
|
142
145
|
return SIDECAR;
|
|
143
146
|
}
|
|
147
|
+
export function assessDownstreamProofReplanRecovery(store, repositoryRoot, task, options = {}) {
|
|
148
|
+
const invalidations = readDownstreamProofInvalidations(store, task);
|
|
149
|
+
const recoveries = readDownstreamProofReplanRecoveries(store, task);
|
|
150
|
+
const invalidation = invalidations.at(-1) ?? null;
|
|
151
|
+
const rebind = task.knowledgeRebinds.at(-1) ?? null;
|
|
152
|
+
if (invalidation && recoveries.some((event) => event.invalidationEventId === invalidation.eventId
|
|
153
|
+
&& event.resultTaskRevision <= task.revision)) {
|
|
154
|
+
return emptyReplanAssessment();
|
|
155
|
+
}
|
|
156
|
+
if (!invalidation || !rebind
|
|
157
|
+
|| rebind.previousPlanHash !== invalidation.planHash
|
|
158
|
+
|| rebind.reboundPlanHash !== task.planHash
|
|
159
|
+
|| Date.parse(rebind.recordedAt) <= Date.parse(invalidation.recordedAt)) {
|
|
160
|
+
return emptyReplanAssessment();
|
|
161
|
+
}
|
|
162
|
+
const blockers = [];
|
|
163
|
+
const dirtyFiles = changedFiles(repositoryRoot).sort();
|
|
164
|
+
let dirtyWorktreeHash = null;
|
|
165
|
+
try {
|
|
166
|
+
dirtyWorktreeHash = hashDirtyWorktree(repositoryRoot, dirtyFiles);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
170
|
+
}
|
|
171
|
+
const sourceBinding = [...(task.dependencyProvenanceRecoveries ?? [])]
|
|
172
|
+
.reverse()
|
|
173
|
+
.map((record) => record.activeDownstreamProof)
|
|
174
|
+
.find((binding) => binding
|
|
175
|
+
&& binding.planHash === invalidation.planHash
|
|
176
|
+
&& binding.activeStepId === invalidation.activeStepId
|
|
177
|
+
&& JSON.stringify([...binding.dirtyFiles].sort()) === JSON.stringify(invalidation.dirtyFiles)
|
|
178
|
+
&& JSON.stringify([...binding.invalidatedStepIds].sort())
|
|
179
|
+
=== JSON.stringify(invalidation.invalidatedSteps.map((step) => step.stepId).sort()))
|
|
180
|
+
?? null;
|
|
181
|
+
if (!sourceBinding) {
|
|
182
|
+
blockers.push('No dependency provenance record preserves the exact active downstream-proof dirty-set binding.');
|
|
183
|
+
}
|
|
184
|
+
else if (dirtyWorktreeHash !== sourceBinding.dirtyWorktreeHash) {
|
|
185
|
+
blockers.push('Dirty file content changed after the downstream-proof invalidation boundary.');
|
|
186
|
+
}
|
|
187
|
+
if (JSON.stringify(dirtyFiles) !== JSON.stringify(invalidation.dirtyFiles)) {
|
|
188
|
+
blockers.push('Dirty files changed after the downstream-proof invalidation boundary.');
|
|
189
|
+
}
|
|
190
|
+
const registeredCompatibility = [...(task.dependencyProvenanceRecoveries ?? [])]
|
|
191
|
+
.reverse()
|
|
192
|
+
.find((record) => record.downstreamProofReplan?.invalidationEventId === invalidation.eventId
|
|
193
|
+
&& record.downstreamProofReplan.reboundPlanHash === task.planHash) ?? null;
|
|
194
|
+
const sourceHead = options.preservedHeadCommit
|
|
195
|
+
?? registeredCompatibility?.parentCommitSha
|
|
196
|
+
?? headCommit(repositoryRoot);
|
|
197
|
+
if (sourceHead !== invalidation.preservedHeadCommit) {
|
|
198
|
+
blockers.push('The recovery history boundary no longer matches the downstream-proof preserved HEAD.');
|
|
199
|
+
}
|
|
200
|
+
if (task.workspaceOwner !== 'local')
|
|
201
|
+
blockers.push('Recovery requires the recorded local Task workspace.');
|
|
202
|
+
if (!task.taskBranch || currentBranch(repositoryRoot) !== task.taskBranch) {
|
|
203
|
+
blockers.push('Current branch must equal the recorded Task branch.');
|
|
204
|
+
}
|
|
205
|
+
if (task.status !== 'awaiting_execution_authorization') {
|
|
206
|
+
blockers.push('The legacy stranded Task must still be awaiting execution authorization.');
|
|
207
|
+
}
|
|
208
|
+
if (!task.planHash || task.planHash !== rebind.reboundPlanHash) {
|
|
209
|
+
blockers.push('The current Plan must be the exact mechanically rebound legacy Plan.');
|
|
210
|
+
}
|
|
211
|
+
if (task.knowledgeMapRevision !== rebind.toKnowledgeMapRevision
|
|
212
|
+
|| task.knowledgeMapHash !== rebind.toKnowledgeMapHash) {
|
|
213
|
+
blockers.push('The current Project Knowledge binding must match the legacy rebind record.');
|
|
214
|
+
}
|
|
215
|
+
for (const invalidated of invalidation.invalidatedSteps) {
|
|
216
|
+
const step = task.steps.find((candidate) => candidate.id === invalidated.stepId);
|
|
217
|
+
if (!step || step.status !== 'planned' || step.evidence !== null
|
|
218
|
+
|| !(task.invalidatedStepCommits ?? []).includes(invalidated.evidenceCommit)) {
|
|
219
|
+
blockers.push(`Invalidated predecessor ${invalidated.stepId} no longer has the preserved planned/no-evidence posture.`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
const activeStep = task.steps.find((step) => step.id === invalidation.activeStepId);
|
|
223
|
+
if (!activeStep || activeStep.status !== 'blocked' || activeStep.evidence !== null) {
|
|
224
|
+
blockers.push(`Former proof Step ${invalidation.activeStepId} no longer has the preserved blocked/no-evidence posture.`);
|
|
225
|
+
}
|
|
226
|
+
if (task.authorizations.some((authorization) => authorization.kind === 'execution'
|
|
227
|
+
&& authorization.decision === 'approved'
|
|
228
|
+
&& authorization.planHash === task.planHash)) {
|
|
229
|
+
blockers.push('The rebound Plan has already received execution authorization.');
|
|
230
|
+
}
|
|
231
|
+
if (options.currentPlanRiskAuditExists) {
|
|
232
|
+
blockers.push('The rebound Plan already has a recorded current Plan Risk Audit.');
|
|
233
|
+
}
|
|
234
|
+
const expectedRevision = invalidation.resultTaskRevision + (registeredCompatibility ? 2 : 1);
|
|
235
|
+
if (task.revision !== expectedRevision) {
|
|
236
|
+
blockers.push('Task revision contains changes beyond the exact invalidation, accidental rebind, and optional dependency registration sequence.');
|
|
237
|
+
}
|
|
238
|
+
if (registeredCompatibility) {
|
|
239
|
+
if (registeredCompatibility.commitSha !== headCommit(repositoryRoot)
|
|
240
|
+
|| registeredCompatibility.downstreamProofReplan?.dirtyWorktreeHash !== dirtyWorktreeHash) {
|
|
241
|
+
blockers.push('The registered dependency compatibility record does not bind the current HEAD and dirty worktree.');
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
else if (!options.historyBoundary && headCommit(repositoryRoot) !== invalidation.preservedHeadCommit) {
|
|
245
|
+
blockers.push('Unregistered Git history exists after the downstream-proof invalidation boundary.');
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
validateTaskHistory(repositoryRoot, task, options.historyBoundary);
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
252
|
+
}
|
|
253
|
+
const compatibility = sourceBinding && dirtyWorktreeHash
|
|
254
|
+
? {
|
|
255
|
+
invalidationEventId: invalidation.eventId,
|
|
256
|
+
activeStepId: invalidation.activeStepId,
|
|
257
|
+
sourcePlanHash: invalidation.planHash,
|
|
258
|
+
reboundPlanHash: rebind.reboundPlanHash,
|
|
259
|
+
knowledgeRebindRecordedAt: rebind.recordedAt,
|
|
260
|
+
dirtyFiles: [...invalidation.dirtyFiles],
|
|
261
|
+
dirtyWorktreeHash,
|
|
262
|
+
invalidatedStepIds: invalidation.invalidatedSteps.map((step) => step.stepId).sort(),
|
|
263
|
+
}
|
|
264
|
+
: null;
|
|
265
|
+
return {
|
|
266
|
+
applicable: true,
|
|
267
|
+
eligible: blockers.length === 0 && compatibility !== null,
|
|
268
|
+
invalidation,
|
|
269
|
+
rebind,
|
|
270
|
+
compatibility,
|
|
271
|
+
dependencyRecoveryCommit: registeredCompatibility?.commitSha ?? null,
|
|
272
|
+
blockers,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
export function prepareDownstreamProofReplanRecovery(store, resultTask, assessment, input, now) {
|
|
276
|
+
if (!assessment.eligible || !assessment.invalidation || !assessment.rebind || !assessment.compatibility) {
|
|
277
|
+
throw new WorkflowError('TRANSITION_BLOCKED', 'Downstream-proof replan compatibility assessment is not eligible.');
|
|
278
|
+
}
|
|
279
|
+
const actor = normalizeRequired(input.actor, 'Recovery actor');
|
|
280
|
+
const reason = normalizeRequired(input.reason, 'Recovery reason');
|
|
281
|
+
const events = readDownstreamProofReplanRecoveries(store, resultTask);
|
|
282
|
+
const prepared = prepareSidecarAppend(events, {
|
|
283
|
+
eventId: `DPR-${createUlid(now.getTime())}`,
|
|
284
|
+
recordedAt: now.toISOString(),
|
|
285
|
+
taskId: resultTask.id,
|
|
286
|
+
previousTaskRevision: input.previousTaskRevision,
|
|
287
|
+
resultTaskRevision: resultTask.revision,
|
|
288
|
+
invalidationEventId: assessment.invalidation.eventId,
|
|
289
|
+
invalidationPlanHash: assessment.invalidation.planHash,
|
|
290
|
+
reboundPlanHash: assessment.rebind.reboundPlanHash,
|
|
291
|
+
knowledgeRebindRecordedAt: assessment.rebind.recordedAt,
|
|
292
|
+
dirtyFiles: [...assessment.compatibility.dirtyFiles],
|
|
293
|
+
dirtyWorktreeHash: assessment.compatibility.dirtyWorktreeHash,
|
|
294
|
+
preservedHeadCommit: headCommit(resultTask.repositoryRoot),
|
|
295
|
+
dependencyRecoveryCommit: assessment.dependencyRecoveryCommit,
|
|
296
|
+
actor,
|
|
297
|
+
reason,
|
|
298
|
+
packageVersion: PACKAGE_VERSION,
|
|
299
|
+
}, {
|
|
300
|
+
validateEvent: (event) => validateReplanRecoveryEvent(event, resultTask),
|
|
301
|
+
});
|
|
302
|
+
return { event: prepared.event, postimage: prepared.content };
|
|
303
|
+
}
|
|
304
|
+
export function readDownstreamProofReplanRecoveries(store, task) {
|
|
305
|
+
return store.readSidecarEvents(store.taskRoot(task.projectId, task.id), REPLAN_RECOVERY_SIDECAR, { validateEvent: (event) => validateReplanRecoveryEvent(event, task) });
|
|
306
|
+
}
|
|
307
|
+
export function downstreamProofReplanRecoverySidecar() {
|
|
308
|
+
return REPLAN_RECOVERY_SIDECAR;
|
|
309
|
+
}
|
|
310
|
+
export function assessDownstreamProofCarryover(store, repositoryRoot, task, stepId) {
|
|
311
|
+
const invalidation = readDownstreamProofInvalidations(store, task).at(-1) ?? null;
|
|
312
|
+
if (!invalidation || !task.planHash || task.planHash === invalidation.planHash) {
|
|
313
|
+
return {
|
|
314
|
+
applicable: false,
|
|
315
|
+
eligible: false,
|
|
316
|
+
dirtyFiles: [],
|
|
317
|
+
dirtyWorktreeHash: null,
|
|
318
|
+
invalidationEventId: null,
|
|
319
|
+
blockers: [],
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
const recovery = [...readDownstreamProofReplanRecoveries(store, task)]
|
|
323
|
+
.reverse()
|
|
324
|
+
.find((event) => event.invalidationEventId === invalidation.eventId) ?? null;
|
|
325
|
+
const sourceBinding = [...(task.dependencyProvenanceRecoveries ?? [])]
|
|
326
|
+
.reverse()
|
|
327
|
+
.map((record) => record.activeDownstreamProof)
|
|
328
|
+
.find((binding) => binding?.planHash === invalidation.planHash
|
|
329
|
+
&& JSON.stringify([...binding.dirtyFiles].sort()) === JSON.stringify(invalidation.dirtyFiles)) ?? null;
|
|
330
|
+
const expectedDirtyHash = recovery?.dirtyWorktreeHash
|
|
331
|
+
?? invalidation.dirtyWorktreeHash
|
|
332
|
+
?? sourceBinding?.dirtyWorktreeHash
|
|
333
|
+
?? null;
|
|
334
|
+
const expectedHead = recovery?.preservedHeadCommit ?? invalidation.preservedHeadCommit;
|
|
335
|
+
const dirtyFiles = changedFiles(repositoryRoot).sort();
|
|
336
|
+
let dirtyWorktreeHash = null;
|
|
337
|
+
const blockers = [];
|
|
338
|
+
try {
|
|
339
|
+
dirtyWorktreeHash = hashDirtyWorktree(repositoryRoot, dirtyFiles);
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
343
|
+
}
|
|
344
|
+
const step = task.steps.find((candidate) => candidate.id === stepId) ?? null;
|
|
345
|
+
if (!step || step.status !== 'planned' || step.evidence !== null) {
|
|
346
|
+
blockers.push('The replacement carryover Step must be planned and have no completion evidence.');
|
|
347
|
+
}
|
|
348
|
+
if (task.steps.some((candidate) => candidate.status === 'in_progress' || candidate.evidence !== null)) {
|
|
349
|
+
blockers.push('No replacement Plan Step may already be running or completed.');
|
|
350
|
+
}
|
|
351
|
+
if (JSON.stringify(dirtyFiles) !== JSON.stringify(invalidation.dirtyFiles)) {
|
|
352
|
+
blockers.push('Dirty files changed after downstream-proof recovery.');
|
|
353
|
+
}
|
|
354
|
+
if (!expectedDirtyHash) {
|
|
355
|
+
blockers.push('No hash-bound downstream-proof dirty-worktree evidence is available.');
|
|
356
|
+
}
|
|
357
|
+
else if (dirtyWorktreeHash !== expectedDirtyHash) {
|
|
358
|
+
blockers.push('Dirty file content changed after downstream-proof recovery.');
|
|
359
|
+
}
|
|
360
|
+
if (step && dirtyFiles.some((file) => !pathAllowed(file, step.allowedWrites))) {
|
|
361
|
+
blockers.push('The replacement Step does not own the complete preserved dirty set.');
|
|
362
|
+
}
|
|
363
|
+
if (headCommit(repositoryRoot) !== expectedHead) {
|
|
364
|
+
blockers.push('Git HEAD changed after downstream-proof recovery.');
|
|
365
|
+
}
|
|
366
|
+
if (task.workspaceOwner !== 'local' || !task.taskBranch || currentBranch(repositoryRoot) !== task.taskBranch) {
|
|
367
|
+
blockers.push('Carryover execution requires the unchanged recorded local Task branch.');
|
|
368
|
+
}
|
|
369
|
+
try {
|
|
370
|
+
validateTaskHistory(repositoryRoot, task);
|
|
371
|
+
}
|
|
372
|
+
catch (error) {
|
|
373
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
374
|
+
}
|
|
375
|
+
return {
|
|
376
|
+
applicable: true,
|
|
377
|
+
eligible: blockers.length === 0,
|
|
378
|
+
dirtyFiles,
|
|
379
|
+
dirtyWorktreeHash,
|
|
380
|
+
invalidationEventId: invalidation.eventId,
|
|
381
|
+
blockers,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
function emptyReplanAssessment() {
|
|
385
|
+
return {
|
|
386
|
+
applicable: false,
|
|
387
|
+
eligible: false,
|
|
388
|
+
invalidation: null,
|
|
389
|
+
rebind: null,
|
|
390
|
+
compatibility: null,
|
|
391
|
+
dependencyRecoveryCommit: null,
|
|
392
|
+
blockers: [],
|
|
393
|
+
};
|
|
394
|
+
}
|
|
144
395
|
function emptyAssessment() {
|
|
145
396
|
return {
|
|
146
397
|
applicable: false,
|
|
@@ -226,13 +477,17 @@ function completedDependentClosure(task, seedIds, predecessorIds) {
|
|
|
226
477
|
return result;
|
|
227
478
|
}
|
|
228
479
|
function validateInvalidationEvent(event, task) {
|
|
229
|
-
const
|
|
480
|
+
const requiredKeys = [
|
|
230
481
|
'activeStepId', 'actor', 'dirtyFiles', 'eventHash', 'eventId', 'invalidatedSteps', 'packageVersion',
|
|
231
482
|
'planHash', 'preservedHeadCommit', 'previousEventHash', 'previousTaskRevision', 'reason', 'recordedAt',
|
|
232
483
|
'resultTaskRevision', 'taskId',
|
|
233
484
|
];
|
|
485
|
+
const actualKeys = Object.keys(event).sort();
|
|
486
|
+
const expectedLegacyKeys = [...requiredKeys].sort();
|
|
487
|
+
const expectedCurrentKeys = [...requiredKeys, 'dirtyWorktreeHash'].sort();
|
|
234
488
|
if (!event || typeof event !== 'object' || Array.isArray(event)
|
|
235
|
-
|| JSON.stringify(
|
|
489
|
+
|| (JSON.stringify(actualKeys) !== JSON.stringify(expectedLegacyKeys)
|
|
490
|
+
&& JSON.stringify(actualKeys) !== JSON.stringify(expectedCurrentKeys))) {
|
|
236
491
|
throw new WorkflowError('STATE_CORRUPT', 'Downstream proof invalidation event contains unexpected fields.');
|
|
237
492
|
}
|
|
238
493
|
if (typeof event.eventId !== 'string' || !EVENT_ID.test(event.eventId)) {
|
|
@@ -267,6 +522,10 @@ function validateInvalidationEvent(event, task) {
|
|
|
267
522
|
|| JSON.stringify(event.dirtyFiles) !== JSON.stringify([...event.dirtyFiles].sort())) {
|
|
268
523
|
throw new WorkflowError('STATE_CORRUPT', 'Downstream proof invalidation dirtyFiles are invalid.');
|
|
269
524
|
}
|
|
525
|
+
if (event.dirtyWorktreeHash !== undefined
|
|
526
|
+
&& (typeof event.dirtyWorktreeHash !== 'string' || !HASH_64.test(event.dirtyWorktreeHash))) {
|
|
527
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream proof invalidation dirtyWorktreeHash is invalid.');
|
|
528
|
+
}
|
|
270
529
|
if (!Array.isArray(event.invalidatedSteps) || event.invalidatedSteps.length === 0) {
|
|
271
530
|
throw new WorkflowError('STATE_CORRUPT', 'Downstream proof invalidation must identify invalidated Steps.');
|
|
272
531
|
}
|
|
@@ -287,6 +546,55 @@ function validateInvalidationEvent(event, task) {
|
|
|
287
546
|
stepIds.add(step.stepId);
|
|
288
547
|
}
|
|
289
548
|
}
|
|
549
|
+
function validateReplanRecoveryEvent(event, task) {
|
|
550
|
+
const expectedKeys = [
|
|
551
|
+
'actor', 'dependencyRecoveryCommit', 'dirtyFiles', 'dirtyWorktreeHash', 'eventHash', 'eventId',
|
|
552
|
+
'invalidationEventId', 'invalidationPlanHash', 'knowledgeRebindRecordedAt', 'packageVersion',
|
|
553
|
+
'preservedHeadCommit', 'previousEventHash', 'previousTaskRevision', 'reason', 'reboundPlanHash',
|
|
554
|
+
'recordedAt', 'resultTaskRevision', 'taskId',
|
|
555
|
+
];
|
|
556
|
+
if (!event || typeof event !== 'object' || Array.isArray(event)
|
|
557
|
+
|| JSON.stringify(Object.keys(event).sort()) !== JSON.stringify(expectedKeys.sort())) {
|
|
558
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery event contains unexpected fields.');
|
|
559
|
+
}
|
|
560
|
+
if (typeof event.eventId !== 'string' || !REPLAN_EVENT_ID.test(event.eventId)) {
|
|
561
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery eventId is invalid.');
|
|
562
|
+
}
|
|
563
|
+
if (event.taskId !== task.id
|
|
564
|
+
|| !Number.isInteger(event.previousTaskRevision)
|
|
565
|
+
|| event.previousTaskRevision < 1
|
|
566
|
+
|| event.resultTaskRevision !== event.previousTaskRevision + 1
|
|
567
|
+
|| event.resultTaskRevision > task.revision) {
|
|
568
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery Task/revision binding is invalid.');
|
|
569
|
+
}
|
|
570
|
+
if (typeof event.invalidationEventId !== 'string' || !EVENT_ID.test(event.invalidationEventId)
|
|
571
|
+
|| typeof event.invalidationPlanHash !== 'string' || !HASH_64.test(event.invalidationPlanHash)
|
|
572
|
+
|| typeof event.reboundPlanHash !== 'string' || !HASH_64.test(event.reboundPlanHash)
|
|
573
|
+
|| typeof event.dirtyWorktreeHash !== 'string' || !HASH_64.test(event.dirtyWorktreeHash)
|
|
574
|
+
|| typeof event.preservedHeadCommit !== 'string' || !GIT_HASH.test(event.preservedHeadCommit)
|
|
575
|
+
|| (event.dependencyRecoveryCommit !== null
|
|
576
|
+
&& (typeof event.dependencyRecoveryCommit !== 'string' || !GIT_HASH.test(event.dependencyRecoveryCommit)))) {
|
|
577
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery hash binding is invalid.');
|
|
578
|
+
}
|
|
579
|
+
if (!Number.isFinite(Date.parse(event.knowledgeRebindRecordedAt))) {
|
|
580
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery knowledge rebind timestamp is invalid.');
|
|
581
|
+
}
|
|
582
|
+
if (!Array.isArray(event.dirtyFiles) || event.dirtyFiles.length === 0
|
|
583
|
+
|| event.dirtyFiles.some((file) => typeof file !== 'string' || !file.trim())
|
|
584
|
+
|| new Set(event.dirtyFiles).size !== event.dirtyFiles.length
|
|
585
|
+
|| JSON.stringify(event.dirtyFiles) !== JSON.stringify([...event.dirtyFiles].sort())) {
|
|
586
|
+
throw new WorkflowError('STATE_CORRUPT', 'Downstream-proof replan recovery dirtyFiles are invalid.');
|
|
587
|
+
}
|
|
588
|
+
for (const [value, label] of [
|
|
589
|
+
[event.actor, 'actor'],
|
|
590
|
+
[event.reason, 'reason'],
|
|
591
|
+
[event.packageVersion, 'packageVersion'],
|
|
592
|
+
]) {
|
|
593
|
+
if (typeof value !== 'string' || !value.trim()) {
|
|
594
|
+
throw new WorkflowError('STATE_CORRUPT', `Downstream-proof replan recovery ${label} is required.`);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
}
|
|
290
598
|
function normalizeRequired(value, label) {
|
|
291
599
|
if (typeof value !== 'string' || !value.trim()) {
|
|
292
600
|
throw new WorkflowError('INVALID_ARGUMENT', `${label} is required.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downstream-proof.js","sourceRoot":"","sources":["../../../src/alpha6/downstream-proof.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"downstream-proof.js","sourceRoot":"","sources":["../../../src/alpha6/downstream-proof.ts"],"names":[],"mappings":"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"}
|
|
@@ -549,8 +549,8 @@ function validateStepClassificationSet(task, classifications, decision, splitRat
|
|
|
549
549
|
'runtime-composition',
|
|
550
550
|
].filter((category) => guardedCategories.has(category));
|
|
551
551
|
const requiresSplitRationale = guardedCategories.has('migration') && coupledRecoveryDomains.length > 0;
|
|
552
|
-
if (requiresSplitRationale && decision
|
|
553
|
-
throw new WorkflowError(errorCode, 'A Plan combining migration with recovery or runtime-composition risk requires approved-with-rationale.', {
|
|
552
|
+
if (requiresSplitRationale && decision === 'approved') {
|
|
553
|
+
throw new WorkflowError(errorCode, 'A positively approved Plan combining migration with recovery or runtime-composition risk requires approved-with-rationale.', {
|
|
554
554
|
...details,
|
|
555
555
|
taskId: task.id,
|
|
556
556
|
guardedCategories: [...guardedCategories],
|