@seanmars/tospec 0.17.0 → 0.19.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +33 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/show.js +1 -1
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/validate.d.ts +9 -0
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +29 -5
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/workflow/index.d.ts +1 -1
- package/dist/commands/workflow/index.d.ts.map +1 -1
- package/dist/commands/workflow/index.js +1 -1
- package/dist/commands/workflow/index.js.map +1 -1
- package/dist/commands/workflow/status.d.ts +7 -0
- package/dist/commands/workflow/status.d.ts.map +1 -1
- package/dist/commands/workflow/status.js +71 -9
- package/dist/commands/workflow/status.js.map +1 -1
- package/dist/core/change-presenter.d.ts +26 -0
- package/dist/core/change-presenter.d.ts.map +1 -1
- package/dist/core/change-presenter.js +195 -0
- package/dist/core/change-presenter.js.map +1 -1
- package/dist/core/init.d.ts +8 -0
- package/dist/core/init.d.ts.map +1 -1
- package/dist/core/init.js +18 -19
- package/dist/core/init.js.map +1 -1
- package/dist/core/parsers/requirement-blocks.d.ts +6 -0
- package/dist/core/parsers/requirement-blocks.d.ts.map +1 -1
- package/dist/core/parsers/requirement-blocks.js +2 -0
- package/dist/core/parsers/requirement-blocks.js.map +1 -1
- package/dist/core/project-layout.d.ts +29 -0
- package/dist/core/project-layout.d.ts.map +1 -0
- package/dist/core/project-layout.js +62 -0
- package/dist/core/project-layout.js.map +1 -0
- package/dist/core/specs-apply.d.ts +2 -1
- package/dist/core/specs-apply.d.ts.map +1 -1
- package/dist/core/specs-apply.js +72 -34
- package/dist/core/specs-apply.js.map +1 -1
- package/dist/core/templates/workflows/propose.d.ts.map +1 -1
- package/dist/core/templates/workflows/propose.js +6 -0
- package/dist/core/templates/workflows/propose.js.map +1 -1
- package/dist/core/validation/constants.d.ts +3 -0
- package/dist/core/validation/constants.d.ts.map +1 -1
- package/dist/core/validation/constants.js +12 -0
- package/dist/core/validation/constants.js.map +1 -1
- package/dist/core/validation/purpose-placeholder.d.ts +37 -0
- package/dist/core/validation/purpose-placeholder.d.ts.map +1 -0
- package/dist/core/validation/purpose-placeholder.js +126 -0
- package/dist/core/validation/purpose-placeholder.js.map +1 -0
- package/dist/core/validation/validator.d.ts +20 -6
- package/dist/core/validation/validator.d.ts.map +1 -1
- package/dist/core/validation/validator.js +118 -10
- package/dist/core/validation/validator.js.map +1 -1
- package/dist/utils/file-system.d.ts +25 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +30 -0
- package/dist/utils/file-system.js.map +1 -1
- package/dist/utils/requirement-diff.d.ts +50 -0
- package/dist/utils/requirement-diff.d.ts.map +1 -0
- package/dist/utils/requirement-diff.js +69 -0
- package/dist/utils/requirement-diff.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects a `## Purpose` that is still a placeholder rather than one somebody
|
|
3
|
+
* wrote.
|
|
4
|
+
*
|
|
5
|
+
* When a delta introduces a capability with no usable `## Purpose`, archive
|
|
6
|
+
* stamps the placeholder into the new main spec. That text is longer than
|
|
7
|
+
* MIN_PURPOSE_LENGTH, so the brevity check cannot reach it: the one rule that
|
|
8
|
+
* exists to catch a Purpose nobody wrote is satisfied by the exact string
|
|
9
|
+
* meaning nobody wrote one. Nothing else read it afterwards, so the capability
|
|
10
|
+
* kept a to-do in it while every command reported success.
|
|
11
|
+
*
|
|
12
|
+
* Two things count, and deliberately nothing else:
|
|
13
|
+
*
|
|
14
|
+
* - the placeholder this tool generates, recognised through the same constants
|
|
15
|
+
* the writer composes it from, wherever it sits in the Purpose — nobody types
|
|
16
|
+
* that sentence by accident;
|
|
17
|
+
* - a `TBD` or `TODO` *opening* the Purpose, which is the marker left behind
|
|
18
|
+
* when someone is told to leave a brief placeholder and never comes back.
|
|
19
|
+
*
|
|
20
|
+
* A marker inside a sentence is left alone: "the retry budget is TBD pending
|
|
21
|
+
* benchmarks" is a real Purpose with an open question in it, and reporting it
|
|
22
|
+
* would teach people to ignore the warning.
|
|
23
|
+
*/
|
|
24
|
+
import { buildCodeFenceMask } from '../parsers/requirement-text.js';
|
|
25
|
+
import { PURPOSE_PLACEHOLDER_PREFIX, PURPOSE_PLACEHOLDER_SUFFIX } from './constants.js';
|
|
26
|
+
/**
|
|
27
|
+
* A `TBD`/`TODO` opening the Purpose. The lookahead keeps it off a longer word
|
|
28
|
+
* that merely starts with those letters ("TODOs are tracked in the issue") while
|
|
29
|
+
* still allowing the punctuation a marker is written with: `TODO:`, `TBD -`. It
|
|
30
|
+
* rejects any letter, digit or combining mark rather than only the ASCII ones
|
|
31
|
+
* `\b` knows about — a Purpose is prose and prose is not always Latin script.
|
|
32
|
+
*/
|
|
33
|
+
const LEADING_MARKER = /^(?:TBD|TODO)(?![\p{L}\p{N}\p{M}_])/iu;
|
|
34
|
+
const PURPOSE_HEADER = /^ {0,3}##(?!#)[ \t]+Purpose[ \t]*$/i;
|
|
35
|
+
const TOP_LEVEL_HEADER = /^ {0,3}#{1,2}(?!#)[ \t]+/;
|
|
36
|
+
/**
|
|
37
|
+
* The lines of `text` outside a fenced code block, line endings normalised.
|
|
38
|
+
*
|
|
39
|
+
* Fenced content is quoted material, not the Purpose speaking. Without this a
|
|
40
|
+
* spec documenting the sentence archive writes is reported as carrying it — the
|
|
41
|
+
* check failing the one document that explains it. `buildCodeFenceMask` is the
|
|
42
|
+
* masker the requirement and structure parsers already share, so all three read
|
|
43
|
+
* fences the same way.
|
|
44
|
+
*/
|
|
45
|
+
function unfencedLines(text) {
|
|
46
|
+
const lines = text.replace(/\r\n?/g, '\n').split('\n');
|
|
47
|
+
const fenced = buildCodeFenceMask(lines);
|
|
48
|
+
return lines.filter((_, index) => !fenced[index]);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Offset of the generated placeholder in `text`, or undefined. Matched as its
|
|
52
|
+
* two fixed halves in order because the change name between them varies — the
|
|
53
|
+
* check follows the writer's own definition instead of a second copy of it.
|
|
54
|
+
*/
|
|
55
|
+
function generatedPlaceholderPrefixIndex(text) {
|
|
56
|
+
let suffixAt = text.indexOf(PURPOSE_PLACEHOLDER_SUFFIX);
|
|
57
|
+
while (suffixAt !== -1) {
|
|
58
|
+
// The closest prefix before this suffix: authored prose can mention the
|
|
59
|
+
// prefix above the real placeholder, and the first prefix would then point
|
|
60
|
+
// the diagnostic at the explanation instead of the text to replace.
|
|
61
|
+
const prefixAt = text.lastIndexOf(PURPOSE_PLACEHOLDER_PREFIX, suffixAt);
|
|
62
|
+
if (prefixAt !== -1)
|
|
63
|
+
return prefixAt;
|
|
64
|
+
suffixAt = text.indexOf(PURPOSE_PLACEHOLDER_SUFFIX, suffixAt + 1);
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Reports the Purpose of a main spec as an unwritten placeholder, or null when
|
|
70
|
+
* it reads as authored content.
|
|
71
|
+
*
|
|
72
|
+
* An empty Purpose needs no branch of its own: neither rule matches empty text,
|
|
73
|
+
* so it falls through to null and SPEC_PURPOSE_EMPTY covers it alone. A Purpose
|
|
74
|
+
* that is nothing but a fenced block reduces to the same empty text here.
|
|
75
|
+
*/
|
|
76
|
+
export function findPurposePlaceholderIssue(overview, content) {
|
|
77
|
+
const prose = unfencedLines(overview).join('\n').trim();
|
|
78
|
+
const leading = LEADING_MARKER.test(prose);
|
|
79
|
+
if (!leading && generatedPlaceholderPrefixIndex(prose) === undefined)
|
|
80
|
+
return null;
|
|
81
|
+
// Which rule matched decides where the placeholder sits, so the locator is
|
|
82
|
+
// told. When both match the leading marker wins — it is the earlier of the two.
|
|
83
|
+
return { line: content === undefined ? undefined : findPlaceholderLine(content, leading) };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The line inside `## Purpose` carrying the placeholder, so the warning points
|
|
87
|
+
* at the text to replace rather than at the file.
|
|
88
|
+
*
|
|
89
|
+
* Which line that is depends on the rule that matched. A leading marker is the
|
|
90
|
+
* section's first non-blank line by definition; the generated sentence is not —
|
|
91
|
+
* it can follow prose somebody wrote, and naming the first non-blank line then
|
|
92
|
+
* points at a line the reader can see is fine, which reads as the check being
|
|
93
|
+
* broken rather than the Purpose being unwritten.
|
|
94
|
+
*
|
|
95
|
+
* Undefined when the placeholder cannot be located, because a wrong line number
|
|
96
|
+
* is worse than none. Line endings are normalised first so the same spec reports
|
|
97
|
+
* the same line on Windows and on macOS/Linux.
|
|
98
|
+
*/
|
|
99
|
+
function findPlaceholderLine(content, leading) {
|
|
100
|
+
const lines = content.replace(/\r\n?/g, '\n').split('\n');
|
|
101
|
+
const fenced = buildCodeFenceMask(lines);
|
|
102
|
+
const headerIndex = lines.findIndex((line, index) => !fenced[index] && PURPOSE_HEADER.test(line));
|
|
103
|
+
if (headerIndex === -1)
|
|
104
|
+
return undefined;
|
|
105
|
+
const purposeLines = [];
|
|
106
|
+
for (let i = headerIndex + 1; i < lines.length; i++) {
|
|
107
|
+
// Fenced lines are skipped for the reason detection skips them, and so a
|
|
108
|
+
// `## Requirements` quoted inside a fence cannot end the section early.
|
|
109
|
+
if (fenced[i])
|
|
110
|
+
continue;
|
|
111
|
+
if (TOP_LEVEL_HEADER.test(lines[i]))
|
|
112
|
+
break;
|
|
113
|
+
if (leading && lines[i].trim())
|
|
114
|
+
return i + 1;
|
|
115
|
+
purposeLines.push({ line: i + 1, text: lines[i] });
|
|
116
|
+
}
|
|
117
|
+
if (leading)
|
|
118
|
+
return undefined;
|
|
119
|
+
const purpose = purposeLines.map(({ text }) => text).join('\n');
|
|
120
|
+
const prefixAt = generatedPlaceholderPrefixIndex(purpose);
|
|
121
|
+
if (prefixAt === undefined)
|
|
122
|
+
return undefined;
|
|
123
|
+
const lineOffset = purpose.slice(0, prefixAt).split('\n').length - 1;
|
|
124
|
+
return purposeLines[lineOffset]?.line;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=purpose-placeholder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purpose-placeholder.js","sourceRoot":"","sources":["../../../src/core/validation/purpose-placeholder.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,12 +43,6 @@ export declare class Validator {
|
|
|
43
43
|
* the author at that exact fix when the keyword is found in the header only.
|
|
44
44
|
*/
|
|
45
45
|
private buildMissingShallOrMustMessage;
|
|
46
|
-
/**
|
|
47
|
-
* Scenario-quality rules for a delta requirement block (report 2.1): only
|
|
48
|
-
* `#### Scenario:` headers count as scenarios, each scenario body must
|
|
49
|
-
* contain WHEN and THEN (uppercase, per the spec convention), and stray
|
|
50
|
-
* level-4 headers get a WARNING so authors know they were not counted.
|
|
51
|
-
*/
|
|
52
46
|
/**
|
|
53
47
|
* Scenarios a MODIFIED block would delete from the current main spec.
|
|
54
48
|
*
|
|
@@ -66,6 +60,26 @@ export declare class Validator {
|
|
|
66
60
|
* sister change still in flight)
|
|
67
61
|
*/
|
|
68
62
|
private collectDroppedScenarioIssues;
|
|
63
|
+
/**
|
|
64
|
+
* Dry-run the merge and report what it would refuse.
|
|
65
|
+
*
|
|
66
|
+
* Reusing the merge builder rather than restating its preconditions is the
|
|
67
|
+
* whole point: several of them deliberately read a missing target as
|
|
68
|
+
* already-synced rather than as a failure, and a second copy of those rules
|
|
69
|
+
* would be free to drift — which shows up as validate and archive disagreeing,
|
|
70
|
+
* the one thing this check exists to prevent.
|
|
71
|
+
*
|
|
72
|
+
* INFO leaves the verdict alone. A MODIFIED whose target is missing is also
|
|
73
|
+
* what a change modifying a sibling's unarchived requirement looks like, and
|
|
74
|
+
* that is valid today; what is missing is the information, not the verdict.
|
|
75
|
+
*/
|
|
76
|
+
private findArchiveBlockers;
|
|
77
|
+
/**
|
|
78
|
+
* Scenario-quality rules for a delta requirement block (report 2.1): only
|
|
79
|
+
* `#### Scenario:` headers count as scenarios, each scenario body must
|
|
80
|
+
* contain WHEN and THEN (uppercase, per the spec convention), and stray
|
|
81
|
+
* level-4 headers get a WARNING so authors know they were not counted.
|
|
82
|
+
*/
|
|
69
83
|
private collectScenarioIssues;
|
|
70
84
|
private formatSectionList;
|
|
71
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/validator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/core/validation/validator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAoC,MAAM,YAAY,CAAC;AAqBhF,qBAAa,SAAS;IACpB,OAAO,CAAC,UAAU,CAAU;gBAEhB,UAAU,GAAE,OAAe;IAIjC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB/D;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkBjF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA+BjE;;;;;;;;;;;;;;;OAeG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgSnG,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IA6FtB,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,mBAAmB;IAI3B;;;;;;;;;OASG;IACH,OAAO,CAAC,8BAA8B;IAQtC;;;;;;;;;;;;;;;OAeG;YACW,4BAA4B;IAqD1C;;;;;;;;;;;;OAYG;YACW,mBAAmB;IA4DjC;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IA2C7B,OAAO,CAAC,iBAAiB;CAO1B"}
|
|
@@ -7,8 +7,10 @@ import { MIN_PURPOSE_LENGTH, MAX_REQUIREMENT_TEXT_LENGTH, VALIDATION_MESSAGES }
|
|
|
7
7
|
import { parseDeltaSpec, normalizeRequirementName, extractRequirementsSection } from '../parsers/requirement-blocks.js';
|
|
8
8
|
import { extractRequirementBody as extractRequirementBodyShared, containsShallOrMust as containsShallOrMustShared, analyzeScenarios, scanCodeFences, findMissingScenarios, } from '../parsers/requirement-text.js';
|
|
9
9
|
import { findMainSpecStructureIssues } from '../parsers/spec-structure.js';
|
|
10
|
-
import {
|
|
10
|
+
import { findPurposePlaceholderIssue } from './purpose-placeholder.js';
|
|
11
|
+
import { FileSystemUtils, extractNameFromPath, isMissingPathError } from '../../utils/file-system.js';
|
|
11
12
|
import { findSpecFiles } from '../../utils/spec-files.js';
|
|
13
|
+
import { findSpecUpdates, buildUpdatedSpec } from '../specs-apply.js';
|
|
12
14
|
export class Validator {
|
|
13
15
|
strictMode;
|
|
14
16
|
constructor(strictMode = false) {
|
|
@@ -341,6 +343,18 @@ export class Validator {
|
|
|
341
343
|
message: 'No delta sections found. Add headers such as "## ADDED Requirements" or move non-delta notes outside specs/.',
|
|
342
344
|
});
|
|
343
345
|
}
|
|
346
|
+
// Runs here, after every structural error has been pushed, so the exclusion
|
|
347
|
+
// set below is just "what has already been reported". Calling it inside the
|
|
348
|
+
// loop above meant hand-splicing the two lists that are only raised down
|
|
349
|
+
// here — a set that any later check would silently fall out of.
|
|
350
|
+
//
|
|
351
|
+
// The checks above compare a delta against itself and, for MODIFIED, against
|
|
352
|
+
// the main spec's scenarios. None asks whether the main spec can supply the
|
|
353
|
+
// target the delta acts on — the merge's own preconditions, which nothing
|
|
354
|
+
// consulted until archive.
|
|
355
|
+
if (mainSpecsDir !== undefined) {
|
|
356
|
+
issues.push(...(await this.findArchiveBlockers(changeDir, mainSpecsDir, issues.filter((issue) => issue.level === 'ERROR').map((issue) => issue.path))));
|
|
357
|
+
}
|
|
344
358
|
// A misplaced-spec error already names the file and the fix; adding "No
|
|
345
359
|
// deltas found" on top would contradict it, since the deltas are sitting in
|
|
346
360
|
// the file just reported.
|
|
@@ -381,7 +395,20 @@ export class Validator {
|
|
|
381
395
|
message: structuralIssue.message,
|
|
382
396
|
});
|
|
383
397
|
}
|
|
384
|
-
|
|
398
|
+
// The generated placeholder is longer than MIN_PURPOSE_LENGTH, so the
|
|
399
|
+
// brevity check below cannot reach it; it is reported on its own terms
|
|
400
|
+
// instead. Checked first because a hand-written "TBD" is both a placeholder
|
|
401
|
+
// and too brief, and only one of those two tells the author what to do.
|
|
402
|
+
const placeholder = findPurposePlaceholderIssue(spec.overview, content);
|
|
403
|
+
if (placeholder) {
|
|
404
|
+
issues.push({
|
|
405
|
+
level: 'WARNING',
|
|
406
|
+
path: 'overview',
|
|
407
|
+
line: placeholder.line,
|
|
408
|
+
message: VALIDATION_MESSAGES.PURPOSE_IS_PLACEHOLDER,
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
else if (spec.overview.length < MIN_PURPOSE_LENGTH) {
|
|
385
412
|
issues.push({
|
|
386
413
|
level: 'WARNING',
|
|
387
414
|
path: 'overview',
|
|
@@ -516,12 +543,6 @@ export class Validator {
|
|
|
516
543
|
}
|
|
517
544
|
return base;
|
|
518
545
|
}
|
|
519
|
-
/**
|
|
520
|
-
* Scenario-quality rules for a delta requirement block (report 2.1): only
|
|
521
|
-
* `#### Scenario:` headers count as scenarios, each scenario body must
|
|
522
|
-
* contain WHEN and THEN (uppercase, per the spec convention), and stray
|
|
523
|
-
* level-4 headers get a WARNING so authors know they were not counted.
|
|
524
|
-
*/
|
|
525
546
|
/**
|
|
526
547
|
* Scenarios a MODIFIED block would delete from the current main spec.
|
|
527
548
|
*
|
|
@@ -543,8 +564,25 @@ export class Validator {
|
|
|
543
564
|
try {
|
|
544
565
|
content = await fs.readFile(path.join(mainSpecsDir, capability, 'spec.md'), 'utf-8');
|
|
545
566
|
}
|
|
546
|
-
catch {
|
|
547
|
-
|
|
567
|
+
catch (error) {
|
|
568
|
+
// Silence belongs to the genuinely-absent case documented above. A spec that
|
|
569
|
+
// exists and could not be read means the check never ran, and returning []
|
|
570
|
+
// reports that as "nothing to lose" — under the same wording, so the reader
|
|
571
|
+
// cannot tell a new capability from a broken one.
|
|
572
|
+
if (isMissingPathError(error))
|
|
573
|
+
return [];
|
|
574
|
+
// Reported rather than thrown: the enclosing handler treats any throw as
|
|
575
|
+
// "no specs dir" and would swallow this into a misleading no-deltas error.
|
|
576
|
+
// Reporting also keeps the other capabilities' findings, which a throw
|
|
577
|
+
// would discard. ERROR because archive reads the same file and now fails
|
|
578
|
+
// on it too, so this is what archive refuses.
|
|
579
|
+
return [
|
|
580
|
+
{
|
|
581
|
+
level: 'ERROR',
|
|
582
|
+
path: entryPath,
|
|
583
|
+
message: `The main spec for "${capability}" exists but could not be read, so the scenario-loss check did not run: ${error instanceof Error ? error.message : String(error)}`,
|
|
584
|
+
},
|
|
585
|
+
];
|
|
548
586
|
}
|
|
549
587
|
const currentByName = new Map();
|
|
550
588
|
for (const block of extractRequirementsSection(content).bodyBlocks) {
|
|
@@ -568,6 +606,76 @@ export class Validator {
|
|
|
568
606
|
}
|
|
569
607
|
return issues;
|
|
570
608
|
}
|
|
609
|
+
/**
|
|
610
|
+
* Dry-run the merge and report what it would refuse.
|
|
611
|
+
*
|
|
612
|
+
* Reusing the merge builder rather than restating its preconditions is the
|
|
613
|
+
* whole point: several of them deliberately read a missing target as
|
|
614
|
+
* already-synced rather than as a failure, and a second copy of those rules
|
|
615
|
+
* would be free to drift — which shows up as validate and archive disagreeing,
|
|
616
|
+
* the one thing this check exists to prevent.
|
|
617
|
+
*
|
|
618
|
+
* INFO leaves the verdict alone. A MODIFIED whose target is missing is also
|
|
619
|
+
* what a change modifying a sibling's unarchived requirement looks like, and
|
|
620
|
+
* that is valid today; what is missing is the information, not the verdict.
|
|
621
|
+
*/
|
|
622
|
+
async findArchiveBlockers(changeDir, mainSpecsDir, alreadyReportedPaths) {
|
|
623
|
+
const alreadyReported = new Set(alreadyReportedPaths);
|
|
624
|
+
// Only ever reaches the generated skeleton's placeholder Purpose, which this
|
|
625
|
+
// dry run discards along with the rest of the rebuilt content.
|
|
626
|
+
const changeName = path.basename(changeDir);
|
|
627
|
+
const issues = [];
|
|
628
|
+
let updates;
|
|
629
|
+
try {
|
|
630
|
+
updates = await findSpecUpdates(changeDir, mainSpecsDir);
|
|
631
|
+
}
|
|
632
|
+
catch (error) {
|
|
633
|
+
// An advisory check that cannot start must not take the report with it.
|
|
634
|
+
// The structural pass walks the same tree with fast-glob and reports what
|
|
635
|
+
// it found; those findings are the ones the author can act on.
|
|
636
|
+
return [
|
|
637
|
+
{
|
|
638
|
+
level: 'INFO',
|
|
639
|
+
path: 'specs',
|
|
640
|
+
message: `Could not check the merge preconditions: ${error instanceof Error ? error.message : String(error)}`,
|
|
641
|
+
},
|
|
642
|
+
];
|
|
643
|
+
}
|
|
644
|
+
for (const update of updates) {
|
|
645
|
+
// findSpecUpdates only ever walks specs/<capability>/spec.md, so this
|
|
646
|
+
// rebuilds the same entryPath the checks above report under.
|
|
647
|
+
const capability = path.basename(path.dirname(update.source));
|
|
648
|
+
const entryPath = FileSystemUtils.toPosixPath(`${capability}/spec.md`);
|
|
649
|
+
// A delta those checks already rejected would be reported twice, the
|
|
650
|
+
// second time in the merge's wording rather than the wording that names
|
|
651
|
+
// the actual mistake.
|
|
652
|
+
if (alreadyReported.has(entryPath))
|
|
653
|
+
continue;
|
|
654
|
+
try {
|
|
655
|
+
await buildUpdatedSpec(update, changeName, { silent: true });
|
|
656
|
+
}
|
|
657
|
+
catch (error) {
|
|
658
|
+
// Only the thrown preconditions, which carry no errno. A filesystem
|
|
659
|
+
// error says nothing about whether the delta applies, and `validate
|
|
660
|
+
// --all` reads several changes at once — a transient EMFILE reported as
|
|
661
|
+
// a collision is a conflict that is not there.
|
|
662
|
+
if (error?.code !== undefined)
|
|
663
|
+
continue;
|
|
664
|
+
issues.push({
|
|
665
|
+
level: 'INFO',
|
|
666
|
+
path: entryPath,
|
|
667
|
+
message: `Archive would refuse this delta: ${error instanceof Error ? error.message : String(error)}`,
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
return issues;
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* Scenario-quality rules for a delta requirement block (report 2.1): only
|
|
675
|
+
* `#### Scenario:` headers count as scenarios, each scenario body must
|
|
676
|
+
* contain WHEN and THEN (uppercase, per the spec convention), and stray
|
|
677
|
+
* level-4 headers get a WARNING so authors know they were not counted.
|
|
678
|
+
*/
|
|
571
679
|
collectScenarioIssues(section, block, entryPath) {
|
|
572
680
|
const issues = [];
|
|
573
681
|
// Analysis runs on the body (raw minus the header at index 0); raw line i
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/core/validation/validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../src/core/validation/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,31 @@ export declare function getLastModified(dirPath: string): Promise<Date>;
|
|
|
15
15
|
* JSON `name` always agree on what a given file is called.
|
|
16
16
|
*/
|
|
17
17
|
export declare function extractNameFromPath(filePath: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Whether a failed read of a *targeted path* means it is not there, as opposed
|
|
20
|
+
* to being there and unusable.
|
|
21
|
+
*
|
|
22
|
+
* `ENOENT` is the file itself; `ENOTDIR` is a parent component that is a file,
|
|
23
|
+
* which makes the path unreachable for the same reason. Everything else —
|
|
24
|
+
* `EACCES`, `EISDIR`, `EIO`, `EPERM` — describes a path that exists and could not
|
|
25
|
+
* be read, and callers that treat those as absence state a conclusion the read
|
|
26
|
+
* never reached.
|
|
27
|
+
*
|
|
28
|
+
* Use this when "there is nothing at this path yet" is a legitimate outcome for
|
|
29
|
+
* a specific file. For enumerating a directory, use `isAbsentDirectoryError` —
|
|
30
|
+
* the two differ on `ENOTDIR` and the difference is load-bearing.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isMissingPathError(error: unknown): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Whether a failed directory enumeration means the directory is not there.
|
|
35
|
+
*
|
|
36
|
+
* Deliberately narrower than `isMissingPathError`: `ENOTDIR` from a `readdir`
|
|
37
|
+
* means something that is not a directory occupies the path, and answering
|
|
38
|
+
* "empty" for that is how a broken layout comes to look like an absent one. For
|
|
39
|
+
* a targeted read the same code means the parent is unreachable, which is
|
|
40
|
+
* genuine absence — hence two predicates rather than one plus an exception.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isAbsentDirectoryError(error: unknown): boolean;
|
|
18
43
|
export declare class FileSystemUtils {
|
|
19
44
|
/**
|
|
20
45
|
* Converts a path to use forward slashes (POSIX style).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrC;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAa3D,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;WAiBnD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAI/C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAY9C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAYlD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAM3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAI3C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAsCvE"}
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBpE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY5D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAG1D;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE9D;AAED,qBAAa,eAAe;IAC1B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrC;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAa3D,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAIhC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAMhC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;WAiBnD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAI/C,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAY9C,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAYlD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;WAM3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAI3C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAsCvE"}
|
|
@@ -47,6 +47,36 @@ export function extractNameFromPath(filePath) {
|
|
|
47
47
|
const dotIndex = fileName.lastIndexOf('.');
|
|
48
48
|
return dotIndex > 0 ? fileName.slice(0, dotIndex) : fileName;
|
|
49
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether a failed read of a *targeted path* means it is not there, as opposed
|
|
52
|
+
* to being there and unusable.
|
|
53
|
+
*
|
|
54
|
+
* `ENOENT` is the file itself; `ENOTDIR` is a parent component that is a file,
|
|
55
|
+
* which makes the path unreachable for the same reason. Everything else —
|
|
56
|
+
* `EACCES`, `EISDIR`, `EIO`, `EPERM` — describes a path that exists and could not
|
|
57
|
+
* be read, and callers that treat those as absence state a conclusion the read
|
|
58
|
+
* never reached.
|
|
59
|
+
*
|
|
60
|
+
* Use this when "there is nothing at this path yet" is a legitimate outcome for
|
|
61
|
+
* a specific file. For enumerating a directory, use `isAbsentDirectoryError` —
|
|
62
|
+
* the two differ on `ENOTDIR` and the difference is load-bearing.
|
|
63
|
+
*/
|
|
64
|
+
export function isMissingPathError(error) {
|
|
65
|
+
const code = error?.code;
|
|
66
|
+
return code === 'ENOENT' || code === 'ENOTDIR';
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether a failed directory enumeration means the directory is not there.
|
|
70
|
+
*
|
|
71
|
+
* Deliberately narrower than `isMissingPathError`: `ENOTDIR` from a `readdir`
|
|
72
|
+
* means something that is not a directory occupies the path, and answering
|
|
73
|
+
* "empty" for that is how a broken layout comes to look like an absent one. For
|
|
74
|
+
* a targeted read the same code means the parent is unreachable, which is
|
|
75
|
+
* genuine absence — hence two predicates rather than one plus an exception.
|
|
76
|
+
*/
|
|
77
|
+
export function isAbsentDirectoryError(error) {
|
|
78
|
+
return error?.code === 'ENOENT';
|
|
79
|
+
}
|
|
50
80
|
export class FileSystemUtils {
|
|
51
81
|
/**
|
|
52
82
|
* Converts a path to use forward slashes (POSIX style).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Requirement-level diffing for `tospec show <change> --diff`.
|
|
3
|
+
*
|
|
4
|
+
* A delta spec says what changes but not what it changes *from*: a MODIFIED
|
|
5
|
+
* block restates the whole requirement, so reading one tells you nothing about
|
|
6
|
+
* which line moved. Pairing each block with its main-spec counterpart is the
|
|
7
|
+
* only way to review a delta without opening two files side by side.
|
|
8
|
+
*/
|
|
9
|
+
/** A main-spec requirement block, and how its header matched the delta's. */
|
|
10
|
+
export interface MatchedRequirementBlock {
|
|
11
|
+
raw: string;
|
|
12
|
+
/** The header name as the main spec spells it. */
|
|
13
|
+
name: string;
|
|
14
|
+
/**
|
|
15
|
+
* False when the two headers differ only in case or interior spacing. Archive
|
|
16
|
+
* matches names exactly, so an inexact match is a real problem to report even
|
|
17
|
+
* though the diff below it is still the one the author meant.
|
|
18
|
+
*/
|
|
19
|
+
exact: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The raw markdown block for a requirement in a main spec, or null when no
|
|
23
|
+
* header matches either way.
|
|
24
|
+
*
|
|
25
|
+
* Delegates to extractRequirementsSection(), which already handles code fences,
|
|
26
|
+
* section boundaries and header parsing. Lookup is exact first, then the shared
|
|
27
|
+
* case/whitespace fold, so a header that differs only in spelling still shows
|
|
28
|
+
* its diff — flagged inexact rather than silently treated as a match.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractRequirementBlock(specContent: string, requirementName: string): MatchedRequirementBlock | null;
|
|
31
|
+
/**
|
|
32
|
+
* A unified diff between a main-spec requirement block and the delta block that
|
|
33
|
+
* replaces it. A null main block diffs against the empty string, so every line
|
|
34
|
+
* reads as an addition.
|
|
35
|
+
*
|
|
36
|
+
* structuredPatch keeps the unified hunk ranges; the synthetic file headers are
|
|
37
|
+
* omitted because the caller labels the block itself.
|
|
38
|
+
*/
|
|
39
|
+
export declare function diffRequirementBlock(baseBlock: string | null, deltaBlock: string, label: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Maps a RENAMED TO name (folded) back to the original main-spec name.
|
|
42
|
+
*
|
|
43
|
+
* Renames apply in source order, so a chain A -> B -> C maps C back to A — the
|
|
44
|
+
* block a later MODIFIED C actually replaces in the main spec.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildRenameMap(renames: Array<{
|
|
47
|
+
from: string;
|
|
48
|
+
to: string;
|
|
49
|
+
}>): Map<string, string>;
|
|
50
|
+
//# sourceMappingURL=requirement-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirement-diff.d.ts","sourceRoot":"","sources":["../../src/utils/requirement-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,uBAAuB,GAAG,IAAI,CAiBhC;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,MAAM,CAMR;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAShG"}
|