codex-workflow-v2 2.0.0-beta.12.9 → 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 (116) hide show
  1. package/README.md +58 -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.js +34 -4
  30. package/dist/src/alpha6/review.js.map +1 -1
  31. package/dist/src/artifacts.js +6 -0
  32. package/dist/src/artifacts.js.map +1 -1
  33. package/dist/src/cli-actions.d.ts +25 -0
  34. package/dist/src/cli-actions.js +109 -0
  35. package/dist/src/cli-actions.js.map +1 -0
  36. package/dist/src/cli.js +216 -258
  37. package/dist/src/cli.js.map +1 -1
  38. package/dist/src/contracts.d.ts +166 -5
  39. package/dist/src/credential-transport.d.ts +38 -0
  40. package/dist/src/credential-transport.js +156 -0
  41. package/dist/src/credential-transport.js.map +1 -0
  42. package/dist/src/dependency-provenance.d.ts +23 -2
  43. package/dist/src/dependency-provenance.js +221 -34
  44. package/dist/src/dependency-provenance.js.map +1 -1
  45. package/dist/src/domain/completed-step-carryover.d.ts +13 -0
  46. package/dist/src/domain/completed-step-carryover.js +71 -0
  47. package/dist/src/domain/completed-step-carryover.js.map +1 -0
  48. package/dist/src/domain/validation.d.ts +9 -1
  49. package/dist/src/domain/validation.js +86 -0
  50. package/dist/src/domain/validation.js.map +1 -1
  51. package/dist/src/gateway-handshake.d.ts +11 -0
  52. package/dist/src/gateway-handshake.js +92 -0
  53. package/dist/src/gateway-handshake.js.map +1 -0
  54. package/dist/src/index.d.ts +2 -0
  55. package/dist/src/index.js +2 -0
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +5 -0
  58. package/dist/src/lifecycle/corrective-replan-binding-manifest.js +9 -0
  59. package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -1
  60. package/dist/src/lifecycle/corrective-replan.js +1 -1
  61. package/dist/src/lifecycle/corrective-replan.js.map +1 -1
  62. package/dist/src/lifecycle/semantic-registry.js +1 -1
  63. package/dist/src/observation.js +1 -2
  64. package/dist/src/observation.js.map +1 -1
  65. package/dist/src/observed-routes.d.ts +114 -0
  66. package/dist/src/observed-routes.js +545 -0
  67. package/dist/src/observed-routes.js.map +1 -0
  68. package/dist/src/operational-contract.d.ts +26 -0
  69. package/dist/src/operational-contract.js +94 -0
  70. package/dist/src/operational-contract.js.map +1 -0
  71. package/dist/src/reviewer.d.ts +218 -8
  72. package/dist/src/reviewer.js +927 -25
  73. package/dist/src/reviewer.js.map +1 -1
  74. package/dist/src/state/corrective-replan-executor.js +18 -15
  75. package/dist/src/state/corrective-replan-executor.js.map +1 -1
  76. package/dist/src/state/corrective-replan-public.js +35 -10
  77. package/dist/src/state/corrective-replan-public.js.map +1 -1
  78. package/dist/src/state/corrective-replan-transaction.js +12 -4
  79. package/dist/src/state/corrective-replan-transaction.js.map +1 -1
  80. package/dist/src/state/corrective-yield-transaction.js +11 -2
  81. package/dist/src/state/corrective-yield-transaction.js.map +1 -1
  82. package/dist/src/state/lock.d.ts +1 -0
  83. package/dist/src/state/lock.js +24 -0
  84. package/dist/src/state/lock.js.map +1 -1
  85. package/dist/src/version.d.ts +1 -1
  86. package/dist/src/version.js +1 -1
  87. package/dist/src/version.js.map +1 -1
  88. package/dist/src/workflow.d.ts +65 -4
  89. package/dist/src/workflow.js +1704 -155
  90. package/dist/src/workflow.js.map +1 -1
  91. package/docs/autonomy-guardrails.md +41 -14
  92. package/docs/delegated-approval.md +6 -1
  93. package/docs/development-flow.md +42 -12
  94. package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
  95. package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
  96. package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
  97. package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +181 -22
  98. package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +148 -26
  99. package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +326 -52
  100. package/docs/problem-briefs/01-pre-implementation-integrity.md +11 -7
  101. package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +13 -6
  102. package/docs/problem-briefs/README.md +11 -11
  103. package/docs/release.md +83 -9
  104. package/docs/updating-existing-project.md +205 -0
  105. package/docs/validation-report.md +156 -99
  106. package/package.json +12 -3
  107. package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +42 -1
  108. package/schemas/authorization-event.schema.json +10 -3
  109. package/schemas/corrective-decision-event.schema.json +164 -9
  110. package/schemas/corrective-replan-credentials.private.schema.json +4 -2
  111. package/schemas/milestone-scope-change-event.schema.json +25 -1
  112. package/schemas/remediation-event.schema.json +17 -1
  113. package/schemas/review-result.schema.json +1 -0
  114. package/schemas/step-review-event.schema.json +15 -0
  115. package/schemas/task.schema.json +61 -1
  116. 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":"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"}
@@ -1,4 +1,4 @@
1
- import type { DependencyProvenanceRecoveryPreflight, DownstreamProofReplanCompatibility, HistoricalStepDependencyCompatibility, 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, historicalStepProvenance?: HistoricalStepDependencyCompatibility | 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,16 +1,120 @@
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, historicalStepProvenance = 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 ?? historicalStepProvenance;
117
+ const dirtyCompatibility = activeDownstreamProof ?? downstreamProofReplan ?? historicalStepProvenance ?? planIntegrity;
14
118
  if (dirtyCompatibility) {
15
119
  if (JSON.stringify(dirty.sort()) !== JSON.stringify([...dirtyCompatibility.dirtyFiles].sort())) {
16
120
  blockers.push('Dirty files changed after the compatibility assessment.');
@@ -48,6 +152,36 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
48
152
  blockers.push('Exactly the bound corrective Step must remain in progress.');
49
153
  }
50
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
+ }
51
185
  }
52
186
  else {
53
187
  if (dirty.length > 0)
@@ -80,42 +214,59 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
80
214
  blockers.push(`${surface} Workflow version must equal ${PACKAGE_VERSION}.`);
81
215
  }
82
216
  try {
83
- parent = runGit(repositoryRoot, ['rev-parse', 'HEAD^']);
84
- const output = runGit(repositoryRoot, ['diff-tree', '--no-commit-id', '--name-only', '-r', 'HEAD']);
85
- commitFiles = output ? output.split('\n').sort() : [];
86
- if (JSON.stringify(commitFiles) !== JSON.stringify(RECOVERY_FILES)) {
87
- blockers.push('The candidate commit must change exactly package.json and package-lock.json.');
88
- }
89
217
  if (task.systemCommits.includes(head))
90
218
  blockers.push('The candidate commit is already registered.');
91
219
  if (task.baseCommit) {
92
220
  const outputHistory = runGit(repositoryRoot, ['rev-list', '--reverse', `${task.baseCommit}..HEAD`]);
93
221
  const history = outputHistory ? outputHistory.split('\n') : [];
94
- const actualBeforeHead = history.slice(0, -1);
95
- const expectedBeforeHead = [
222
+ const expectedRegistered = [
96
223
  ...task.steps.flatMap((step) => (step.evidence ? [step.evidence.commitSha] : [])),
97
224
  ...task.systemCommits,
98
225
  ...(task.invalidatedStepCommits ?? []),
99
226
  ...(task.dependencyProvenanceRecoveries ?? []).flatMap((recovery) => recovery.retainedHistoricalCommits ?? []),
100
- ...environment.verifiedHistoricalStepCommits.filter((commit) => actualBeforeHead.includes(commit)),
227
+ ...environment.verifiedHistoricalStepCommits.filter((commit) => history.includes(commit)),
101
228
  ];
102
- 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)
103
234
  && !task.systemCommits.includes(commit)
104
235
  && !task.steps.some((step) => step.evidence?.commitSha === commit));
105
236
  if (historicalStepProvenance
106
237
  && !retainedHistoricalCommits.includes(historicalStepProvenance.retainedCommitSha)) {
107
238
  blockers.push('The dependency candidate no longer retains the bound reviewed historical Step commit.');
108
239
  }
109
- if (history.at(-1) !== head || !sameCommitSet(actualBeforeHead, [...new Set(expectedBeforeHead)])) {
110
- blockers.push('HEAD must be the only unregistered commit after the exact recorded Task history.');
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.');
111
242
  }
112
- if (parent !== (actualBeforeHead.at(-1) ?? task.baseCommit)) {
113
- blockers.push('The candidate parent does not match the recorded Task history boundary.');
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}.`);
114
267
  }
115
268
  }
116
- if (!dependencyJsonDiffIsBounded(repositoryRoot, parent, task.baseBranch)) {
117
- blockers.push(`The candidate commit contains changes beyond the exact ${PACKAGE_NAME}@${PACKAGE_VERSION} dependency update.`);
118
- }
269
+ commitFiles = dependencyCommits.length > 0 ? [...RECOVERY_FILES] : [];
119
270
  }
120
271
  catch {
121
272
  blockers.push('The candidate dependency commit could not be inspected.');
@@ -129,7 +280,9 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
129
280
  ? 'update downstream-proof-replan-dependency-recover'
130
281
  : historicalStepProvenance
131
282
  ? 'update historical-step-dependency-recover'
132
- : 'update dependency-provenance-recover'
283
+ : planIntegrity
284
+ ? 'update plan-integrity-dependency-recover'
285
+ : 'update dependency-provenance-recover'
133
286
  : null,
134
287
  projectId: task.projectId,
135
288
  taskId: task.id,
@@ -138,10 +291,12 @@ export function inspectDependencyProvenanceRecovery(repositoryRoot, task, enviro
138
291
  parentCommitSha: blockers.length === 0 ? parent : null,
139
292
  packageVersion: PACKAGE_VERSION,
140
293
  changedFiles: commitFiles,
294
+ dependencyCommits,
141
295
  retainedHistoricalCommits,
142
296
  activeDownstreamProof,
143
297
  downstreamProofReplan,
144
298
  historicalStepProvenance,
299
+ planIntegrity,
145
300
  blockers,
146
301
  };
147
302
  }
@@ -150,18 +305,27 @@ function sameCommitSet(actual, expected) {
150
305
  && actual.every((commit) => expected.includes(commit))
151
306
  && expected.every((commit) => actual.includes(commit));
152
307
  }
153
- function dependencyJsonDiffIsBounded(repositoryRoot, parent, baseBranch) {
154
- if (!parent)
155
- 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) {
156
325
  const beforeManifestContent = runGit(repositoryRoot, ['show', `${parent}:package.json`]);
157
- const afterManifestContent = runGit(repositoryRoot, ['show', 'HEAD:package.json']);
326
+ const afterManifestContent = runGit(repositoryRoot, ['show', `${revision}:package.json`]);
158
327
  const beforeLockContent = runGit(repositoryRoot, ['show', `${parent}:package-lock.json`]);
159
- const afterLockContent = runGit(repositoryRoot, ['show', 'HEAD:package-lock.json']);
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;
328
+ const afterLockContent = runGit(repositoryRoot, ['show', `${revision}:package-lock.json`]);
165
329
  const beforeManifest = parseJson(beforeManifestContent);
166
330
  const afterManifest = parseJson(afterManifestContent);
167
331
  const beforeLock = parseJson(beforeLockContent);
@@ -169,13 +333,19 @@ function dependencyJsonDiffIsBounded(repositoryRoot, parent, baseBranch) {
169
333
  if (!beforeManifest || !afterManifest || !beforeLock || !afterLock)
170
334
  return false;
171
335
  const beforeManifestDependencies = manifestDependencyValues(beforeManifest);
172
- 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))
173
341
  return false;
174
- if (beforeManifestDependencies.length !== 1 || beforeManifestDependencies[0] === PACKAGE_VERSION)
342
+ if (!targetsExactDevDependency(afterManifest, afterVersion))
175
343
  return false;
176
- if (!lockTargetsExactVersion(afterLock, PACKAGE_VERSION))
344
+ if (expectedAfterVersion !== null && afterVersion !== expectedAfterVersion)
177
345
  return false;
178
- if (lockTargetsExactVersion(beforeLock, PACKAGE_VERSION))
346
+ if (!lockTargetsExactVersion(beforeLock, beforeVersion))
347
+ return false;
348
+ if (!lockTargetsExactVersion(afterLock, afterVersion))
179
349
  return false;
180
350
  return JSON.stringify(stripManifestDependency(beforeManifest)) === JSON.stringify(stripManifestDependency(afterManifest))
181
351
  && JSON.stringify(stripLockDependency(beforeLock)) === JSON.stringify(stripLockDependency(afterLock));
@@ -198,6 +368,12 @@ function manifestDependencyValues(manifest) {
198
368
  }
199
369
  return values;
200
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
+ }
201
377
  function lockTargetsExactVersion(lock, version) {
202
378
  const packages = record(lock.packages);
203
379
  const entry = record(packages?.[`node_modules/${PACKAGE_NAME}`]);
@@ -244,4 +420,15 @@ function stripLockDependency(source) {
244
420
  function record(value) {
245
421
  return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
246
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
+ }
247
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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"}
@@ -0,0 +1,13 @@
1
+ import type { PlanStepInput, TaskPlanInput, TaskState } from '../contracts.js';
2
+ type TaskStep = TaskState['steps'][number];
3
+ /**
4
+ * Derive the completed Steps whose authority remains valid under a replacement Plan.
5
+ *
6
+ * A completed Step is retained only when its executable definition is unchanged and
7
+ * every dependency is itself retained. The recursive dependency check makes the
8
+ * result independent from candidate Plan ordering and fails closed on malformed
9
+ * dependency cycles even though ordinary Plan validation rejects cycles earlier.
10
+ */
11
+ export declare function deriveCompletedStepCarryover(task: TaskState, candidateSteps: readonly TaskPlanInput['steps'][number][]): ReadonlyMap<string, TaskStep>;
12
+ export declare function normalizePlanStepDefinition(step: PlanStepInput | TaskStep): PlanStepInput;
13
+ export {};