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.
- package/README.md +58 -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.js +34 -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 +216 -258
- package/dist/src/cli.js.map +1 -1
- package/dist/src/contracts.d.ts +166 -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 +221 -34
- 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/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 +18 -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 +65 -4
- package/dist/src/workflow.js +1704 -155
- 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 +181 -22
- package/docs/pdf/sources/codex-workflow-v2-chat-only-guide-ru.md +148 -26
- package/docs/pdf/sources/codex-workflow-v2-technical-reference-ru.md +326 -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 +83 -9
- package/docs/updating-existing-project.md +205 -0
- package/docs/validation-report.md +156 -99
- package/package.json +12 -3
- package/plugins/codex-workflow-gateway/skills/codex-workflow-gateway/SKILL.md +42 -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 +61 -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, 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
|
|
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
|
-
|
|
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
|
|
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) =>
|
|
227
|
+
...environment.verifiedHistoricalStepCommits.filter((commit) => history.includes(commit)),
|
|
101
228
|
];
|
|
102
|
-
|
|
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(
|
|
110
|
-
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.');
|
|
111
242
|
}
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
|
|
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
|
-
:
|
|
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
|
|
154
|
-
|
|
155
|
-
|
|
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',
|
|
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',
|
|
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
|
-
|
|
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 (
|
|
342
|
+
if (!targetsExactDevDependency(afterManifest, afterVersion))
|
|
175
343
|
return false;
|
|
176
|
-
if (
|
|
344
|
+
if (expectedAfterVersion !== null && afterVersion !== expectedAfterVersion)
|
|
177
345
|
return false;
|
|
178
|
-
if (lockTargetsExactVersion(beforeLock,
|
|
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 {};
|