musubix3 0.1.20 → 0.1.21

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 (63) hide show
  1. package/.github/plugin/marketplace.json +2 -2
  2. package/.github/skills/sdd-change/SKILL.md +28 -45
  3. package/CHANGELOG.md +88 -0
  4. package/README-ja.md +103 -3
  5. package/README.md +113 -3
  6. package/dist/packages/analysis/src/approval.d.ts +51 -0
  7. package/dist/packages/analysis/src/approval.js +341 -2
  8. package/dist/packages/analysis/src/approval.js.map +1 -1
  9. package/dist/packages/analysis/src/attestation.js +4 -0
  10. package/dist/packages/analysis/src/attestation.js.map +1 -1
  11. package/dist/packages/analysis/src/change-evidence.d.ts +56 -13
  12. package/dist/packages/analysis/src/change-evidence.js +142 -81
  13. package/dist/packages/analysis/src/change-evidence.js.map +1 -1
  14. package/dist/packages/analysis/src/change-waiver.d.ts +37 -13
  15. package/dist/packages/analysis/src/change-waiver.js +425 -174
  16. package/dist/packages/analysis/src/change-waiver.js.map +1 -1
  17. package/dist/packages/analysis/src/change.d.ts +1 -0
  18. package/dist/packages/analysis/src/change.js +176 -23
  19. package/dist/packages/analysis/src/change.js.map +1 -1
  20. package/dist/packages/analysis/src/evidence-merge-guard.d.ts +5 -0
  21. package/dist/packages/analysis/src/evidence-merge-guard.js +15 -0
  22. package/dist/packages/analysis/src/evidence-merge-guard.js.map +1 -1
  23. package/dist/packages/analysis/src/evidence-merge.d.ts +2 -0
  24. package/dist/packages/analysis/src/evidence-merge.js +173 -38
  25. package/dist/packages/analysis/src/evidence-merge.js.map +1 -1
  26. package/dist/packages/analysis/src/evidence-writer-lock.d.ts +9 -2
  27. package/dist/packages/analysis/src/evidence-writer-lock.js +75 -21
  28. package/dist/packages/analysis/src/evidence-writer-lock.js.map +1 -1
  29. package/dist/packages/analysis/src/files.js +5 -0
  30. package/dist/packages/analysis/src/files.js.map +1 -1
  31. package/dist/packages/analysis/src/gate.d.ts +1 -1
  32. package/dist/packages/analysis/src/gate.js +17 -4
  33. package/dist/packages/analysis/src/gate.js.map +1 -1
  34. package/dist/packages/analysis/src/index.d.ts +1 -0
  35. package/dist/packages/analysis/src/index.js +1 -0
  36. package/dist/packages/analysis/src/index.js.map +1 -1
  37. package/dist/packages/analysis/src/order.d.ts +16 -1
  38. package/dist/packages/analysis/src/order.js +6 -0
  39. package/dist/packages/analysis/src/order.js.map +1 -1
  40. package/dist/packages/analysis/src/quality-refresh.d.ts +18 -0
  41. package/dist/packages/analysis/src/quality-refresh.js +312 -0
  42. package/dist/packages/analysis/src/quality-refresh.js.map +1 -0
  43. package/dist/packages/analysis/src/tdd.d.ts +84 -3
  44. package/dist/packages/analysis/src/tdd.js +589 -50
  45. package/dist/packages/analysis/src/tdd.js.map +1 -1
  46. package/dist/packages/analysis/src/trace.d.ts +24 -0
  47. package/dist/packages/analysis/src/trace.js +95 -3
  48. package/dist/packages/analysis/src/trace.js.map +1 -1
  49. package/dist/packages/analysis/src/workflow-waiver.d.ts +6 -2
  50. package/dist/packages/analysis/src/workflow-waiver.js +9 -5
  51. package/dist/packages/analysis/src/workflow-waiver.js.map +1 -1
  52. package/dist/packages/analysis/src/workflow.d.ts +1 -1
  53. package/dist/packages/analysis/src/workflow.js +4 -4
  54. package/dist/packages/analysis/src/workflow.js.map +1 -1
  55. package/dist/packages/cli/src/install.js +27 -4
  56. package/dist/packages/cli/src/install.js.map +1 -1
  57. package/dist/packages/cli/src/main.js +77 -18
  58. package/dist/packages/cli/src/main.js.map +1 -1
  59. package/dist/packages/domain/src/design.js +8 -1
  60. package/dist/packages/domain/src/design.js.map +1 -1
  61. package/dist/packages/domain/src/types.d.ts +1 -0
  62. package/package.json +7 -2
  63. package/plugin.json +1 -1
@@ -1,5 +1,6 @@
1
1
  import { type Diagnostic } from '../../domain/src/index.js';
2
2
  import type { ApprovalConfig } from './config.js';
3
+ import { type Runner } from './process.js';
3
4
  import { type ResolvedDomain } from './approval-domains.js';
4
5
  export { domainsConfigured, domainOwning, featureOwningDesignFile, featureOwningRequirement, resolveDomains, type ResolvedDomain, } from './approval-domains.js';
5
6
  export declare const approvalStages: readonly ["requirements", "design", "release"];
@@ -42,7 +43,33 @@ export interface ApprovalValidation {
42
43
  release?: ApprovalStageValidation;
43
44
  diagnostics: Diagnostic[];
44
45
  }
46
+ export interface ReleaseApprovalDrift {
47
+ path: string;
48
+ change: 'added' | 'modified' | 'deleted';
49
+ approvedSha256: string | null;
50
+ currentSha256: string | null;
51
+ }
52
+ export interface ReleaseApprovalReport {
53
+ valid: boolean;
54
+ stage: 'release';
55
+ status: 'approved' | 'missing' | 'stale';
56
+ diagnostics: ReleaseApprovalDrift[];
57
+ }
58
+ export declare class ReleaseApprovalPreconditionError extends Error {
59
+ readonly code: string;
60
+ constructor(code: string, message: string);
61
+ }
62
+ export declare class ReleaseApprovalSchemaError extends Error {
63
+ readonly code = "RELEASE_APPROVAL_SCHEMA";
64
+ constructor(message: string);
65
+ }
45
66
  export declare function approvalPath(stage: ApprovalStage, domain?: string): string;
67
+ /** @id CODE-RELEASE-APPROVAL-ORDERING-001
68
+ * @implements REQ-RELEASE-APPROVAL-ORDERING-001 REQ-RELEASE-APPROVAL-ORDERING-002 REQ-RELEASE-APPROVAL-ORDERING-003
69
+ * @design DES-RELEASE-APPROVAL-ORDERING-001
70
+ */
71
+ export declare function releaseCandidatePaths(root: string, runner?: Runner): Promise<string[]>;
72
+ export declare function releaseTaggedPaths(root: string, tag: string, runner?: Runner): Promise<string[]>;
46
73
  /** @id CODE-HUMAN-APPROVAL-GATES-001
47
74
  * @implements REQ-HUMAN-APPROVAL-GATES-001 REQ-HUMAN-APPROVAL-GATES-002 REQ-HUMAN-APPROVAL-GATES-003
48
75
  * @implements REQ-HUMAN-APPROVAL-GATES-004 REQ-HUMAN-APPROVAL-GATES-005 REQ-HUMAN-APPROVAL-GATES-006
@@ -56,6 +83,30 @@ export declare function approvalPath(stage: ApprovalStage, domain?: string): str
56
83
  */
57
84
  export declare function approvalManifest(root: string, stage: ApprovalStage, domain?: ResolvedDomain): Promise<ApprovalManifest>;
58
85
  export declare function loadApproval(root: string, stage: ApprovalStage, domain?: string): Promise<ApprovalEvidence | null>;
86
+ /** @id CODE-APPROVAL-PREPARE-DIFF-ONLY-001
87
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-003
88
+ * @design DES-APPROVAL-PREPARE-DIFF-ONLY-001
89
+ */
90
+ export declare function artifactDrift(approved: Record<string, string>, current: Record<string, string>): ReleaseApprovalDrift[];
91
+ export type DiffOnlyBaseline = 'approved' | 'none';
92
+ export interface DiffOnlyResult {
93
+ changedFiles: string[];
94
+ diffOnlyBaseline: DiffOnlyBaseline;
95
+ }
96
+ /** @id CODE-APPROVAL-PREPARE-DIFF-ONLY-002
97
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-002 REQ-APPROVAL-PREPARE-DIFF-ONLY-003
98
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-004
99
+ * @design DES-APPROVAL-PREPARE-DIFF-ONLY-001
100
+ */
101
+ export declare function diffOnlyChangedFiles(manifest: Pick<ApprovalManifest, 'artifacts'>, previous: ApprovalEvidence | null): DiffOnlyResult;
102
+ /** @id CODE-RELEASE-APPROVAL-ORDERING-002
103
+ * @implements REQ-RELEASE-APPROVAL-ORDERING-001 REQ-RELEASE-APPROVAL-ORDERING-002 REQ-RELEASE-APPROVAL-ORDERING-003
104
+ * @design DES-RELEASE-APPROVAL-ORDERING-001
105
+ */
106
+ export declare function validateReleaseApprovalForTag(root: string, tag: string, config: ApprovalConfig, options?: {
107
+ runner?: Runner;
108
+ githubSha?: string;
109
+ }): Promise<ReleaseApprovalReport>;
59
110
  export declare function validateApprovalStage(root: string, stage: ApprovalStage, config: ApprovalConfig, domain?: ResolvedDomain): Promise<ApprovalStageValidation>;
60
111
  /** @id CODE-APPROVAL-DOMAIN-SCOPING-004
61
112
  * @implements REQ-APPROVAL-DOMAIN-SCOPING-008 REQ-APPROVAL-DOMAIN-SCOPING-021 REQ-APPROVAL-DOMAIN-SCOPING-022
@@ -1,14 +1,49 @@
1
- import { basename } from 'node:path';
1
+ import { lstat } from 'node:fs/promises';
2
+ import { basename, dirname, resolve } from 'node:path';
2
3
  import { error, validateConstitution, validateDesign, validateRequirements, } from '../../domain/src/index.js';
3
4
  import { digest, exists, files, readText, snapshot, within } from './files.js';
5
+ import { runProcess } from './process.js';
4
6
  import { domainOwning, domainsConfigured, featureOwningDesignFile, featureOwningRequirement, resolveDomains, } from './approval-domains.js';
5
7
  export { domainsConfigured, domainOwning, featureOwningDesignFile, featureOwningRequirement, resolveDomains, } from './approval-domains.js';
6
8
  export const approvalStages = ['requirements', 'design', 'release'];
9
+ export class ReleaseApprovalPreconditionError extends Error {
10
+ code;
11
+ constructor(code, message) {
12
+ super(message);
13
+ this.code = code;
14
+ this.name = 'ReleaseApprovalPreconditionError';
15
+ }
16
+ }
17
+ export class ReleaseApprovalSchemaError extends Error {
18
+ code = 'RELEASE_APPROVAL_SCHEMA';
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = 'ReleaseApprovalSchemaError';
22
+ }
23
+ }
7
24
  export function approvalPath(stage, domain) {
8
25
  return domain ? `.musubix/evidence/approvals/domains/${domain}/${stage}.json` : `.musubix/evidence/approvals/${stage}.json`;
9
26
  }
10
27
  const featureRequirementsPattern = /^\.musubix\/features\/([^/]+)\/requirements\.md$/;
11
28
  const featureDesignPattern = /^\.musubix\/features\/([^/]+)\/design\.md$/;
29
+ // CHANGE-0038: regression-guard coverage for REQ-SCOPED-FEATURE-TRACE-ARTIFACTS-005
30
+ // (no behavior change: requirements/design stage filters below never match any
31
+ // trace.json path, which is exactly the invariant that requirement asserts).
32
+ // CHANGE-0038 (corrective Red-Implementation-Green batch): re-proved TDD evidence
33
+ // inside the change's valid order window; no behavior change.
34
+ // CHANGE-0038 (2nd corrective batch): confirmed by expanded design-stage manifest
35
+ // acceptance-clause test coverage; no behavior change.
36
+ // CHANGE-0038 (4th corrective batch): confirmed by a genuine multi-domain
37
+ // (`approval.domains`) per-domain manifest scoping assertion, proved via
38
+ // temporary regression injection into `owns()`; no behavior change.
39
+ // CHANGE-0038 (5th corrective batch): re-bounded the REQ-002 TDD evidence
40
+ // window after an earlier batch's order sequencing mistake; no behavior change.
41
+ // CHANGE-0038 (6th corrective batch): re-bounded REQ-005's TDD evidence window
42
+ // after pairing it with REQ-004's own window fix; no behavior change.
43
+ /** @id CODE-SCOPED-FEATURE-TRACE-ARTIFACTS-007
44
+ * @implements REQ-SCOPED-FEATURE-TRACE-ARTIFACTS-005
45
+ * @design DES-SCOPED-FEATURE-TRACE-ARTIFACTS-005
46
+ */
12
47
  function stagePaths(paths, stage) {
13
48
  const requirements = (path) => path === '.musubix/constitution.md' || featureRequirementsPattern.test(path);
14
49
  if (stage === 'requirements')
@@ -22,6 +57,193 @@ function stagePaths(paths, stage) {
22
57
  && !path.endsWith('.tgz')
23
58
  && !/(?:^|\/)(?:logs?|session-logs)\//.test(path)).sort();
24
59
  }
60
+ const projectExcludedDirectories = new Set([
61
+ '.git', 'node_modules', 'dist', 'build', 'coverage', '.test-work', '.next', 'vendor', '__pycache__',
62
+ ]);
63
+ const pythonVirtualEnvironmentRoots = new Set(['.venv', 'venv']);
64
+ function codePointOrder(left, right) {
65
+ const leftPoints = [...left];
66
+ const rightPoints = [...right];
67
+ const length = Math.min(leftPoints.length, rightPoints.length);
68
+ for (let index = 0; index < length; index++) {
69
+ const difference = leftPoints[index].codePointAt(0) - rightPoints[index].codePointAt(0);
70
+ if (difference !== 0)
71
+ return difference;
72
+ }
73
+ return leftPoints.length - rightPoints.length;
74
+ }
75
+ function markerPath(directory, name) {
76
+ return directory === '.' ? name : `${directory}/${name}`;
77
+ }
78
+ // CHANGE-0048: fixed, source-hardcoded scratch-file convention (Issue #66).
79
+ // Never configurable via `.musubix/config.json`, environment, or CLI flags;
80
+ // widening it requires a reviewed source change through the same
81
+ // requirements/design/TDD/quality gate as any other change to the release
82
+ // manifest. Applied only as a post-filter, gated on untracked origin, inside
83
+ // `releaseCandidateInventory` — see DES-RELEASE-APPROVAL-ORDERING-004 /
84
+ // ADR-0041 for why this must never run before structural marker derivation.
85
+ const scratchFileNamePattern = /^[^/]+\.scratch\.[^/.]+$/;
86
+ /** @id CODE-RELEASE-APPROVAL-ORDERING-004
87
+ * @implements REQ-RELEASE-APPROVAL-ORDERING-005
88
+ * @design DES-RELEASE-APPROVAL-ORDERING-004
89
+ */
90
+ function isScratchCandidate(path) {
91
+ return path === '.musubix/scratch' || path.startsWith('.musubix/scratch/')
92
+ || scratchFileNamePattern.test(basename(path));
93
+ }
94
+ function releaseProjectPaths(entries, includeSpecialModes) {
95
+ const candidates = new Set(entries.map((entry) => entry.path));
96
+ const nestedWorkspaces = new Set();
97
+ const dotnetDirectories = new Set();
98
+ for (const path of candidates) {
99
+ const marker = '/.musubix/';
100
+ const index = path.indexOf(marker);
101
+ if (index > 0)
102
+ nestedWorkspaces.add(path.slice(0, index));
103
+ if (/\.sln$/i.test(path) || /\.(?:cs|fs|vb)proj$/i.test(path)) {
104
+ dotnetDirectories.add(dirname(path));
105
+ }
106
+ }
107
+ const hasMarker = (directory, names) => names.some((name) => candidates.has(markerPath(directory, name)));
108
+ const excludedByStructure = (path) => {
109
+ if (path === '.musubix/cache' || path.startsWith('.musubix/cache/')
110
+ || path === '.musubix/evidence' || path.startsWith('.musubix/evidence/')
111
+ || path === '.nuget/packages' || path.startsWith('.nuget/packages/'))
112
+ return true;
113
+ for (const root of nestedWorkspaces) {
114
+ if (path === root || path.startsWith(`${root}/`))
115
+ return true;
116
+ }
117
+ const segments = path.split('/');
118
+ for (let index = 0; index < segments.length - 1; index++) {
119
+ const name = segments[index];
120
+ if (projectExcludedDirectories.has(name))
121
+ return true;
122
+ const directory = segments.slice(0, index).join('/') || '.';
123
+ const childDirectory = segments.slice(0, index + 1).join('/');
124
+ if (pythonVirtualEnvironmentRoots.has(name)
125
+ && candidates.has(`${childDirectory}/pyvenv.cfg`))
126
+ return true;
127
+ if (name === 'target' && hasMarker(directory, ['Cargo.toml', 'pom.xml']))
128
+ return true;
129
+ if (name === '.gradle'
130
+ && hasMarker(directory, ['build.gradle', 'build.gradle.kts', 'settings.gradle', 'settings.gradle.kts']))
131
+ return true;
132
+ if (name === '.dart_tool' && hasMarker(directory, ['pubspec.yaml']))
133
+ return true;
134
+ if (name === '.build' && hasMarker(directory, ['Package.swift']))
135
+ return true;
136
+ if ((name === '.zig-cache' || name === 'zig-out')
137
+ && hasMarker(directory, ['build.zig', 'build.zig.zon']))
138
+ return true;
139
+ if (name === '.dotnet' && dotnetDirectories.has(directory))
140
+ return true;
141
+ if ((name === 'bin' || name === 'obj') && dotnetDirectories.has(directory))
142
+ return true;
143
+ }
144
+ return false;
145
+ };
146
+ return stagePaths(entries
147
+ .filter((entry) => includeSpecialModes || (entry.mode !== '120000' && entry.mode !== '160000'))
148
+ .map((entry) => entry.path)
149
+ .filter((path) => !excludedByStructure(path)), 'release')
150
+ .sort(codePointOrder);
151
+ }
152
+ async function gitResult(root, args, runner) {
153
+ const result = await runner('git', args, { cwd: root, timeoutMs: 10_000 });
154
+ if (result.status !== 'completed' || result.exitCode !== 0) {
155
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT', `git ${args.join(' ')} failed: ${result.stderr.trim() || result.status}`);
156
+ }
157
+ return result.stdout;
158
+ }
159
+ async function exactGitRoot(root, runner) {
160
+ const result = await runner('git', ['rev-parse', '--show-toplevel'], { cwd: root, timeoutMs: 10_000 });
161
+ return result.status === 'completed'
162
+ && result.exitCode === 0
163
+ && resolve(result.stdout.trim()) === resolve(root);
164
+ }
165
+ async function regularFile(root, path) {
166
+ try {
167
+ return (await lstat(within(root, path))).isFile();
168
+ }
169
+ catch (cause) {
170
+ if (cause.code === 'ENOENT')
171
+ return false;
172
+ throw cause;
173
+ }
174
+ }
175
+ async function releaseCandidateInventory(root, runner) {
176
+ const trackedOutput = await gitResult(root, ['ls-files', '-z', '-s', '--cached'], runner);
177
+ const tracked = [];
178
+ for (const record of trackedOutput.split('\0')) {
179
+ if (!record)
180
+ continue;
181
+ const match = /^(\d{6}) [0-9a-f]+ ([0-3])\t([\s\S]+)$/.exec(record);
182
+ if (!match)
183
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_OUTPUT', 'Malformed git ls-files output.');
184
+ if (match[2] !== '0') {
185
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_INDEX_CONFLICT', `Unmerged release input: ${match[3]}`);
186
+ }
187
+ tracked.push({ mode: match[1], path: match[3] });
188
+ }
189
+ const untrackedOutput = await gitResult(root, ['ls-files', '-z', '--others', '--exclude-standard'], runner);
190
+ const untracked = [];
191
+ for (const path of untrackedOutput.split('\0')) {
192
+ if (path && await regularFile(root, path))
193
+ untracked.push({ mode: '100644', path });
194
+ }
195
+ const untrackedPaths = new Set(untracked.map((entry) => entry.path));
196
+ const raw = [...tracked, ...untracked];
197
+ const present = [];
198
+ for (const entry of raw) {
199
+ if (await regularFile(root, entry.path))
200
+ present.push(entry);
201
+ }
202
+ // CHANGE-0048 (REQ-RELEASE-APPROVAL-ORDERING-005): structural marker
203
+ // derivation (`releaseProjectPaths`) always runs against the complete,
204
+ // unfiltered candidate set first. The scratch-file exclusion is applied
205
+ // only afterward, as a post-filter on the final output `paths`, and only
206
+ // to entries whose origin is untracked — a tracked file is never removed
207
+ // by name alone. `structuralPaths` is intentionally left unfiltered; see
208
+ // DES-RELEASE-APPROVAL-ORDERING-004 / ADR-0041.
209
+ const paths = releaseProjectPaths(present, false)
210
+ .filter((path) => !(untrackedPaths.has(path) && isScratchCandidate(path)));
211
+ return {
212
+ paths,
213
+ structuralPaths: releaseProjectPaths(raw, true),
214
+ };
215
+ }
216
+ async function releaseTagInventory(root, tag, runner) {
217
+ const output = await gitResult(root, ['ls-tree', '-r', '-z', '--full-tree', tag], runner);
218
+ const entries = [];
219
+ for (const record of output.split('\0')) {
220
+ if (!record)
221
+ continue;
222
+ const match = /^(\d{6}) (?:blob|commit) [0-9a-f]+\t([\s\S]+)$/.exec(record);
223
+ if (!match)
224
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_OUTPUT', 'Malformed git ls-tree output.');
225
+ entries.push({ mode: match[1], path: match[2] });
226
+ }
227
+ return {
228
+ paths: releaseProjectPaths(entries, false),
229
+ structuralPaths: releaseProjectPaths(entries, true),
230
+ };
231
+ }
232
+ /** @id CODE-RELEASE-APPROVAL-ORDERING-001
233
+ * @implements REQ-RELEASE-APPROVAL-ORDERING-001 REQ-RELEASE-APPROVAL-ORDERING-002 REQ-RELEASE-APPROVAL-ORDERING-003
234
+ * @design DES-RELEASE-APPROVAL-ORDERING-001
235
+ */
236
+ export async function releaseCandidatePaths(root, runner = runProcess) {
237
+ if (!await exactGitRoot(root, runner))
238
+ return stagePaths(await files(root), 'release');
239
+ return (await releaseCandidateInventory(root, runner)).paths;
240
+ }
241
+ export async function releaseTaggedPaths(root, tag, runner = runProcess) {
242
+ if (!await exactGitRoot(root, runner)) {
243
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_ROOT', 'Tagged release approval validation requires the project root to equal the Git worktree root.');
244
+ }
245
+ return (await releaseTagInventory(root, tag, runner)).paths;
246
+ }
25
247
  /** @id CODE-APPROVAL-DOMAIN-SCOPING-003
26
248
  * @implements REQ-APPROVAL-DOMAIN-SCOPING-011 REQ-APPROVAL-DOMAIN-SCOPING-012
27
249
  * @design DES-APPROVAL-DOMAIN-SCOPING-003
@@ -73,7 +295,8 @@ export async function approvalManifest(root, stage, domain) {
73
295
  artifactSha256: digest(JSON.stringify({ stage, domain: domain.name, features: domain.features, artifacts })),
74
296
  };
75
297
  }
76
- const artifacts = await snapshot(root, stagePaths(await files(root), stage));
298
+ const paths = stage === 'release' ? await releaseCandidatePaths(root) : stagePaths(await files(root), stage);
299
+ const artifacts = await snapshot(root, paths);
77
300
  return { stage, artifacts, artifactSha256: digest(JSON.stringify({ stage, artifacts })) };
78
301
  }
79
302
  export async function loadApproval(root, stage, domain) {
@@ -93,6 +316,122 @@ export async function loadApproval(root, stage, domain) {
93
316
  }
94
317
  return value;
95
318
  }
319
+ /** @id CODE-APPROVAL-PREPARE-DIFF-ONLY-001
320
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-003
321
+ * @design DES-APPROVAL-PREPARE-DIFF-ONLY-001
322
+ */
323
+ export function artifactDrift(approved, current) {
324
+ const paths = [...new Set([...Object.keys(approved), ...Object.keys(current)])].sort(codePointOrder);
325
+ return paths.flatMap((path) => {
326
+ const approvedSha256 = approved[path] ?? null;
327
+ const currentSha256 = current[path] ?? null;
328
+ if (approvedSha256 === currentSha256)
329
+ return [];
330
+ const change = approvedSha256 === null ? 'added' : currentSha256 === null ? 'deleted' : 'modified';
331
+ return [{ path, change, approvedSha256, currentSha256 }];
332
+ });
333
+ }
334
+ /** @id CODE-APPROVAL-PREPARE-DIFF-ONLY-002
335
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-002 REQ-APPROVAL-PREPARE-DIFF-ONLY-003
336
+ * @implements REQ-APPROVAL-PREPARE-DIFF-ONLY-004
337
+ * @design DES-APPROVAL-PREPARE-DIFF-ONLY-001
338
+ */
339
+ export function diffOnlyChangedFiles(manifest, previous) {
340
+ if (!previous) {
341
+ return { changedFiles: Object.keys(manifest.artifacts).sort(codePointOrder), diffOnlyBaseline: 'none' };
342
+ }
343
+ const changedFiles = artifactDrift(previous.artifacts, manifest.artifacts).map((drift) => drift.path);
344
+ return { changedFiles, diffOnlyBaseline: 'approved' };
345
+ }
346
+ async function gitStatus(root, runner) {
347
+ const output = await gitResult(root, ['status', '--porcelain=v1', '-z', '--untracked-files=all', '--', '.'], runner);
348
+ const fields = output.split('\0');
349
+ const records = [];
350
+ for (let index = 0; index < fields.length; index++) {
351
+ const field = fields[index];
352
+ if (!field)
353
+ continue;
354
+ if (field.length < 4) {
355
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_OUTPUT', 'Malformed git status output.');
356
+ }
357
+ const status = field.slice(0, 2);
358
+ const paths = [field.slice(3)];
359
+ if (/[RC]/.test(status)) {
360
+ const previous = fields[++index];
361
+ if (!previous) {
362
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_OUTPUT', 'Malformed git rename status output.');
363
+ }
364
+ paths.push(previous);
365
+ }
366
+ records.push({ status, paths });
367
+ }
368
+ return records;
369
+ }
370
+ /** @id CODE-RELEASE-APPROVAL-ORDERING-002
371
+ * @implements REQ-RELEASE-APPROVAL-ORDERING-001 REQ-RELEASE-APPROVAL-ORDERING-002 REQ-RELEASE-APPROVAL-ORDERING-003
372
+ * @design DES-RELEASE-APPROVAL-ORDERING-001
373
+ */
374
+ export async function validateReleaseApprovalForTag(root, tag, config, options = {}) {
375
+ const runner = options.runner ?? runProcess;
376
+ if (!await exactGitRoot(root, runner)) {
377
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_GIT_ROOT', 'Tagged release approval validation requires the project root to equal the Git worktree root.');
378
+ }
379
+ const tagCommit = (await gitResult(root, ['rev-parse', `${tag}^{commit}`], runner)).trim().toLowerCase();
380
+ const headCommit = (await gitResult(root, ['rev-parse', 'HEAD^{commit}'], runner)).trim().toLowerCase();
381
+ if (tagCommit !== headCommit) {
382
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_TAG_HEAD', `Release tag ${tag} does not point to HEAD.`);
383
+ }
384
+ const githubSha = options.githubSha ?? process.env.GITHUB_SHA;
385
+ if (githubSha && tagCommit !== githubSha.toLowerCase()) {
386
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_TAG_GITHUB_SHA', `Release tag ${tag} does not point to GITHUB_SHA.`);
387
+ }
388
+ let evidence;
389
+ try {
390
+ evidence = await loadApproval(root, 'release');
391
+ }
392
+ catch (cause) {
393
+ throw new ReleaseApprovalSchemaError(cause instanceof Error ? cause.message : String(cause));
394
+ }
395
+ if (evidence && evidence.artifactSha256 !== digest(JSON.stringify({
396
+ stage: 'release',
397
+ artifacts: evidence.artifacts,
398
+ }))) {
399
+ throw new ReleaseApprovalSchemaError('Release approval artifactSha256 does not match its artifact manifest.');
400
+ }
401
+ if (!evidence && config.mode === 'required') {
402
+ return { valid: false, stage: 'release', status: 'missing', diagnostics: [] };
403
+ }
404
+ const [candidate, tagged, status] = await Promise.all([
405
+ releaseCandidateInventory(root, runner),
406
+ releaseTagInventory(root, tag, runner),
407
+ gitStatus(root, runner),
408
+ ]);
409
+ const releasePaths = new Set([
410
+ ...candidate.paths,
411
+ ...tagged.paths,
412
+ ...Object.keys(evidence?.artifacts ?? {}),
413
+ ]);
414
+ const structuralPaths = new Set([...candidate.structuralPaths, ...tagged.structuralPaths]);
415
+ const dirty = status.filter((record) => record.paths.some((path) => (record.status.includes('T') && structuralPaths.has(path)) || releasePaths.has(path)));
416
+ if (dirty.length) {
417
+ if (!evidence) {
418
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_DIRTY', 'Release-input working tree differs from the tagged commit.');
419
+ }
420
+ const current = await snapshot(root, candidate.paths);
421
+ const diagnostics = artifactDrift(evidence.artifacts, current);
422
+ if (!diagnostics.length) {
423
+ throw new ReleaseApprovalPreconditionError('RELEASE_APPROVAL_DIRTY', 'Release-input working tree differs from the tagged commit after approval.');
424
+ }
425
+ return { valid: false, stage: 'release', status: 'stale', diagnostics };
426
+ }
427
+ if (!evidence)
428
+ return { valid: true, stage: 'release', status: 'missing', diagnostics: [] };
429
+ const current = await snapshot(root, tagged.paths);
430
+ const diagnostics = artifactDrift(evidence.artifacts, current);
431
+ return diagnostics.length
432
+ ? { valid: false, stage: 'release', status: 'stale', diagnostics }
433
+ : { valid: true, stage: 'release', status: 'approved', diagnostics: [] };
434
+ }
96
435
  export async function validateApprovalStage(root, stage, config, domain) {
97
436
  const current = await approvalManifest(root, stage, domain);
98
437
  const path = approvalPath(stage, domain?.name);
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../packages/analysis/src/approval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../../packages/analysis/src/approval.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,10 @@ function repositoryName(remote) {
32
32
  // `workflow`'s `invocations`) are retained as recorded, which no-op re-runs
33
33
  // do not append to or reorder. See
34
34
  // `tests/attestation-evidence-stability.test.ts`'s mode-matrix regression test.
35
+ // (CHANGE-0050 / Issue #67: that test's `changes`/`tdd` head seeding fixture
36
+ // now also records `requirements`/`design`/`implementation` change-record
37
+ // phases, per REQ-TDD-GREEN-REQUIREMENT-SCOPING-003's change-record phase
38
+ // precondition; the `changes`/`tdd` head computation below is unaffected.)
35
39
  export async function collectEvidenceHeads(root) {
36
40
  const heads = {};
37
41
  const load = async (path) => await exists(within(root, path)) ? JSON.parse(await readText(root, path)) : null;