codex-workflow-v2 2.0.0-beta.2 → 2.0.0-beta.4

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.
Files changed (128) hide show
  1. package/README.md +35 -2
  2. package/dist/src/alpha6/adoption.js +13 -3
  3. package/dist/src/alpha6/adoption.js.map +1 -1
  4. package/dist/src/alpha6/handoff.d.ts +21 -0
  5. package/dist/src/alpha6/handoff.js +100 -19
  6. package/dist/src/alpha6/handoff.js.map +1 -1
  7. package/dist/src/alpha6/milestone.d.ts +2 -0
  8. package/dist/src/alpha6/milestone.js +15 -0
  9. package/dist/src/alpha6/milestone.js.map +1 -1
  10. package/dist/src/alpha6/plan-risk.d.ts +1 -0
  11. package/dist/src/alpha6/plan-risk.js +6 -0
  12. package/dist/src/alpha6/plan-risk.js.map +1 -1
  13. package/dist/src/cli.js +188 -65
  14. package/dist/src/cli.js.map +1 -1
  15. package/dist/src/contracts.d.ts +111 -5
  16. package/dist/src/contracts.js +1 -1
  17. package/dist/src/credential-output.d.ts +10 -0
  18. package/dist/src/credential-output.js +73 -0
  19. package/dist/src/credential-output.js.map +1 -0
  20. package/dist/src/errors.d.ts +1 -1
  21. package/dist/src/errors.js.map +1 -1
  22. package/dist/src/index.d.ts +1 -1
  23. package/dist/src/index.js +1 -1
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/lifecycle/canonical-hash.d.ts +6 -0
  26. package/dist/src/lifecycle/canonical-hash.js +24 -0
  27. package/dist/src/lifecycle/canonical-hash.js.map +1 -0
  28. package/dist/src/lifecycle/catalog.d.ts +26 -0
  29. package/dist/src/lifecycle/catalog.js +208 -0
  30. package/dist/src/lifecycle/catalog.js.map +1 -0
  31. package/dist/src/lifecycle/compiler-inspection.d.ts +48 -0
  32. package/dist/src/lifecycle/compiler-inspection.js +29 -0
  33. package/dist/src/lifecycle/compiler-inspection.js.map +1 -0
  34. package/dist/src/lifecycle/core-static-readiness.d.ts +6 -0
  35. package/dist/src/lifecycle/core-static-readiness.js +130 -0
  36. package/dist/src/lifecycle/core-static-readiness.js.map +1 -0
  37. package/dist/src/lifecycle/corrective-replan-authority.d.ts +53 -0
  38. package/dist/src/lifecycle/corrective-replan-authority.js +139 -0
  39. package/dist/src/lifecycle/corrective-replan-authority.js.map +1 -0
  40. package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +21 -0
  41. package/dist/src/lifecycle/corrective-replan-binding-manifest.js +35 -0
  42. package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -0
  43. package/dist/src/lifecycle/corrective-replan-credential-core.d.ts +86 -0
  44. package/dist/src/lifecycle/corrective-replan-credential-core.js +534 -0
  45. package/dist/src/lifecycle/corrective-replan-credential-core.js.map +1 -0
  46. package/dist/src/lifecycle/corrective-replan-credential-schema.d.ts +17 -0
  47. package/dist/src/lifecycle/corrective-replan-credential-schema.js +44 -0
  48. package/dist/src/lifecycle/corrective-replan-credential-schema.js.map +1 -0
  49. package/dist/src/lifecycle/corrective-replan-credentials.d.ts +47 -0
  50. package/dist/src/lifecycle/corrective-replan-credentials.js +103 -0
  51. package/dist/src/lifecycle/corrective-replan-credentials.js.map +1 -0
  52. package/dist/src/lifecycle/corrective-replan.d.ts +64 -0
  53. package/dist/src/lifecycle/corrective-replan.js +548 -0
  54. package/dist/src/lifecycle/corrective-replan.js.map +1 -0
  55. package/dist/src/lifecycle/evaluator.d.ts +2 -0
  56. package/dist/src/lifecycle/evaluator.js +35 -0
  57. package/dist/src/lifecycle/evaluator.js.map +1 -0
  58. package/dist/src/lifecycle/fingerprint.d.ts +31 -0
  59. package/dist/src/lifecycle/fingerprint.js +388 -0
  60. package/dist/src/lifecycle/fingerprint.js.map +1 -0
  61. package/dist/src/lifecycle/immutable.d.ts +1 -0
  62. package/dist/src/lifecycle/immutable.js +10 -0
  63. package/dist/src/lifecycle/immutable.js.map +1 -0
  64. package/dist/src/lifecycle/implementation-table.d.ts +29 -0
  65. package/dist/src/lifecycle/implementation-table.js +87 -0
  66. package/dist/src/lifecycle/implementation-table.js.map +1 -0
  67. package/dist/src/lifecycle/index.d.ts +4 -0
  68. package/dist/src/lifecycle/index.js +5 -0
  69. package/dist/src/lifecycle/index.js.map +1 -0
  70. package/dist/src/lifecycle/schema-artifact.d.ts +12 -0
  71. package/dist/src/lifecycle/schema-artifact.js +214 -0
  72. package/dist/src/lifecycle/schema-artifact.js.map +1 -0
  73. package/dist/src/lifecycle/semantic-registry.d.ts +6 -0
  74. package/dist/src/lifecycle/semantic-registry.js +489 -0
  75. package/dist/src/lifecycle/semantic-registry.js.map +1 -0
  76. package/dist/src/lifecycle/types.d.ts +718 -0
  77. package/dist/src/lifecycle/types.js +4 -0
  78. package/dist/src/lifecycle/types.js.map +1 -0
  79. package/dist/src/observation.d.ts +20 -0
  80. package/dist/src/observation.js +171 -0
  81. package/dist/src/observation.js.map +1 -0
  82. package/dist/src/state/corrective-replan-executor.d.ts +64 -0
  83. package/dist/src/state/corrective-replan-executor.js +598 -0
  84. package/dist/src/state/corrective-replan-executor.js.map +1 -0
  85. package/dist/src/state/corrective-replan-public-schema.d.ts +3 -0
  86. package/dist/src/state/corrective-replan-public-schema.js +43 -0
  87. package/dist/src/state/corrective-replan-public-schema.js.map +1 -0
  88. package/dist/src/state/corrective-replan-public.d.ts +95 -0
  89. package/dist/src/state/corrective-replan-public.js +618 -0
  90. package/dist/src/state/corrective-replan-public.js.map +1 -0
  91. package/dist/src/state/corrective-replan-transaction.d.ts +158 -0
  92. package/dist/src/state/corrective-replan-transaction.js +723 -0
  93. package/dist/src/state/corrective-replan-transaction.js.map +1 -0
  94. package/dist/src/state/corrective-yield-executor.d.ts +31 -0
  95. package/dist/src/state/corrective-yield-executor.js +236 -0
  96. package/dist/src/state/corrective-yield-executor.js.map +1 -0
  97. package/dist/src/state/corrective-yield-transaction.d.ts +97 -0
  98. package/dist/src/state/corrective-yield-transaction.js +591 -0
  99. package/dist/src/state/corrective-yield-transaction.js.map +1 -0
  100. package/dist/src/state/lock.d.ts +75 -3
  101. package/dist/src/state/lock.js +582 -30
  102. package/dist/src/state/lock.js.map +1 -1
  103. package/dist/src/state/store.d.ts +3 -0
  104. package/dist/src/state/store.js +65 -12
  105. package/dist/src/state/store.js.map +1 -1
  106. package/dist/src/transition-core.d.ts +67 -0
  107. package/dist/src/transition-core.js +318 -0
  108. package/dist/src/transition-core.js.map +1 -0
  109. package/dist/src/version.d.ts +1 -1
  110. package/dist/src/version.js +1 -1
  111. package/dist/src/workflow.d.ts +34 -22
  112. package/dist/src/workflow.js +486 -141
  113. package/dist/src/workflow.js.map +1 -1
  114. package/docs/lifecycle/state-machine-stabilization.md +641 -0
  115. package/docs/release.md +4 -2
  116. package/docs/updating-existing-project.md +9 -0
  117. package/package.json +4 -1
  118. package/schemas/adoption-posture-event.schema.json +1 -1
  119. package/schemas/context-envelope.schema.json +1 -1
  120. package/schemas/corrective-replan-credentials.private.schema.json +98 -0
  121. package/schemas/corrective-replan-execution-event.private.schema.json +53 -0
  122. package/schemas/corrective-replan-public.schema.json +142 -0
  123. package/schemas/corrective-replan-task-transaction.private.schema.json +151 -0
  124. package/schemas/corrective-yield-task-transaction.private.schema.json +98 -0
  125. package/schemas/remediation-event.schema.json +11 -1
  126. package/schemas/task-handoff-event.schema.json +1 -1
  127. package/schemas/transition-definition.schema.json +2609 -0
  128. package/schemas/transition-payloads.schema.json +140 -0
@@ -0,0 +1,4 @@
1
+ export const LIFECYCLE_EPOCH = 2;
2
+ export const TRANSITION_DEFINITION_FORMAT_VERSION = 4;
3
+ export const TRANSITION_CATALOG_FORMAT_VERSION = 4;
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lifecycle/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAG,CAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAAU,CAAC;AAC/D,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAU,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { AdoptionPostureEvent, ProjectRecord, WorkflowObservation, WriterLease } from './contracts.js';
2
+ import type { RepositoryIdentity } from './repository.js';
3
+ import type { FileStateStore } from './state/store.js';
4
+ export interface WorkflowObservationBoundary {
5
+ identity: RepositoryIdentity;
6
+ project: ProjectRecord | null;
7
+ currentAdoptionPosture: AdoptionPostureEvent | null;
8
+ leases: WriterLease[];
9
+ observation: WorkflowObservation;
10
+ }
11
+ /**
12
+ * Reads only the persistence boundary needed to decide whether a coherent lifecycle snapshot can
13
+ * be loaded. It deliberately does not register a project, recover a journal, initialize adoption,
14
+ * or construct a WriterLockManager.
15
+ */
16
+ export declare function inspectWorkflowObservationBoundary(options: {
17
+ store: FileStateStore;
18
+ identity: RepositoryIdentity;
19
+ now: Date;
20
+ }): WorkflowObservationBoundary;
@@ -0,0 +1,171 @@
1
+ import { existsSync, readdirSync, realpathSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { readCurrentAdoptionPosture } from './alpha6/adoption.js';
4
+ import { listMilestoneTransactionJournals } from './alpha6/journal.js';
5
+ import { assertNoSymlinkPathComponents } from './alpha6/store-sidecars.js';
6
+ import { listProjectTransactions } from './beta1/project-transaction.js';
7
+ import { listCoreTaskOperationMutexes, listWriterLeases, toPublicCoreTaskOperation, toPublicWriterLease, } from './state/lock.js';
8
+ import { inspectCorrectiveReplanTaskTransactions } from './state/corrective-replan-transaction.js';
9
+ import { inspectCorrectiveYieldTaskTransactions } from './state/corrective-yield-transaction.js';
10
+ /**
11
+ * Reads only the persistence boundary needed to decide whether a coherent lifecycle snapshot can
12
+ * be loaded. It deliberately does not register a project, recover a journal, initialize adoption,
13
+ * or construct a WriterLockManager.
14
+ */
15
+ export function inspectWorkflowObservationBoundary(options) {
16
+ const { store, identity, now } = options;
17
+ const projectRoot = store.projectRoot(identity.projectId);
18
+ const projectFile = path.join(projectRoot, 'project.json');
19
+ const lockRoot = store.lockRoot(identity.projectId);
20
+ const stateRootPresent = existsSync(store.root);
21
+ const projectRootPresent = existsSync(projectRoot);
22
+ const lockRootPresent = existsSync(lockRoot);
23
+ const missingRegistration = !existsSync(projectFile);
24
+ const pendingProjectTransactions = observeProjectTransactions(projectRoot, identity.projectId);
25
+ const pendingMilestoneTransactions = observeMilestoneTransactions(store, identity.projectId);
26
+ const replanTransactions = inspectCorrectiveReplanTaskTransactions(projectRoot, store.root);
27
+ const yieldTransactions = inspectCorrectiveYieldTaskTransactions(projectRoot, store.root);
28
+ const taskTransactions = {
29
+ pending: [...replanTransactions.pending, ...yieldTransactions.pending]
30
+ .sort((left, right) => left.taskId.localeCompare(right.taskId) || left.transactionId.localeCompare(right.transactionId)),
31
+ corrupt: [...replanTransactions.corrupt, ...yieldTransactions.corrupt]
32
+ .sort((left, right) => left.taskId.localeCompare(right.taskId) || left.transactionId.localeCompare(right.transactionId)),
33
+ };
34
+ const pendingTaskTransitionIds = [...new Set(taskTransactions.pending.map((transaction) => transaction.transitionId))];
35
+ const mixedPendingTaskTransitions = pendingTaskTransitionIds.length > 1;
36
+ const leases = listWriterLeases(lockRoot);
37
+ const coreTaskOperations = listCoreTaskOperationMutexes(lockRoot, store.root)
38
+ .map((mutex) => toPublicCoreTaskOperation(mutex, now));
39
+ const orphanCoreTaskOperations = coreTaskOperations.filter((operation) => !taskTransactions.pending.some((transaction) => transaction.taskId === operation.entityId && transaction.transactionId === operation.operationId));
40
+ const project = !missingRegistration && pendingProjectTransactions.length === 0
41
+ ? store.readProject(identity.projectId)
42
+ : null;
43
+ const repositoryRootBound = project?.repositoryRoots.includes(identity.repositoryRoot) ?? false;
44
+ const adoptionAssessed = pendingProjectTransactions.length === 0
45
+ && pendingMilestoneTransactions.length === 0
46
+ && taskTransactions.pending.length === 0
47
+ && taskTransactions.corrupt.length === 0
48
+ && orphanCoreTaskOperations.length === 0;
49
+ const currentAdoptionPosture = adoptionAssessed && stateRootPresent
50
+ ? readCurrentAdoptionPosture(store, identity.projectId)
51
+ : null;
52
+ const missingAdoption = adoptionAssessed && currentAdoptionPosture === null;
53
+ const observedLeases = leases.map((lease) => toPublicWriterLease(lease, now));
54
+ const activeLeases = observedLeases.filter((lease) => !lease.stale);
55
+ const staleLeases = observedLeases.filter((lease) => lease.stale);
56
+ const reasonCodes = [];
57
+ if (missingRegistration)
58
+ reasonCodes.push('PROJECT_REGISTRATION_MISSING');
59
+ if (project && !repositoryRootBound)
60
+ reasonCodes.push('PROJECT_REPOSITORY_ROOT_UNBOUND');
61
+ if (pendingProjectTransactions.length > 0)
62
+ reasonCodes.push('PROJECT_RECOVERY_REQUIRED');
63
+ if (pendingMilestoneTransactions.length > 0)
64
+ reasonCodes.push('MILESTONE_RECOVERY_REQUIRED');
65
+ if (taskTransactions.pending.length > 0)
66
+ reasonCodes.push('TASK_RECOVERY_REQUIRED');
67
+ if (taskTransactions.corrupt.length > 0)
68
+ reasonCodes.push('TASK_TRANSACTION_INTEGRITY_FAILED');
69
+ if (orphanCoreTaskOperations.some((operation) => !operation.stale))
70
+ reasonCodes.push('TASK_OPERATION_IN_PROGRESS');
71
+ if (orphanCoreTaskOperations.some((operation) => operation.stale))
72
+ reasonCodes.push('STALE_TASK_OPERATION');
73
+ if (activeLeases.length > 0)
74
+ reasonCodes.push('ACTIVE_WRITER_LEASE');
75
+ if (staleLeases.length > 0)
76
+ reasonCodes.push('STALE_WRITER_LEASE');
77
+ if (missingAdoption)
78
+ reasonCodes.push('ADOPTION_MISSING');
79
+ const blocked = missingRegistration
80
+ || (project !== null && !repositoryRootBound)
81
+ || pendingProjectTransactions.length > 0
82
+ || taskTransactions.corrupt.length > 0
83
+ || mixedPendingTaskTransitions
84
+ || orphanCoreTaskOperations.length > 0;
85
+ const repairable = taskTransactions.pending.length > 0
86
+ || pendingMilestoneTransactions.length > 0
87
+ || staleLeases.length > 0;
88
+ const kind = blocked ? 'blocked' : repairable ? 'repair' : 'assessment';
89
+ const repair = kind !== 'repair'
90
+ ? null
91
+ : taskTransactions.pending.length > 0
92
+ ? {
93
+ command: pendingTaskTransitionIds[0] === 'task.coordination.corrective-yield'
94
+ ? 'task corrective-yield-recover'
95
+ : 'task corrective-replan-recover',
96
+ cataloged: false,
97
+ available: true,
98
+ projectId: identity.projectId,
99
+ taskIds: [...new Set(taskTransactions.pending.map((transaction) => transaction.taskId))].sort(),
100
+ transactionIds: taskTransactions.pending.map((transaction) => transaction.transactionId).sort(),
101
+ }
102
+ : pendingMilestoneTransactions.length > 0
103
+ ? {
104
+ command: 'milestone recover',
105
+ cataloged: false,
106
+ projectId: identity.projectId,
107
+ milestoneIds: [...new Set(pendingMilestoneTransactions.map((transaction) => transaction.milestoneId))].sort(),
108
+ transactionIds: pendingMilestoneTransactions.map((transaction) => transaction.transactionId).sort(),
109
+ }
110
+ : {
111
+ command: 'locks repair',
112
+ cataloged: false,
113
+ projectId: identity.projectId,
114
+ entityIds: staleLeases.map((lease) => lease.entityId).sort(),
115
+ };
116
+ return {
117
+ identity,
118
+ project,
119
+ currentAdoptionPosture,
120
+ leases,
121
+ observation: {
122
+ kind,
123
+ reasonCodes,
124
+ stateRootPresent,
125
+ projectRootPresent,
126
+ lockRootPresent,
127
+ missingRegistration,
128
+ repositoryRootBound,
129
+ adoptionAssessed,
130
+ missingAdoption,
131
+ pendingProjectTransactions,
132
+ pendingMilestoneTransactions,
133
+ pendingTaskTransactions: taskTransactions.pending,
134
+ corruptTaskTransactions: taskTransactions.corrupt,
135
+ coreTaskOperations,
136
+ leases: observedLeases,
137
+ availableRepairTransitionId: null,
138
+ repair,
139
+ },
140
+ };
141
+ }
142
+ function observeProjectTransactions(projectRoot, projectId) {
143
+ return listProjectTransactions(projectRoot, projectId)
144
+ .map((transaction) => ({ ...transaction }))
145
+ .sort((left, right) => left.preparedAt.localeCompare(right.preparedAt)
146
+ || left.transactionId.localeCompare(right.transactionId));
147
+ }
148
+ function observeMilestoneTransactions(store, projectId) {
149
+ const milestonesRoot = path.join(store.projectRoot(projectId), 'milestones');
150
+ if (!existsSync(milestonesRoot))
151
+ return [];
152
+ assertNoSymlinkPathComponents(milestonesRoot, {
153
+ label: 'Milestones observation root',
154
+ requireLeaf: true,
155
+ trustedRoot: store.root,
156
+ });
157
+ return readdirSync(milestonesRoot, { withFileTypes: true })
158
+ .filter((entry) => entry.isDirectory())
159
+ .flatMap((entry) => listMilestoneTransactionJournals(realpathSync(path.join(milestonesRoot, entry.name)), {
160
+ expectedMilestoneId: entry.name,
161
+ }).map((journal) => ({
162
+ milestoneId: journal.milestoneId,
163
+ transactionId: journal.transactionId,
164
+ phase: journal.phase,
165
+ preparedAt: journal.preparedAt,
166
+ updatedAt: journal.updatedAt,
167
+ })))
168
+ .sort((left, right) => left.preparedAt.localeCompare(right.preparedAt)
169
+ || left.transactionId.localeCompare(right.transactionId));
170
+ }
171
+ //# sourceMappingURL=observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/observation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { PlanRiskAuditDecision, PlanRiskAuditStepClassification, TaskPlanInput, TaskState } from '../contracts.js';
2
+ import type { CorrectiveReplanCredentialKernel, ReceiptHandle, StoredPlanValidationEventHandle } from '../lifecycle/corrective-replan-credential-core.js';
3
+ import { type CoreTaskOperationHandle } from './lock.js';
4
+ import { CorrectiveReplanTaskTransactionStore, type CorrectiveReplanTaskTransactionJournal } from './corrective-replan-transaction.js';
5
+ type JsonRecord = Record<string, unknown>;
6
+ export interface CorrectiveReplanRiskAuditInput {
7
+ readonly summary: string;
8
+ readonly decision: PlanRiskAuditDecision;
9
+ readonly splitRationale: string | null;
10
+ readonly stepClassifications: readonly PlanRiskAuditStepClassification[];
11
+ }
12
+ export type CorrectiveReplanCrashBoundary = 'after-intent' | 'after-applying-phase' | `after-target-${0 | 1 | 2 | 3 | 4}` | `after-target-phase-${0 | 1 | 2 | 3 | 4}` | 'after-published-phase' | 'after-domain-readback' | 'after-completed-phase' | 'after-terminal-readback';
13
+ export interface ExecuteCorrectiveReplanInput {
14
+ readonly projectId: string;
15
+ readonly taskId: string;
16
+ readonly receipt: ReceiptHandle;
17
+ readonly candidateReceipt: unknown;
18
+ readonly planValidationEvent: StoredPlanValidationEventHandle;
19
+ readonly candidatePlanValidationEvent: unknown;
20
+ readonly plan: TaskPlanInput;
21
+ readonly riskAudit: CorrectiveReplanRiskAuditInput;
22
+ }
23
+ export interface CorrectiveReplanExecutionResult {
24
+ readonly kind: 'corrective-replan-execution-result';
25
+ readonly disposition: 'executed' | 'recovered' | 'replayed';
26
+ readonly taskId: string;
27
+ readonly transactionId: string;
28
+ readonly resultSha256: string;
29
+ }
30
+ export interface CorrectiveReplanExecutor {
31
+ execute(input: ExecuteCorrectiveReplanInput): CorrectiveReplanExecutionResult;
32
+ recover(input: {
33
+ taskId: string;
34
+ transactionId: string;
35
+ }): CorrectiveReplanExecutionResult;
36
+ replay(input: {
37
+ taskId: string;
38
+ transactionId: string;
39
+ receiptHash: string;
40
+ }): CorrectiveReplanExecutionResult;
41
+ }
42
+ interface ExecutorOptions {
43
+ readonly taskRoot: string;
44
+ readonly locksRoot: string;
45
+ readonly trustedRoot: string;
46
+ readonly credentialKernel: CorrectiveReplanCredentialKernel;
47
+ readonly admissionCheck?: (input: Readonly<{
48
+ task: TaskState;
49
+ plan: TaskPlanInput;
50
+ riskAudit: CorrectiveReplanRiskAuditInput;
51
+ receiptVerified: true;
52
+ validationEventVerified: true;
53
+ taskOperationLockHeld: true;
54
+ }>) => void;
55
+ readonly now?: () => Date;
56
+ readonly faultInjector?: (boundary: CorrectiveReplanCrashBoundary) => void;
57
+ }
58
+ export declare function createCorrectiveReplanExecutor(options: ExecutorOptions): CorrectiveReplanExecutor;
59
+ export declare function correctiveReplanStepSetHash(stepIds: readonly string[]): string;
60
+ export declare function correctiveReplanRiskAuditHash(bindingValues: unknown, input: CorrectiveReplanRiskAuditInput): string;
61
+ export declare function driveCorrectiveReplanTransaction(transactions: CorrectiveReplanTaskTransactionStore, handle: CoreTaskOperationHandle, transactionId: string, disposition: CorrectiveReplanExecutionResult['disposition'], fault: (boundary: CorrectiveReplanCrashBoundary) => void): CorrectiveReplanExecutionResult;
62
+ export declare function correctiveReplanTerminalReadback(transactions: CorrectiveReplanTaskTransactionStore, handle: CoreTaskOperationHandle, journal: CorrectiveReplanTaskTransactionJournal): string;
63
+ export declare function correctiveReplanExecutionKeyHash(binding: JsonRecord): string;
64
+ export {};