@rsaglobaltech/specgate 0.15.0 → 0.17.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 +65 -0
- package/bin/specgate.ts +6 -1
- package/dist/bin/specgate.js +5 -1
- package/dist/bin/specgate.js.map +1 -1
- package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +10 -1
- package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -1
- package/dist/packages/core/src/domain/AgentPrompt.js +2 -2
- package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -1
- package/dist/packages/core/src/domain/DraftChecklist.js +334 -0
- package/dist/packages/core/src/domain/DraftChecklist.js.map +1 -0
- package/dist/packages/core/src/domain/MultiStack.js +2 -2
- package/dist/packages/core/src/domain/MultiStack.js.map +1 -1
- package/dist/packages/core/src/domain/WriteScope.js +1 -0
- package/dist/packages/core/src/domain/WriteScope.js.map +1 -1
- package/dist/packages/mcp-spec-driven/src/tools.js +14 -2
- package/dist/packages/mcp-spec-driven/src/tools.js.map +1 -1
- package/dist/scripts/agents/commands.js +2 -2
- package/dist/scripts/agents/commands.js.map +1 -1
- package/dist/scripts/agents/contract-file.js +165 -0
- package/dist/scripts/agents/contract-file.js.map +1 -0
- package/dist/scripts/agents/detect.js +97 -0
- package/dist/scripts/agents/detect.js.map +1 -0
- package/dist/scripts/agents/init.js +59 -35
- package/dist/scripts/agents/init.js.map +1 -1
- package/dist/scripts/change/instructions.js +14 -6
- package/dist/scripts/change/instructions.js.map +1 -1
- package/dist/scripts/cli/commands/project/AdoptCommand.js +42 -5
- package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js +39 -6
- package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/UpdateCommand.js +18 -3
- package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/DoctorCommand.js +11 -6
- package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +5 -2
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DraftCommand.js +215 -0
- package/dist/scripts/cli/commands/spec/DraftCommand.js.map +1 -0
- package/dist/scripts/cli/commands/spec/StatusCommand.js +24 -5
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/SyncCommand.js +21 -1
- package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
- package/dist/scripts/draft.js +11 -0
- package/dist/scripts/draft.js.map +1 -0
- package/dist/scripts/gen_mcp_tools.js +8 -2
- package/dist/scripts/gen_mcp_tools.js.map +1 -1
- package/dist/scripts/lib/agent.js +5 -4
- package/dist/scripts/lib/agent.js.map +1 -1
- package/dist/scripts/lib/blocking-stdio.js +34 -0
- package/dist/scripts/lib/blocking-stdio.js.map +1 -0
- package/dist/scripts/lib/command.js +1 -0
- package/dist/scripts/lib/command.js.map +1 -1
- package/dist/scripts/lib/surface.js +11 -1
- package/dist/scripts/lib/surface.js.map +1 -1
- package/package.json +1 -1
- package/templates/adopt/stack-rules.md +3 -0
- package/templates/backend/stack-rules.md +2 -0
- package/templates/base/AGENTS.md.tpl +30 -32
- package/templates/frontend/stack-rules.md +2 -0
- package/templates/mobile/stack-rules.md +7 -0
- package/templates/adopt/AI_RULES.md.tpl +0 -27
- package/templates/backend/AI_RULES.md.tpl +0 -35
- package/templates/frontend/AI_RULES.md.tpl +0 -34
- package/templates/mobile/AI_RULES.md.tpl +0 -56
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,71 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.17.0] — 2026-10-09
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **`specops sync` that changes nothing leaves `.specops.lock` alone.** It
|
|
16
|
+
rewrote each pack's `expanded_at` on every run, so a no-op sync left a diff
|
|
17
|
+
to commit or revert. The timestamp now moves only when the pack's repo,
|
|
18
|
+
version, commit or variables do.
|
|
19
|
+
|
|
20
|
+
## [0.16.0] — 2026-10-09
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **`AGENTS.md` is the agent contract; `AI_RULES.md` folds into it**
|
|
24
|
+
(ADR-0031). `init` and `adopt` write one short `AGENTS.md` — the file
|
|
25
|
+
Codex, Cursor, Copilot and most agents read — with the commands, the loop,
|
|
26
|
+
what never to do and the stack's rules, instead of an `AI_RULES.md`, an
|
|
27
|
+
"Agent Manifest" and `agents init`'s instructions that overlapped. Specgate
|
|
28
|
+
keeps its part in a marked block; a team's own `AGENTS.md` text is never
|
|
29
|
+
rewritten. `specgate update` moves an existing `AI_RULES.md` below the block,
|
|
30
|
+
verbatim. Until then both are read, so no rule drops out of the agent's
|
|
31
|
+
prompt; `validate` and `doctor` accept either.
|
|
32
|
+
|
|
33
|
+
- **`specgate init` installs the `/specgate:*` commands for the agents your
|
|
34
|
+
project already uses** — Claude Code (`.claude/`, `CLAUDE.md`), Cursor,
|
|
35
|
+
Copilot, Gemini, Windsurf, Cline, Aider, Codex, Antigravity — and only for
|
|
36
|
+
those, never overwriting a file. With none found it says how to add one.
|
|
37
|
+
`--no-agents` skips it. The developer talks to the agent they already have
|
|
38
|
+
from the first minute, without `agents init` to discover.
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
|
|
42
|
+
- **`specgate draft --check <change-id>`** (ADR-0029, phase 1): the checklist a
|
|
43
|
+
draft change must pass before anyone reviews it — a scenario and a kind for
|
|
44
|
+
every requirement (D1, D2), a scenario on each surface an actor uses (D3), a
|
|
45
|
+
measure for every non-functional requirement (D4), a source for every cited
|
|
46
|
+
law (D5), every stated value either in the brief or listed in
|
|
47
|
+
`assumptions.md` (D6), every open question blocking something (D7), and a
|
|
48
|
+
size a person can review (D8). A rule that cannot run says so instead of
|
|
49
|
+
passing. Works on any change, drafted by an agent or by hand.
|
|
50
|
+
- **`specgate status` notes D4 and D5 on the project's own specification**: a
|
|
51
|
+
non-functional requirement that promises a quantity ("fast", "scalable")
|
|
52
|
+
without stating it, and a business rule that cites a law with no source.
|
|
53
|
+
Notes, never failures. D4 flags a promised quantity, not every qualitative
|
|
54
|
+
constraint: on the Golden State packs the first version flagged 4
|
|
55
|
+
requirements about offline use, privacy and devices, none of them omissions.
|
|
56
|
+
- **MCP tool `specgate_verify`** (ADR-0030): the agent working from an OpenSpec
|
|
57
|
+
spec gets the same check `specgate verify` runs, inside its own loop.
|
|
58
|
+
- **A weekly check that `verify` still reads OpenSpec.** OpenSpec releases
|
|
59
|
+
weekly; `e2e/openspec-compat.mjs` installs the latest, lets it write and
|
|
60
|
+
archive a change, checks `verify` fails then passes on it, and reads
|
|
61
|
+
OpenSpec's own repository with nothing unreadable. Runs every Monday and on
|
|
62
|
+
demand with a version (`openspec-compat.yml`).
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- **No command's output is cut short when piped.** On macOS, Node writes to a
|
|
67
|
+
pipe asynchronously and `process.exit()` does not wait: a JSON document over
|
|
68
|
+
64 KB reached the program reading it truncated at exactly 65,536 bytes. 0.14.4
|
|
69
|
+
fixed `plan`; twenty-eight more commands exited the same way. Every command
|
|
70
|
+
now runs with blocking stdio, so the write completes before the exit.
|
|
71
|
+
- **MCP tools accept an OpenSpec project.** Every tool refused a directory
|
|
72
|
+
without `spec.md` as "not a spec-driven project", so `specgate_verify` could
|
|
73
|
+
not run on the projects it was built for. A directory with `openspec/` is a
|
|
74
|
+
project too.
|
|
75
|
+
|
|
11
76
|
## [0.15.0] — 2026-10-08
|
|
12
77
|
|
|
13
78
|
### Changed
|
package/bin/specgate.ts
CHANGED
|
@@ -219,8 +219,13 @@ function ensureExecutable(scriptPath: string): void {
|
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
+
// Every command runs with blocking stdio, so `process.exit()` in it cannot
|
|
223
|
+
// truncate output piped to another program (golden_app finding #33).
|
|
224
|
+
const BLOCKING_STDIO = path.join(rootDir, "dist", "scripts", "lib", "blocking-stdio.js");
|
|
225
|
+
|
|
222
226
|
function runNodeScript(scriptPath: string, args: string[]): void {
|
|
223
|
-
const
|
|
227
|
+
const preload = fs.existsSync(BLOCKING_STDIO) ? ["--require", BLOCKING_STDIO] : [];
|
|
228
|
+
const result = spawnSync(process.execPath, [...preload, scriptPath, ...args], {
|
|
224
229
|
stdio: "inherit",
|
|
225
230
|
env: process.env,
|
|
226
231
|
});
|
package/dist/bin/specgate.js
CHANGED
|
@@ -196,8 +196,12 @@ function ensureExecutable(scriptPath) {
|
|
|
196
196
|
process.exit(3);
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
|
+
// Every command runs with blocking stdio, so `process.exit()` in it cannot
|
|
200
|
+
// truncate output piped to another program (golden_app finding #33).
|
|
201
|
+
const BLOCKING_STDIO = path.join(rootDir, "dist", "scripts", "lib", "blocking-stdio.js");
|
|
199
202
|
function runNodeScript(scriptPath, args) {
|
|
200
|
-
const
|
|
203
|
+
const preload = fs.existsSync(BLOCKING_STDIO) ? ["--require", BLOCKING_STDIO] : [];
|
|
204
|
+
const result = (0, child_process_1.spawnSync)(process.execPath, [...preload, scriptPath, ...args], {
|
|
201
205
|
stdio: "inherit",
|
|
202
206
|
env: process.env,
|
|
203
207
|
});
|
package/dist/bin/specgate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specgate.js","sourceRoot":"","sources":["../../bin/specgate.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,15 @@ class GenerateAgentPromptUseCase {
|
|
|
18
18
|
const featureContent = featurePath
|
|
19
19
|
? this.configRepo.readProjectFile(projectDir, featurePath)
|
|
20
20
|
: null;
|
|
21
|
-
|
|
21
|
+
// AGENTS.md is the agent contract (ADR-0031). Until `specgate update`
|
|
22
|
+
// folds a team's AI_RULES.md into it, both are read: the team's rules must
|
|
23
|
+
// not drop out of the prompt because AGENTS.md appeared.
|
|
24
|
+
const agentsMd = this.configRepo.readProjectFile(projectDir, "AGENTS.md");
|
|
25
|
+
const legacyRules = this.configRepo.readProjectFile(projectDir, "AI_RULES.md");
|
|
26
|
+
const aiRulesContent = [agentsMd, legacyRules].filter(Boolean).join("\n\n") || null;
|
|
27
|
+
const rulesFile = [agentsMd && "AGENTS.md", legacyRules && "AI_RULES.md"]
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
.join(" + ");
|
|
22
30
|
// The requirement's own prose. Not reading it is how the prompt came to say
|
|
23
31
|
// "Implement REQ-002" with every fact `-` and nothing to implement.
|
|
24
32
|
const specSource = this.configRepo.readProjectFile(projectDir, "spec.md");
|
|
@@ -42,6 +50,7 @@ class GenerateAgentPromptUseCase {
|
|
|
42
50
|
...opts,
|
|
43
51
|
featureContent,
|
|
44
52
|
aiRulesContent,
|
|
53
|
+
rulesFile,
|
|
45
54
|
requirementText: requirementText || undefined,
|
|
46
55
|
otherScenarios,
|
|
47
56
|
// Opt-in: the caller decides, because a precedent costs prompt budget and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateAgentPromptUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GenerateAgentPromptUseCase.ts"],"names":[],"mappings":";;;AACA,uDAAsF;AACtF,qDAAuD;AACvD,qDAA8E;AAC9E,yDAAmE;AACnE,qEAKsC;AAEtC,MAAM,MAAM,GAAG,4BAA4B,CAAC;AAC5C,MAAM,YAAY,GAAG,yBAAyB,CAAC;AAE/C,MAAa,0BAA0B;IACjB;IAApB,YAAoB,UAAoC;QAApC,eAAU,GAAV,UAAU,CAA0B;IAAG,CAAC;IAErD,OAAO,CAAC,GAAsB,EAAE,UAAkB,EAAE,OAAsB,EAAE;QACjF,MAAM,WAAW,GAAG,IAAA,4BAAe,EAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QACjD,MAAM,cAAc,GAAG,WAAW;YAChC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,EAAE,WAAW,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,
|
|
1
|
+
{"version":3,"file":"GenerateAgentPromptUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GenerateAgentPromptUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ class AgentPrompt {
|
|
|
73
73
|
parts.push(AgentPrompt.section(`Another scenario of this requirement (${other.path})`, "```gherkin\n" + other.content.trimEnd() + "\n```"));
|
|
74
74
|
}
|
|
75
75
|
if (opts.aiRulesContent) {
|
|
76
|
-
parts.push(AgentPrompt.section(
|
|
76
|
+
parts.push(AgentPrompt.section(`Project rules (${opts.rulesFile || "AGENTS.md"} — non-negotiable)`, opts.aiRulesContent.trimEnd()));
|
|
77
77
|
}
|
|
78
78
|
if (opts.precedent && (opts.precedent.testExcerpt || opts.precedent.technicalExcerpt)) {
|
|
79
79
|
const p = opts.precedent;
|
|
@@ -101,7 +101,7 @@ class AgentPrompt {
|
|
|
101
101
|
];
|
|
102
102
|
const doneRules = [
|
|
103
103
|
...baseRules,
|
|
104
|
-
"**Do not modify** `spec.md`, `AI_RULES.md
|
|
104
|
+
"**Do not modify** `spec.md`, `AGENTS.md` (or `AI_RULES.md`), or any existing `features/**/*.feature` — " +
|
|
105
105
|
"they are the contract you are being judged against. Creating a feature file that " +
|
|
106
106
|
"does not exist yet is not modifying one, and the gate allows it: an agent asked " +
|
|
107
107
|
"to write a missing scenario is not being asked to break this rule.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPrompt.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/AgentPrompt.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AgentPrompt.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/AgentPrompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Is a draft complete enough to review? (ADR-0029, docs/specs/draft-from-brief.md §4)
|
|
4
|
+
*
|
|
5
|
+
* The rules a draft change must satisfy before a person reads it. Each one is
|
|
6
|
+
* an omission the Golden State pilot made by hand and nothing caught: sixteen
|
|
7
|
+
* requirements with no scenario, a whole API and screen layer never asked
|
|
8
|
+
* for, values nobody had said. They are mechanical on purpose (ADR-0023): the
|
|
9
|
+
* checklist does not judge whether a requirement is right, only that the
|
|
10
|
+
* draft says what it must say.
|
|
11
|
+
*
|
|
12
|
+
* Pure: the caller reads the change's deltas, the brief, `assumptions.md` and
|
|
13
|
+
* `questions.md` and hands the text in.
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.KINDS = void 0;
|
|
17
|
+
exports.actorSurfaces = actorSurfaces;
|
|
18
|
+
exports.statedValues = statedValues;
|
|
19
|
+
exports.unmeasured = unmeasured;
|
|
20
|
+
exports.checkDraft = checkDraft;
|
|
21
|
+
exports.specNotes = specNotes;
|
|
22
|
+
const Diagnostic_1 = require("./Diagnostic");
|
|
23
|
+
const SpecParser_1 = require("./SpecParser");
|
|
24
|
+
exports.KINDS = new Set(["functional", "non-functional", "business-rule"]);
|
|
25
|
+
// ── The brief's front matter ──────────────────────────────────────────────────
|
|
26
|
+
/** `actors: [{ name: Worker, surfaces: [mobile] }]` → Worker → [mobile]. */
|
|
27
|
+
function actorSurfaces(brief) {
|
|
28
|
+
const out = new Map();
|
|
29
|
+
const fm = /^---\n([\s\S]*?)\n---/.exec(brief.replace(/\r\n/g, "\n"));
|
|
30
|
+
if (!fm)
|
|
31
|
+
return out;
|
|
32
|
+
const re = /\{\s*name:\s*([^,}]+?)\s*,\s*surfaces:\s*\[([^\]]*)\]\s*\}/g;
|
|
33
|
+
let m;
|
|
34
|
+
while ((m = re.exec(fm[1])) !== null) {
|
|
35
|
+
out.set(m[1].trim().toLowerCase(), m[2]
|
|
36
|
+
.split(",")
|
|
37
|
+
.map((s) => s.trim().toLowerCase())
|
|
38
|
+
.filter(Boolean));
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
// ── Values a scenario states ──────────────────────────────────────────────────
|
|
43
|
+
const ID_TOKEN = /\b(?:REQ|SCN|UC|CMD|AGG|EVT|Q|A)-[A-Za-z0-9.]+\b/g;
|
|
44
|
+
/** Numbers and double-quoted strings in a step: what a reader would take as fact. */
|
|
45
|
+
function statedValues(step) {
|
|
46
|
+
const text = step.replace(ID_TOKEN, " ").replace(/^\s*(GIVEN|WHEN|THEN|AND|BUT)\b/i, "");
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const q of text.matchAll(/"([^"]+)"/g))
|
|
49
|
+
out.push(q[1]);
|
|
50
|
+
const unquoted = text.replace(/"[^"]*"/g, " ").replace(/`[^`]*`/g, " ");
|
|
51
|
+
for (const n of unquoted.matchAll(/(?<![\w.])\d+(?:[.,]\d+)*(?![\w])/g))
|
|
52
|
+
out.push(n[0]);
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
const norm = (s) => s
|
|
56
|
+
.toLowerCase()
|
|
57
|
+
.replace(/[,\s]+/g, " ")
|
|
58
|
+
.trim();
|
|
59
|
+
const escapeRegExp = (v) => v.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
60
|
+
function inText(value, text) {
|
|
61
|
+
if (/^\d/.test(value)) {
|
|
62
|
+
const bare = value.replace(/,/g, "");
|
|
63
|
+
const plain = text.replace(/(\d),(\d)/g, "$1$2");
|
|
64
|
+
return new RegExp(`(?<![\\d.])${escapeRegExp(bare)}(?![\\d])`).test(plain);
|
|
65
|
+
}
|
|
66
|
+
return norm(text).includes(norm(value));
|
|
67
|
+
}
|
|
68
|
+
// ── Questions ─────────────────────────────────────────────────────────────────
|
|
69
|
+
/** Rows of `questions.md`: `| # | Question | Blocks | … |`. */
|
|
70
|
+
function questionRows(md) {
|
|
71
|
+
const lines = md.replace(/\r\n/g, "\n").split("\n");
|
|
72
|
+
const header = lines.findIndex((l) => /^\|.*\bBlocks\b.*\|/i.test(l));
|
|
73
|
+
if (header === -1)
|
|
74
|
+
return [];
|
|
75
|
+
const cols = lines[header].split("|").map((c) => c.trim().toLowerCase());
|
|
76
|
+
const at = cols.indexOf("blocks");
|
|
77
|
+
const out = [];
|
|
78
|
+
for (let i = header + 2; i < lines.length && /^\|/.test(lines[i]); i += 1) {
|
|
79
|
+
const cells = lines[i].split("|").map((c) => c.trim());
|
|
80
|
+
out.push({
|
|
81
|
+
row: cells[1] || `row ${i + 1}`,
|
|
82
|
+
blocks: (cells[at] || "").match(/REQ-[A-Za-z0-9.]+/g) || [],
|
|
83
|
+
line: i + 1,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
// ── What D4 and D5 look for ───────────────────────────────────────────────────
|
|
89
|
+
const MEASURE = /\d+(?:[.,]\d+)?\s*(ms|s|sec|seconds?|min|minutes?|h|hours?|%|m|km|kb|mb|gb|req\/s|rps|users?|days?)\b/i;
|
|
90
|
+
const CITES = /(\bCode\s*§|§\s*\d|\bACI\b|\bOSHA\b|\bGDPR\b|\bCCPA\b|\bHIPAA\b|\bISO\s*\d|\bCBA\b|\bcontract\b|\bregulation\b|\bLey\b|\bnorma\b)/i;
|
|
91
|
+
const SOURCED = /(https?:\/\/|\bSource:|\bFuente:)/i;
|
|
92
|
+
/**
|
|
93
|
+
* Words that promise a quantity. A non-functional requirement is unmeasured
|
|
94
|
+
* when it uses one and states no number: "fast", "scalable", "low latency".
|
|
95
|
+
* A qualitative constraint — offline, privacy, which devices — is verifiable
|
|
96
|
+
* without a number; flagging every one of those was 4 false positives out of
|
|
97
|
+
* 4 on the Golden State packs.
|
|
98
|
+
*/
|
|
99
|
+
const QUANTITATIVE = /\b(fast|faster|quick(ly)?|slow|speed|latency|response time|responsive|performan(t|ce)|throughput|concurren(t|cy)|load|scal(able|e|ability)|uptime|availab(le|ility)|capacity|real[- ]time|instant(ly)?|r[aá]pid[oa]?|veloz|escalable|disponibilidad)\b/i;
|
|
100
|
+
/** Promises a quantity and states none. */
|
|
101
|
+
function unmeasured(text) {
|
|
102
|
+
return QUANTITATIVE.test(text) && !MEASURE.test(text);
|
|
103
|
+
}
|
|
104
|
+
// ── The checklist ─────────────────────────────────────────────────────────────
|
|
105
|
+
function checkDraft(files) {
|
|
106
|
+
const status = [];
|
|
107
|
+
const skipped = [];
|
|
108
|
+
const reqs = [];
|
|
109
|
+
for (const d of files.deltas) {
|
|
110
|
+
const delta = (0, SpecParser_1.parseDelta)(d.source);
|
|
111
|
+
for (const r of [...(delta.added || []), ...(delta.modified || [])]) {
|
|
112
|
+
reqs.push({
|
|
113
|
+
id: r.id || r.name,
|
|
114
|
+
name: r.name,
|
|
115
|
+
text: r.text || "",
|
|
116
|
+
line: r.line,
|
|
117
|
+
file: d.path,
|
|
118
|
+
trace: r.trace || {},
|
|
119
|
+
scenarios: (r.scenarios || []).map((s) => ({
|
|
120
|
+
id: s.id || s.name,
|
|
121
|
+
name: s.name,
|
|
122
|
+
steps: s.steps || [],
|
|
123
|
+
line: s.line,
|
|
124
|
+
})),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const at = (r) => ({ file: r.file, line: r.line, target: r.id });
|
|
129
|
+
// D1 — a requirement has a scenario.
|
|
130
|
+
for (const r of reqs) {
|
|
131
|
+
if (r.scenarios.length === 0) {
|
|
132
|
+
status.push((0, Diagnostic_1.error)("D1_no_scenario", `${r.id} has no scenario: nothing would verify it.`, {
|
|
133
|
+
...at(r),
|
|
134
|
+
fix: "Add at least one scenario with values a test can assert.",
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// D2 — a requirement has a kind.
|
|
139
|
+
for (const r of reqs) {
|
|
140
|
+
if (!exports.KINDS.has(r.trace.kind || "")) {
|
|
141
|
+
status.push((0, Diagnostic_1.error)("D2_no_kind", `${r.id} has no kind (functional, non-functional or business-rule).`, {
|
|
142
|
+
...at(r),
|
|
143
|
+
fix: `Add <!-- csda:trace kind=functional --> (or non-functional, business-rule) under its heading.`,
|
|
144
|
+
}));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// D3 — a requirement a person drives has a scenario on each surface its actor uses.
|
|
148
|
+
const surfaces = files.brief ? actorSurfaces(files.brief) : new Map();
|
|
149
|
+
if (surfaces.size === 0) {
|
|
150
|
+
skipped.push({
|
|
151
|
+
rule: "D3",
|
|
152
|
+
why: files.brief
|
|
153
|
+
? "the brief declares no actors with surfaces in its front matter"
|
|
154
|
+
: "no brief given",
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
const API = /\b(GET|POST|PUT|PATCH|DELETE)\s+\/\S*/;
|
|
159
|
+
const SCREEN = /\b(taps?|clicks?|opens?|sees?|toca|abre|pulsa|ve)\b/i;
|
|
160
|
+
for (const r of reqs) {
|
|
161
|
+
const actor = (r.trace.actor || "").toLowerCase();
|
|
162
|
+
const wanted = surfaces.get(actor);
|
|
163
|
+
if (!actor || !wanted)
|
|
164
|
+
continue;
|
|
165
|
+
const steps = r.scenarios.flatMap((s) => s.steps);
|
|
166
|
+
const has = {
|
|
167
|
+
api: steps.some((s) => API.test(s)),
|
|
168
|
+
screen: steps.some((s) => SCREEN.test(s)),
|
|
169
|
+
};
|
|
170
|
+
for (const surface of wanted) {
|
|
171
|
+
const ok = surface === "api" ? has.api : has.screen;
|
|
172
|
+
if (!ok) {
|
|
173
|
+
status.push((0, Diagnostic_1.error)("D3_surface_missing", `${r.id} is driven by ${r.trace.actor}, who uses ${surface}, and no scenario exercises it.`, {
|
|
174
|
+
...at(r),
|
|
175
|
+
fix: surface === "api"
|
|
176
|
+
? "Add a scenario whose WHEN is the HTTP call (e.g. `POST /api/…`) and whose THEN is the response."
|
|
177
|
+
: "Add a scenario whose WHEN is what the person does on the screen (taps, opens) and whose THEN is what they see.",
|
|
178
|
+
}));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// D4 — a non-functional requirement states a number with a unit.
|
|
184
|
+
for (const r of reqs) {
|
|
185
|
+
if (r.trace.kind !== "non-functional")
|
|
186
|
+
continue;
|
|
187
|
+
const all = [r.text, ...r.scenarios.flatMap((s) => s.steps)].join("\n");
|
|
188
|
+
if (unmeasured(all)) {
|
|
189
|
+
status.push((0, Diagnostic_1.error)("D4_unmeasured_nfr", `${r.id} promises a quantity (speed, load, availability) and states no number with a unit.`, {
|
|
190
|
+
...at(r),
|
|
191
|
+
fix: 'State the measure: "within 2 seconds", "99.5 % of requests", "under 200 MB".',
|
|
192
|
+
}));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// D5 — a business rule that cites a law, standard or contract names its source.
|
|
196
|
+
for (const r of reqs) {
|
|
197
|
+
if (r.trace.kind !== "business-rule")
|
|
198
|
+
continue;
|
|
199
|
+
if (CITES.test(r.text) && !SOURCED.test(r.text)) {
|
|
200
|
+
status.push((0, Diagnostic_1.error)("D5_unsourced_rule", `${r.id} cites a law, standard or contract and names no source.`, {
|
|
201
|
+
...at(r),
|
|
202
|
+
fix: 'Add a "Source:" line (a link, or the clause and edition), or mark it as an assumption.',
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// D6 — a stated value is in the brief or listed as an assumption.
|
|
207
|
+
if (!files.brief) {
|
|
208
|
+
skipped.push({ rule: "D6", why: "no brief given" });
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
const assumptions = files.assumptions || "";
|
|
212
|
+
for (const r of reqs) {
|
|
213
|
+
for (const s of r.scenarios) {
|
|
214
|
+
for (const step of s.steps) {
|
|
215
|
+
for (const v of statedValues(step)) {
|
|
216
|
+
if (inText(v, files.brief))
|
|
217
|
+
continue;
|
|
218
|
+
const listed = assumptions
|
|
219
|
+
.split("\n")
|
|
220
|
+
.some((row) => inText(v, row) && (row.includes(s.id) || row.includes(r.id)));
|
|
221
|
+
if (listed)
|
|
222
|
+
continue;
|
|
223
|
+
status.push((0, Diagnostic_1.error)("D6_unlisted_value", `${s.id} states "${v}", which is not in the brief and not listed as an assumption for ${s.id} or ${r.id}.`, {
|
|
224
|
+
file: r.file,
|
|
225
|
+
line: s.line,
|
|
226
|
+
target: s.id,
|
|
227
|
+
fix: `List it in assumptions.md with ${s.id} (or ${r.id}) in its row, or use the value the brief gives.`,
|
|
228
|
+
}));
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// D7 — an open question names what it blocks, and what it blocks waits.
|
|
235
|
+
if (files.questions) {
|
|
236
|
+
const byId = new Map(reqs.map((r) => [r.id, r]));
|
|
237
|
+
for (const q of questionRows(files.questions)) {
|
|
238
|
+
if (q.blocks.length === 0) {
|
|
239
|
+
status.push((0, Diagnostic_1.error)("D7_floating_question", `Question ${q.row} blocks no requirement.`, {
|
|
240
|
+
file: "questions.md",
|
|
241
|
+
line: q.line,
|
|
242
|
+
fix: "Name the requirements it blocks in the Blocks column — a question that blocks nothing is answered by guessing.",
|
|
243
|
+
}));
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
for (const id of q.blocks) {
|
|
247
|
+
const r = byId.get(id);
|
|
248
|
+
if (r && r.trace.status !== "Needs Clarification") {
|
|
249
|
+
status.push((0, Diagnostic_1.error)("D7_floating_question", `Question ${q.row} blocks ${id}, and ${id} is not Needs Clarification.`, {
|
|
250
|
+
...at(r),
|
|
251
|
+
fix: `Set status="Needs Clarification" in ${id}'s csda:trace, so it cannot be built around the question.`,
|
|
252
|
+
}));
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// D8 — the draft is reviewable in one sitting.
|
|
258
|
+
const max = files.maxRequirements ?? 25;
|
|
259
|
+
if (reqs.length > max) {
|
|
260
|
+
status.push((0, Diagnostic_1.error)("D8_too_large", `The draft holds ${reqs.length} requirements; the review limit is ${max}.`, {
|
|
261
|
+
fix: "Draft one module per change. A draft nobody can review in one sitting is approved without being read.",
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
requirements: reqs.length,
|
|
266
|
+
scenarios: reqs.reduce((n, r) => n + r.scenarios.length, 0),
|
|
267
|
+
skipped,
|
|
268
|
+
status,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// ── The same rules on a hand-written specification ─────────────────────────────
|
|
272
|
+
const SECTION = /^(#{2,4})\s+(?:Requirement:\s*)?(REQ-[A-Za-z0-9.]+)\b\s*[—–:-]?\s*(.*)$/;
|
|
273
|
+
const TRACE = /<!--\s*csda:trace\b(.*?)-->/;
|
|
274
|
+
/** Each requirement section of `spec.md` or a capability spec: id, line, text, trace. */
|
|
275
|
+
function sections(source) {
|
|
276
|
+
const lines = source.replace(/\r\n/g, "\n").split("\n");
|
|
277
|
+
const out = [];
|
|
278
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
279
|
+
const m = SECTION.exec(lines[i].trim());
|
|
280
|
+
if (!m)
|
|
281
|
+
continue;
|
|
282
|
+
const level = m[1].length;
|
|
283
|
+
const body = [];
|
|
284
|
+
const trace = {};
|
|
285
|
+
for (let j = i + 1; j < lines.length; j += 1) {
|
|
286
|
+
if (new RegExp(`^#{1,${level}}\\s+\\S`).test(lines[j]))
|
|
287
|
+
break;
|
|
288
|
+
const t = TRACE.exec(lines[j]);
|
|
289
|
+
if (t) {
|
|
290
|
+
for (const kv of t[1].matchAll(/([a-z_]+)=("([^"]*)"|'([^']*)'|(\S+))/gi)) {
|
|
291
|
+
trace[kv[1].toLowerCase()] = kv[3] ?? kv[4] ?? kv[5];
|
|
292
|
+
}
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
body.push(lines[j]);
|
|
296
|
+
}
|
|
297
|
+
out.push({ id: m[2], line: i + 1, text: body.join("\n"), trace });
|
|
298
|
+
}
|
|
299
|
+
return out;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* D4 and D5 as a report on a project's own specification (ADR-0029 decision 6).
|
|
303
|
+
*
|
|
304
|
+
* The checks that need no brief and say something `plan` does not already:
|
|
305
|
+
* D1 is `plan`'s "Needs Feature File"; D2 is not an omission outside a draft,
|
|
306
|
+
* since a requirement with no kind is functional (use-case model, §2). Info
|
|
307
|
+
* severity: adopting a release never turns a project red over its past
|
|
308
|
+
* (ADR-0023).
|
|
309
|
+
*/
|
|
310
|
+
function specNotes(specs, features) {
|
|
311
|
+
const notes = [];
|
|
312
|
+
for (const f of specs) {
|
|
313
|
+
for (const r of sections(f.source)) {
|
|
314
|
+
const where = { file: f.path, line: r.line, target: r.id };
|
|
315
|
+
if (r.trace.kind === "non-functional") {
|
|
316
|
+
const tagged = features.filter((x) => new RegExp(`@${r.id}(?![A-Za-z0-9])`).test(x.source));
|
|
317
|
+
if (unmeasured([r.text, ...tagged.map((x) => x.source)].join("\n"))) {
|
|
318
|
+
notes.push((0, Diagnostic_1.info)("D4_unmeasured_nfr", `${r.id} promises a quantity (speed, load, availability) and states no number with a unit.`, {
|
|
319
|
+
...where,
|
|
320
|
+
fix: 'State the measure: "within 2 seconds", "99.5 % of requests".',
|
|
321
|
+
}));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
if (r.trace.kind === "business-rule" && CITES.test(r.text) && !SOURCED.test(r.text)) {
|
|
325
|
+
notes.push((0, Diagnostic_1.info)("D5_unsourced_rule", `${r.id} cites a law, standard or contract and names no source.`, {
|
|
326
|
+
...where,
|
|
327
|
+
fix: 'Add a "Source:" line: a link, or the clause and edition.',
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return notes;
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=DraftChecklist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DraftChecklist.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/DraftChecklist.ts"],"names":[],"mappings":"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"}
|