@rasensio/aidlc 1.26.1 → 1.26.2

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.
@@ -3,14 +3,27 @@
3
3
  *
4
4
  * Behavior:
5
5
  * - `aidlc review <instance> <artifact>` — create or show findings for an artifact.
6
- * - Writes structured findings to `.aidlc/state/<instance>/<artifact>.review.md`.
6
+ * - Writes structured findings to
7
+ * `.aidlc/state/<instance>/<artifact>.md.review.md`, via
8
+ * `findingsFilename` — never from the argument as typed.
7
9
  * - In non-orchestrator mode: creates a placeholder findings file and prints
8
10
  * instructions for manual review (the skill `80-review.md` guides AI agents).
9
11
  * - With `--json`: output findings structure as JSON.
10
12
  * - Integrates with review gate: `evaluateTransition` already checks for `*.review.md`
11
13
  * files and parses findings from them.
12
14
  *
13
- * Requirements: 24.1, 24.2, 24.4
15
+ * ## The filename used to come from the argument as typed
16
+ *
17
+ * It no longer does. `` `${artifactArg}.review.md` `` meant that typing
18
+ * `requirements` — the phase name, and what the review skill's prose calls the
19
+ * artifact — produced `requirements.review.md`, which the gate could not see
20
+ * because it looks artifacts up by the template's name, `requirements.md`. The
21
+ * review ran, parsed, counted and summarised correctly, and the transition failed
22
+ * saying the findings file was absent. 11 files across 6 completed instances are
23
+ * still on disk under that spelling. `review/findings-naming.ts` now owns the
24
+ * mapping for both this writer and the reader in `transition.ts`.
25
+ *
26
+ * Requirements: 24.1, 24.2, 24.4, AC-1, AC-2, AC-3, AC-7
14
27
  *
15
28
  * @module
16
29
  */
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAQjE,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAaD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CASjE;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYrD"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAWjE,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAaD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CASjE;AAMD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAgBR;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAerD"}
@@ -3,14 +3,27 @@
3
3
  *
4
4
  * Behavior:
5
5
  * - `aidlc review <instance> <artifact>` — create or show findings for an artifact.
6
- * - Writes structured findings to `.aidlc/state/<instance>/<artifact>.review.md`.
6
+ * - Writes structured findings to
7
+ * `.aidlc/state/<instance>/<artifact>.md.review.md`, via
8
+ * `findingsFilename` — never from the argument as typed.
7
9
  * - In non-orchestrator mode: creates a placeholder findings file and prints
8
10
  * instructions for manual review (the skill `80-review.md` guides AI agents).
9
11
  * - With `--json`: output findings structure as JSON.
10
12
  * - Integrates with review gate: `evaluateTransition` already checks for `*.review.md`
11
13
  * files and parses findings from them.
12
14
  *
13
- * Requirements: 24.1, 24.2, 24.4
15
+ * ## The filename used to come from the argument as typed
16
+ *
17
+ * It no longer does. `` `${artifactArg}.review.md` `` meant that typing
18
+ * `requirements` — the phase name, and what the review skill's prose calls the
19
+ * artifact — produced `requirements.review.md`, which the gate could not see
20
+ * because it looks artifacts up by the template's name, `requirements.md`. The
21
+ * review ran, parsed, counted and summarised correctly, and the transition failed
22
+ * saying the findings file was absent. 11 files across 6 completed instances are
23
+ * still on disk under that spelling. `review/findings-naming.ts` now owns the
24
+ * mapping for both this writer and the reader in `transition.ts`.
25
+ *
26
+ * Requirements: 24.1, 24.2, 24.4, AC-1, AC-2, AC-3, AC-7
14
27
  *
15
28
  * @module
16
29
  */
@@ -18,8 +31,11 @@ import { Command } from 'commander';
18
31
  import { existsSync, readFileSync, readdirSync } from 'node:fs';
19
32
  import { join } from 'node:path';
20
33
  import { parseFindings, parseFrontmatter } from '../review/findings-parser.js';
21
- import { atomicWrite, instancePath } from '../state/snapshot-store.js';
34
+ import { FINDINGS_SUFFIX, artifactFromFindingsFile, canonicalArtifactName, findingsFilename, } from '../review/findings-naming.js';
35
+ import { atomicWrite, instancePath, loadSnapshot } from '../state/snapshot-store.js';
22
36
  import { resolveProjectRoot } from '../core/project-root.js';
37
+ import { loadTemplates, resolveTemplate, phasesForScope } from '../core/template-resolver.js';
38
+ import { loadTemplates as loadBuiltInTemplates } from '@rasensio/aidlc-content';
23
39
  // ---------------------------------------------------------------------------
24
40
  // Findings file parsing
25
41
  //
@@ -92,7 +108,7 @@ export function registerReview(program) {
92
108
  .command('review')
93
109
  .description('Run an adversarial review of a lifecycle artifact, recording structured findings')
94
110
  .argument('<instance>', 'Lifecycle instance name')
95
- .argument('<artifact>', 'Artifact filename to review (e.g., requirements.md)')
111
+ .argument('<artifact>', 'Artifact to review, with or without .md (e.g., requirements or requirements.md)')
96
112
  .option('--json', 'Output findings as structured JSON')
97
113
  .action((instance, artifact, opts) => {
98
114
  runReview(instance, artifact, opts);
@@ -111,24 +127,47 @@ function runReview(instanceArg, artifactArg, opts) {
111
127
  process.exitCode = 1;
112
128
  return;
113
129
  }
114
- // Check if a findings file already exists
115
- const findingsFileName = `${artifactArg}.review.md`;
130
+ // AC-7: refuse an artifact no gate will ever read, before writing anything.
131
+ const rejection = checkArtifactAllowed(projectRoot, stateDir, instanceArg, artifactArg);
132
+ if (rejection) {
133
+ process.stderr.write(`Error: ${rejection}\n`);
134
+ process.exitCode = 1;
135
+ return;
136
+ }
137
+ // AC-1, AC-2, AC-3: the filename comes from the shared helper, never from the
138
+ // argument as typed, so both spellings land on one file.
139
+ const artifactName = canonicalArtifactName(artifactArg);
140
+ const findingsFileName = findingsFilename(artifactArg);
116
141
  const findingsFilePath = join(instDir, findingsFileName);
117
- if (existsSync(findingsFilePath)) {
142
+ // AC-3: probe the legacy spelling before scaffolding. Without this, running
143
+ // `aidlc review cost-tracking requirements` against one of the six instances
144
+ // that already hold `requirements.review.md` would write a second file beside
145
+ // it — two files for one artifact, which is the thing AC-3 forbids.
146
+ const legacyPath = existsSync(findingsFilePath)
147
+ ? null
148
+ : findLegacyFindingsFile(instDir, artifactName);
149
+ const existingPath = existsSync(findingsFilePath) ? findingsFilePath : legacyPath;
150
+ if (existingPath) {
118
151
  // Read and output existing findings
119
- const content = readFileSync(findingsFilePath, 'utf8');
152
+ const content = readFileSync(existingPath, 'utf8');
120
153
  const parsed = parseFindingsFile(content);
121
154
  if (opts.json) {
122
155
  process.stdout.write(JSON.stringify(parsed, null, 2) + '\n');
123
156
  }
124
157
  else {
158
+ if (legacyPath) {
159
+ process.stdout.write(`Note: findings are recorded under the legacy filename ` +
160
+ `"${legacyPath.slice(instDir.length + 1)}". ` +
161
+ `The gate reads it, and \`aidlc doctor\` renames it to ` +
162
+ `"${findingsFileName}".\n\n`);
163
+ }
125
164
  printFindingsSummary(parsed);
126
165
  }
127
166
  return;
128
167
  }
129
168
  // No findings file exists — create a placeholder
130
169
  const reviewer = getReviewerIdentity();
131
- const placeholder = generatePlaceholderFindings(artifactArg, reviewer);
170
+ const placeholder = generatePlaceholderFindings(artifactName, reviewer);
132
171
  // Write the findings file atomically
133
172
  atomicWrite(findingsFilePath, placeholder);
134
173
  // Parse what we just wrote for output
@@ -151,6 +190,121 @@ function runReview(instanceArg, artifactArg, opts) {
151
190
  // ---------------------------------------------------------------------------
152
191
  // Helpers
153
192
  // ---------------------------------------------------------------------------
193
+ /**
194
+ * Find a findings file for `artifactName` under the legacy spelling.
195
+ *
196
+ * The legacy spelling drops the artifact's own `.md` — `requirements.review.md`
197
+ * for `requirements.md`. `artifactFromFindingsFile` resolves both, so rather than
198
+ * reconstruct the legacy name here (a second derivation, which is the bug class
199
+ * this instance closes) we scan the directory and ask the shared helper.
200
+ *
201
+ * @returns Absolute path, or null when no such file exists.
202
+ */
203
+ function findLegacyFindingsFile(instDir, artifactName) {
204
+ let entries;
205
+ try {
206
+ entries = readdirSync(instDir).sort();
207
+ }
208
+ catch {
209
+ return null;
210
+ }
211
+ for (const entry of entries) {
212
+ if (!entry.endsWith(FINDINGS_SUFFIX))
213
+ continue;
214
+ if (entry === `${artifactName}${FINDINGS_SUFFIX}`)
215
+ continue;
216
+ if (artifactFromFindingsFile(entry) === artifactName) {
217
+ return join(instDir, entry);
218
+ }
219
+ }
220
+ return null;
221
+ }
222
+ /**
223
+ * AC-7: is `artifactArg` an artifact this instance's template actually declares?
224
+ *
225
+ * Today a typo scaffolds a findings file that no gate will ever read — the exact
226
+ * silent-success shape this instance exists to remove, one step earlier in the
227
+ * pipeline.
228
+ *
229
+ * The allowlist is every artifact, **required or optional**, across every phase in
230
+ * the instance's scope. That is deliberately wider than AC-7's literal wording
231
+ * ("the current phase's required artifacts"), and `design.md` records why:
232
+ * `architecture-diagram.md` is an *optional* artifact of design in `full-feature`
233
+ * and `agent-portability` legitimately reviewed it, while re-reviewing an earlier
234
+ * phase's artifact is exactly what the amendment protocol asks for. Both would be
235
+ * refused by the literal reading. The typo is still caught, which is the point.
236
+ *
237
+ * @returns An error message, or null when the argument is acceptable.
238
+ */
239
+ function checkArtifactAllowed(projectRoot, stateDir, instanceArg, artifactArg) {
240
+ const allowed = declaredArtifacts(projectRoot, stateDir, instanceArg);
241
+ // Unresolvable template → skip the check. A review is not the place to discover
242
+ // a broken template, and refusing to run would be worse than accepting a typo.
243
+ if (allowed === null)
244
+ return null;
245
+ const artifactName = canonicalArtifactName(artifactArg);
246
+ if (allowed.has(artifactName))
247
+ return null;
248
+ const valid = [...allowed].sort().join(', ');
249
+ return (`'${artifactArg}' is not an artifact of instance '${instanceArg}'. ` +
250
+ `Reviewable artifacts: ${valid}`);
251
+ }
252
+ /**
253
+ * Every artifact name the instance's template declares, or null when the instance
254
+ * state or template cannot be resolved.
255
+ */
256
+ function declaredArtifacts(projectRoot, stateDir, instanceArg) {
257
+ let instanceState;
258
+ try {
259
+ instanceState = loadSnapshot(stateDir, instanceArg, 'instance.yaml');
260
+ }
261
+ catch {
262
+ return null;
263
+ }
264
+ if (!instanceState?.template)
265
+ return null;
266
+ let resolved;
267
+ try {
268
+ const all = loadAllTemplates(projectRoot);
269
+ const base = all.get(instanceState.template);
270
+ if (!base)
271
+ return null;
272
+ resolved = resolveTemplate(base, all);
273
+ }
274
+ catch {
275
+ return null;
276
+ }
277
+ const phases = phasesForScope(resolved, instanceState.scope);
278
+ const names = new Set();
279
+ for (const phase of phases) {
280
+ for (const a of phase.required_artifacts ?? [])
281
+ names.add(a.name);
282
+ for (const a of phase.optional_artifacts ?? [])
283
+ names.add(a.name);
284
+ }
285
+ return names.size > 0 ? names : null;
286
+ }
287
+ /**
288
+ * Built-in templates plus any the project defines.
289
+ *
290
+ * Mirrors `loadAllTemplates` in `commands/transition.ts`. Duplicated rather than
291
+ * shared because extracting it would move a function two commands depend on for a
292
+ * caller that only needs a read-only lookup; if a third caller appears, extract it
293
+ * then.
294
+ */
295
+ function loadAllTemplates(projectRoot) {
296
+ const templates = new Map();
297
+ for (const tpl of loadBuiltInTemplates()) {
298
+ templates.set(tpl.name, tpl.raw);
299
+ }
300
+ const customDir = join(projectRoot, '.aidlc', 'templates');
301
+ if (existsSync(customDir)) {
302
+ for (const [name, tpl] of loadTemplates(customDir)) {
303
+ templates.set(name, tpl);
304
+ }
305
+ }
306
+ return templates;
307
+ }
154
308
  /**
155
309
  * Determine reviewer identity from environment.
156
310
  */
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAsBhF,8EAA8E;AAC9E,wBAAwB;AACxB,EAAE;AACF,kFAAkF;AAClF,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,oFAAoF;AACpF,uDAAuD;AACvD,8EAA8E;AAE9E,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAChB,MAAM,8BAA8B,CAAC;AAEtC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvC,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAAoB,EACpB,QAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAE/D,OAAO;YACG,YAAY;eACT,GAAG;YACN,QAAQ;;;;;;;;;CASnB,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,kFAAkF,CACnF;SACA,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC;SACjD,QAAQ,CACP,YAAY,EACZ,iFAAiF,CAClF;SACA,MAAM,CAAC,QAAQ,EAAE,oCAAoC,CAAC;SACtD,MAAM,CAAC,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAgB,EAAE,EAAE;QAC/D,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC;AAMD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,SAAS,SAAS,CAChB,WAAmB,EACnB,WAAmB,EACnB,IAAgB;IAEhB,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtD,2BAA2B;IAC3B,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,gBAAgB,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,4EAA4E;IAC5E,MAAM,SAAS,GAAG,oBAAoB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACxF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEzD,4EAA4E;IAC5E,6EAA6E;IAC7E,8EAA8E;IAC9E,oEAAoE;IACpE,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAC;QAC7C,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC;IAElF,IAAI,YAAY,EAAE,CAAC;QACjB,oCAAoC;QACpC,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wDAAwD;oBACtD,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK;oBAC7C,wDAAwD;oBACxD,IAAI,gBAAgB,QAAQ,CAC/B,CAAC;YACJ,CAAC;YACD,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO;IACT,CAAC;IAED,iDAAiD;IACjD,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,2BAA2B,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAExE,qCAAqC;IACrC,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAE3C,sCAAsC;IACtC,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,gBAAgB,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,WAAW,IAAI,gBAAgB,MAAM,CAAC,CAAC;QACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0EAA0E,CAC3E,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oEAAoE,CACrE,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sFAAsF,CACvF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,SAAS,sBAAsB,CAAC,OAAe,EAAE,YAAoB;IACnE,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;YAAE,SAAS;QAC/C,IAAI,KAAK,KAAK,GAAG,YAAY,GAAG,eAAe,EAAE;YAAE,SAAS;QAC5D,IAAI,wBAAwB,CAAC,KAAK,CAAC,KAAK,YAAY,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,oBAAoB,CAC3B,WAAmB,EACnB,QAAgB,EAChB,WAAmB,EACnB,WAAmB;IAEnB,MAAM,OAAO,GAAG,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEtE,gFAAgF;IAChF,+EAA+E;IAC/E,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CACL,IAAI,WAAW,qCAAqC,WAAW,KAAK;QACpE,yBAAyB,KAAK,EAAE,CACjC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,WAAmB,EACnB,QAAgB,EAChB,WAAmB;IAEnB,IAAI,aAAmC,CAAC;IACxC,IAAI,CAAC;QACH,aAAa,GAAG,YAAY,CAAgB,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE1C,IAAI,QAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,EAAE,CAAC;QACzC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAkC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB;IAC1B,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ;QACpB,OAAO,CAAC,GAAG,CAAC,OAAO;QACnB,SAAS,CACV,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAsB;IAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,CAAC,QAAQ,MAAM,CAAC,CAAC;IACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAE5D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAsB,EAAE,CAAC;QAC9E,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CACxD,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,YAAY,CAAC,MAAM,sFAAsF,CACnH,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/commands/transition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuGpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgB9E;AAiDD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUzD"}
1
+ {"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/commands/transition.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4GpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgB9E;AA4FD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAUzD"}
@@ -27,6 +27,7 @@ import { existsSync, readdirSync, readFileSync } from 'node:fs';
27
27
  import { join } from 'node:path';
28
28
  import { loadTemplates as loadBuiltInTemplates } from '@rasensio/aidlc-content';
29
29
  import { evaluateTransition, nextStep } from '../core/lifecycle.js';
30
+ import { FINDINGS_SUFFIX, artifactFromFindingsFile, isCanonicalFindingsFile, } from '../review/findings-naming.js';
30
31
  import { parseFindingsFile } from './review.js';
31
32
  import { evaluateKnowledgeCriterion } from '../knowledge/gate-criterion.js';
32
33
  import { evaluateTraceabilityCriterion, uncoveredMessage, } from '../traceability/gate-criterion.js';
@@ -127,11 +128,19 @@ export function getActorIdentity(projectRoot, instance) {
127
128
  return envActor;
128
129
  }
129
130
  /**
130
- * Parse review findings from `<artifact>.review.md` files in the instance directory.
131
+ * Parse review findings from `*.review.md` files in the instance directory.
131
132
  *
132
- * Looks for files matching `*.review.md` and parses them into a FindingsIndex.
133
133
  * Each finding is parsed from markdown heading format:
134
134
  * ## <id>: <title> [<severity>] [<status>]
135
+ *
136
+ * The index is keyed by **artifact name as the template declares it** —
137
+ * `requirements.md`, not `requirements` — because that is what `checkReviewGate`
138
+ * looks up. It used to be keyed by `file.replace('.review.md', '')`, which for the
139
+ * file `aidlc review` wrote from a bare `requirements` argument produced the key
140
+ * `requirements`, and the two never met: a complete review reported as "no
141
+ * findings file". `artifactFromFindingsFile` resolves both spellings to one key,
142
+ * so the 11 legacy files across 6 completed instances now count without a
143
+ * compatibility branch here (AC-4, AC-5).
135
144
  */
136
145
  function loadFindings(stateDir, instanceName) {
137
146
  const findings = {};
@@ -143,9 +152,17 @@ function loadFindings(stateDir, instanceName) {
143
152
  catch {
144
153
  return findings;
145
154
  }
146
- const reviewFiles = entries.filter((f) => f.endsWith('.review.md'));
155
+ // Sorted so a directory's read order never decides the outcome. Two spellings of
156
+ // one artifact both resolve to the same key, so without an explicit rule the
157
+ // winner would be whichever readdir happened to return last.
158
+ const reviewFiles = entries.filter((f) => f.endsWith(FINDINGS_SUFFIX)).sort();
159
+ // Which file supplied each key, so the canonical spelling can win a collision
160
+ // regardless of sort position and the loser can be named rather than dropped.
161
+ const sourceFile = {};
147
162
  for (const file of reviewFiles) {
148
- const artifactName = file.replace('.review.md', '');
163
+ const artifactName = artifactFromFindingsFile(file);
164
+ if (artifactName === null)
165
+ continue;
149
166
  const filePath = join(instanceDir, file);
150
167
  try {
151
168
  const content = readFileSync(filePath, 'utf8');
@@ -155,12 +172,32 @@ function loadFindings(stateDir, instanceName) {
155
172
  // and severity, and flags the scaffolded placeholder. A second grammar for the
156
173
  // same format is the bug class this instance exists to prevent.
157
174
  const parsed = parseFindingsFile(content).findings;
158
- if (parsed.length > 0) {
159
- findings[artifactName] = parsed;
175
+ if (parsed.length === 0)
176
+ continue;
177
+ const held = sourceFile[artifactName];
178
+ if (held !== undefined) {
179
+ // Both spellings exist for one artifact. Canonical wins; the other is
180
+ // reported, because silently preferring one of two files is how the
181
+ // original defect stayed invisible for a month.
182
+ const heldIsCanonical = isCanonicalFindingsFile(held);
183
+ const thisIsCanonical = isCanonicalFindingsFile(file);
184
+ const loser = thisIsCanonical ? held : file;
185
+ process.stderr.write(`warning: ${instanceName} has two findings files for "${artifactName}" ` +
186
+ `(${held}, ${file}); using ${thisIsCanonical ? file : held} and ignoring ` +
187
+ `${loser}. Run \`aidlc doctor\` to reconcile them.\n`);
188
+ if (heldIsCanonical || !thisIsCanonical)
189
+ continue;
160
190
  }
191
+ findings[artifactName] = parsed;
192
+ sourceFile[artifactName] = file;
161
193
  }
162
- catch {
163
- // Skip unparseable review files
194
+ catch (err) {
195
+ // A findings file that will not parse is skipped, but never in silence: the
196
+ // whole defect class this instance closes is a review that looks done and
197
+ // counts for nothing. It still does not throw — one malformed file must not
198
+ // make `aidlc transition` unusable.
199
+ process.stderr.write(`warning: could not parse findings file ${file} in ${instanceName}: ` +
200
+ `${err.message}\n`);
164
201
  }
165
202
  }
166
203
  return findings;
@@ -1 +1 @@
1
- {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../src/commands/transition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transition.js","sourceRoot":"","sources":["../../src/commands/transition.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,QAAQ,EAER,aAAa,EACb,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAC7B,MAAM,CA4BR;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,MAAM,GACpB,OAAO,CAuBT;AAOD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,GACzB,QAAQ,CA+CV;AA8ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,QAAQ,CAAC,EAAE,OAAO,GACjB,gBAAgB,CAiClB"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,QAAQ,EAER,aAAa,EACb,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AASpB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,GAC7B,MAAM,CA4BR;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,MAAM,GACpB,OAAO,CAuBT;AAOD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,GACzB,QAAQ,CA+CV;AA8ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EACpC,QAAQ,EAAE,gBAAgB,EAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,EACvB,QAAQ,CAAC,EAAE,OAAO,GACjB,gBAAgB,CAiClB"}
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { phasesForScope } from './template-resolver.js';
9
9
  import { effectiveRequiredArtifacts } from './gate.js';
10
+ import { findingsFilename } from '../review/findings-naming.js';
10
11
  // ---------------------------------------------------------------------------
11
12
  // completionPercent (Req 11.2)
12
13
  // ---------------------------------------------------------------------------
@@ -287,6 +288,32 @@ function checkRequiredArtifacts(templatePhase, phaseState, violations) {
287
288
  }
288
289
  }
289
290
  }
291
+ /**
292
+ * Explain a missing findings file in terms of what is actually on disk (AC-6).
293
+ *
294
+ * The old message was the bare string "no findings file", and it was wrong in the
295
+ * most expensive direction: for a month it was printed while the file sat in the
296
+ * instance directory under one character's difference, so every signal said the
297
+ * review was done and only the gate disagreed — by claiming absence. Naming the
298
+ * filename the gate expects is the half that ends the confusion, because it tells
299
+ * the reader what to rename to.
300
+ *
301
+ * The "holds findings for" clause names artifacts rather than raw filenames.
302
+ * `checkReviewGate` is not given filenames, and widening `evaluateTransition` —
303
+ * a public seam with callers in four test files — to carry them would buy a
304
+ * cosmetic difference. `design.md` records this narrowing of AC-6.
305
+ */
306
+ function describeMissingFindings(artifactName, findings) {
307
+ // No parentheses here: the caller already wraps this in a pair, and nesting them
308
+ // reads as `... review (no findings file (expected x.md.review.md))`.
309
+ const expected = `no findings file — expected ${findingsFilename(artifactName)}`;
310
+ const others = Object.keys(findings)
311
+ .filter((key) => key !== artifactName)
312
+ .sort();
313
+ if (others.length === 0)
314
+ return expected;
315
+ return `${expected}; the instance holds findings for: ${others.join(', ')}`;
316
+ }
290
317
  /**
291
318
  * If the template has an adversarial-review gate for the current phase,
292
319
  * check that no finding with severity 'critical' and status 'open' exists.
@@ -315,7 +342,9 @@ function checkReviewGate(template, currentPhaseName, findings, violations) {
315
342
  violations.push({
316
343
  gate: 'review-gate',
317
344
  reason: `review gate: "${artifact.name}" has no completed review ` +
318
- `(${forArtifact.length > 0 ? 'only the scaffolded placeholder is present' : 'no findings file'})`,
345
+ `(${forArtifact.length > 0
346
+ ? 'only the scaffolded placeholder is present'
347
+ : describeMissingFindings(artifact.name, findings)})`,
319
348
  });
320
349
  }
321
350
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/core/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * findings-filename migration (safe tier): rename a review findings file from the
3
+ * legacy spelling to the canonical one, so one artifact has one findings file.
4
+ *
5
+ * The defect this tidies was silent and expensive. `aidlc review <instance>
6
+ * requirements` built its filename from the argument as typed, giving
7
+ * `requirements.review.md`, while the review gate looks artifacts up by the name
8
+ * the template declares — `requirements.md`. A full adversarial review was
9
+ * written, parsed, counted and summarised, and the transition failed saying the
10
+ * findings file was absent.
11
+ *
12
+ * This repository alone holds **11 such files across 6 completed instances**, every
13
+ * one a `full-feature` instance and every one on `requirements` or `design` — the
14
+ * only two phases any template gates. Eleven reviews that never counted toward the
15
+ * gate they were run for.
16
+ *
17
+ * ## Why this migration is cosmetic, and still worth having
18
+ *
19
+ * `artifactFromFindingsFile` resolves both spellings to one key, so the legacy
20
+ * files already count once the reader ships. This migration does not restore
21
+ * function; it removes the second spelling, so nobody has to know there were ever
22
+ * two. Leaving them means every future reader of an instance directory sees two
23
+ * conventions and has to work out which one the gate honours.
24
+ *
25
+ * ## Safe tier
26
+ *
27
+ * It renames framework-managed state under `.aidlc/state/` and never opens the
28
+ * file — the review's content is untouched, only its name. The alternative,
29
+ * `confirm`, would leave the files misnamed until somebody ran `doctor --yes`, and
30
+ * the whole problem was that nobody knew there was anything to run.
31
+ *
32
+ * ## Collisions are reported, never resolved
33
+ *
34
+ * When both spellings exist for one artifact, renaming would clobber a findings
35
+ * file — a real review, destroyed to tidy a name. Those are reported
36
+ * `applicable: false` with the detail, following `roadmap-item-titles` exactly:
37
+ * pending confirm work makes `aidlc doctor` exit 1 forever on a repo holding one
38
+ * such pair, which trains people to ignore doctor output. `not-applicable` still
39
+ * prints the detail, which is the entire point.
40
+ *
41
+ * Requirements: AC-9
42
+ */
43
+ import type { DoctorContext, Migration } from '../types.js';
44
+ /** One legacy findings file that can be renamed to the canonical spelling. */
45
+ export interface FindingsRename {
46
+ instance: string;
47
+ /** Absolute source path. */
48
+ from: string;
49
+ /** Absolute destination path. */
50
+ to: string;
51
+ /** Repo-relative source, for `git mv` and for display. */
52
+ fromRel: string;
53
+ /** Repo-relative destination. */
54
+ toRel: string;
55
+ tracked: boolean;
56
+ }
57
+ /** A legacy file whose canonical name is already taken by another findings file. */
58
+ export interface FindingsCollision {
59
+ instance: string;
60
+ legacy: string;
61
+ canonical: string;
62
+ artifact: string;
63
+ }
64
+ export interface FindingsPlan {
65
+ renames: FindingsRename[];
66
+ collisions: FindingsCollision[];
67
+ }
68
+ /**
69
+ * Everything the migration would do, computed without writing.
70
+ *
71
+ * The single source of pending-ness required by `../types.ts`, so a dry run and a
72
+ * real run cannot disagree. Instances and filenames are both walked in sorted
73
+ * order, so the plan never depends on directory read order.
74
+ */
75
+ export declare function planFindingsRenames(ctx: DoctorContext): FindingsPlan;
76
+ export declare const findingsFilenameMigration: Migration;
77
+ //# sourceMappingURL=findings-filename.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings-filename.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/findings-filename.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAMH,OAAO,KAAK,EAAe,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQzE,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,CA+CpE;AAqDD,eAAO,MAAM,yBAAyB,EAAE,SAwDvC,CAAC"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * findings-filename migration (safe tier): rename a review findings file from the
3
+ * legacy spelling to the canonical one, so one artifact has one findings file.
4
+ *
5
+ * The defect this tidies was silent and expensive. `aidlc review <instance>
6
+ * requirements` built its filename from the argument as typed, giving
7
+ * `requirements.review.md`, while the review gate looks artifacts up by the name
8
+ * the template declares — `requirements.md`. A full adversarial review was
9
+ * written, parsed, counted and summarised, and the transition failed saying the
10
+ * findings file was absent.
11
+ *
12
+ * This repository alone holds **11 such files across 6 completed instances**, every
13
+ * one a `full-feature` instance and every one on `requirements` or `design` — the
14
+ * only two phases any template gates. Eleven reviews that never counted toward the
15
+ * gate they were run for.
16
+ *
17
+ * ## Why this migration is cosmetic, and still worth having
18
+ *
19
+ * `artifactFromFindingsFile` resolves both spellings to one key, so the legacy
20
+ * files already count once the reader ships. This migration does not restore
21
+ * function; it removes the second spelling, so nobody has to know there were ever
22
+ * two. Leaving them means every future reader of an instance directory sees two
23
+ * conventions and has to work out which one the gate honours.
24
+ *
25
+ * ## Safe tier
26
+ *
27
+ * It renames framework-managed state under `.aidlc/state/` and never opens the
28
+ * file — the review's content is untouched, only its name. The alternative,
29
+ * `confirm`, would leave the files misnamed until somebody ran `doctor --yes`, and
30
+ * the whole problem was that nobody knew there was anything to run.
31
+ *
32
+ * ## Collisions are reported, never resolved
33
+ *
34
+ * When both spellings exist for one artifact, renaming would clobber a findings
35
+ * file — a real review, destroyed to tidy a name. Those are reported
36
+ * `applicable: false` with the detail, following `roadmap-item-titles` exactly:
37
+ * pending confirm work makes `aidlc doctor` exit 1 forever on a repo holding one
38
+ * such pair, which trains people to ignore doctor output. `not-applicable` still
39
+ * prints the detail, which is the entire point.
40
+ *
41
+ * Requirements: AC-9
42
+ */
43
+ import { execFileSync } from 'node:child_process';
44
+ import { existsSync, readdirSync, renameSync, statSync } from 'node:fs';
45
+ import { join, relative } from 'node:path';
46
+ import { trackedFiles } from '../git.js';
47
+ import { FINDINGS_SUFFIX, artifactFromFindingsFile, isCanonicalFindingsFile, } from '../../review/findings-naming.js';
48
+ /**
49
+ * Everything the migration would do, computed without writing.
50
+ *
51
+ * The single source of pending-ness required by `../types.ts`, so a dry run and a
52
+ * real run cannot disagree. Instances and filenames are both walked in sorted
53
+ * order, so the plan never depends on directory read order.
54
+ */
55
+ export function planFindingsRenames(ctx) {
56
+ const renames = [];
57
+ const collisions = [];
58
+ const stateDir = join(ctx.projectRoot, '.aidlc', 'state');
59
+ if (!existsSync(stateDir))
60
+ return { renames, collisions };
61
+ const tracked = new Set(trackedFiles(ctx.projectRoot, ['.aidlc/state']));
62
+ for (const instance of sortedDirs(stateDir)) {
63
+ const instanceDir = join(stateDir, instance);
64
+ const findingsFiles = sortedEntries(instanceDir).filter((f) => f.endsWith(FINDINGS_SUFFIX));
65
+ for (const file of findingsFiles) {
66
+ if (isCanonicalFindingsFile(file))
67
+ continue;
68
+ const artifact = artifactFromFindingsFile(file);
69
+ // A file that is not resolvable to an artifact — `.review.md` with nothing
70
+ // before it — is left alone. There is no canonical name to move it to.
71
+ if (artifact === null)
72
+ continue;
73
+ const canonical = `${artifact}${FINDINGS_SUFFIX}`;
74
+ if (findingsFiles.includes(canonical)) {
75
+ collisions.push({ instance, legacy: file, canonical, artifact });
76
+ continue;
77
+ }
78
+ const from = join(instanceDir, file);
79
+ const to = join(instanceDir, canonical);
80
+ const fromRel = relative(ctx.projectRoot, from);
81
+ renames.push({
82
+ instance,
83
+ from,
84
+ to,
85
+ fromRel,
86
+ toRel: relative(ctx.projectRoot, to),
87
+ tracked: tracked.has(fromRel),
88
+ });
89
+ }
90
+ }
91
+ return { renames, collisions };
92
+ }
93
+ /** Directory entries that are directories, sorted. Missing dir → empty. */
94
+ function sortedDirs(dir) {
95
+ return sortedEntries(dir).filter((name) => {
96
+ try {
97
+ return statSync(join(dir, name)).isDirectory();
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ });
103
+ }
104
+ /** Directory entries, sorted. Missing or unreadable dir → empty. */
105
+ function sortedEntries(dir) {
106
+ try {
107
+ return readdirSync(dir).sort();
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ }
113
+ /** One-line summary shared by `check` and `apply`. */
114
+ function describe(plan, verb) {
115
+ const byInstance = new Map();
116
+ for (const r of plan.renames) {
117
+ byInstance.set(r.instance, (byInstance.get(r.instance) ?? 0) + 1);
118
+ }
119
+ const detail = [...byInstance.entries()]
120
+ .map(([instance, n]) => `${instance} (${n})`)
121
+ .join(', ');
122
+ return (`${verb} ${plan.renames.length} review findings file(s) to the canonical ` +
123
+ `<artifact>.md${FINDINGS_SUFFIX} spelling, so the review gate and the filename ` +
124
+ `agree: ${detail}`);
125
+ }
126
+ /** How a collision reads in the not-applicable reason. */
127
+ function describeCollisions(plan) {
128
+ const detail = plan.collisions
129
+ .map((c) => `${c.instance}: ${c.legacy} and ${c.canonical} both review ${c.artifact}`)
130
+ .join('; ');
131
+ return (`${plan.collisions.length} instance directory/ies hold two findings files for one ` +
132
+ `artifact, so renaming would overwrite a real review. Merge or delete one by hand, ` +
133
+ `keeping the canonical spelling: ${detail}`);
134
+ }
135
+ export const findingsFilenameMigration = {
136
+ id: 'findings-filename',
137
+ tier: 'safe',
138
+ check(ctx) {
139
+ const plan = planFindingsRenames(ctx);
140
+ if (plan.renames.length === 0) {
141
+ if (plan.collisions.length > 0) {
142
+ return { applicable: false, reason: describeCollisions(plan) };
143
+ }
144
+ return { applicable: true, pending: false };
145
+ }
146
+ return {
147
+ applicable: true,
148
+ pending: true,
149
+ description: describe(plan, 'would rename'),
150
+ commands: plan.renames.map((r) => `git mv -- ${r.fromRel} ${r.toRel}`),
151
+ };
152
+ },
153
+ apply(ctx) {
154
+ const plan = planFindingsRenames(ctx);
155
+ for (const move of plan.renames) {
156
+ // Re-check the destination immediately before moving. `planFindingsRenames`
157
+ // already excluded collisions, but a concurrent `aidlc review` between plan
158
+ // and apply could have created the canonical file — and clobbering a findings
159
+ // file to tidy a name is the one outcome this migration must never produce.
160
+ if (existsSync(move.to))
161
+ continue;
162
+ if (move.tracked) {
163
+ try {
164
+ execFileSync('git', ['mv', '--', move.fromRel, move.toRel], {
165
+ cwd: ctx.projectRoot,
166
+ stdio: ['ignore', 'ignore', 'pipe'],
167
+ });
168
+ continue;
169
+ }
170
+ catch {
171
+ // Fall through to a plain rename: git refuses in states (unmerged index,
172
+ // unborn HEAD) where the move itself is still correct.
173
+ }
174
+ }
175
+ renameSync(move.from, move.to);
176
+ }
177
+ const parts = [];
178
+ if (plan.renames.length > 0)
179
+ parts.push(describe(plan, 'renamed'));
180
+ if (plan.collisions.length > 0) {
181
+ parts.push(`left ${plan.collisions.length} collision(s) for a human`);
182
+ }
183
+ return {
184
+ changed: plan.renames.length > 0,
185
+ summary: parts.length > 0 ? parts.join('; ') : 'no findings files to rename',
186
+ };
187
+ },
188
+ };
189
+ //# sourceMappingURL=findings-filename.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings-filename.js","sourceRoot":"","sources":["../../../src/doctor/migrations/findings-filename.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA8B7C,eAAO,MAAM,UAAU,EAAE,SAAS,EAmEjC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+B7C,eAAO,MAAM,UAAU,EAAE,SAAS,EA0EjC,CAAC"}
@@ -24,6 +24,7 @@ import { staleIdeaSkill } from './stale-idea-skill.js';
24
24
  import { roadmapLayout } from './roadmap-layout.js';
25
25
  import { roadmapItemTitles } from './roadmap-item-titles.js';
26
26
  import { instanceCompletion } from './instance-completion.js';
27
+ import { findingsFilenameMigration } from './findings-filename.js';
27
28
  import { roadmapSyncGhMissing } from './roadmap-sync-gh-missing.js';
28
29
  import { knowledgeStaleSources } from './knowledge-stale-sources.js';
29
30
  import { complianceLayerUnowned, complianceNoticeMissing, compliancePackMissingLayer, compliancePackProvenance, compliancePackUnregistered, } from './compliance-pack-drift.js';
@@ -48,6 +49,13 @@ export const MIGRATIONS = [
48
49
  // and can itself place an item in `in-progress/` for an instance that has
49
50
  // since completed, which is exactly what this one then moves to `done/`.
50
51
  instanceCompletion,
52
+ // Safe tier, grouped with the other state repairs. Position is for a reader's
53
+ // benefit, not for correctness: it touches only `<artifact>.review.md` filenames
54
+ // inside `.aidlc/state/<instance>/`, which nothing else in this registry reads or
55
+ // writes. Saying so explicitly because the adjacent roadmap migrations DO have
56
+ // load-bearing order, and a reader is entitled to assume the grouping means the
57
+ // same thing twice.
58
+ findingsFilenameMigration,
51
59
  // Report tier, ordered after the three migrations that create or rewrite the roadmap
52
60
  // layout: this one only reads `.aidlc/config.yaml`, so it cannot be disturbed by them,
53
61
  // but keeping the roadmap migrations adjacent is how a reader finds them all.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,UAAU,GAAgB;IACrC,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,eAAe;IACf,4EAA4E;IAC5E,2EAA2E;IAC3E,8EAA8E;IAC9E,cAAc;IACd,aAAa;IACb,0EAA0E;IAC1E,qEAAqE;IACrE,+EAA+E;IAC/E,0EAA0E;IAC1E,mDAAmD;IACnD,iBAAiB;IACjB,8EAA8E;IAC9E,0EAA0E;IAC1E,yEAAyE;IACzE,kBAAkB;IAClB,qFAAqF;IACrF,uFAAuF;IACvF,8EAA8E;IAC9E,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,wBAAwB;IACxB,aAAa;IACb,kBAAkB;IAClB,6EAA6E;IAC7E,6EAA6E;IAC7E,4EAA4E;IAC5E,eAAe;IACf,eAAe;IACf,gFAAgF;IAChF,iEAAiE;IACjE,iBAAiB;IACjB,yEAAyE;IACzE,0EAA0E;IAC1E,eAAe;IACf,sFAAsF;IACtF,sFAAsF;IACtF,qFAAqF;IACrF,uDAAuD;IACvD,EAAE;IACF,iFAAiF;IACjF,qFAAqF;IACrF,wFAAwF;IACxF,gDAAgD;IAChD,wFAAwF;IACxF,mFAAmF;IACnF,iFAAiF;IACjF,wBAAwB;IACxB,0BAA0B;IAC1B,0BAA0B;IAC1B,sBAAsB;IACtB,iFAAiF;IACjF,qDAAqD;IACrD,uBAAuB;IACvB,sFAAsF;IACtF,oFAAoF;IACpF,uFAAuF;IACvF,uFAAuF;IACvF,oEAAoE;IACpE,qBAAqB;CACtB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doctor/migrations/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * The one place that decides how an artifact name and a findings filename map to
3
+ * each other.
4
+ *
5
+ * Before this module there were two independent derivations of the same key, and
6
+ * they disagreed. `aidlc review <instance> <artifact>` wrote
7
+ * `` `${artifactArg}.review.md` `` from the argument as typed, while
8
+ * `loadFindings` keyed its index on `file.replace('.review.md', '')` and
9
+ * `checkReviewGate` looked up the template's artifact name — `requirements.md`.
10
+ * Type `requirements`, which is the phase name and what the skill's prose calls
11
+ * the artifact, and the review was written, parsed, counted and summarised
12
+ * correctly while the gate reported "no findings file".
13
+ *
14
+ * The cost was not hypothetical: **11 findings files across 6 completed
15
+ * instances** sat under the legacy spelling, every one of them a `full-feature`
16
+ * instance and every one on `requirements` or `design` — the only two phases any
17
+ * template gates. Eleven adversarial reviews, none of which counted toward the
18
+ * gate they were run for.
19
+ *
20
+ * ## Why both directions live here
21
+ *
22
+ * Fixing only the writer would leave those 11 files dead. Fixing only the reader
23
+ * would leave two spellings valid forever, which is what the roadmap item warned
24
+ * against. So this module owns the mapping and both callers derive from it — a
25
+ * second derivation anywhere else is the regression, which is why
26
+ * `test/findings-naming.test.ts` asserts the inverse property rather than a list
27
+ * of literals.
28
+ *
29
+ * The convenient part is that the inverse is nearly free:
30
+ *
31
+ * ```
32
+ * artifactFromFindingsFile('requirements.review.md') === 'requirements.md'
33
+ * artifactFromFindingsFile('requirements.md.review.md') === 'requirements.md'
34
+ * ```
35
+ *
36
+ * Strip the suffix, then canonicalize. Both spellings on disk converge on one
37
+ * key, so the legacy files start counting with no compatibility branch at any
38
+ * call site — nothing downstream has to know which spelling it is looking at.
39
+ *
40
+ * ## Why `<artifact>.md.review.md` is canonical
41
+ *
42
+ * The doubled `.md` is ugly, and it is the spelling that already works:
43
+ * `checkReviewGate` looks up the template's artifact name, so the gate needs no
44
+ * change to find these files. It is also the majority on disk — 31 files against
45
+ * 11 — and every instance from `agent-portability` (2026-08-21) onward writes it.
46
+ * Choosing the prettier spelling would move 31 files to stop 11 from moving.
47
+ *
48
+ * Requirements: AC-1, AC-2, AC-3, AC-4, AC-5, AC-10
49
+ *
50
+ * @module
51
+ */
52
+ /**
53
+ * The suffix that marks a file as review findings.
54
+ *
55
+ * Exported because the doctor migration and `loadFindings` both filter on it, and
56
+ * a literal `'.review.md'` in either would be a second declaration of the fact
57
+ * this module exists to hold once.
58
+ */
59
+ export declare const FINDINGS_SUFFIX = ".review.md";
60
+ /**
61
+ * Resolve an artifact argument to the filename a template declares for it.
62
+ *
63
+ * `requirements` and `requirements.md` both yield `requirements.md`. That is the
64
+ * whole fix for the writer side: the argument a human or agent naturally types is
65
+ * the phase name, and the extension is load-bearing in a way nothing told them.
66
+ *
67
+ * A string already ending in {@link FINDINGS_SUFFIX} is returned unchanged rather
68
+ * than having `.md` appended. Deciding whether such an argument is legal is
69
+ * policy, and policy belongs in the caller's allowlist — this function's job is
70
+ * the mapping, and quietly producing `x.review.md.md` would be worse than either
71
+ * accepting or refusing it.
72
+ *
73
+ * @param arg - Artifact argument, with or without its extension.
74
+ * @returns The artifact filename, e.g. `requirements.md`.
75
+ */
76
+ export declare function canonicalArtifactName(arg: string): string;
77
+ /**
78
+ * The canonical findings filename for an artifact argument.
79
+ *
80
+ * @param arg - Artifact argument, with or without its extension.
81
+ * @returns e.g. `requirements.md.review.md`.
82
+ */
83
+ export declare function findingsFilename(arg: string): string;
84
+ /**
85
+ * The artifact a findings file reviews, under one spelling regardless of how the
86
+ * file itself is spelled.
87
+ *
88
+ * Both the canonical `requirements.md.review.md` and the legacy
89
+ * `requirements.review.md` resolve to `requirements.md`. This is the reader-side
90
+ * half of the fix and the reason the 11 orphaned files need no migration in order
91
+ * to start counting — the migration only tidies the names.
92
+ *
93
+ * @param file - A filename, not a path.
94
+ * @returns The artifact filename, or `null` when `file` is not a findings file or
95
+ * carries no name before the suffix.
96
+ */
97
+ export declare function artifactFromFindingsFile(file: string): string | null;
98
+ /**
99
+ * Whether a findings filename is already the canonical spelling for the artifact
100
+ * it reviews.
101
+ *
102
+ * The predicate the doctor migration selects on: false means the file is legacy
103
+ * and can be renamed without touching its contents. A non-findings filename is
104
+ * not canonical *and* not legacy, so callers must filter on
105
+ * {@link FINDINGS_SUFFIX} first — this returns false for those, which is the safe
106
+ * direction for a rename planner but would be the wrong answer to "should I
107
+ * ignore this file?".
108
+ *
109
+ * @param file - A filename, not a path.
110
+ */
111
+ export declare function isCanonicalFindingsFile(file: string): boolean;
112
+ //# sourceMappingURL=findings-naming.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings-naming.d.ts","sourceRoot":"","sources":["../../src/review/findings-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,eAAe,CAAC;AAK5C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOpE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI7D"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * The one place that decides how an artifact name and a findings filename map to
3
+ * each other.
4
+ *
5
+ * Before this module there were two independent derivations of the same key, and
6
+ * they disagreed. `aidlc review <instance> <artifact>` wrote
7
+ * `` `${artifactArg}.review.md` `` from the argument as typed, while
8
+ * `loadFindings` keyed its index on `file.replace('.review.md', '')` and
9
+ * `checkReviewGate` looked up the template's artifact name — `requirements.md`.
10
+ * Type `requirements`, which is the phase name and what the skill's prose calls
11
+ * the artifact, and the review was written, parsed, counted and summarised
12
+ * correctly while the gate reported "no findings file".
13
+ *
14
+ * The cost was not hypothetical: **11 findings files across 6 completed
15
+ * instances** sat under the legacy spelling, every one of them a `full-feature`
16
+ * instance and every one on `requirements` or `design` — the only two phases any
17
+ * template gates. Eleven adversarial reviews, none of which counted toward the
18
+ * gate they were run for.
19
+ *
20
+ * ## Why both directions live here
21
+ *
22
+ * Fixing only the writer would leave those 11 files dead. Fixing only the reader
23
+ * would leave two spellings valid forever, which is what the roadmap item warned
24
+ * against. So this module owns the mapping and both callers derive from it — a
25
+ * second derivation anywhere else is the regression, which is why
26
+ * `test/findings-naming.test.ts` asserts the inverse property rather than a list
27
+ * of literals.
28
+ *
29
+ * The convenient part is that the inverse is nearly free:
30
+ *
31
+ * ```
32
+ * artifactFromFindingsFile('requirements.review.md') === 'requirements.md'
33
+ * artifactFromFindingsFile('requirements.md.review.md') === 'requirements.md'
34
+ * ```
35
+ *
36
+ * Strip the suffix, then canonicalize. Both spellings on disk converge on one
37
+ * key, so the legacy files start counting with no compatibility branch at any
38
+ * call site — nothing downstream has to know which spelling it is looking at.
39
+ *
40
+ * ## Why `<artifact>.md.review.md` is canonical
41
+ *
42
+ * The doubled `.md` is ugly, and it is the spelling that already works:
43
+ * `checkReviewGate` looks up the template's artifact name, so the gate needs no
44
+ * change to find these files. It is also the majority on disk — 31 files against
45
+ * 11 — and every instance from `agent-portability` (2026-08-21) onward writes it.
46
+ * Choosing the prettier spelling would move 31 files to stop 11 from moving.
47
+ *
48
+ * Requirements: AC-1, AC-2, AC-3, AC-4, AC-5, AC-10
49
+ *
50
+ * @module
51
+ */
52
+ /**
53
+ * The suffix that marks a file as review findings.
54
+ *
55
+ * Exported because the doctor migration and `loadFindings` both filter on it, and
56
+ * a literal `'.review.md'` in either would be a second declaration of the fact
57
+ * this module exists to hold once.
58
+ */
59
+ export const FINDINGS_SUFFIX = '.review.md';
60
+ /** The extension every artifact a template declares carries. */
61
+ const ARTIFACT_EXT = '.md';
62
+ /**
63
+ * Resolve an artifact argument to the filename a template declares for it.
64
+ *
65
+ * `requirements` and `requirements.md` both yield `requirements.md`. That is the
66
+ * whole fix for the writer side: the argument a human or agent naturally types is
67
+ * the phase name, and the extension is load-bearing in a way nothing told them.
68
+ *
69
+ * A string already ending in {@link FINDINGS_SUFFIX} is returned unchanged rather
70
+ * than having `.md` appended. Deciding whether such an argument is legal is
71
+ * policy, and policy belongs in the caller's allowlist — this function's job is
72
+ * the mapping, and quietly producing `x.review.md.md` would be worse than either
73
+ * accepting or refusing it.
74
+ *
75
+ * @param arg - Artifact argument, with or without its extension.
76
+ * @returns The artifact filename, e.g. `requirements.md`.
77
+ */
78
+ export function canonicalArtifactName(arg) {
79
+ if (arg.endsWith(FINDINGS_SUFFIX))
80
+ return arg;
81
+ return arg.endsWith(ARTIFACT_EXT) ? arg : `${arg}${ARTIFACT_EXT}`;
82
+ }
83
+ /**
84
+ * The canonical findings filename for an artifact argument.
85
+ *
86
+ * @param arg - Artifact argument, with or without its extension.
87
+ * @returns e.g. `requirements.md.review.md`.
88
+ */
89
+ export function findingsFilename(arg) {
90
+ return `${canonicalArtifactName(arg)}${FINDINGS_SUFFIX}`;
91
+ }
92
+ /**
93
+ * The artifact a findings file reviews, under one spelling regardless of how the
94
+ * file itself is spelled.
95
+ *
96
+ * Both the canonical `requirements.md.review.md` and the legacy
97
+ * `requirements.review.md` resolve to `requirements.md`. This is the reader-side
98
+ * half of the fix and the reason the 11 orphaned files need no migration in order
99
+ * to start counting — the migration only tidies the names.
100
+ *
101
+ * @param file - A filename, not a path.
102
+ * @returns The artifact filename, or `null` when `file` is not a findings file or
103
+ * carries no name before the suffix.
104
+ */
105
+ export function artifactFromFindingsFile(file) {
106
+ if (!file.endsWith(FINDINGS_SUFFIX))
107
+ return null;
108
+ const stem = file.slice(0, -FINDINGS_SUFFIX.length);
109
+ if (stem.length === 0)
110
+ return null;
111
+ return canonicalArtifactName(stem);
112
+ }
113
+ /**
114
+ * Whether a findings filename is already the canonical spelling for the artifact
115
+ * it reviews.
116
+ *
117
+ * The predicate the doctor migration selects on: false means the file is legacy
118
+ * and can be renamed without touching its contents. A non-findings filename is
119
+ * not canonical *and* not legacy, so callers must filter on
120
+ * {@link FINDINGS_SUFFIX} first — this returns false for those, which is the safe
121
+ * direction for a rename planner but would be the wrong answer to "should I
122
+ * ignore this file?".
123
+ *
124
+ * @param file - A filename, not a path.
125
+ */
126
+ export function isCanonicalFindingsFile(file) {
127
+ const artifact = artifactFromFindingsFile(file);
128
+ if (artifact === null)
129
+ return false;
130
+ return file === `${artifact}${FINDINGS_SUFFIX}`;
131
+ }
132
+ //# sourceMappingURL=findings-naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findings-naming.js","sourceRoot":"","sources":["../../src/review/findings-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAE5C,gEAAgE;AAChE,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,EAAE,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAY;IACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,IAAI,KAAK,GAAG,QAAQ,GAAG,eAAe,EAAE,CAAC;AAClD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasensio/aidlc",
3
- "version": "1.26.1",
3
+ "version": "1.26.2",
4
4
  "description": "AI Development Lifecycle Framework — structured lifecycle guidance for AI coding agents across platforms",
5
5
  "type": "module",
6
6
  "main": "dist/cli.js",
@@ -24,7 +24,7 @@
24
24
  "commander": "15.0.0",
25
25
  "picomatch": "4.0.5",
26
26
  "yaml": "2.9.0",
27
- "@rasensio/aidlc-content": "1.26.1"
27
+ "@rasensio/aidlc-content": "1.26.2"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "22.15.32",