codex-workflow-v2 2.0.0-beta.12.8 → 2.0.0-beta.13

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 (124) hide show
  1. package/README.md +60 -16
  2. package/dist/reviewer-runtime-build.json +1092 -0
  3. package/dist/src/alpha6/check-support-anchor.d.ts +24 -0
  4. package/dist/src/alpha6/check-support-anchor.js +102 -0
  5. package/dist/src/alpha6/check-support-anchor.js.map +1 -0
  6. package/dist/src/alpha6/component-owner.d.ts +28 -0
  7. package/dist/src/alpha6/component-owner.js +95 -0
  8. package/dist/src/alpha6/component-owner.js.map +1 -0
  9. package/dist/src/alpha6/downstream-proof.js +4 -2
  10. package/dist/src/alpha6/downstream-proof.js.map +1 -1
  11. package/dist/src/alpha6/mechanical-feasibility.js +42 -12
  12. package/dist/src/alpha6/mechanical-feasibility.js.map +1 -1
  13. package/dist/src/alpha6/milestone.d.ts +6 -2
  14. package/dist/src/alpha6/milestone.js +164 -10
  15. package/dist/src/alpha6/milestone.js.map +1 -1
  16. package/dist/src/alpha6/npm-check-contract.d.ts +11 -0
  17. package/dist/src/alpha6/npm-check-contract.js +36 -0
  18. package/dist/src/alpha6/npm-check-contract.js.map +1 -0
  19. package/dist/src/alpha6/plan-integrity.js +157 -27
  20. package/dist/src/alpha6/plan-integrity.js.map +1 -1
  21. package/dist/src/alpha6/plan-risk.js +3 -1
  22. package/dist/src/alpha6/plan-risk.js.map +1 -1
  23. package/dist/src/alpha6/remediation-cause.d.ts +13 -0
  24. package/dist/src/alpha6/remediation-cause.js +77 -0
  25. package/dist/src/alpha6/remediation-cause.js.map +1 -0
  26. package/dist/src/alpha6/remediation.d.ts +15 -4
  27. package/dist/src/alpha6/remediation.js +430 -67
  28. package/dist/src/alpha6/remediation.js.map +1 -1
  29. package/dist/src/alpha6/review.d.ts +6 -0
  30. package/dist/src/alpha6/review.js +46 -4
  31. package/dist/src/alpha6/review.js.map +1 -1
  32. package/dist/src/artifacts.js +6 -0
  33. package/dist/src/artifacts.js.map +1 -1
  34. package/dist/src/cli-actions.d.ts +25 -0
  35. package/dist/src/cli-actions.js +109 -0
  36. package/dist/src/cli-actions.js.map +1 -0
  37. package/dist/src/cli.js +244 -253
  38. package/dist/src/cli.js.map +1 -1
  39. package/dist/src/contracts.d.ts +202 -5
  40. package/dist/src/credential-transport.d.ts +38 -0
  41. package/dist/src/credential-transport.js +156 -0
  42. package/dist/src/credential-transport.js.map +1 -0
  43. package/dist/src/dependency-provenance.d.ts +23 -2
  44. package/dist/src/dependency-provenance.js +239 -36
  45. package/dist/src/dependency-provenance.js.map +1 -1
  46. package/dist/src/domain/completed-step-carryover.d.ts +13 -0
  47. package/dist/src/domain/completed-step-carryover.js +71 -0
  48. package/dist/src/domain/completed-step-carryover.js.map +1 -0
  49. package/dist/src/domain/validation.d.ts +9 -1
  50. package/dist/src/domain/validation.js +86 -0
  51. package/dist/src/domain/validation.js.map +1 -1
  52. package/dist/src/gateway-handshake.d.ts +11 -0
  53. package/dist/src/gateway-handshake.js +92 -0
  54. package/dist/src/gateway-handshake.js.map +1 -0
  55. package/dist/src/git.js +1 -0
  56. package/dist/src/git.js.map +1 -1
  57. package/dist/src/historical-step-provenance.d.ts +20 -0
  58. package/dist/src/historical-step-provenance.js +111 -0
  59. package/dist/src/historical-step-provenance.js.map +1 -0
  60. package/dist/src/index.d.ts +2 -0
  61. package/dist/src/index.js +2 -0
  62. package/dist/src/index.js.map +1 -1
  63. package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +5 -0
  64. package/dist/src/lifecycle/corrective-replan-binding-manifest.js +9 -0
  65. package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -1
  66. package/dist/src/lifecycle/corrective-replan.js +1 -1
  67. package/dist/src/lifecycle/corrective-replan.js.map +1 -1
  68. package/dist/src/lifecycle/semantic-registry.js +1 -1
  69. package/dist/src/observation.js +1 -2
  70. package/dist/src/observation.js.map +1 -1
  71. package/dist/src/observed-routes.d.ts +114 -0
  72. package/dist/src/observed-routes.js +545 -0
  73. package/dist/src/observed-routes.js.map +1 -0
  74. package/dist/src/operational-contract.d.ts +26 -0
  75. package/dist/src/operational-contract.js +94 -0
  76. package/dist/src/operational-contract.js.map +1 -0
  77. package/dist/src/reviewer.d.ts +218 -8
  78. package/dist/src/reviewer.js +927 -25
  79. package/dist/src/reviewer.js.map +1 -1
  80. package/dist/src/state/corrective-replan-executor.js +23 -15
  81. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  82. package/dist/src/state/corrective-replan-public.js +35 -10
  83. package/dist/src/state/corrective-replan-public.js.map +1 -1
  84. package/dist/src/state/corrective-replan-transaction.js +12 -4
  85. package/dist/src/state/corrective-replan-transaction.js.map +1 -1
  86. package/dist/src/state/corrective-yield-transaction.js +11 -2
  87. package/dist/src/state/corrective-yield-transaction.js.map +1 -1
  88. package/dist/src/state/lock.d.ts +1 -0
  89. package/dist/src/state/lock.js +24 -0
  90. package/dist/src/state/lock.js.map +1 -1
  91. package/dist/src/version.d.ts +1 -1
  92. package/dist/src/version.js +1 -1
  93. package/dist/src/version.js.map +1 -1
  94. package/dist/src/workflow.d.ts +70 -4
  95. package/dist/src/workflow.js +1888 -152
  96. package/dist/src/workflow.js.map +1 -1
  97. package/docs/autonomy-guardrails.md +41 -14
  98. package/docs/delegated-approval.md +6 -1
  99. package/docs/development-flow.md +42 -12
  100. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  101. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  102. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  103. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +191 -22
  104. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +163 -45
  105. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +346 -52
  106. package/docs/problem-briefs/01-pre-implementation-integrity.md +11 -7
  107. package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +13 -6
  108. package/docs/problem-briefs/README.md +11 -11
  109. package/docs/release.md +89 -9
  110. package/docs/updating-existing-project.md +235 -0
  111. package/docs/validation-report.md +156 -98
  112. package/package.json +12 -3
  113. package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
  114. package/plugins/codex-workflow-gateway/references/protocol.md +9 -0
  115. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +67 -1
  116. package/schemas/authorization-event.schema.json +10 -3
  117. package/schemas/corrective-decision-event.schema.json +164 -9
  118. package/schemas/corrective-replan-credentials.private.schema.json +4 -2
  119. package/schemas/milestone-scope-change-event.schema.json +25 -1
  120. package/schemas/remediation-event.schema.json +17 -1
  121. package/schemas/review-result.schema.json +1 -0
  122. package/schemas/step-review-event.schema.json +15 -0
  123. package/schemas/task.schema.json +104 -1
  124. package/schemas/transition-definition.schema.json +8 -0
@@ -0,0 +1,156 @@
1
+ import { createHash, randomUUID } from 'node:crypto';
2
+ import { chmodSync, existsSync, lstatSync, readFileSync, unlinkSync, } from 'node:fs';
3
+ import path from 'node:path';
4
+ import { WorkflowError } from './errors.js';
5
+ import { ensureDirectory, writeJsonAtomic } from './fs-utils.js';
6
+ const REFERENCE_PATTERN = /^CREF-([0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})$/;
7
+ export function issueCredentialReference(input) {
8
+ const token = input.token.trim();
9
+ if (!token)
10
+ throw new WorkflowError('STATE_CORRUPT', 'Cannot issue an empty credential reference.');
11
+ const referenceId = `CREF-${randomUUID()}`;
12
+ const actor = input.actor.trim();
13
+ const allowedActions = [...new Set(input.allowedActions.map((value) => value.trim()).filter(Boolean))].sort();
14
+ if (!actor || allowedActions.length === 0) {
15
+ throw new WorkflowError('STATE_CORRUPT', 'Credential reference requires an actor and at least one action.');
16
+ }
17
+ const record = {
18
+ schemaVersion: 1,
19
+ referenceId,
20
+ kind: input.kind,
21
+ projectId: input.projectId,
22
+ entityId: input.entityId,
23
+ actor,
24
+ allowedActions,
25
+ token,
26
+ tokenSha256: createHash('sha256').update(token).digest('hex'),
27
+ createdAt: (input.now ?? new Date()).toISOString(),
28
+ expiresAt: new Date(input.expiresAt).toISOString(),
29
+ oneTime: input.oneTime,
30
+ };
31
+ const file = credentialFile(input.stateRoot, input.projectId, referenceId);
32
+ writeJsonAtomic(file, record);
33
+ chmodSync(file, 0o600);
34
+ return publicReference(record);
35
+ }
36
+ export function resolveCredentialReference(input) {
37
+ const file = credentialFile(input.stateRoot, input.projectId, input.reference);
38
+ if (!existsSync(file)) {
39
+ throw new WorkflowError('NOT_FOUND', 'Local credential reference is missing or already consumed.', {
40
+ credentialRef: input.reference,
41
+ });
42
+ }
43
+ const metadata = lstatSync(file);
44
+ if (metadata.isSymbolicLink() || !metadata.isFile() || (metadata.mode & 0o077) !== 0) {
45
+ throw new WorkflowError('STATE_CORRUPT', 'Local credential reference must be a private regular file.', {
46
+ credentialRef: input.reference,
47
+ });
48
+ }
49
+ let value;
50
+ try {
51
+ value = JSON.parse(readFileSync(file, 'utf8'));
52
+ }
53
+ catch (error) {
54
+ throw new WorkflowError('STATE_CORRUPT', 'Local credential reference is not valid JSON.', {
55
+ credentialRef: input.reference,
56
+ cause: error instanceof Error ? error.message : String(error),
57
+ });
58
+ }
59
+ const record = validateRecord(value, input.reference);
60
+ const actor = input.actor?.trim() || record.actor;
61
+ const now = (input.now ?? new Date()).getTime();
62
+ if (record.projectId !== input.projectId
63
+ || record.kind !== input.kind
64
+ || record.entityId !== input.entityId
65
+ || record.actor !== actor
66
+ || !record.allowedActions.includes(input.action)) {
67
+ throw new WorkflowError('TRANSITION_BLOCKED', 'Local credential reference is not bound to this transition.', {
68
+ credentialRef: input.reference,
69
+ expected: { kind: input.kind, entityId: input.entityId, actor, action: input.action },
70
+ actual: {
71
+ kind: record.kind,
72
+ entityId: record.entityId,
73
+ actor: record.actor,
74
+ allowedActions: record.allowedActions,
75
+ },
76
+ });
77
+ }
78
+ if (Date.parse(record.expiresAt) <= now) {
79
+ throw new WorkflowError('TRANSITION_BLOCKED', 'Local credential reference has expired.', {
80
+ credentialRef: input.reference,
81
+ expiresAt: record.expiresAt,
82
+ });
83
+ }
84
+ if (createHash('sha256').update(record.token).digest('hex') !== record.tokenSha256) {
85
+ throw new WorkflowError('STATE_CORRUPT', 'Local credential reference failed its integrity check.', {
86
+ credentialRef: input.reference,
87
+ });
88
+ }
89
+ return { token: record.token, reference: publicReference(record) };
90
+ }
91
+ export function consumeCredentialReference(stateRoot, projectId, reference) {
92
+ const file = credentialFile(stateRoot, projectId, reference);
93
+ if (!existsSync(file))
94
+ return;
95
+ const metadata = lstatSync(file);
96
+ if (metadata.isSymbolicLink() || !metadata.isFile()) {
97
+ throw new WorkflowError('STATE_CORRUPT', 'Refusing to consume a non-regular credential reference.', {
98
+ credentialRef: reference,
99
+ });
100
+ }
101
+ unlinkSync(file);
102
+ }
103
+ export function assertNoLegacyCredentialArguments(optionNames) {
104
+ const legacy = ['writer-token', 'claim-token'].filter((name) => optionNames.has(name));
105
+ if (legacy.length === 0)
106
+ return;
107
+ throw new WorkflowError('INVALID_ARGUMENT', 'Secret-bearing CLI options are disabled. Use --writer-credential-ref or --claim-credential-ref.', { rejectedOptions: legacy.map((name) => `--${name}`), credentialTransport: 'local-vault-v1' });
108
+ }
109
+ function credentialFile(stateRoot, projectId, reference) {
110
+ const match = REFERENCE_PATTERN.exec(reference);
111
+ if (!match)
112
+ throw new WorkflowError('INVALID_ARGUMENT', 'Credential reference has an invalid format.');
113
+ if (!/^[a-f0-9]{24}$/.test(projectId))
114
+ throw new WorkflowError('STATE_CORRUPT', 'Credential project identity is invalid.');
115
+ const root = path.join(path.resolve(stateRoot), 'credentials', projectId);
116
+ ensureDirectory(root);
117
+ const file = path.join(root, `${reference}.json`);
118
+ if (path.dirname(file) !== root)
119
+ throw new WorkflowError('STATE_CORRUPT', 'Credential reference escaped its vault.');
120
+ return file;
121
+ }
122
+ function validateRecord(value, reference) {
123
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
124
+ throw new WorkflowError('STATE_CORRUPT', 'Credential reference record is invalid.', { credentialRef: reference });
125
+ }
126
+ const record = value;
127
+ const valid = record.schemaVersion === 1
128
+ && record.referenceId === reference
129
+ && (record.kind === 'writer-lease' || record.kind === 'claim-token')
130
+ && typeof record.projectId === 'string'
131
+ && typeof record.entityId === 'string'
132
+ && typeof record.actor === 'string'
133
+ && Array.isArray(record.allowedActions)
134
+ && record.allowedActions.every((entry) => typeof entry === 'string')
135
+ && typeof record.token === 'string'
136
+ && typeof record.tokenSha256 === 'string'
137
+ && typeof record.createdAt === 'string'
138
+ && typeof record.expiresAt === 'string'
139
+ && typeof record.oneTime === 'boolean';
140
+ if (!valid)
141
+ throw new WorkflowError('STATE_CORRUPT', 'Credential reference record has an invalid schema.', { credentialRef: reference });
142
+ return record;
143
+ }
144
+ function publicReference(record) {
145
+ return {
146
+ credentialRef: record.referenceId,
147
+ kind: record.kind,
148
+ entityId: record.entityId,
149
+ actor: record.actor,
150
+ allowedActions: [...record.allowedActions],
151
+ expiresAt: record.expiresAt,
152
+ transport: 'local-vault-v1',
153
+ oneTime: record.oneTime,
154
+ };
155
+ }
156
+ //# sourceMappingURL=credential-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-transport.js","sourceRoot":"","sources":["../../src/credential-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AA8BjE,MAAM,iBAAiB,GAAG,8EAA8E,CAAC;AAEzG,MAAM,UAAU,wBAAwB,CAAC,KAWxC;IACC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,6CAA6C,CAAC,CAAC;IACpG,MAAM,WAAW,GAAG,QAAQ,UAAU,EAAE,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9G,IAAI,CAAC,KAAK,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,iEAAiE,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,MAAM,GAA8B;QACxC,aAAa,EAAE,CAAC;QAChB,WAAW;QACX,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK;QACL,cAAc;QACd,KAAK;QACL,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7D,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;QAClD,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IACF,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC3E,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAS1C;IACC,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,4DAA4D,EAAE;YACjG,aAAa,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,4DAA4D,EAAE;YACrG,aAAa,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,+CAA+C,EAAE;YACxF,aAAa,EAAE,KAAK,CAAC,SAAS;YAC9B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;IAClD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAChD,IACE,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS;WACjC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WAC1B,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ;WAClC,MAAM,CAAC,KAAK,KAAK,KAAK;WACtB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAChD,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,6DAA6D,EAAE;YAC3G,aAAa,EAAE,KAAK,CAAC,SAAS;YAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YACrF,MAAM,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc,EAAE,MAAM,CAAC,cAAc;aACtC;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC;QACxC,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,yCAAyC,EAAE;YACvF,aAAa,EAAE,KAAK,CAAC,SAAS;YAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;QACnF,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,wDAAwD,EAAE;YACjG,aAAa,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB;IAChG,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,yDAAyD,EAAE;YAClG,aAAa,EAAE,SAAS;SACzB,CAAC,CAAC;IACL,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,WAAgC;IAChF,MAAM,MAAM,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAChC,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,iGAAiG,EACjG,EAAE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB;IAC7E,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAC;IACvG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;IAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC1E,eAAe,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,SAAS,OAAO,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI;QAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,yCAAyC,CAAC,CAAC;IACrH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,SAAiB;IACvD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,yCAAyC,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IACpH,CAAC;IACD,MAAM,MAAM,GAAG,KAA2C,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,KAAK,CAAC;WACnC,MAAM,CAAC,WAAW,KAAK,SAAS;WAChC,CAAC,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,CAAC;WACjE,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;WACpC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;WACnC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;WAChC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;WACpC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;WACjE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;WAChC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;WACtC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;WACpC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;WACpC,OAAO,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC;IACzC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,oDAAoD,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAC;IACzI,OAAO,MAAmC,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,MAAiC;IACxD,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,WAAW;QACjC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;QAC1C,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { DependencyProvenanceRecoveryPreflight, DownstreamProofReplanCompatibility, TaskState } from './contracts.js';
1
+ import type { DependencyProvenanceRecoveryPreflight, DownstreamProofReplanCompatibility, HistoricalStepDependencyCompatibility, PlanIntegrityUpdateCompatibility, ProjectKnowledgeMap, TaskState } from './contracts.js';
2
2
  interface RecoveryEnvironment {
3
3
  activeLeaseCount: number;
4
4
  staleLeaseCount: number;
@@ -22,5 +22,26 @@ export interface ActiveDownstreamProofCompatibility {
22
22
  dirtyWorktreeHash: string;
23
23
  invalidatedStepIds: string[];
24
24
  }
25
- export declare function inspectDependencyProvenanceRecovery(repositoryRoot: string, task: TaskState, environment: RecoveryEnvironment, activeDownstreamProof?: ActiveDownstreamProofCompatibility | null, downstreamProofReplan?: DownstreamProofReplanCompatibility | null): DependencyProvenanceRecoveryPreflight;
25
+ export interface DependencyKnowledgeRefreshAssessment {
26
+ eligible: boolean;
27
+ changedKnowledgePaths: string[];
28
+ dependencyCommits: string[];
29
+ sourcePackageVersion: string | null;
30
+ targetPackageVersion: string;
31
+ blockers: string[];
32
+ }
33
+ /**
34
+ * Proves that a stale approved Knowledge Map differs only because one or more
35
+ * consecutive package.json edits changed the exact codex-workflow-v2 pin. The
36
+ * intervening repository history may contain ordinary product commits, but
37
+ * every commit that touched package.json after the approved content must be a
38
+ * package.json/package-lock.json-only dependency update.
39
+ */
40
+ export declare function inspectDependencyKnowledgeRefresh(repositoryRoot: string, milestoneBaseBranch: string, approved: ProjectKnowledgeMap, inspected: ProjectKnowledgeMap, allowedDirtyFiles?: readonly string[]): DependencyKnowledgeRefreshAssessment;
41
+ export declare function inspectDependencyProvenanceRecovery(repositoryRoot: string, task: TaskState, environment: RecoveryEnvironment, activeDownstreamProof?: ActiveDownstreamProofCompatibility | null, downstreamProofReplan?: DownstreamProofReplanCompatibility | null, historicalStepProvenance?: HistoricalStepDependencyCompatibility | null, planIntegrity?: PlanIntegrityUpdateCompatibility | null): DependencyProvenanceRecoveryPreflight;
42
+ export declare function inspectBoundedWorkflowDependencyCommit(repositoryRoot: string, commitSha: string): {
43
+ commitSha: string;
44
+ parentCommitSha: string;
45
+ packageVersion: string;
46
+ } | null;
26
47
  export {};
@@ -1,23 +1,127 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { spawnSync } from 'node:child_process';
1
3
  import { PACKAGE_NAME, PACKAGE_VERSION } from './version.js';
2
4
  import { changedFiles, currentBranch, headCommit, runGit } from './repository.js';
3
5
  import { hashDirtyWorktree } from './alpha6/downstream-proof.js';
6
+ import { inspectWorkflowVersions } from './diagnostics.js';
4
7
  const RECOVERY_FILES = ['package-lock.json', 'package.json'];
5
8
  const TERMINAL_TASK_STATUSES = new Set(['merged', 'cancelled']);
6
- export function inspectDependencyProvenanceRecovery(repositoryRoot, task, environment, activeDownstreamProof = null, downstreamProofReplan = null) {
9
+ /**
10
+ * Proves that a stale approved Knowledge Map differs only because one or more
11
+ * consecutive package.json edits changed the exact codex-workflow-v2 pin. The
12
+ * intervening repository history may contain ordinary product commits, but
13
+ * every commit that touched package.json after the approved content must be a
14
+ * package.json/package-lock.json-only dependency update.
15
+ */
16
+ export function inspectDependencyKnowledgeRefresh(repositoryRoot, milestoneBaseBranch, approved, inspected, allowedDirtyFiles = []) {
17
+ const blockers = [];
18
+ const approvedByPath = new Map(approved.entries.map((entry) => [entry.path, entry]));
19
+ const inspectedByPath = new Map(inspected.entries.map((entry) => [entry.path, entry]));
20
+ const changedKnowledgePaths = [...new Set([
21
+ ...approved.entries.map((entry) => entry.path),
22
+ ...inspected.entries.map((entry) => entry.path),
23
+ ])].filter((candidatePath) => {
24
+ const before = approvedByPath.get(candidatePath);
25
+ const after = inspectedByPath.get(candidatePath);
26
+ return !before || !after
27
+ || before.id !== after.id
28
+ || before.category !== after.category
29
+ || before.scope !== after.scope
30
+ || before.authority !== after.authority
31
+ || before.discoveredBy !== after.discoveredBy
32
+ || before.contentHash !== after.contentHash;
33
+ }).sort();
34
+ if (approved.status !== 'active' || !approved.approval) {
35
+ blockers.push('Dependency Knowledge refresh requires a previously approved active map.');
36
+ }
37
+ if (inspected.status !== 'stale') {
38
+ blockers.push('Dependency Knowledge refresh requires an inspected stale map.');
39
+ }
40
+ if (JSON.stringify(changedKnowledgePaths) !== JSON.stringify(['package.json'])) {
41
+ blockers.push('Only package.json may differ in Project Knowledge.');
42
+ }
43
+ const versions = inspectWorkflowVersions(repositoryRoot, [milestoneBaseBranch]);
44
+ const versionSurfaces = [
45
+ versions.runtime,
46
+ versions.declared,
47
+ versions.locked,
48
+ versions.installed,
49
+ versions.currentBranch,
50
+ ...versions.milestoneBases.map((entry) => entry.version),
51
+ ];
52
+ if (versionSurfaces.some((version) => version !== PACKAGE_VERSION)) {
53
+ blockers.push(`Every Workflow version surface must equal ${PACKAGE_VERSION}.`);
54
+ }
55
+ const dirtyFiles = changedFiles(repositoryRoot).sort();
56
+ if (JSON.stringify(dirtyFiles) !== JSON.stringify([...allowedDirtyFiles].sort())) {
57
+ blockers.push(allowedDirtyFiles.length === 0
58
+ ? 'Dependency Knowledge refresh requires a clean checkout.'
59
+ : 'Dependency Knowledge refresh dirty files changed outside the bound compatibility allowlist.');
60
+ }
61
+ const approvedPackage = approvedByPath.get('package.json') ?? null;
62
+ const dependencyCommits = [];
63
+ let sourcePackageVersion = null;
64
+ if (!approvedPackage) {
65
+ blockers.push('The approved Knowledge Map does not contain package.json.');
66
+ }
67
+ else {
68
+ try {
69
+ const historyOutput = runGit(repositoryRoot, ['rev-list', 'HEAD', '--', 'package.json']);
70
+ const packageHistory = historyOutput ? historyOutput.split('\n') : [];
71
+ const sourceIndex = packageHistory.findIndex((commit) => sha256(readGitFile(repositoryRoot, commit, 'package.json')) === approvedPackage.contentHash);
72
+ if (sourceIndex < 0) {
73
+ blockers.push('Approved package.json content is not present in current Git ancestry.');
74
+ }
75
+ else {
76
+ sourcePackageVersion = manifestDependencyVersion(parseJson(readGitFile(repositoryRoot, packageHistory[sourceIndex], 'package.json')));
77
+ for (const commit of packageHistory.slice(0, sourceIndex).reverse()) {
78
+ const parent = runGit(repositoryRoot, ['rev-parse', `${commit}^`]);
79
+ const filesOutput = runGit(repositoryRoot, ['diff-tree', '--no-commit-id', '--name-only', '-r', commit]);
80
+ const files = filesOutput ? filesOutput.split('\n').sort() : [];
81
+ if (JSON.stringify(files) !== JSON.stringify(RECOVERY_FILES)) {
82
+ blockers.push(`Knowledge-changing commit ${commit} is not dependency-only.`);
83
+ continue;
84
+ }
85
+ if (!workflowDependencyJsonDiffIsBounded(repositoryRoot, parent, commit, null)) {
86
+ blockers.push(`Knowledge-changing commit ${commit} changes fields beyond the Workflow dependency.`);
87
+ continue;
88
+ }
89
+ dependencyCommits.push(commit);
90
+ }
91
+ if (dependencyCommits.length === 0) {
92
+ blockers.push('No bounded Workflow dependency commit explains the Knowledge drift.');
93
+ }
94
+ }
95
+ }
96
+ catch {
97
+ blockers.push('Dependency Knowledge refresh Git ancestry could not be verified.');
98
+ }
99
+ }
100
+ return {
101
+ eligible: blockers.length === 0,
102
+ changedKnowledgePaths,
103
+ dependencyCommits,
104
+ sourcePackageVersion,
105
+ targetPackageVersion: PACKAGE_VERSION,
106
+ blockers,
107
+ };
108
+ }
109
+ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, environment, activeDownstreamProof = null, downstreamProofReplan = null, historicalStepProvenance = null, planIntegrity = null) {
7
110
  const blockers = [];
8
111
  const dirty = changedFiles(repositoryRoot);
9
112
  const head = headCommit(repositoryRoot);
10
113
  let parent = null;
11
114
  let commitFiles = [];
115
+ let dependencyCommits = [];
12
116
  let retainedHistoricalCommits = [];
13
- const dirtyCompatibility = activeDownstreamProof ?? downstreamProofReplan;
117
+ const dirtyCompatibility = activeDownstreamProof ?? downstreamProofReplan ?? historicalStepProvenance ?? planIntegrity;
14
118
  if (dirtyCompatibility) {
15
119
  if (JSON.stringify(dirty.sort()) !== JSON.stringify([...dirtyCompatibility.dirtyFiles].sort())) {
16
- blockers.push('Dirty files changed after the downstream-proof compatibility assessment.');
120
+ blockers.push('Dirty files changed after the compatibility assessment.');
17
121
  }
18
122
  try {
19
123
  if (hashDirtyWorktree(repositoryRoot, dirty) !== dirtyCompatibility.dirtyWorktreeHash) {
20
- blockers.push('Dirty file content changed after the downstream-proof compatibility assessment.');
124
+ blockers.push('Dirty file content changed after the compatibility assessment.');
21
125
  }
22
126
  }
23
127
  catch (error) {
@@ -39,6 +143,45 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
39
143
  blockers.push('The Task must retain the exact stranded post-rebind/no-running-Step posture.');
40
144
  }
41
145
  }
146
+ else if (historicalStepProvenance) {
147
+ if (task.status !== 'in_progress' || task.planHash !== historicalStepProvenance.planHash) {
148
+ blockers.push('The current in-progress Task Plan must match the historical Step compatibility binding.');
149
+ }
150
+ const inProgressSteps = task.steps.filter((step) => step.status === 'in_progress');
151
+ if (inProgressSteps.length !== 1 || inProgressSteps[0]?.id !== historicalStepProvenance.activeStepId) {
152
+ blockers.push('Exactly the bound corrective Step must remain in progress.');
153
+ }
154
+ }
155
+ else if (planIntegrity) {
156
+ const failedStep = task.steps.find((step) => step.id === planIntegrity.stepId) ?? null;
157
+ if (planIntegrity.mode === 'post-rebind-scope-adoption') {
158
+ if (task.status !== 'awaiting_execution_authorization'
159
+ || task.planHash !== planIntegrity.planHash
160
+ || failedStep?.status !== 'planned'
161
+ || task.steps.some((step) => step.status === 'in_progress')
162
+ || !planIntegrity.scopeExtensions?.length
163
+ || planIntegrity.scopeExtensions.some((scopePath) => !failedStep.allowedWrites.some((allowedPath) => allowedPath === scopePath))) {
164
+ blockers.push('The Task must retain the exact post-rebind/no-running-Step check-support adoption posture.');
165
+ }
166
+ }
167
+ else if (planIntegrity.mode === 'post-rebind-dirty-carryover') {
168
+ if (!['ready', 'in_progress'].includes(task.status)
169
+ || task.planHash !== planIntegrity.planHash
170
+ || failedStep?.status !== 'planned'
171
+ || task.steps.some((step) => step.status === 'in_progress')
172
+ || !planIntegrity.scopeExtensions?.length
173
+ || planIntegrity.scopeExtensions.some((scopePath) => !failedStep.allowedWrites.some((allowedPath) => allowedPath === scopePath)
174
+ || !failedStep.expectedOutputs.some((declared) => (declared.startsWith('path:') ? declared.slice(5) : declared) === scopePath))) {
175
+ blockers.push('The Task must retain the exact authorized/no-running-Step check-support dirty-carryover posture.');
176
+ }
177
+ }
178
+ else if (task.status !== 'needs_fix'
179
+ || task.planHash !== planIntegrity.planHash
180
+ || failedStep?.status !== 'failed'
181
+ || task.steps.some((step) => step.status === 'in_progress')) {
182
+ blockers.push('The Task must retain the exact failed/no-running-Step Plan-integrity posture.');
183
+ }
184
+ }
42
185
  }
43
186
  else {
44
187
  if (dirty.length > 0)
@@ -71,38 +214,59 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
71
214
  blockers.push(`${surface} Workflow version must equal ${PACKAGE_VERSION}.`);
72
215
  }
73
216
  try {
74
- parent = runGit(repositoryRoot, ['rev-parse', 'HEAD^']);
75
- const output = runGit(repositoryRoot, ['diff-tree', '--no-commit-id', '--name-only', '-r', 'HEAD']);
76
- commitFiles = output ? output.split('\n').sort() : [];
77
- if (JSON.stringify(commitFiles) !== JSON.stringify(RECOVERY_FILES)) {
78
- blockers.push('The candidate commit must change exactly package.json and package-lock.json.');
79
- }
80
217
  if (task.systemCommits.includes(head))
81
218
  blockers.push('The candidate commit is already registered.');
82
219
  if (task.baseCommit) {
83
220
  const outputHistory = runGit(repositoryRoot, ['rev-list', '--reverse', `${task.baseCommit}..HEAD`]);
84
221
  const history = outputHistory ? outputHistory.split('\n') : [];
85
- const actualBeforeHead = history.slice(0, -1);
86
- const expectedBeforeHead = [
222
+ const expectedRegistered = [
87
223
  ...task.steps.flatMap((step) => (step.evidence ? [step.evidence.commitSha] : [])),
88
224
  ...task.systemCommits,
89
225
  ...(task.invalidatedStepCommits ?? []),
90
226
  ...(task.dependencyProvenanceRecoveries ?? []).flatMap((recovery) => recovery.retainedHistoricalCommits ?? []),
91
- ...environment.verifiedHistoricalStepCommits.filter((commit) => actualBeforeHead.includes(commit)),
227
+ ...environment.verifiedHistoricalStepCommits.filter((commit) => history.includes(commit)),
92
228
  ];
93
- retainedHistoricalCommits = environment.verifiedHistoricalStepCommits.filter((commit) => actualBeforeHead.includes(commit)
229
+ const expectedSet = new Set(expectedRegistered);
230
+ const candidateStart = history.findIndex((commit) => !expectedSet.has(commit));
231
+ const registeredPrefix = candidateStart < 0 ? history : history.slice(0, candidateStart);
232
+ const candidateChain = candidateStart < 0 ? [] : history.slice(candidateStart);
233
+ retainedHistoricalCommits = environment.verifiedHistoricalStepCommits.filter((commit) => registeredPrefix.includes(commit)
94
234
  && !task.systemCommits.includes(commit)
95
235
  && !task.steps.some((step) => step.evidence?.commitSha === commit));
96
- if (history.at(-1) !== head || !sameCommitSet(actualBeforeHead, [...new Set(expectedBeforeHead)])) {
97
- blockers.push('HEAD must be the only unregistered commit after the exact recorded Task history.');
236
+ if (historicalStepProvenance
237
+ && !retainedHistoricalCommits.includes(historicalStepProvenance.retainedCommitSha)) {
238
+ blockers.push('The dependency candidate no longer retains the bound reviewed historical Step commit.');
98
239
  }
99
- if (parent !== (actualBeforeHead.at(-1) ?? task.baseCommit)) {
100
- blockers.push('The candidate parent does not match the recorded Task history boundary.');
240
+ if (history.at(-1) !== head || !sameCommitSet(registeredPrefix, [...new Set(expectedRegistered)])) {
241
+ blockers.push('Only a trailing dependency-only commit chain may follow the exact recorded Task history.');
242
+ }
243
+ parent = registeredPrefix.at(-1) ?? task.baseCommit;
244
+ let expectedParent = parent;
245
+ for (const commit of candidateChain) {
246
+ const inspected = inspectBoundedWorkflowDependencyCommit(repositoryRoot, commit);
247
+ if (!inspected) {
248
+ blockers.push(`Unregistered commit ${commit} is not a consecutive bounded Workflow dependency update.`);
249
+ blockers.push('The candidate commit must change exactly package.json and package-lock.json and only the Workflow dependency pin.');
250
+ blockers.push(`The candidate commit contains changes beyond the exact ${PACKAGE_NAME}@${PACKAGE_VERSION} dependency update.`);
251
+ blockers.push('Only a trailing dependency-only commit chain may follow the exact recorded Task history.');
252
+ continue;
253
+ }
254
+ if (inspected.parentCommitSha !== expectedParent) {
255
+ blockers.push(`Unregistered commit ${commit} does not continue the bounded Workflow dependency parent chain.`);
256
+ blockers.push('Only a trailing dependency-only commit chain may follow the exact recorded Task history.');
257
+ continue;
258
+ }
259
+ dependencyCommits.push(inspected);
260
+ expectedParent = commit;
261
+ }
262
+ if (dependencyCommits.length !== candidateChain.length || dependencyCommits.at(-1)?.commitSha !== head) {
263
+ blockers.push('The complete unregistered suffix must be a bounded Workflow dependency-only chain ending at HEAD.');
264
+ }
265
+ if (dependencyCommits.at(-1)?.packageVersion !== PACKAGE_VERSION) {
266
+ blockers.push(`The dependency-only chain must end at ${PACKAGE_NAME}@${PACKAGE_VERSION}.`);
101
267
  }
102
268
  }
103
- if (!dependencyJsonDiffIsBounded(repositoryRoot, parent, task.baseBranch)) {
104
- blockers.push(`The candidate commit contains changes beyond the exact ${PACKAGE_NAME}@${PACKAGE_VERSION} dependency update.`);
105
- }
269
+ commitFiles = dependencyCommits.length > 0 ? [...RECOVERY_FILES] : [];
106
270
  }
107
271
  catch {
108
272
  blockers.push('The candidate dependency commit could not be inspected.');
@@ -114,7 +278,11 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
114
278
  ? 'update downstream-proof-dependency-recover'
115
279
  : downstreamProofReplan
116
280
  ? 'update downstream-proof-replan-dependency-recover'
117
- : 'update dependency-provenance-recover'
281
+ : historicalStepProvenance
282
+ ? 'update historical-step-dependency-recover'
283
+ : planIntegrity
284
+ ? 'update plan-integrity-dependency-recover'
285
+ : 'update dependency-provenance-recover'
118
286
  : null,
119
287
  projectId: task.projectId,
120
288
  taskId: task.id,
@@ -123,9 +291,12 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
123
291
  parentCommitSha: blockers.length === 0 ? parent : null,
124
292
  packageVersion: PACKAGE_VERSION,
125
293
  changedFiles: commitFiles,
294
+ dependencyCommits,
126
295
  retainedHistoricalCommits,
127
296
  activeDownstreamProof,
128
297
  downstreamProofReplan,
298
+ historicalStepProvenance,
299
+ planIntegrity,
129
300
  blockers,
130
301
  };
131
302
  }
@@ -134,18 +305,27 @@ function sameCommitSet(actual, expected) {
134
305
  && actual.every((commit) => expected.includes(commit))
135
306
  && expected.every((commit) => actual.includes(commit));
136
307
  }
137
- function dependencyJsonDiffIsBounded(repositoryRoot, parent, baseBranch) {
138
- if (!parent)
139
- return false;
308
+ export function inspectBoundedWorkflowDependencyCommit(repositoryRoot, commitSha) {
309
+ try {
310
+ const parentCommitSha = runGit(repositoryRoot, ['rev-parse', `${commitSha}^`]);
311
+ const output = runGit(repositoryRoot, ['diff-tree', '--no-commit-id', '--name-only', '-r', commitSha]);
312
+ const files = output ? output.split('\n').sort() : [];
313
+ if (JSON.stringify(files) !== JSON.stringify(RECOVERY_FILES))
314
+ return null;
315
+ const packageVersion = manifestDependencyVersion(parseJson(runGit(repositoryRoot, ['show', `${commitSha}:package.json`])));
316
+ if (!packageVersion || !workflowDependencyJsonDiffIsBounded(repositoryRoot, parentCommitSha, commitSha, packageVersion))
317
+ return null;
318
+ return { commitSha, parentCommitSha, packageVersion };
319
+ }
320
+ catch {
321
+ return null;
322
+ }
323
+ }
324
+ function workflowDependencyJsonDiffIsBounded(repositoryRoot, parent, revision, expectedAfterVersion) {
140
325
  const beforeManifestContent = runGit(repositoryRoot, ['show', `${parent}:package.json`]);
141
- const afterManifestContent = runGit(repositoryRoot, ['show', 'HEAD:package.json']);
326
+ const afterManifestContent = runGit(repositoryRoot, ['show', `${revision}:package.json`]);
142
327
  const beforeLockContent = runGit(repositoryRoot, ['show', `${parent}:package-lock.json`]);
143
- const afterLockContent = runGit(repositoryRoot, ['show', 'HEAD:package-lock.json']);
144
- // The base branch remains version authority through environment.versions.baseBranch.
145
- // Product-owned manifest/lock fields may legitimately differ on the Task branch;
146
- // the candidate itself must preserve them byte-for-structure after removing only
147
- // the Workflow dependency entries.
148
- void baseBranch;
328
+ const afterLockContent = runGit(repositoryRoot, ['show', `${revision}:package-lock.json`]);
149
329
  const beforeManifest = parseJson(beforeManifestContent);
150
330
  const afterManifest = parseJson(afterManifestContent);
151
331
  const beforeLock = parseJson(beforeLockContent);
@@ -153,13 +333,19 @@ function dependencyJsonDiffIsBounded(repositoryRoot, parent, baseBranch) {
153
333
  if (!beforeManifest || !afterManifest || !beforeLock || !afterLock)
154
334
  return false;
155
335
  const beforeManifestDependencies = manifestDependencyValues(beforeManifest);
156
- if (!targetsExactDevDependency(afterManifest, PACKAGE_VERSION))
336
+ const beforeVersion = beforeManifestDependencies.length === 1 ? beforeManifestDependencies[0] : null;
337
+ const afterVersion = manifestDependencyVersion(afterManifest);
338
+ if (!beforeVersion || !afterVersion || beforeVersion === afterVersion)
339
+ return false;
340
+ if (!targetsExactDevDependency(beforeManifest, beforeVersion))
157
341
  return false;
158
- if (beforeManifestDependencies.length !== 1 || beforeManifestDependencies[0] === PACKAGE_VERSION)
342
+ if (!targetsExactDevDependency(afterManifest, afterVersion))
159
343
  return false;
160
- if (!lockTargetsExactVersion(afterLock, PACKAGE_VERSION))
344
+ if (expectedAfterVersion !== null && afterVersion !== expectedAfterVersion)
161
345
  return false;
162
- if (lockTargetsExactVersion(beforeLock, PACKAGE_VERSION))
346
+ if (!lockTargetsExactVersion(beforeLock, beforeVersion))
347
+ return false;
348
+ if (!lockTargetsExactVersion(afterLock, afterVersion))
163
349
  return false;
164
350
  return JSON.stringify(stripManifestDependency(beforeManifest)) === JSON.stringify(stripManifestDependency(afterManifest))
165
351
  && JSON.stringify(stripLockDependency(beforeLock)) === JSON.stringify(stripLockDependency(afterLock));
@@ -182,6 +368,12 @@ function manifestDependencyValues(manifest) {
182
368
  }
183
369
  return values;
184
370
  }
371
+ function manifestDependencyVersion(manifest) {
372
+ if (!manifest)
373
+ return null;
374
+ const values = manifestDependencyValues(manifest);
375
+ return values.length === 1 ? values[0] : null;
376
+ }
185
377
  function lockTargetsExactVersion(lock, version) {
186
378
  const packages = record(lock.packages);
187
379
  const entry = record(packages?.[`node_modules/${PACKAGE_NAME}`]);
@@ -228,4 +420,15 @@ function stripLockDependency(source) {
228
420
  function record(value) {
229
421
  return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
230
422
  }
423
+ function sha256(value) {
424
+ return createHash('sha256').update(value).digest('hex');
425
+ }
426
+ function readGitFile(repositoryRoot, revision, filePath) {
427
+ const result = spawnSync('git', ['-C', repositoryRoot, 'show', `${revision}:${filePath}`], {
428
+ encoding: 'utf8',
429
+ });
430
+ if (result.status !== 0)
431
+ throw new Error(result.stderr.trim() || `Cannot read ${revision}:${filePath}.`);
432
+ return result.stdout;
433
+ }
231
434
  //# sourceMappingURL=dependency-provenance.js.map
@@ -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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"}