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.
- package/README.md +60 -16
- package/dist/reviewer-runtime-build.json +1092 -0
- package/dist/src/alpha6/check-support-anchor.d.ts +24 -0
- package/dist/src/alpha6/check-support-anchor.js +102 -0
- package/dist/src/alpha6/check-support-anchor.js.map +1 -0
- package/dist/src/alpha6/component-owner.d.ts +28 -0
- package/dist/src/alpha6/component-owner.js +95 -0
- package/dist/src/alpha6/component-owner.js.map +1 -0
- package/dist/src/alpha6/downstream-proof.js +4 -2
- package/dist/src/alpha6/downstream-proof.js.map +1 -1
- package/dist/src/alpha6/mechanical-feasibility.js +42 -12
- package/dist/src/alpha6/mechanical-feasibility.js.map +1 -1
- package/dist/src/alpha6/milestone.d.ts +6 -2
- package/dist/src/alpha6/milestone.js +164 -10
- package/dist/src/alpha6/milestone.js.map +1 -1
- package/dist/src/alpha6/npm-check-contract.d.ts +11 -0
- package/dist/src/alpha6/npm-check-contract.js +36 -0
- package/dist/src/alpha6/npm-check-contract.js.map +1 -0
- package/dist/src/alpha6/plan-integrity.js +157 -27
- package/dist/src/alpha6/plan-integrity.js.map +1 -1
- package/dist/src/alpha6/plan-risk.js +3 -1
- package/dist/src/alpha6/plan-risk.js.map +1 -1
- package/dist/src/alpha6/remediation-cause.d.ts +13 -0
- package/dist/src/alpha6/remediation-cause.js +77 -0
- package/dist/src/alpha6/remediation-cause.js.map +1 -0
- package/dist/src/alpha6/remediation.d.ts +15 -4
- package/dist/src/alpha6/remediation.js +430 -67
- package/dist/src/alpha6/remediation.js.map +1 -1
- package/dist/src/alpha6/review.d.ts +6 -0
- package/dist/src/alpha6/review.js +46 -4
- package/dist/src/alpha6/review.js.map +1 -1
- package/dist/src/artifacts.js +6 -0
- package/dist/src/artifacts.js.map +1 -1
- package/dist/src/cli-actions.d.ts +25 -0
- package/dist/src/cli-actions.js +109 -0
- package/dist/src/cli-actions.js.map +1 -0
- package/dist/src/cli.js +244 -253
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +202 -5
- package/dist/src/credential-transport.d.ts +38 -0
- package/dist/src/credential-transport.js +156 -0
- package/dist/src/credential-transport.js.map +1 -0
- package/dist/src/dependency-provenance.d.ts +23 -2
- package/dist/src/dependency-provenance.js +239 -36
- package/dist/src/dependency-provenance.js.map +1 -1
- package/dist/src/domain/completed-step-carryover.d.ts +13 -0
- package/dist/src/domain/completed-step-carryover.js +71 -0
- package/dist/src/domain/completed-step-carryover.js.map +1 -0
- package/dist/src/domain/validation.d.ts +9 -1
- package/dist/src/domain/validation.js +86 -0
- package/dist/src/domain/validation.js.map +1 -1
- package/dist/src/gateway-handshake.d.ts +11 -0
- package/dist/src/gateway-handshake.js +92 -0
- package/dist/src/gateway-handshake.js.map +1 -0
- package/dist/src/git.js +1 -0
- package/dist/src/git.js.map +1 -1
- package/dist/src/historical-step-provenance.d.ts +20 -0
- package/dist/src/historical-step-provenance.js +111 -0
- package/dist/src/historical-step-provenance.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/lifecycle/corrective-replan-binding-manifest.d.ts +5 -0
- package/dist/src/lifecycle/corrective-replan-binding-manifest.js +9 -0
- package/dist/src/lifecycle/corrective-replan-binding-manifest.js.map +1 -1
- package/dist/src/lifecycle/corrective-replan.js +1 -1
- package/dist/src/lifecycle/corrective-replan.js.map +1 -1
- package/dist/src/lifecycle/semantic-registry.js +1 -1
- package/dist/src/observation.js +1 -2
- package/dist/src/observation.js.map +1 -1
- package/dist/src/observed-routes.d.ts +114 -0
- package/dist/src/observed-routes.js +545 -0
- package/dist/src/observed-routes.js.map +1 -0
- package/dist/src/operational-contract.d.ts +26 -0
- package/dist/src/operational-contract.js +94 -0
- package/dist/src/operational-contract.js.map +1 -0
- package/dist/src/reviewer.d.ts +218 -8
- package/dist/src/reviewer.js +927 -25
- package/dist/src/reviewer.js.map +1 -1
- package/dist/src/state/corrective-replan-executor.js +23 -15
- package/dist/src/state/corrective-replan-executor.js.map +1 -1
- package/dist/src/state/corrective-replan-public.js +35 -10
- package/dist/src/state/corrective-replan-public.js.map +1 -1
- package/dist/src/state/corrective-replan-transaction.js +12 -4
- package/dist/src/state/corrective-replan-transaction.js.map +1 -1
- package/dist/src/state/corrective-yield-transaction.js +11 -2
- package/dist/src/state/corrective-yield-transaction.js.map +1 -1
- package/dist/src/state/lock.d.ts +1 -0
- package/dist/src/state/lock.js +24 -0
- package/dist/src/state/lock.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/src/workflow.d.ts +70 -4
- package/dist/src/workflow.js +1888 -152
- package/dist/src/workflow.js.map +1 -1
- package/docs/autonomy-guardrails.md +41 -14
- package/docs/delegated-approval.md +6 -1
- package/docs/development-flow.md +42 -12
- package/docs/pdf/codex-workflow-v2-architecture-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-chat-only-guide-ru.pdf +0 -0
- package/docs/pdf/codex-workflow-v2-technical-reference-ru.pdf +0 -0
- package/docs/pdf/sources/codex-workflow-v2-architecture-ru.md +191 -22
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +163 -45
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +346 -52
- package/docs/problem-briefs/01-pre-implementation-integrity.md +11 -7
- package/docs/problem-briefs/04-task-dependency-and-structural-replacement-integrity.md +13 -6
- package/docs/problem-briefs/README.md +11 -11
- package/docs/release.md +89 -9
- package/docs/updating-existing-project.md +235 -0
- package/docs/validation-report.md +156 -98
- package/package.json +12 -3
- package/plugins/codex-workflow-gateway/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-workflow-gateway/references/protocol.md +9 -0
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +67 -1
- package/schemas/authorization-event.schema.json +10 -3
- package/schemas/corrective-decision-event.schema.json +164 -9
- package/schemas/corrective-replan-credentials.private.schema.json +4 -2
- package/schemas/milestone-scope-change-event.schema.json +25 -1
- package/schemas/remediation-event.schema.json +17 -1
- package/schemas/review-result.schema.json +1 -0
- package/schemas/step-review-event.schema.json +15 -0
- package/schemas/task.schema.json +104 -1
- 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, 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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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) =>
|
|
227
|
+
...environment.verifiedHistoricalStepCommits.filter((commit) => history.includes(commit)),
|
|
92
228
|
];
|
|
93
|
-
|
|
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 (
|
|
97
|
-
|
|
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 (
|
|
100
|
-
blockers.push('
|
|
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
|
-
|
|
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
|
-
:
|
|
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
|
|
138
|
-
|
|
139
|
-
|
|
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',
|
|
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',
|
|
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
|
-
|
|
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 (
|
|
342
|
+
if (!targetsExactDevDependency(afterManifest, afterVersion))
|
|
159
343
|
return false;
|
|
160
|
-
if (
|
|
344
|
+
if (expectedAfterVersion !== null && afterVersion !== expectedAfterVersion)
|
|
161
345
|
return false;
|
|
162
|
-
if (lockTargetsExactVersion(beforeLock,
|
|
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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"}
|