codex-workflow-v2 2.0.0-beta.12 → 2.0.0-beta.12.10
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 +65 -5
- package/dist/src/alpha6/downstream-proof.d.ts +68 -0
- package/dist/src/alpha6/downstream-proof.js +604 -0
- package/dist/src/alpha6/downstream-proof.js.map +1 -0
- package/dist/src/alpha6/milestone.d.ts +6 -2
- package/dist/src/alpha6/milestone.js +164 -10
- package/dist/src/alpha6/milestone.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/alpha6/remediation.d.ts +8 -3
- package/dist/src/alpha6/remediation.js +374 -9
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha6/review.d.ts +6 -0
- package/dist/src/alpha6/review.js +12 -0
- package/dist/src/alpha6/review.js.map +1 -1
- package/dist/src/alpha7/corrective-recovery.d.ts +8 -1
- package/dist/src/alpha7/corrective-recovery.js +406 -26
- package/dist/src/alpha7/corrective-recovery.js.map +1 -1
- package/dist/src/cli.js +135 -5
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +154 -3
- package/dist/src/dependency-provenance.d.ts +9 -2
- package/dist/src/dependency-provenance.js +70 -8
- package/dist/src/dependency-provenance.js.map +1 -1
- package/dist/src/git.d.ts +1 -1
- package/dist/src/git.js +6 -2
- package/dist/src/git.js.map +1 -1
- package/dist/src/historical-step-provenance.d.ts +20 -0
- package/dist/src/historical-step-provenance.js +111 -0
- package/dist/src/historical-step-provenance.js.map +1 -0
- package/dist/src/state/corrective-replan-executor.js +5 -0
- package/dist/src/state/corrective-replan-executor.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/src/workflow.d.ts +40 -2
- package/dist/src/workflow.js +1440 -65
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +91 -1
- package/docs/decisions.md +14 -0
- package/docs/delegated-approval.md +6 -1
- package/docs/development-flow.md +60 -5
- 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 +97 -7
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +68 -9
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +150 -33
- package/docs/release.md +51 -8
- package/docs/updating-existing-project.md +155 -2
- package/docs/validation-report.md +101 -94
- package/package.json +7 -2
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/protocol.md +69 -1
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +156 -1
- package/schemas/authorization-event.schema.json +8 -1
- package/schemas/downstream-proof-invalidation-event.schema.json +71 -0
- package/schemas/downstream-proof-replan-recovery-event.schema.json +61 -0
- package/schemas/milestone-scope-change-event.schema.json +25 -1
- package/schemas/stop-escalate-override-event.schema.json +45 -0
- package/schemas/task.schema.json +104 -0
- package/scripts/generate-pdf-docs.py +13 -2
package/dist/src/contracts.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type StepStatus = 'planned' | 'in_progress' | 'completed' | 'failed' | 'b
|
|
|
7
7
|
export type WorkspaceOwner = 'local' | 'external';
|
|
8
8
|
export type ReviewStatus = 'pending' | 'passed' | 'failed' | 'unverified';
|
|
9
9
|
export type AuthorizationKind = 'execution' | 'final_acceptance' | 'exception';
|
|
10
|
-
export type AuthorizationMode = 'human' | 'delegated';
|
|
10
|
+
export type AuthorizationMode = 'human' | 'delegated' | 'corrective-derived';
|
|
11
11
|
export type DelegationStatus = 'active' | 'revoked';
|
|
12
12
|
export type DelegationTransition = 'project_memory.approve' | 'task.execution_authorize' | 'task.final_accept' | 'milestone.execution_authorize' | 'milestone.final_accept';
|
|
13
13
|
export type KnowledgeImpact = 'none' | 'update' | 'create' | 'retire';
|
|
@@ -328,6 +328,50 @@ export interface SidecarEventRecord {
|
|
|
328
328
|
recordedAt: string;
|
|
329
329
|
eventHash: string;
|
|
330
330
|
}
|
|
331
|
+
export interface DownstreamProofInvalidationEvent extends SidecarEventRecord {
|
|
332
|
+
taskId: string;
|
|
333
|
+
previousTaskRevision: number;
|
|
334
|
+
resultTaskRevision: number;
|
|
335
|
+
planHash: string;
|
|
336
|
+
activeStepId: string;
|
|
337
|
+
invalidatedSteps: Array<{
|
|
338
|
+
stepId: string;
|
|
339
|
+
evidenceCommit: string;
|
|
340
|
+
triggerFiles: string[];
|
|
341
|
+
}>;
|
|
342
|
+
dirtyFiles: string[];
|
|
343
|
+
dirtyWorktreeHash?: string;
|
|
344
|
+
preservedHeadCommit: string;
|
|
345
|
+
actor: string;
|
|
346
|
+
reason: string;
|
|
347
|
+
packageVersion: string;
|
|
348
|
+
}
|
|
349
|
+
export interface DownstreamProofReplanRecoveryEvent extends SidecarEventRecord {
|
|
350
|
+
taskId: string;
|
|
351
|
+
previousTaskRevision: number;
|
|
352
|
+
resultTaskRevision: number;
|
|
353
|
+
invalidationEventId: string;
|
|
354
|
+
invalidationPlanHash: string;
|
|
355
|
+
reboundPlanHash: string;
|
|
356
|
+
knowledgeRebindRecordedAt: string;
|
|
357
|
+
dirtyFiles: string[];
|
|
358
|
+
dirtyWorktreeHash: string;
|
|
359
|
+
preservedHeadCommit: string;
|
|
360
|
+
dependencyRecoveryCommit: string | null;
|
|
361
|
+
actor: string;
|
|
362
|
+
reason: string;
|
|
363
|
+
packageVersion: string;
|
|
364
|
+
}
|
|
365
|
+
export interface DownstreamProofReplanCompatibility {
|
|
366
|
+
invalidationEventId: string;
|
|
367
|
+
activeStepId: string;
|
|
368
|
+
sourcePlanHash: string;
|
|
369
|
+
reboundPlanHash: string;
|
|
370
|
+
knowledgeRebindRecordedAt: string;
|
|
371
|
+
dirtyFiles: string[];
|
|
372
|
+
dirtyWorktreeHash: string;
|
|
373
|
+
invalidatedStepIds: string[];
|
|
374
|
+
}
|
|
331
375
|
export interface PlanRiskAuditStepClassification {
|
|
332
376
|
stepId: string;
|
|
333
377
|
categories: GuardedRiskCategory[];
|
|
@@ -472,6 +516,48 @@ export interface RemediationModeRecoveryEvent extends SidecarEventRecord {
|
|
|
472
516
|
toMode: 'corrective';
|
|
473
517
|
reason: 'alpha7.2-recovered-continue-fix-mode-omission';
|
|
474
518
|
}
|
|
519
|
+
export interface StopEscalateOverrideEvent extends SidecarEventRecord {
|
|
520
|
+
taskId: string;
|
|
521
|
+
taskRevision: number;
|
|
522
|
+
stepId: string;
|
|
523
|
+
stopDecisionEventId: string;
|
|
524
|
+
stopDecisionEventHash: string;
|
|
525
|
+
priorContinueDecisionEventId: string;
|
|
526
|
+
priorContinueDecisionEventHash: string;
|
|
527
|
+
triggeringAttemptCount: 4;
|
|
528
|
+
coveredEventIds: string[];
|
|
529
|
+
planHash: string;
|
|
530
|
+
headCommit: string;
|
|
531
|
+
actor: string;
|
|
532
|
+
reason: string;
|
|
533
|
+
packageVersion: string;
|
|
534
|
+
confirmationCodeBindingHash: string;
|
|
535
|
+
policy: 'beta11-attempt4-stop-compatibility-v1';
|
|
536
|
+
}
|
|
537
|
+
export interface StopEscalateOverridePreparation {
|
|
538
|
+
eligible: true;
|
|
539
|
+
action: 'task stop-override-apply';
|
|
540
|
+
taskId: string;
|
|
541
|
+
taskRevision: number;
|
|
542
|
+
stepId: string;
|
|
543
|
+
stopDecisionEventId: string;
|
|
544
|
+
stopDecisionEventHash: string;
|
|
545
|
+
priorContinueDecisionEventId: string;
|
|
546
|
+
priorContinueDecisionEventHash: string;
|
|
547
|
+
triggeringAttemptCount: 4;
|
|
548
|
+
coveredEventIds: string[];
|
|
549
|
+
planHash: string;
|
|
550
|
+
headCommit: string;
|
|
551
|
+
actor: string;
|
|
552
|
+
reason: string;
|
|
553
|
+
packageVersion: string;
|
|
554
|
+
confirmationCodeBindingHash: string;
|
|
555
|
+
confirmationCode: string;
|
|
556
|
+
policy: 'beta11-attempt4-stop-compatibility-v1';
|
|
557
|
+
appendOnly: true;
|
|
558
|
+
preservesOriginalDecision: true;
|
|
559
|
+
delegatedApprovalAllowed: false;
|
|
560
|
+
}
|
|
475
561
|
export interface TaskHandoffMachineEvidence {
|
|
476
562
|
hostname: string;
|
|
477
563
|
pid: number;
|
|
@@ -551,6 +637,16 @@ export interface MilestoneScopeSnapshot {
|
|
|
551
637
|
taskIds: string[];
|
|
552
638
|
memberships: MilestoneMembership[];
|
|
553
639
|
}
|
|
640
|
+
export interface AuditedRemediationEvidence {
|
|
641
|
+
blockedTaskId: string;
|
|
642
|
+
blockedTaskRevision: number;
|
|
643
|
+
blockedBriefHash: string;
|
|
644
|
+
blockedPlanHash: string;
|
|
645
|
+
planRiskAuditEventId: string;
|
|
646
|
+
planRiskAuditEventHash: string;
|
|
647
|
+
remediationTaskId: string;
|
|
648
|
+
predecessorTaskIds: string[];
|
|
649
|
+
}
|
|
554
650
|
export interface MilestoneScopeChangeEvent extends SidecarEventRecord {
|
|
555
651
|
milestoneId: string;
|
|
556
652
|
previousMilestoneRevision: number;
|
|
@@ -562,8 +658,9 @@ export interface MilestoneScopeChangeEvent extends SidecarEventRecord {
|
|
|
562
658
|
after: MilestoneScopeSnapshot;
|
|
563
659
|
actor: string;
|
|
564
660
|
confirmationCodeBindingHash: string;
|
|
565
|
-
authorizationMode?: 'human' | 'milestone-autonomy';
|
|
661
|
+
authorizationMode?: 'human' | 'milestone-autonomy' | 'audited-remediation';
|
|
566
662
|
autonomyContractEventHash?: string | null;
|
|
663
|
+
remediationEvidence?: AuditedRemediationEvidence | null;
|
|
567
664
|
}
|
|
568
665
|
export interface AdoptionTaskStepSnapshot {
|
|
569
666
|
stepId: string;
|
|
@@ -783,10 +880,26 @@ export interface DependencyProvenanceRecoveryRecord {
|
|
|
783
880
|
reason: string;
|
|
784
881
|
recordedAt: string;
|
|
785
882
|
retainedHistoricalCommits?: string[];
|
|
883
|
+
activeDownstreamProof?: {
|
|
884
|
+
activeStepId: string;
|
|
885
|
+
planHash: string;
|
|
886
|
+
dirtyFiles: string[];
|
|
887
|
+
dirtyWorktreeHash: string;
|
|
888
|
+
invalidatedStepIds: string[];
|
|
889
|
+
};
|
|
890
|
+
downstreamProofReplan?: DownstreamProofReplanCompatibility;
|
|
891
|
+
historicalStepProvenance?: HistoricalStepDependencyCompatibility;
|
|
892
|
+
}
|
|
893
|
+
export interface HistoricalStepDependencyCompatibility {
|
|
894
|
+
activeStepId: string;
|
|
895
|
+
planHash: string;
|
|
896
|
+
dirtyFiles: string[];
|
|
897
|
+
dirtyWorktreeHash: string;
|
|
898
|
+
retainedCommitSha: string;
|
|
786
899
|
}
|
|
787
900
|
export interface DependencyProvenanceRecoveryPreflight {
|
|
788
901
|
eligible: boolean;
|
|
789
|
-
action: 'update dependency-provenance-recover' | null;
|
|
902
|
+
action: 'update dependency-provenance-recover' | 'update downstream-proof-dependency-recover' | 'update downstream-proof-replan-dependency-recover' | 'update historical-step-dependency-recover' | null;
|
|
790
903
|
projectId: string;
|
|
791
904
|
taskId: string;
|
|
792
905
|
taskRevision: number;
|
|
@@ -795,6 +908,40 @@ export interface DependencyProvenanceRecoveryPreflight {
|
|
|
795
908
|
packageVersion: string;
|
|
796
909
|
changedFiles: string[];
|
|
797
910
|
retainedHistoricalCommits: string[];
|
|
911
|
+
activeDownstreamProof: {
|
|
912
|
+
activeStepId: string;
|
|
913
|
+
planHash: string;
|
|
914
|
+
dirtyFiles: string[];
|
|
915
|
+
dirtyWorktreeHash: string;
|
|
916
|
+
invalidatedStepIds: string[];
|
|
917
|
+
} | null;
|
|
918
|
+
downstreamProofReplan: DownstreamProofReplanCompatibility | null;
|
|
919
|
+
historicalStepProvenance: HistoricalStepDependencyCompatibility | null;
|
|
920
|
+
blockers: string[];
|
|
921
|
+
}
|
|
922
|
+
export interface HistoricalStepProvenanceRecoveryRecord {
|
|
923
|
+
commitSha: string;
|
|
924
|
+
actor: string;
|
|
925
|
+
reason: string;
|
|
926
|
+
recordedAt: string;
|
|
927
|
+
sourceFinalAcceptanceRecordedAt: string;
|
|
928
|
+
sourcePlanHash: string;
|
|
929
|
+
sourceResultHash: string;
|
|
930
|
+
sourceEvidenceHash: string;
|
|
931
|
+
}
|
|
932
|
+
export interface HistoricalStepProvenanceRecoveryPreflight {
|
|
933
|
+
eligible: boolean;
|
|
934
|
+
action: 'task historical-step-provenance-recover' | null;
|
|
935
|
+
projectId: string;
|
|
936
|
+
taskId: string;
|
|
937
|
+
taskRevision: number;
|
|
938
|
+
briefHash: string;
|
|
939
|
+
planHash: string | null;
|
|
940
|
+
headCommit: string;
|
|
941
|
+
activeStepId: string | null;
|
|
942
|
+
dirtyFiles: string[];
|
|
943
|
+
commitSha: string | null;
|
|
944
|
+
sourceFinalAcceptanceRecordedAt: string | null;
|
|
798
945
|
blockers: string[];
|
|
799
946
|
}
|
|
800
947
|
export interface MilestoneProgressStepProjection {
|
|
@@ -871,6 +1018,10 @@ export interface TaskState extends RevisionedRecord {
|
|
|
871
1018
|
blockReason: string | null;
|
|
872
1019
|
mergedCommit: string | null;
|
|
873
1020
|
systemCommits: string[];
|
|
1021
|
+
/** Product commits retained after bounded invalidation of stale completed-Step authority. */
|
|
1022
|
+
invalidatedStepCommits?: string[];
|
|
1023
|
+
/** Audit trail for bounded recovery of previously reviewed Step commits omitted by a corrective Plan. */
|
|
1024
|
+
historicalStepProvenanceRecoveries?: HistoricalStepProvenanceRecoveryRecord[];
|
|
874
1025
|
/** Audit trail for bounded adoption of exact Workflow dependency-only commits. */
|
|
875
1026
|
dependencyProvenanceRecoveries?: DependencyProvenanceRecoveryRecord[];
|
|
876
1027
|
/** Set only by the beta replacement transaction; absent on legacy states. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DependencyProvenanceRecoveryPreflight, TaskState } from './contracts.js';
|
|
1
|
+
import type { DependencyProvenanceRecoveryPreflight, DownstreamProofReplanCompatibility, HistoricalStepDependencyCompatibility, TaskState } from './contracts.js';
|
|
2
2
|
interface RecoveryEnvironment {
|
|
3
3
|
activeLeaseCount: number;
|
|
4
4
|
staleLeaseCount: number;
|
|
@@ -15,5 +15,12 @@ interface RecoveryEnvironment {
|
|
|
15
15
|
baseBranch: string | null;
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
export
|
|
18
|
+
export interface ActiveDownstreamProofCompatibility {
|
|
19
|
+
activeStepId: string;
|
|
20
|
+
planHash: string;
|
|
21
|
+
dirtyFiles: string[];
|
|
22
|
+
dirtyWorktreeHash: string;
|
|
23
|
+
invalidatedStepIds: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare function inspectDependencyProvenanceRecovery(repositoryRoot: string, task: TaskState, environment: RecoveryEnvironment, activeDownstreamProof?: ActiveDownstreamProofCompatibility | null, downstreamProofReplan?: DownstreamProofReplanCompatibility | null, historicalStepProvenance?: HistoricalStepDependencyCompatibility | null): DependencyProvenanceRecoveryPreflight;
|
|
19
26
|
export {};
|
|
@@ -1,16 +1,58 @@
|
|
|
1
1
|
import { PACKAGE_NAME, PACKAGE_VERSION } from './version.js';
|
|
2
2
|
import { changedFiles, currentBranch, headCommit, runGit } from './repository.js';
|
|
3
|
+
import { hashDirtyWorktree } from './alpha6/downstream-proof.js';
|
|
3
4
|
const RECOVERY_FILES = ['package-lock.json', 'package.json'];
|
|
4
5
|
const TERMINAL_TASK_STATUSES = new Set(['merged', 'cancelled']);
|
|
5
|
-
export function inspectDependencyProvenanceRecovery(repositoryRoot, task, environment) {
|
|
6
|
+
export function inspectDependencyProvenanceRecovery(repositoryRoot, task, environment, activeDownstreamProof = null, downstreamProofReplan = null, historicalStepProvenance = null) {
|
|
6
7
|
const blockers = [];
|
|
7
8
|
const dirty = changedFiles(repositoryRoot);
|
|
8
9
|
const head = headCommit(repositoryRoot);
|
|
9
10
|
let parent = null;
|
|
10
11
|
let commitFiles = [];
|
|
11
12
|
let retainedHistoricalCommits = [];
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
const dirtyCompatibility = activeDownstreamProof ?? downstreamProofReplan ?? historicalStepProvenance;
|
|
14
|
+
if (dirtyCompatibility) {
|
|
15
|
+
if (JSON.stringify(dirty.sort()) !== JSON.stringify([...dirtyCompatibility.dirtyFiles].sort())) {
|
|
16
|
+
blockers.push('Dirty files changed after the compatibility assessment.');
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
if (hashDirtyWorktree(repositoryRoot, dirty) !== dirtyCompatibility.dirtyWorktreeHash) {
|
|
20
|
+
blockers.push('Dirty file content changed after the compatibility assessment.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
blockers.push(error instanceof Error ? error.message : String(error));
|
|
25
|
+
}
|
|
26
|
+
if (activeDownstreamProof) {
|
|
27
|
+
if (!task.planHash || task.planHash !== activeDownstreamProof.planHash) {
|
|
28
|
+
blockers.push('The current Task Plan must match the active downstream-proof compatibility binding.');
|
|
29
|
+
}
|
|
30
|
+
const inProgressSteps = task.steps.filter((step) => step.status === 'in_progress');
|
|
31
|
+
if (inProgressSteps.length !== 1 || inProgressSteps[0]?.id !== activeDownstreamProof.activeStepId) {
|
|
32
|
+
blockers.push('Exactly the bound downstream-proof Step must remain in progress.');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
else if (downstreamProofReplan) {
|
|
36
|
+
if (task.status !== 'awaiting_execution_authorization'
|
|
37
|
+
|| task.planHash !== downstreamProofReplan.reboundPlanHash
|
|
38
|
+
|| task.steps.some((step) => step.status === 'in_progress')) {
|
|
39
|
+
blockers.push('The Task must retain the exact stranded post-rebind/no-running-Step posture.');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (historicalStepProvenance) {
|
|
43
|
+
if (task.status !== 'in_progress' || task.planHash !== historicalStepProvenance.planHash) {
|
|
44
|
+
blockers.push('The current in-progress Task Plan must match the historical Step compatibility binding.');
|
|
45
|
+
}
|
|
46
|
+
const inProgressSteps = task.steps.filter((step) => step.status === 'in_progress');
|
|
47
|
+
if (inProgressSteps.length !== 1 || inProgressSteps[0]?.id !== historicalStepProvenance.activeStepId) {
|
|
48
|
+
blockers.push('Exactly the bound corrective Step must remain in progress.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
if (dirty.length > 0)
|
|
54
|
+
blockers.push('Repository checkout must be clean.');
|
|
55
|
+
}
|
|
14
56
|
if (task.workspaceOwner !== 'local')
|
|
15
57
|
blockers.push('Recovery is limited to a local Task workspace.');
|
|
16
58
|
if (!task.taskBranch || currentBranch(repositoryRoot) !== task.taskBranch) {
|
|
@@ -20,8 +62,9 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
|
|
|
20
62
|
blockers.push('The Task must have a recorded base commit.');
|
|
21
63
|
if (TERMINAL_TASK_STATUSES.has(task.status))
|
|
22
64
|
blockers.push('Terminal Tasks cannot recover dependency provenance.');
|
|
23
|
-
if (task.steps.some((step) => step.status === 'in_progress'))
|
|
65
|
+
if (!dirtyCompatibility && task.steps.some((step) => step.status === 'in_progress')) {
|
|
24
66
|
blockers.push('No Step may be in progress.');
|
|
67
|
+
}
|
|
25
68
|
if (environment.activeLeaseCount > 0)
|
|
26
69
|
blockers.push('No active writer lease may exist.');
|
|
27
70
|
if (environment.staleLeaseCount > 0)
|
|
@@ -52,11 +95,17 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
|
|
|
52
95
|
const expectedBeforeHead = [
|
|
53
96
|
...task.steps.flatMap((step) => (step.evidence ? [step.evidence.commitSha] : [])),
|
|
54
97
|
...task.systemCommits,
|
|
98
|
+
...(task.invalidatedStepCommits ?? []),
|
|
99
|
+
...(task.dependencyProvenanceRecoveries ?? []).flatMap((recovery) => recovery.retainedHistoricalCommits ?? []),
|
|
55
100
|
...environment.verifiedHistoricalStepCommits.filter((commit) => actualBeforeHead.includes(commit)),
|
|
56
101
|
];
|
|
57
102
|
retainedHistoricalCommits = environment.verifiedHistoricalStepCommits.filter((commit) => actualBeforeHead.includes(commit)
|
|
58
103
|
&& !task.systemCommits.includes(commit)
|
|
59
104
|
&& !task.steps.some((step) => step.evidence?.commitSha === commit));
|
|
105
|
+
if (historicalStepProvenance
|
|
106
|
+
&& !retainedHistoricalCommits.includes(historicalStepProvenance.retainedCommitSha)) {
|
|
107
|
+
blockers.push('The dependency candidate no longer retains the bound reviewed historical Step commit.');
|
|
108
|
+
}
|
|
60
109
|
if (history.at(-1) !== head || !sameCommitSet(actualBeforeHead, [...new Set(expectedBeforeHead)])) {
|
|
61
110
|
blockers.push('HEAD must be the only unregistered commit after the exact recorded Task history.');
|
|
62
111
|
}
|
|
@@ -73,7 +122,15 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
|
|
|
73
122
|
}
|
|
74
123
|
return {
|
|
75
124
|
eligible: blockers.length === 0,
|
|
76
|
-
action: blockers.length === 0
|
|
125
|
+
action: blockers.length === 0
|
|
126
|
+
? activeDownstreamProof
|
|
127
|
+
? 'update downstream-proof-dependency-recover'
|
|
128
|
+
: downstreamProofReplan
|
|
129
|
+
? 'update downstream-proof-replan-dependency-recover'
|
|
130
|
+
: historicalStepProvenance
|
|
131
|
+
? 'update historical-step-dependency-recover'
|
|
132
|
+
: 'update dependency-provenance-recover'
|
|
133
|
+
: null,
|
|
77
134
|
projectId: task.projectId,
|
|
78
135
|
taskId: task.id,
|
|
79
136
|
taskRevision: task.revision,
|
|
@@ -82,6 +139,9 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
|
|
|
82
139
|
packageVersion: PACKAGE_VERSION,
|
|
83
140
|
changedFiles: commitFiles,
|
|
84
141
|
retainedHistoricalCommits,
|
|
142
|
+
activeDownstreamProof,
|
|
143
|
+
downstreamProofReplan,
|
|
144
|
+
historicalStepProvenance,
|
|
85
145
|
blockers,
|
|
86
146
|
};
|
|
87
147
|
}
|
|
@@ -97,9 +157,11 @@ function dependencyJsonDiffIsBounded(repositoryRoot, parent, baseBranch) {
|
|
|
97
157
|
const afterManifestContent = runGit(repositoryRoot, ['show', 'HEAD:package.json']);
|
|
98
158
|
const beforeLockContent = runGit(repositoryRoot, ['show', `${parent}:package-lock.json`]);
|
|
99
159
|
const afterLockContent = runGit(repositoryRoot, ['show', 'HEAD:package-lock.json']);
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
160
|
+
// The base branch remains version authority through environment.versions.baseBranch.
|
|
161
|
+
// Product-owned manifest/lock fields may legitimately differ on the Task branch;
|
|
162
|
+
// the candidate itself must preserve them byte-for-structure after removing only
|
|
163
|
+
// the Workflow dependency entries.
|
|
164
|
+
void baseBranch;
|
|
103
165
|
const beforeManifest = parseJson(beforeManifestContent);
|
|
104
166
|
const afterManifest = parseJson(afterManifestContent);
|
|
105
167
|
const beforeLock = parseJson(beforeLockContent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-provenance.js","sourceRoot":"","sources":["../../src/dependency-provenance.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dependency-provenance.js","sourceRoot":"","sources":["../../src/dependency-provenance.ts"],"names":[],"mappings":"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"}
|
package/dist/src/git.d.ts
CHANGED
|
@@ -16,4 +16,4 @@ export declare function syncBaseIntoTask(repositoryRoot: string, taskBranch: str
|
|
|
16
16
|
baseCommit: string;
|
|
17
17
|
syncCommit: string;
|
|
18
18
|
};
|
|
19
|
-
export declare function validateTaskHistory(repositoryRoot: string, task: TaskState): void;
|
|
19
|
+
export declare function validateTaskHistory(repositoryRoot: string, task: TaskState, historyBoundary?: string): void;
|
package/dist/src/git.js
CHANGED
|
@@ -96,14 +96,17 @@ export function syncBaseIntoTask(repositoryRoot, taskBranch, baseBranch) {
|
|
|
96
96
|
syncCommit: headCommit(repositoryRoot),
|
|
97
97
|
};
|
|
98
98
|
}
|
|
99
|
-
export function validateTaskHistory(repositoryRoot, task) {
|
|
99
|
+
export function validateTaskHistory(repositoryRoot, task, historyBoundary = 'HEAD') {
|
|
100
100
|
if (!task.baseCommit)
|
|
101
101
|
throw new WorkflowError('STATE_CORRUPT', `Task ${task.id} has no base commit.`);
|
|
102
|
-
const
|
|
102
|
+
const boundaryCommit = runGit(repositoryRoot, ['rev-parse', historyBoundary]);
|
|
103
|
+
const actualOutput = runGit(repositoryRoot, ['rev-list', '--reverse', `${task.baseCommit}..${boundaryCommit}`]);
|
|
103
104
|
const actual = actualOutput ? actualOutput.split('\n') : [];
|
|
104
105
|
const expected = [...new Set([
|
|
105
106
|
...task.steps.flatMap((step) => (step.evidence ? [step.evidence.commitSha] : [])),
|
|
106
107
|
...task.systemCommits,
|
|
108
|
+
...(task.invalidatedStepCommits ?? []),
|
|
109
|
+
...(task.historicalStepProvenanceRecoveries ?? []).map((recovery) => recovery.commitSha),
|
|
107
110
|
...(task.dependencyProvenanceRecoveries ?? []).flatMap((recovery) => recovery.retainedHistoricalCommits ?? []),
|
|
108
111
|
])];
|
|
109
112
|
const missing = expected.filter((commit) => !actual.includes(commit));
|
|
@@ -114,6 +117,7 @@ export function validateTaskHistory(repositoryRoot, task) {
|
|
|
114
117
|
unexpected,
|
|
115
118
|
baseCommit: task.baseCommit,
|
|
116
119
|
headCommit: headCommit(repositoryRoot),
|
|
120
|
+
historyBoundary: boundaryCommit,
|
|
117
121
|
recovery: 'Restore the pre-commit working changes under coordinator control, then invoke task step-complete.',
|
|
118
122
|
});
|
|
119
123
|
}
|
package/dist/src/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;AAE3F,MAAM,UAAU,oBAAoB,CAClC,cAAsB,EACtB,MAAc,EACd,UAAkB,EAClB,qBAAoC,IAAI;IAExC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,uCAAuC,EAAE;YAC1F,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,6BAA6B,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACrE,IAAI,kBAAkB,KAAK,IAAI,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;QACrE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,sDAAsD,EAAE;YACzG,UAAU;YACV,oBAAoB,EAAE,kBAAkB;YACxC,iBAAiB,EAAE,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,cAAsB,EAAE,QAAkB;IAClE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;YACpD,GAAG,EAAE,cAAc;YACnB,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QACxE,OAAO;YACL,OAAO;YACP,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,cAAsB,EACtB,MAAc,EACd,MAAc,EACd,KAAa,EACb,aAAuB;IAEvB,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,GAAG,MAAM,wBAAwB,CAAC,CAAC;IACzG,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC7E,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,GAAG,MAAM,uCAAuC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAClH,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,cAAc,EAAE;QACrB,QAAQ;QACR,IAAI;QACJ,GAAG,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE;QAC/B,IAAI;QACJ,SAAS,MAAM,WAAW,MAAM,EAAE;KACnC,CAAC,CAAC;IACH,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,cAAsB,EAAE,UAAkB,EAAE,UAAkB;IAC5F,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,kCAAkC,CAAC,CAAC;IACrH,IAAI,aAAa,CAAC,cAAc,CAAC,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,gCAAgC,UAAU,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,UAAU,cAAc,CAAC,EAAE;QACzH,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,MAAM,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,gCAAgC,UAAU,GAAG,EAAE;YAChG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,EACtB,UAAkB,EAClB,UAAkB;IAElB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,sCAAsC,CAAC,CAAC;IACzH,IAAI,aAAa,CAAC,cAAc,CAAC,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,gCAAgC,UAAU,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAChH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACnF,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,2BAA2B,UAAU,GAAG,EAAE;YAC3F,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC7D,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,cAAsB,EACtB,IAAe,EACf,eAAe,GAAG,MAAM;IAExB,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,QAAQ,IAAI,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACtG,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;YAC3B,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjF,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;YACxF,GAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,yBAAyB,IAAI,EAAE,CAAC;SAC/G,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrF,MAAM,IAAI,aAAa,CACrB,yBAAyB,EACzB,iQAAiQ,EACjQ;YACE,OAAO;YACP,UAAU;YACV,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,UAAU,EAAE,UAAU,CAAC,cAAc,CAAC;YACtC,eAAe,EAAE,cAAc;YAC/B,QAAQ,EAAE,mGAAmG;SAC9G,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HistoricalStepProvenanceRecoveryPreflight, TaskState } from './contracts.js';
|
|
2
|
+
export interface HistoricalStepProvenanceEnvironment {
|
|
3
|
+
activeLeaseCount: number;
|
|
4
|
+
staleLeaseCount: number;
|
|
5
|
+
pendingTransactionCount: number;
|
|
6
|
+
corruptTransactionCount: number;
|
|
7
|
+
coreOperationCount: number;
|
|
8
|
+
verifiedHistoricalStepBindings: Array<{
|
|
9
|
+
stepId: string;
|
|
10
|
+
commitSha: string;
|
|
11
|
+
planHash: string;
|
|
12
|
+
recordedAt: string;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export interface HistoricalStepProvenanceInspectionOptions {
|
|
16
|
+
historyBoundary?: string;
|
|
17
|
+
preservedHeadCommit?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function omittedStepEvidenceCommits(task: TaskState, nextSteps: ReadonlyArray<Pick<TaskState['steps'][number], 'evidence'>>): string[];
|
|
20
|
+
export declare function inspectHistoricalStepProvenanceRecovery(repositoryRoot: string, task: TaskState, environment: HistoricalStepProvenanceEnvironment, options?: HistoricalStepProvenanceInspectionOptions): HistoricalStepProvenanceRecoveryPreflight;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { changedFiles, currentBranch, headCommit, runGit } from './repository.js';
|
|
2
|
+
export function omittedStepEvidenceCommits(task, nextSteps) {
|
|
3
|
+
const retainedByCurrentPlan = new Set(nextSteps.flatMap((step) => step.evidence ? [step.evidence.commitSha] : []));
|
|
4
|
+
return [...new Set(task.steps.flatMap((step) => step.evidence && !retainedByCurrentPlan.has(step.evidence.commitSha)
|
|
5
|
+
? [step.evidence.commitSha]
|
|
6
|
+
: []))];
|
|
7
|
+
}
|
|
8
|
+
export function inspectHistoricalStepProvenanceRecovery(repositoryRoot, task, environment, options = {}) {
|
|
9
|
+
const blockers = [];
|
|
10
|
+
const dirty = changedFiles(repositoryRoot);
|
|
11
|
+
const historyBoundary = options.historyBoundary ?? 'HEAD';
|
|
12
|
+
const head = options.preservedHeadCommit ?? headCommit(repositoryRoot);
|
|
13
|
+
const activeSteps = task.steps.filter((step) => step.status === 'in_progress');
|
|
14
|
+
const activeStep = activeSteps.length === 1 ? activeSteps[0] : null;
|
|
15
|
+
if (task.status !== 'in_progress')
|
|
16
|
+
blockers.push('The Task must be in progress.');
|
|
17
|
+
if (activeSteps.length !== 1)
|
|
18
|
+
blockers.push('Exactly one Step must be in progress.');
|
|
19
|
+
if (activeStep && dirty.some((file) => !activeStep.allowedWrites.includes(file))) {
|
|
20
|
+
blockers.push('Dirty files must remain confined to the active Step allowedWrites.');
|
|
21
|
+
}
|
|
22
|
+
if (task.workspaceOwner !== 'local')
|
|
23
|
+
blockers.push('Recovery is limited to a local Task workspace.');
|
|
24
|
+
if (!task.taskBranch || currentBranch(repositoryRoot) !== task.taskBranch) {
|
|
25
|
+
blockers.push('The current branch must be the recorded Task branch.');
|
|
26
|
+
}
|
|
27
|
+
if (!task.baseCommit)
|
|
28
|
+
blockers.push('The Task must have a recorded base commit.');
|
|
29
|
+
if (!task.planHash)
|
|
30
|
+
blockers.push('The Task must have a current Plan hash.');
|
|
31
|
+
if (environment.activeLeaseCount > 0)
|
|
32
|
+
blockers.push('No active writer lease may exist.');
|
|
33
|
+
if (environment.staleLeaseCount > 0)
|
|
34
|
+
blockers.push('No stale writer lease may exist.');
|
|
35
|
+
if (environment.pendingTransactionCount > 0)
|
|
36
|
+
blockers.push('No pending Workflow transaction may exist.');
|
|
37
|
+
if (environment.corruptTransactionCount > 0)
|
|
38
|
+
blockers.push('No corrupt Workflow transaction may exist.');
|
|
39
|
+
if (environment.coreOperationCount > 0)
|
|
40
|
+
blockers.push('No Core Task operation may exist.');
|
|
41
|
+
let candidate = null;
|
|
42
|
+
let sourceFinalAcceptanceRecordedAt = null;
|
|
43
|
+
if (task.baseCommit) {
|
|
44
|
+
try {
|
|
45
|
+
const output = runGit(repositoryRoot, ['rev-list', '--reverse', `${task.baseCommit}..${historyBoundary}`]);
|
|
46
|
+
const actual = output ? output.split('\n') : [];
|
|
47
|
+
const expected = [...new Set([
|
|
48
|
+
...task.steps.flatMap((step) => (step.evidence ? [step.evidence.commitSha] : [])),
|
|
49
|
+
...task.systemCommits,
|
|
50
|
+
...(task.invalidatedStepCommits ?? []),
|
|
51
|
+
...(task.dependencyProvenanceRecoveries ?? []).flatMap((recovery) => recovery.retainedHistoricalCommits ?? []),
|
|
52
|
+
])];
|
|
53
|
+
const missing = expected.filter((commit) => !actual.includes(commit));
|
|
54
|
+
const unexpected = actual.filter((commit) => !expected.includes(commit));
|
|
55
|
+
if (missing.length > 0)
|
|
56
|
+
blockers.push('Recorded Task history contains missing commits.');
|
|
57
|
+
if (unexpected.length !== 1)
|
|
58
|
+
blockers.push('Recovery requires exactly one unregistered historical commit.');
|
|
59
|
+
candidate = unexpected.length === 1 ? unexpected[0] : null;
|
|
60
|
+
const verifiedBindings = candidate
|
|
61
|
+
? environment.verifiedHistoricalStepBindings.filter((binding) => binding.commitSha === candidate)
|
|
62
|
+
: [];
|
|
63
|
+
if (verifiedBindings.length === 0) {
|
|
64
|
+
blockers.push('The historical commit lacks a complete passed strict Step Review chain.');
|
|
65
|
+
}
|
|
66
|
+
const finalAcceptance = candidate
|
|
67
|
+
? task.authorizations.find((authorization) => authorization.kind === 'final_acceptance'
|
|
68
|
+
&& ['approved', 'superseded'].includes(authorization.decision)
|
|
69
|
+
&& authorization.headCommit === candidate
|
|
70
|
+
&& authorization.planHash
|
|
71
|
+
&& authorization.resultHash
|
|
72
|
+
&& authorization.evidenceHash)
|
|
73
|
+
: null;
|
|
74
|
+
if (!finalAcceptance) {
|
|
75
|
+
blockers.push('The historical commit lacks a hash-bound prior final acceptance.');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
sourceFinalAcceptanceRecordedAt = finalAcceptance.recordedAt;
|
|
79
|
+
if (!verifiedBindings.some((binding) => binding.planHash === finalAcceptance.planHash
|
|
80
|
+
&& binding.recordedAt <= finalAcceptance.recordedAt)) {
|
|
81
|
+
blockers.push('The prior final acceptance does not bind the passed historical Step Review Plan.');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (candidate) {
|
|
85
|
+
const subject = runGit(repositoryRoot, ['show', '-s', '--format=%s', candidate]);
|
|
86
|
+
if (!subject.startsWith(`${task.id}/STEP-`)) {
|
|
87
|
+
blockers.push('The historical commit subject is not bound to this Task and a Step.');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
blockers.push('The Task history could not be inspected.');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
eligible: blockers.length === 0,
|
|
97
|
+
action: blockers.length === 0 ? 'task historical-step-provenance-recover' : null,
|
|
98
|
+
projectId: task.projectId,
|
|
99
|
+
taskId: task.id,
|
|
100
|
+
taskRevision: task.revision,
|
|
101
|
+
briefHash: task.briefHash,
|
|
102
|
+
planHash: task.planHash,
|
|
103
|
+
headCommit: head,
|
|
104
|
+
activeStepId: activeStep?.id ?? null,
|
|
105
|
+
dirtyFiles: dirty,
|
|
106
|
+
commitSha: blockers.length === 0 ? candidate : null,
|
|
107
|
+
sourceFinalAcceptanceRecordedAt: blockers.length === 0 ? sourceFinalAcceptanceRecordedAt : null,
|
|
108
|
+
blockers,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=historical-step-provenance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"historical-step-provenance.js","sourceRoot":"","sources":["../../src/historical-step-provenance.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { correctiveReplanBindingManifest } from '../lifecycle/corrective-replan-
|
|
|
10
10
|
import { correctiveReplanCredentialSchemaValidators } from '../lifecycle/corrective-replan-credential-schema.js';
|
|
11
11
|
import { hashCorrectivePlanBytes, prepareCorrectiveReplanCandidate, } from '../lifecycle/corrective-replan.js';
|
|
12
12
|
import { hashCanonical } from '../lifecycle/fingerprint.js';
|
|
13
|
+
import { omittedStepEvidenceCommits } from '../historical-step-provenance.js';
|
|
13
14
|
import { deepFreeze } from '../lifecycle/immutable.js';
|
|
14
15
|
import { CoreTaskOperationLockManager, } from './lock.js';
|
|
15
16
|
import { CORRECTIVE_REPLAN_TARGETS, CorrectiveReplanTaskTransactionStore, } from './corrective-replan-transaction.js';
|
|
@@ -358,6 +359,10 @@ function materializeResultTask(task, plan, planHash, recordedAt) {
|
|
|
358
359
|
knowledgeMapHash: plan.knowledgeMapHash,
|
|
359
360
|
graphUse: plan.graphUse,
|
|
360
361
|
steps: plannedSteps,
|
|
362
|
+
invalidatedStepCommits: [...new Set([
|
|
363
|
+
...(task.invalidatedStepCommits ?? []),
|
|
364
|
+
...omittedStepEvidenceCommits(task, plannedSteps),
|
|
365
|
+
])],
|
|
361
366
|
authorizations: task.authorizations.map((authorization) => authorization.kind === 'execution' && authorization.decision === 'approved'
|
|
362
367
|
? { ...authorization, decision: 'superseded' }
|
|
363
368
|
: authorization),
|