codex-workflow-v2 2.0.0-alpha.4 → 2.0.0-alpha.6.1

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 (77) hide show
  1. package/README.md +114 -10
  2. package/dist/src/alpha6/adoption.d.ts +55 -0
  3. package/dist/src/alpha6/adoption.js +920 -0
  4. package/dist/src/alpha6/adoption.js.map +1 -0
  5. package/dist/src/alpha6/handoff.d.ts +39 -0
  6. package/dist/src/alpha6/handoff.js +975 -0
  7. package/dist/src/alpha6/handoff.js.map +1 -0
  8. package/dist/src/alpha6/journal.d.ts +30 -0
  9. package/dist/src/alpha6/journal.js +369 -0
  10. package/dist/src/alpha6/journal.js.map +1 -0
  11. package/dist/src/alpha6/milestone.d.ts +49 -0
  12. package/dist/src/alpha6/milestone.js +1049 -0
  13. package/dist/src/alpha6/milestone.js.map +1 -0
  14. package/dist/src/alpha6/plan-risk.d.ts +32 -0
  15. package/dist/src/alpha6/plan-risk.js +847 -0
  16. package/dist/src/alpha6/plan-risk.js.map +1 -0
  17. package/dist/src/alpha6/remediation.d.ts +20 -0
  18. package/dist/src/alpha6/remediation.js +748 -0
  19. package/dist/src/alpha6/remediation.js.map +1 -0
  20. package/dist/src/alpha6/review.d.ts +46 -0
  21. package/dist/src/alpha6/review.js +785 -0
  22. package/dist/src/alpha6/review.js.map +1 -0
  23. package/dist/src/alpha6/store-sidecars.d.ts +35 -0
  24. package/dist/src/alpha6/store-sidecars.js +281 -0
  25. package/dist/src/alpha6/store-sidecars.js.map +1 -0
  26. package/dist/src/cli.js +95 -19
  27. package/dist/src/cli.js.map +1 -1
  28. package/dist/src/contracts.d.ts +259 -0
  29. package/dist/src/git.js +2 -1
  30. package/dist/src/git.js.map +1 -1
  31. package/dist/src/index.d.ts +2 -0
  32. package/dist/src/reviewer.d.ts +6 -1
  33. package/dist/src/reviewer.js +145 -32
  34. package/dist/src/reviewer.js.map +1 -1
  35. package/dist/src/state/lock.d.ts +1 -0
  36. package/dist/src/state/lock.js +7 -1
  37. package/dist/src/state/lock.js.map +1 -1
  38. package/dist/src/state/store.d.ts +39 -1
  39. package/dist/src/state/store.js +127 -1
  40. package/dist/src/state/store.js.map +1 -1
  41. package/dist/src/version.d.ts +1 -1
  42. package/dist/src/version.js +1 -1
  43. package/dist/src/version.js.map +1 -1
  44. package/dist/src/workflow.d.ts +123 -9
  45. package/dist/src/workflow.js +1497 -76
  46. package/dist/src/workflow.js.map +1 -1
  47. package/docs/autonomy-guardrails.md +143 -0
  48. package/docs/decisions.md +27 -0
  49. package/docs/delegated-approval.md +30 -5
  50. package/docs/development-flow.md +40 -1
  51. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +155 -136
  52. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +236 -223
  53. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +225 -206
  54. package/docs/project-memory.md +7 -0
  55. package/docs/release.md +7 -0
  56. package/docs/updating-existing-project.md +75 -5
  57. package/docs/validation-report.md +56 -34
  58. package/package.json +2 -2
  59. package/plugins/codex-workflow-gateway/references/protocol.md +155 -6
  60. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +23 -1
  61. package/references/git-policy.md +5 -2
  62. package/references/state-machine.md +36 -0
  63. package/references/validation-and-review.md +28 -1
  64. package/roles/delivery-coordinator.md +11 -0
  65. package/roles/independent-reviewer.md +3 -0
  66. package/roles/technical-planner.md +7 -0
  67. package/roles/worker.md +4 -0
  68. package/schemas/adoption-posture-event.schema.json +129 -0
  69. package/schemas/corrective-decision-event.schema.json +55 -0
  70. package/schemas/corrective-plan-audit.schema.json +20 -0
  71. package/schemas/milestone-scope-change-event.schema.json +68 -0
  72. package/schemas/milestone-transaction-journal.schema.json +95 -0
  73. package/schemas/plan-risk-audit-event.schema.json +90 -0
  74. package/schemas/remediation-event.schema.json +53 -0
  75. package/schemas/reviewer-attestation-event.schema.json +49 -0
  76. package/schemas/step-review-event.schema.json +74 -0
  77. package/schemas/task-handoff-event.schema.json +116 -0
@@ -1,5 +1,9 @@
1
- import { type ContextEnvelope, type DelegationGrant, type DelegationGrantGate, type DelegationPolicyInput, type DiscoveryState, type MilestonePlanInput, type MilestoneState, type KnowledgeSelection, type GraphBinding, type GraphKind, type GraphMode, type GraphRefreshEvidence, type GraphRefreshRequest, type ProjectKnowledgeMap, type ReviewInput, type TaskPlanInput, type TaskState, type WriterLease, type WorkflowRole, type WorkspaceOwner } from './contracts.js';
1
+ import { type AdoptionPostureEvent, type ContextEnvelope, type CorrectivePlanAuditInput, type DelegationGrant, type DelegationGrantGate, type DelegationPolicyInput, type DiscoveryState, type MilestonePlanInput, type MilestoneState, type KnowledgeSelection, type GraphBinding, type GraphKind, type GraphMode, type GraphRefreshEvidence, type GraphRefreshRequest, type PlanRiskAuditEvent, type ProjectKnowledgeMap, type ReviewInput, type TaskPlanInput, type TaskContextRefreshResult, type TaskState, type UpdatePreflightResult, type WriterLease, type WorkflowRole, type WorkspaceOwner } from './contracts.js';
2
+ import { appendTaskClaim, appendTaskHandback, readTaskC1Posture } from './alpha6/handoff.js';
3
+ import { type AdoptionPreparation } from './alpha6/adoption.js';
4
+ import { type RecordPlanRiskAuditInput } from './alpha6/plan-risk.js';
2
5
  import { type RepositoryIdentity } from './repository.js';
6
+ import { type ReviewerCommandRunner } from './reviewer.js';
3
7
  import { WriterLockManager } from './state/lock.js';
4
8
  import { FileStateStore } from './state/store.js';
5
9
  export interface DiscoveryInput {
@@ -24,6 +28,63 @@ export interface WorkflowContext {
24
28
  store: FileStateStore;
25
29
  locks: WriterLockManager;
26
30
  }
31
+ export interface MilestoneScopeChangePreparation {
32
+ milestoneId: string;
33
+ revision: number;
34
+ actor: string;
35
+ candidatePlanHash: string;
36
+ candidateMembershipRevision: number;
37
+ confirmationCodeBindingHash: string;
38
+ confirmationCode: string;
39
+ after: {
40
+ outcome: string;
41
+ successSignal: string;
42
+ acceptance: string[];
43
+ checks: string[];
44
+ taskIds: string[];
45
+ memberships: MilestoneState['memberships'];
46
+ };
47
+ }
48
+ export interface Alpha6C1StrictReviewRescuePreflight {
49
+ eligible: boolean;
50
+ mutationFree: true;
51
+ runnerPackageVersion: string;
52
+ requiredProjectPackageVersion: '2.0.0-alpha.6';
53
+ declaredProjectPackageVersion: string | null;
54
+ projectId: string;
55
+ repositoryRoot: string;
56
+ clean: boolean;
57
+ candidate: {
58
+ taskId: string;
59
+ taskRevision: number;
60
+ stepId: string;
61
+ completionCommit: string;
62
+ currentHead: string;
63
+ knowledgeBindingStale: boolean;
64
+ claimant: string | null;
65
+ handoffExpiresAt: string | null;
66
+ lease: {
67
+ entityId: string;
68
+ owner: string;
69
+ pid: number;
70
+ hostname: string;
71
+ acquiredAt: string;
72
+ heartbeatAt: string;
73
+ expiresAt: string;
74
+ stale: boolean;
75
+ tokenBound: boolean;
76
+ } | null;
77
+ } | null;
78
+ blockers: string[];
79
+ requiredAction: {
80
+ action: 'update rescue-review';
81
+ taskId: string;
82
+ stepId: string;
83
+ expectedRevision: number;
84
+ actor: string;
85
+ requiresBoundWriterToken: true;
86
+ } | null;
87
+ }
27
88
  export declare class WorkflowService {
28
89
  readonly store: FileStateStore;
29
90
  private readonly now;
@@ -45,34 +106,72 @@ export declare class WorkflowService {
45
106
  milestoneRoot: string;
46
107
  };
47
108
  setMilestonePlan(repository: string, milestoneId: string, expectedRevision: number, plan: MilestonePlanInput): MilestoneState;
109
+ prepareMilestoneScopeChange(repository: string, milestoneId: string, expectedRevision: number, plan: MilestonePlanInput, actor: string): MilestoneScopeChangePreparation;
110
+ applyMilestoneScopeChange(repository: string, milestoneId: string, expectedRevision: number, plan: MilestonePlanInput, actor: string, confirmationCode: string): MilestoneState;
48
111
  authorizeMilestone(repository: string, milestoneId: string, expectedRevision: number, actor: string, reason?: string, delegationGrantId?: string | null): MilestoneState;
49
112
  validateMilestone(repository: string, milestoneId: string, expectedRevision: number): MilestoneState;
50
113
  acceptMilestone(repository: string, milestoneId: string, expectedRevision: number, actor: string, confirmationCode: string, delegationGrantId?: string | null): MilestoneState;
51
114
  cancelMilestone(repository: string, milestoneId: string, expectedRevision: number, reason: string): MilestoneState;
52
- setTaskPlan(repository: string, taskId: string, expectedRevision: number, plan: TaskPlanInput): TaskState;
115
+ setTaskPlan(repository: string, taskId: string, expectedRevision: number, plan: TaskPlanInput, correctiveAudit?: CorrectivePlanAuditInput | null, planRiskAudit?: RecordPlanRiskAuditInput | null): TaskState;
53
116
  rebindTaskKnowledge(repository: string, taskId: string, expectedRevision: number): TaskState;
117
+ refreshTaskContext(repository: string, taskId: string, expectedTaskRevision: number, expectedKnowledgeMapRevision: number, actor: string, delegationGrantId: string | null): TaskContextRefreshResult;
54
118
  authorizeTask(repository: string, taskId: string, expectedRevision: number, actor: string, reason?: string, delegationGrantId?: string | null): TaskState;
119
+ recordPlanRiskAudit(repository: string, taskId: string, expectedRevision: number, input: RecordPlanRiskAuditInput): PlanRiskAuditEvent;
120
+ showTaskHandoff(repository: string, taskId: string): {
121
+ task: TaskState;
122
+ posture: ReturnType<typeof readTaskC1Posture>;
123
+ claimTokenAvailable: false;
124
+ };
125
+ handoffTask(repository: string, taskId: string, expectedRevision: number, actor: string, targetActor: string, reason: string, writerToken?: string | null, grantId?: string | null, expiresAt?: string | null): {
126
+ task: TaskState;
127
+ event: import("./contracts.js").TaskHandoffEvent;
128
+ bundle: import("./contracts.js").TaskHandoffBundle;
129
+ };
130
+ claimTask(repository: string, taskId: string, expectedRevision: number, actor: string, claimToken: string, writerToken?: string | null): {
131
+ task: TaskState;
132
+ event: ReturnType<typeof appendTaskClaim>;
133
+ lease: WriterLease;
134
+ };
135
+ handbackTask(repository: string, taskId: string, expectedRevision: number, actor: string, reason: string, writerToken?: string | null, limitations?: readonly string[], recommendedNext?: string): {
136
+ task: TaskState;
137
+ event: ReturnType<typeof appendTaskHandback>;
138
+ };
55
139
  startTask(repository: string, taskId: string, expectedRevision: number, workspaceOwner: WorkspaceOwner): TaskState;
56
- runStep(repository: string, taskId: string, stepId: string, expectedRevision: number, owner: string, writerToken: string | null): {
140
+ runStep(repository: string, taskId: string, stepId: string, expectedRevision: number, actor: string, writerToken: string | null): {
57
141
  task: TaskState;
58
142
  lease: WriterLease;
59
143
  envelope: ContextEnvelope;
60
144
  };
61
- taskContext(repository: string, taskId: string, role: Exclude<WorkflowRole, 'scope-lead' | 'worker'>): ContextEnvelope;
62
- completeStep(repository: string, taskId: string, stepId: string, expectedRevision: number, writerToken: string, notes: string[]): TaskState;
63
- submitTask(repository: string, taskId: string, expectedRevision: number, writerToken: string): TaskState;
64
- recordReview(repository: string, taskId: string, expectedRevision: number, review: ReviewInput): TaskState;
145
+ taskContext(repository: string, taskId: string, role: Exclude<WorkflowRole, 'scope-lead' | 'worker'>, allowHistoricalStrictReview?: boolean): ContextEnvelope;
146
+ completeStep(repository: string, taskId: string, stepId: string, expectedRevision: number, writerToken: string, notes: string[], actor?: string): TaskState;
147
+ alpha6C1StrictReviewRescuePreflight(repository: string): Alpha6C1StrictReviewRescuePreflight;
148
+ alpha6C1StrictReviewRescue(repository: string, taskId: string, stepId: string, expectedRevision: number, actor: string, writerToken: string, runner?: ReviewerCommandRunner): TaskState;
149
+ reviewStep(repository: string, taskId: string, stepId: string, expectedRevision: number, runner?: ReviewerCommandRunner, actor?: string, writerToken?: string | null): TaskState;
150
+ private reviewStepWithKnowledgePolicy;
151
+ submitTask(repository: string, taskId: string, expectedRevision: number, writerToken: string, actor?: string): TaskState;
152
+ recordReview(repository: string, taskId: string, expectedRevision: number, review: ReviewInput, actor?: string, writerToken?: string | null): TaskState;
153
+ recordStepCorrectiveDecision(repository: string, taskId: string, stepId: string, expectedRevision: number, correctiveAudit: CorrectivePlanAuditInput, actor?: string, writerToken?: string | null): import("./contracts.js").CorrectiveDecisionEvent;
65
154
  setTaskResult(repository: string, taskId: string, expectedRevision: number, summary: string, limitations: string[]): TaskState;
66
155
  acceptTask(repository: string, taskId: string, expectedRevision: number, actor: string, delegationGrantId?: string | null): TaskState;
67
156
  syncTaskBase(repository: string, taskId: string, expectedRevision: number): TaskState;
68
- mergeTask(repository: string, taskId: string, expectedRevision: number, writerToken: string): TaskState;
69
- confirmExternalMerge(repository: string, taskId: string, expectedRevision: number, writerToken: string): TaskState;
157
+ mergeTask(repository: string, taskId: string, expectedRevision: number, writerToken: string, actor?: string): TaskState;
158
+ confirmExternalMerge(repository: string, taskId: string, expectedRevision: number, writerToken: string, actor?: string): TaskState;
70
159
  status(repository: string): {
71
160
  projectId: string;
72
161
  discoveries: DiscoveryState[];
73
162
  tasks: TaskState[];
74
163
  milestones: MilestoneState[];
75
164
  delegations: DelegationGrant[];
165
+ adoption: AdoptionPreparation;
166
+ };
167
+ recoverMilestoneTransactions(repository: string): {
168
+ projectId: string;
169
+ recoveredMilestoneIds: string[];
170
+ };
171
+ prepareAdoption(repository: string): AdoptionPreparation;
172
+ applyAdoption(repository: string, actor: string, confirmationCode: string): AdoptionPostureEvent;
173
+ updatePreflight(repository: string): UpdatePreflightResult & {
174
+ adoption: AdoptionPreparation;
76
175
  };
77
176
  scanKnowledgeMap(repository: string): ProjectKnowledgeMap;
78
177
  showKnowledgeMap(repository: string): ProjectKnowledgeMap;
@@ -88,14 +187,29 @@ export declare class WorkflowService {
88
187
  recordGraphFallback(repository: string, graphKind: GraphKind, mode: GraphMode, expectedRevision: number | null, reason: string): GraphBinding;
89
188
  next(repository: string): Record<string, unknown>;
90
189
  private delegatedAuthorization;
190
+ private assertHandoffGrant;
91
191
  private nextForTaskWithDelegation;
92
192
  private delegatedApprovalOptions;
193
+ private delegatedContextRefreshOptions;
93
194
  private assertDelegationScopeExists;
94
195
  private assertExecutionAuthorizationFresh;
95
196
  private assertMilestoneAuthorizationFresh;
197
+ private readMilestoneCurrent;
198
+ private readMilestoneScopeChangeCurrent;
199
+ private listMilestonesCurrent;
200
+ private prepareMilestoneScopeChangeCandidate;
201
+ private proveWriterLeaseTokenForHandoff;
202
+ private proveOptionalWriterLeaseToken;
203
+ private assertTaskMutationAllowedByHandoff;
96
204
  private readGraphBindingOrNull;
97
205
  private requireActiveKnowledgeMap;
206
+ private strictReviewKnowledgeMap;
207
+ private inspectAdoptionPreparation;
208
+ private computeAdoptionBoundaryBlockers;
209
+ private collectAdoptionSidecarInventory;
98
210
  private assertKnowledgeMapBinding;
211
+ private readCurrentAdoptionPostureStrict;
212
+ private requireExecutionAdoptionPosture;
99
213
  private assertTaskKnowledgeBinding;
100
214
  private validateKnowledgeTargets;
101
215
  private assertReviewFresh;