musubix3 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/.github/plugin/marketplace.json +2 -2
  2. package/.github/skills/sdd-change/SKILL.md +1 -0
  3. package/.github/skills/sdd-issue-report/SKILL.md +45 -0
  4. package/CHANGELOG.md +88 -0
  5. package/README-ja.md +73 -2
  6. package/README.md +121 -5
  7. package/dist/packages/analysis/src/adapters.js +25 -2
  8. package/dist/packages/analysis/src/adapters.js.map +1 -1
  9. package/dist/packages/analysis/src/change.d.ts +16 -0
  10. package/dist/packages/analysis/src/change.js +200 -52
  11. package/dist/packages/analysis/src/change.js.map +1 -1
  12. package/dist/packages/analysis/src/config.d.ts +7 -2
  13. package/dist/packages/analysis/src/config.js +50 -5
  14. package/dist/packages/analysis/src/config.js.map +1 -1
  15. package/dist/packages/analysis/src/files.d.ts +1 -0
  16. package/dist/packages/analysis/src/files.js +1 -1
  17. package/dist/packages/analysis/src/files.js.map +1 -1
  18. package/dist/packages/analysis/src/gate.js +2 -2
  19. package/dist/packages/analysis/src/gate.js.map +1 -1
  20. package/dist/packages/analysis/src/model-correspondence.js +4 -1
  21. package/dist/packages/analysis/src/model-correspondence.js.map +1 -1
  22. package/dist/packages/analysis/src/tdd.js +50 -14
  23. package/dist/packages/analysis/src/tdd.js.map +1 -1
  24. package/dist/packages/cli/src/install.d.ts +1 -1
  25. package/dist/packages/cli/src/install.js +1 -1
  26. package/dist/packages/cli/src/install.js.map +1 -1
  27. package/dist/packages/cli/src/main.js +9 -3
  28. package/dist/packages/cli/src/main.js.map +1 -1
  29. package/dist/packages/domain/src/design.js +17 -3
  30. package/dist/packages/domain/src/design.js.map +1 -1
  31. package/dist/packages/domain/src/requirements.d.ts +1 -0
  32. package/dist/packages/domain/src/requirements.js +32 -2
  33. package/dist/packages/domain/src/requirements.js.map +1 -1
  34. package/package.json +1 -1
  35. package/plugin.json +1 -1
@@ -19,10 +19,17 @@ export interface ChangePhaseEvidence {
19
19
  recordedAt: string;
20
20
  fingerprints: ChangeFingerprints;
21
21
  }
22
+ export interface ChangeTddBatch {
23
+ requirementIds: string[];
24
+ red?: ChangePhaseEvidence;
25
+ implementation?: ChangePhaseEvidence;
26
+ green?: ChangePhaseEvidence;
27
+ }
22
28
  export interface ChangeRecord {
23
29
  changeId: string;
24
30
  requirementIds: string[];
25
31
  phases: Partial<Record<ChangePhase, ChangePhaseEvidence>>;
32
+ tddBatches?: ChangeTddBatch[];
26
33
  }
27
34
  export interface ChangeEvidence {
28
35
  schemaVersion: 1;
@@ -37,7 +44,16 @@ export interface ChangeCompleteness {
37
44
  valid: boolean;
38
45
  }
39
46
  export declare function loadChangeEvidence(root: string): Promise<ChangeEvidence | null>;
47
+ /** @id CODE-CHANGE-REQUIREMENT-BATCHES-001
48
+ * @implements REQ-CHANGE-REQUIREMENT-BATCHES-001 REQ-CHANGE-REQUIREMENT-BATCHES-003 REQ-CHANGE-REQUIREMENT-BATCHES-004
49
+ * @design DES-CHANGE-REQUIREMENT-BATCHES-001
50
+ */
51
+ export declare function effectiveBatches(change: ChangeRecord): ChangeTddBatch[];
40
52
  export declare function recordChangePhase(root: string, changeId: string, phase: ChangePhase, requirementIds: string[]): Promise<ChangeEvidence>;
53
+ /** @id CODE-CHANGE-REQUIREMENT-BATCHES-002
54
+ * @implements REQ-CHANGE-REQUIREMENT-BATCHES-005
55
+ * @design DES-CHANGE-REQUIREMENT-BATCHES-002
56
+ */
41
57
  export declare function validateChangeEvidence(root: string): Promise<{
42
58
  present: boolean;
43
59
  valid: boolean;
@@ -64,6 +64,31 @@ export async function loadChangeEvidence(root) {
64
64
  throw new Error('Invalid change chronology evidence.');
65
65
  return value;
66
66
  }
67
+ const tddBatchPhases = ['red', 'implementation', 'green'];
68
+ function batchKey(requirementIds) {
69
+ return [...new Set(requirementIds)].sort().join(',');
70
+ }
71
+ /** @id CODE-CHANGE-REQUIREMENT-BATCHES-001
72
+ * @implements REQ-CHANGE-REQUIREMENT-BATCHES-001 REQ-CHANGE-REQUIREMENT-BATCHES-003 REQ-CHANGE-REQUIREMENT-BATCHES-004
73
+ * @design DES-CHANGE-REQUIREMENT-BATCHES-001
74
+ */
75
+ export function effectiveBatches(change) {
76
+ const batches = change.tddBatches ?? [];
77
+ if (change.phases.red || change.phases.implementation || change.phases.green) {
78
+ const legacyBatch = { requirementIds: [...change.requirementIds] };
79
+ if (change.phases.red)
80
+ legacyBatch.red = change.phases.red;
81
+ if (change.phases.implementation)
82
+ legacyBatch.implementation = change.phases.implementation;
83
+ if (change.phases.green)
84
+ legacyBatch.green = change.phases.green;
85
+ return [legacyBatch, ...batches];
86
+ }
87
+ return batches;
88
+ }
89
+ function batchFor(batches, requirementId) {
90
+ return batches.find((batch) => batch.requirementIds.includes(requirementId));
91
+ }
67
92
  export async function recordChangePhase(root, changeId, phase, requirementIds) {
68
93
  if (!/^CHANGE-\d+$/.test(changeId))
69
94
  throw new Error('Change ID must match CHANGE-<digits>.');
@@ -76,7 +101,8 @@ export async function recordChangePhase(root, changeId, phase, requirementIds) {
76
101
  throw new Error(`Missing staged change document: .musubix/changes/${changeId}.md`);
77
102
  }
78
103
  const evidence = await loadChangeEvidence(root) ?? { schemaVersion: 1, changes: [] };
79
- if (evidence.changes.some((entry) => changePhases.some((entryPhase) => entry.phases[entryPhase] && !Number.isInteger(entry.phases[entryPhase].order)))) {
104
+ if (evidence.changes.some((entry) => changePhases.some((entryPhase) => entry.phases[entryPhase] && !Number.isInteger(entry.phases[entryPhase].order))
105
+ || (entry.tddBatches ?? []).some((batch) => tddBatchPhases.some((batchPhase) => batch[batchPhase] && !Number.isInteger(batch[batchPhase].order))))) {
80
106
  throw new Error('Existing change evidence lacks monotonic order; regenerate it before recording new phases.');
81
107
  }
82
108
  let change = evidence.changes.find((entry) => entry.changeId === changeId);
@@ -86,25 +112,92 @@ export async function recordChangePhase(root, changeId, phase, requirementIds) {
86
112
  change = { changeId, requirementIds: [...new Set(requirementIds)].sort(), phases: {} };
87
113
  evidence.changes.push(change);
88
114
  }
89
- else if (JSON.stringify(change.requirementIds) !== JSON.stringify([...new Set(requirementIds)].sort())) {
90
- throw new Error('Every phase must use the same requirement IDs.');
115
+ const normalizedRequirementIds = [...new Set(requirementIds)].sort();
116
+ const isFullSet = JSON.stringify(normalizedRequirementIds) === JSON.stringify([...change.requirementIds].sort());
117
+ const isBatchPhase = tddBatchPhases.includes(phase);
118
+ if (!isBatchPhase || isFullSet) {
119
+ // impact/requirements/design/quality (always), and red/implementation/green
120
+ // recorded with the change's exact full requirement ID set: identical,
121
+ // unchanged, once-per-change behavior (REQ-CHANGE-REQUIREMENT-BATCHES-002).
122
+ if (change.phases[phase])
123
+ throw new Error(`${changeId}:${phase} is already recorded.`);
124
+ if (phase === 'requirements' && !change.phases.impact)
125
+ throw new Error('requirements requires the preceding impact phase.');
126
+ if (phase === 'design' && !change.phases.requirements)
127
+ throw new Error('design requires the preceding requirements phase.');
128
+ if (phase === 'red' && !change.phases.design)
129
+ throw new Error('red requires the preceding design phase.');
130
+ if (phase === 'implementation' && !change.phases.red)
131
+ throw new Error('implementation requires the preceding red phase.');
132
+ if (phase === 'green' && !change.phases.implementation)
133
+ throw new Error('green requires the preceding implementation phase.');
134
+ if (phase === 'quality') {
135
+ const covered = new Set(effectiveBatches(change).filter((batch) => batch.green).flatMap((batch) => batch.requirementIds));
136
+ const missing = change.requirementIds.filter((id) => !covered.has(id));
137
+ if (missing.length)
138
+ throw new Error(`quality requires Green evidence covering all change requirement IDs; missing ${missing.join(', ')}.`);
139
+ }
140
+ if (!isFullSet) {
141
+ throw new Error(!isBatchPhase
142
+ ? 'Every phase must use the same requirement IDs.'
143
+ : 'Every phase must use requirement IDs declared on the change.');
144
+ }
145
+ const order = await appendEvidenceOrder(root, { kind: 'change', entityId: changeId, phase });
146
+ change.phases[phase] = {
147
+ phase,
148
+ order: order.sequence,
149
+ recordedAt: new Date().toISOString(),
150
+ fingerprints: await currentFingerprints(root, changeId, change.requirementIds),
151
+ };
91
152
  }
92
- const index = changePhases.indexOf(phase);
93
- if (index > 0 && !change.phases[changePhases[index - 1]]) {
94
- throw new Error(`${phase} requires the preceding ${changePhases[index - 1]} phase.`);
153
+ else {
154
+ // red/implementation/green recorded with a proper, non-empty subset of the
155
+ // change's requirement IDs: an independent requirement batch
156
+ // (REQ-CHANGE-REQUIREMENT-BATCHES-001, -003).
157
+ if (!normalizedRequirementIds.length || !normalizedRequirementIds.every((id) => change.requirementIds.includes(id))) {
158
+ throw new Error('A requirement batch must use a non-empty subset of the change requirement IDs.');
159
+ }
160
+ const batchPhase = phase;
161
+ change.tddBatches ??= [];
162
+ const key = batchKey(normalizedRequirementIds);
163
+ let batch = change.tddBatches.find((entry) => batchKey(entry.requirementIds) === key);
164
+ if (batchPhase === 'red') {
165
+ if (batch?.red)
166
+ throw new Error(`${changeId}:red is already recorded for requirement batch ${normalizedRequirementIds.join(', ')}.`);
167
+ if (!change.phases.design)
168
+ throw new Error('red requires the preceding design phase.');
169
+ if (!batch) {
170
+ batch = { requirementIds: normalizedRequirementIds };
171
+ change.tddBatches.push(batch);
172
+ }
173
+ }
174
+ else if (batchPhase === 'implementation') {
175
+ if (!batch?.red)
176
+ throw new Error(`implementation requires the preceding red phase for requirement batch ${normalizedRequirementIds.join(', ')}.`);
177
+ if (batch.implementation)
178
+ throw new Error(`${changeId}:implementation is already recorded for requirement batch ${normalizedRequirementIds.join(', ')}.`);
179
+ }
180
+ else {
181
+ if (!batch?.implementation)
182
+ throw new Error(`green requires the preceding implementation phase for requirement batch ${normalizedRequirementIds.join(', ')}.`);
183
+ if (batch.green)
184
+ throw new Error(`${changeId}:green is already recorded for requirement batch ${normalizedRequirementIds.join(', ')}.`);
185
+ }
186
+ const order = await appendEvidenceOrder(root, { kind: 'change', entityId: changeId, phase: `${phase}:${key}` });
187
+ batch[batchPhase] = {
188
+ phase,
189
+ order: order.sequence,
190
+ recordedAt: new Date().toISOString(),
191
+ fingerprints: await currentFingerprints(root, changeId, normalizedRequirementIds),
192
+ };
95
193
  }
96
- if (change.phases[phase])
97
- throw new Error(`${changeId}:${phase} is already recorded.`);
98
- const order = await appendEvidenceOrder(root, { kind: 'change', entityId: changeId, phase });
99
- change.phases[phase] = {
100
- phase,
101
- order: order.sequence,
102
- recordedAt: new Date().toISOString(),
103
- fingerprints: await currentFingerprints(root, changeId, change.requirementIds),
104
- };
105
194
  await writeJson(root, '.musubix/evidence/changes.json', evidence);
106
195
  return evidence;
107
196
  }
197
+ /** @id CODE-CHANGE-REQUIREMENT-BATCHES-002
198
+ * @implements REQ-CHANGE-REQUIREMENT-BATCHES-005
199
+ * @design DES-CHANGE-REQUIREMENT-BATCHES-002
200
+ */
108
201
  export async function validateChangeEvidence(root) {
109
202
  const evidence = await loadChangeEvidence(root);
110
203
  const documents = (await files(root))
@@ -132,59 +225,113 @@ export async function validateChangeEvidence(root) {
132
225
  }
133
226
  }
134
227
  const tdd = await loadTddEvidence(root);
228
+ const singularPhases = ['impact', 'requirements', 'design', 'quality'];
135
229
  for (const change of evidence.changes) {
136
- const phases = changePhases.map((phase) => change.phases[phase]);
137
- for (let index = 0; index < phases.length; index++) {
138
- if (!phases[index])
139
- diagnostics.push(error('CHANGE_PHASE_MISSING', `${change.changeId} is missing ${changePhases[index]}.`));
140
- if (phases[index] && !Number.isInteger(phases[index].order)) {
141
- diagnostics.push(error('CHANGE_ORDER_MIGRATION_REQUIRED', `${change.changeId}:${changePhases[index]} lacks monotonic order evidence; regenerate this change chronology.`));
230
+ const batches = effectiveBatches(change);
231
+ const fullSetKey = batchKey(change.requirementIds);
232
+ for (const singularPhase of singularPhases) {
233
+ const item = change.phases[singularPhase];
234
+ if (!item)
235
+ diagnostics.push(error('CHANGE_PHASE_MISSING', `${change.changeId} is missing ${singularPhase}.`));
236
+ if (item && !Number.isInteger(item.order)) {
237
+ diagnostics.push(error('CHANGE_ORDER_MIGRATION_REQUIRED', `${change.changeId}:${singularPhase} lacks monotonic order evidence; regenerate this change chronology.`));
238
+ }
239
+ else if (item) {
240
+ const record = evidenceOrderRecord(order.records, 'change', change.changeId, singularPhase);
241
+ if (!record || record.sequence !== item.order) {
242
+ diagnostics.push(error('CHANGE_ORDER_MISMATCH', `${change.changeId}:${singularPhase} does not match the monotonic evidence order log.`));
243
+ }
244
+ }
245
+ }
246
+ if (change.phases.requirements?.order !== undefined && change.phases.impact?.order !== undefined
247
+ && change.phases.requirements.order <= change.phases.impact.order) {
248
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:requirements is not after impact.`));
249
+ }
250
+ if (change.phases.design?.order !== undefined && change.phases.requirements?.order !== undefined
251
+ && change.phases.design.order <= change.phases.requirements.order) {
252
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:design is not after requirements.`));
253
+ }
254
+ for (const batchPhase of tddBatchPhases) {
255
+ const covered = new Set(batches.filter((batch) => batch[batchPhase]).flatMap((batch) => batch.requirementIds));
256
+ const missing = change.requirementIds.filter((id) => !covered.has(id));
257
+ if (missing.length) {
258
+ diagnostics.push(error('CHANGE_PHASE_MISSING', `${change.changeId} is missing ${batchPhase} for ${missing.join(', ')}.`));
142
259
  }
143
- else if (phases[index]) {
144
- const record = evidenceOrderRecord(order.records, 'change', change.changeId, changePhases[index]);
145
- if (!record || record.sequence !== phases[index].order) {
146
- diagnostics.push(error('CHANGE_ORDER_MISMATCH', `${change.changeId}:${changePhases[index]} does not match the monotonic evidence order log.`));
260
+ }
261
+ for (const batch of batches) {
262
+ const key = batchKey(batch.requirementIds);
263
+ const isFullSet = key === fullSetKey;
264
+ for (const batchPhase of tddBatchPhases) {
265
+ const item = batch[batchPhase];
266
+ if (!item)
267
+ continue;
268
+ if (!Number.isInteger(item.order)) {
269
+ diagnostics.push(error('CHANGE_ORDER_MIGRATION_REQUIRED', `${change.changeId}:${batchPhase} lacks monotonic order evidence; regenerate this change chronology.`));
270
+ continue;
271
+ }
272
+ const orderPhaseKey = isFullSet ? batchPhase : `${batchPhase}:${key}`;
273
+ const record = evidenceOrderRecord(order.records, 'change', change.changeId, orderPhaseKey);
274
+ if (!record || record.sequence !== item.order) {
275
+ diagnostics.push(error('CHANGE_ORDER_MISMATCH', `${change.changeId}:${batchPhase} does not match the monotonic evidence order log.`));
147
276
  }
148
277
  }
149
- if (index > 0 && phases[index]?.order !== undefined && phases[index - 1]?.order !== undefined
150
- && phases[index].order <= phases[index - 1].order) {
151
- diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:${changePhases[index]} is not after ${changePhases[index - 1]}.`));
278
+ if (batch.red?.order !== undefined && change.phases.design?.order !== undefined
279
+ && batch.red.order <= change.phases.design.order) {
280
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:red is not after design.`));
281
+ }
282
+ if (batch.implementation?.order !== undefined && batch.red?.order !== undefined
283
+ && batch.implementation.order <= batch.red.order) {
284
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:implementation is not after red.`));
285
+ }
286
+ if (batch.green?.order !== undefined && batch.implementation?.order !== undefined
287
+ && batch.green.order <= batch.implementation.order) {
288
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:green is not after implementation.`));
289
+ }
290
+ if (change.phases.quality?.order !== undefined && batch.green?.order !== undefined
291
+ && change.phases.quality.order <= batch.green.order) {
292
+ diagnostics.push(error('CHANGE_PHASE_ORDER', `${change.changeId}:quality is not after green.`));
152
293
  }
153
294
  }
154
295
  const impact = change.phases.impact;
155
296
  const requirements = change.phases.requirements;
156
297
  const design = change.phases.design;
157
- const red = change.phases.red;
158
- const implementation = change.phases.implementation;
159
- const green = change.phases.green;
160
298
  if (impact && requirements && impact.fingerprints.requirements === requirements.fingerprints.requirements) {
161
299
  diagnostics.push(error('CHANGE_REQUIREMENTS_UNCHANGED', `${change.changeId} did not change requirements after impact analysis.`));
162
300
  }
163
301
  if (requirements && design && requirements.fingerprints.design === design.fingerprints.design) {
164
302
  diagnostics.push(error('CHANGE_DESIGN_UNCHANGED', `${change.changeId} did not change design after requirements.`));
165
303
  }
166
- if (design && red && design.fingerprints.tests === red.fingerprints.tests) {
167
- diagnostics.push(error('CHANGE_TESTS_UNCHANGED', `${change.changeId} did not add or change tests before Red.`));
168
- }
169
- if (red && implementation && red.fingerprints.implementation === implementation.fingerprints.implementation) {
170
- diagnostics.push(error('CHANGE_IMPLEMENTATION_UNCHANGED', `${change.changeId} did not change implementation after Red.`));
171
- }
172
- if (red && implementation) {
173
- for (const requirementId of change.requirementIds) {
174
- const before = red.fingerprints.requirementImplementations?.[requirementId];
175
- const after = implementation.fingerprints.requirementImplementations?.[requirementId];
176
- if (!before || !after || (!before.paths.length && !after.paths.length)) {
177
- diagnostics.push(error('CHANGE_IMPLEMENTATION_SCOPE_MISSING', `${change.changeId} has no Code Graph implementation scope for ${requirementId}.`));
178
- }
179
- else if (JSON.stringify(before.fingerprints) === JSON.stringify(after.fingerprints)) {
180
- diagnostics.push(error('CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED', `${change.changeId} did not change implementation related to ${requirementId} after Red.`));
304
+ for (const batch of batches) {
305
+ const red = batch.red;
306
+ const implementation = batch.implementation;
307
+ const green = batch.green;
308
+ if (design && red && design.fingerprints.tests === red.fingerprints.tests) {
309
+ diagnostics.push(error('CHANGE_TESTS_UNCHANGED', `${change.changeId} did not add or change tests before Red.`));
310
+ }
311
+ if (red && implementation && red.fingerprints.implementation === implementation.fingerprints.implementation) {
312
+ diagnostics.push(error('CHANGE_IMPLEMENTATION_UNCHANGED', `${change.changeId} did not change implementation after Red.`));
313
+ }
314
+ if (red && implementation) {
315
+ for (const requirementId of batch.requirementIds) {
316
+ const before = red.fingerprints.requirementImplementations?.[requirementId];
317
+ const after = implementation.fingerprints.requirementImplementations?.[requirementId];
318
+ if (!before || !after || (!before.paths.length && !after.paths.length)) {
319
+ diagnostics.push(error('CHANGE_IMPLEMENTATION_SCOPE_MISSING', `${change.changeId} has no Code Graph implementation scope for ${requirementId}.`));
320
+ }
321
+ else if (JSON.stringify(before.fingerprints) === JSON.stringify(after.fingerprints)) {
322
+ diagnostics.push(error('CHANGE_RELEVANT_IMPLEMENTATION_UNCHANGED', `${change.changeId} did not change implementation related to ${requirementId} after Red.`));
323
+ }
181
324
  }
182
325
  }
183
- }
184
- if (red && green && red.fingerprints.tests !== green.fingerprints.tests) {
185
- diagnostics.push(error('CHANGE_TEST_CHANGED_AFTER_RED', `${change.changeId} changed tests between Red and Green.`));
326
+ if (red && green && red.fingerprints.tests !== green.fingerprints.tests) {
327
+ diagnostics.push(error('CHANGE_TEST_CHANGED_AFTER_RED', `${change.changeId} changed tests between Red and Green.`));
328
+ }
186
329
  }
187
330
  for (const requirementId of change.requirementIds) {
331
+ const batch = batchFor(batches, requirementId);
332
+ const red = batch?.red;
333
+ const implementation = batch?.implementation;
334
+ const green = batch?.green;
188
335
  const cycles = tdd?.cycles.filter((cycle) => cycle.requirementId === requirementId) ?? [];
189
336
  const validCycle = cycles.find((cycle) => requirements
190
337
  && red
@@ -286,9 +433,10 @@ export async function validateChangeCompleteness(root) {
286
433
  && !/^(TODO|TBD|N\/A|none|未定)$/i.test(requirement.acceptance.trim())
287
434
  && /(?:\d|test|check|verif|assert|given|when|then|return|status|pass|fail|テスト|確認|検証|以下|以上)/i.test(requirement.acceptance);
288
435
  const requirements = change.phases.requirements;
289
- const red = change.phases.red;
290
- const implementation = change.phases.implementation;
291
- const green = change.phases.green;
436
+ const batch = batchFor(effectiveBatches(change), requirementId);
437
+ const red = batch?.red;
438
+ const implementation = batch?.implementation;
439
+ const green = batch?.green;
292
440
  const hasTdd = tdd?.cycles.some((cycle) => cycle.requirementId === requirementId
293
441
  && requirements
294
442
  && red
@@ -1 +1 @@
1
- {"version":3,"file":"change.js","sourceRoot":"","sources":["../../../../packages/analysis/src/change.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change.js","sourceRoot":"","sources":["../../../../packages/analysis/src/change.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export interface CommandConfig {
17
17
  path: string;
18
18
  };
19
19
  adapter?: 'vitest' | 'jest' | 'pytest' | 'go-test' | 'cargo' | 'junit' | 'dotnet';
20
+ cwd?: string;
20
21
  required: boolean;
21
22
  timeoutMs: number;
22
23
  }
@@ -136,14 +137,18 @@ export interface CommandScaffoldProposal {
136
137
  * @design DES-CLI-WORKFLOW-UX-006
137
138
  */
138
139
  export declare function scaffoldCommands(root: string): Promise<CommandScaffoldProposal[]>;
140
+ export declare function commandCwd(root: string, command: CommandConfig): string;
139
141
  /**
140
142
  * REQ-CLI-WORKFLOW-UX-004: scan every configured command's `args` for tokens
141
143
  * that look like repository-relative file paths and report any that do not
142
144
  * exist under the project root. Read-only; never modifies the config file.
145
+ * REQ-COMMAND-WORKING-DIRECTORY-002/003: a command's own `cwd` (when set) is
146
+ * validated first, and its `args` are checked against that directory rather
147
+ * than always the project root.
143
148
  */
144
149
  /** @id CODE-CLI-WORKFLOW-UX-004
145
- * @implements REQ-CLI-WORKFLOW-UX-004
146
- * @design DES-CLI-WORKFLOW-UX-004
150
+ * @implements REQ-CLI-WORKFLOW-UX-004 REQ-COMMAND-WORKING-DIRECTORY-002 REQ-COMMAND-WORKING-DIRECTORY-003
151
+ * @design DES-CLI-WORKFLOW-UX-004 DES-COMMAND-WORKING-DIRECTORY-002
147
152
  */
148
153
  export declare function configLint(root: string): Promise<{
149
154
  valid: boolean;
@@ -1,5 +1,6 @@
1
+ import { resolve } from 'node:path';
1
2
  import { error } from '../../domain/src/index.js';
2
- import { exists, files, readText, within } from './files.js';
3
+ import { exists, files, isDirectory, readText, within } from './files.js';
3
4
  export const checkNames = ['requirements', 'design', 'constitution', 'trace', 'graph', 'formal', 'model-correspondence', 'mutation', 'workflow', 'tdd', 'change-history', 'change-completeness', 'performance', 'attestation', 'approval', 'test-identities', 'commands'];
4
5
  export const defaultConfig = {
5
6
  schemaVersion: 1,
@@ -147,13 +148,16 @@ export function parseConfig(input) {
147
148
  throw new Error('commands must be an array.');
148
149
  const commands = rawCommands.map((raw) => {
149
150
  const c = object(raw, 'command');
150
- keys(c, ['name', 'command', 'args', 'tddArgs', 'tddReport', 'testReport', 'mutationReport', 'adapter', 'required', 'timeoutMs'], 'command');
151
+ keys(c, ['name', 'command', 'args', 'tddArgs', 'tddReport', 'testReport', 'mutationReport', 'adapter', 'cwd', 'required', 'timeoutMs'], 'command');
151
152
  if (typeof c.name !== 'string' || !/^[a-zA-Z0-9_-]+$/.test(c.name))
152
153
  throw new Error('Command name must be a simple nonempty identifier.');
153
154
  if (typeof c.command !== 'string' || !c.command.trim() || c.command.includes('\0'))
154
155
  throw new Error('Command executable must be nonempty.');
155
156
  if (c.required !== undefined && typeof c.required !== 'boolean')
156
157
  throw new Error('command.required must be boolean.');
158
+ if (c.cwd !== undefined && (typeof c.cwd !== 'string' || !c.cwd.trim() || c.cwd.includes('\0'))) {
159
+ throw new Error('command.cwd must be a nonempty relative path.');
160
+ }
157
161
  if (c.adapter !== undefined && !['vitest', 'jest', 'pytest', 'go-test', 'cargo', 'junit', 'dotnet'].includes(String(c.adapter))) {
158
162
  throw new Error('command.adapter must be vitest, jest, pytest, go-test, cargo, junit, or dotnet.');
159
163
  }
@@ -221,6 +225,7 @@ export function parseConfig(input) {
221
225
  ...(testReport ? { testReport } : {}),
222
226
  ...(mutationReport ? { mutationReport } : {}),
223
227
  ...(adapter ? { adapter } : {}),
228
+ ...(c.cwd !== undefined ? { cwd: c.cwd } : {}),
224
229
  required: c.required !== false,
225
230
  timeoutMs,
226
231
  };
@@ -483,6 +488,18 @@ export async function scaffoldCommands(root) {
483
488
  }
484
489
  return proposals;
485
490
  }
491
+ /* @id CODE-COMMAND-WORKING-DIRECTORY-001
492
+ * @implements REQ-COMMAND-WORKING-DIRECTORY-001
493
+ * @design DES-COMMAND-WORKING-DIRECTORY-001
494
+ */
495
+ // Resolve a command's own working directory, defaulting to the project root
496
+ // when it declares no `cwd`. Reuses `within()` so an escaping `cwd` throws
497
+ // the same error every other path-containment check in this project throws;
498
+ // callers that want a lint diagnostic instead of a thrown error (configLint,
499
+ // below) must catch it themselves.
500
+ export function commandCwd(root, command) {
501
+ return command.cwd === undefined ? root : within(root, command.cwd);
502
+ }
486
503
  function looksLikeRepoRelativePath(arg) {
487
504
  if (arg.startsWith('-'))
488
505
  return false;
@@ -490,23 +507,51 @@ function looksLikeRepoRelativePath(arg) {
490
507
  return false;
491
508
  return arg.includes('/');
492
509
  }
510
+ /* @id CODE-ADAPTER-PATTERN-RECOGNITION-002
511
+ * @implements REQ-ADAPTER-PATTERN-RECOGNITION-002
512
+ * @design DES-ADAPTER-PATTERN-RECOGNITION-001
513
+ */
514
+ // Go's package-pattern syntax ("./...", "pkg/...") is not a filesystem path;
515
+ // it is a recursive package wildcard understood only by the `go` toolchain.
516
+ // Scoped to the go-test adapter so the orphaned-path check is not weakened
517
+ // for any other command's genuinely path-like arguments.
518
+ function isGoPackagePattern(arg) {
519
+ return /(?:^|\/)\.\.\.$/.test(arg);
520
+ }
493
521
  /**
494
522
  * REQ-CLI-WORKFLOW-UX-004: scan every configured command's `args` for tokens
495
523
  * that look like repository-relative file paths and report any that do not
496
524
  * exist under the project root. Read-only; never modifies the config file.
525
+ * REQ-COMMAND-WORKING-DIRECTORY-002/003: a command's own `cwd` (when set) is
526
+ * validated first, and its `args` are checked against that directory rather
527
+ * than always the project root.
497
528
  */
498
529
  /** @id CODE-CLI-WORKFLOW-UX-004
499
- * @implements REQ-CLI-WORKFLOW-UX-004
500
- * @design DES-CLI-WORKFLOW-UX-004
530
+ * @implements REQ-CLI-WORKFLOW-UX-004 REQ-COMMAND-WORKING-DIRECTORY-002 REQ-COMMAND-WORKING-DIRECTORY-003
531
+ * @design DES-CLI-WORKFLOW-UX-004 DES-COMMAND-WORKING-DIRECTORY-002
501
532
  */
502
533
  export async function configLint(root) {
503
534
  const config = await loadConfig(root);
504
535
  const diagnostics = [];
505
536
  for (const command of config.commands) {
537
+ let base;
538
+ try {
539
+ base = commandCwd(root, command);
540
+ }
541
+ catch {
542
+ diagnostics.push(error('CONFIG_CWD_INVALID', `Command "${command.name}" has a cwd that escapes the project root: ${command.cwd}`));
543
+ continue;
544
+ }
545
+ if (command.cwd !== undefined && !await isDirectory(base)) {
546
+ diagnostics.push(error('CONFIG_CWD_INVALID', `Command "${command.name}" has a cwd that does not exist: ${command.cwd}`));
547
+ continue;
548
+ }
506
549
  for (const arg of command.args) {
507
550
  if (!looksLikeRepoRelativePath(arg))
508
551
  continue;
509
- if (!await exists(within(root, arg))) {
552
+ if (command.adapter === 'go-test' && isGoPackagePattern(arg))
553
+ continue;
554
+ if (!await exists(within(root, resolve(base, arg)))) {
510
555
  diagnostics.push(error('CONFIG_ORPHANED_PATH', `Command "${command.name}" references a path that does not exist: ${arg}`));
511
556
  }
512
557
  }