@rsaglobaltech/specgate 0.8.1 → 0.10.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 +196 -0
- package/README.md +17 -25
- package/bin/specgate.ts +23 -5
- package/dist/bin/specgate.js +19 -4
- package/dist/bin/specgate.js.map +1 -1
- package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js +56 -0
- package/dist/packages/core/src/application/GenerateAgentPromptUseCase.js.map +1 -1
- package/dist/packages/core/src/application/ValidateProjectUseCase.js +54 -0
- package/dist/packages/core/src/application/ValidateProjectUseCase.js.map +1 -1
- package/dist/packages/core/src/domain/AdversarialProbe.js +75 -0
- package/dist/packages/core/src/domain/AdversarialProbe.js.map +1 -0
- package/dist/packages/core/src/domain/AgentPrompt.js +52 -3
- package/dist/packages/core/src/domain/AgentPrompt.js.map +1 -1
- package/dist/packages/core/src/domain/DeclaredArtifacts.js +25 -0
- package/dist/packages/core/src/domain/DeclaredArtifacts.js.map +1 -1
- package/dist/packages/core/src/domain/DoneVerification.js +89 -0
- package/dist/packages/core/src/domain/DoneVerification.js.map +1 -0
- package/dist/packages/core/src/domain/GateCommandIntegrity.js +139 -0
- package/dist/packages/core/src/domain/GateCommandIntegrity.js.map +1 -0
- package/dist/packages/core/src/domain/GherkinQuality.js +19 -3
- package/dist/packages/core/src/domain/GherkinQuality.js.map +1 -1
- package/dist/packages/core/src/domain/HarnessConfig.js +6 -0
- package/dist/packages/core/src/domain/HarnessConfig.js.map +1 -1
- package/dist/packages/core/src/domain/MultiStack.js +96 -0
- package/dist/packages/core/src/domain/MultiStack.js.map +1 -0
- package/dist/packages/core/src/domain/NewRequirement.js +46 -0
- package/dist/packages/core/src/domain/NewRequirement.js.map +1 -0
- package/dist/packages/core/src/domain/Precedents.js +96 -0
- package/dist/packages/core/src/domain/Precedents.js.map +1 -0
- package/dist/packages/core/src/domain/RequirementPlan.js +1 -0
- package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
- package/dist/packages/core/src/domain/RequirementRemoval.js +161 -0
- package/dist/packages/core/src/domain/RequirementRemoval.js.map +1 -0
- package/dist/packages/core/src/domain/ScenarioCoverage.js +178 -0
- package/dist/packages/core/src/domain/ScenarioCoverage.js.map +1 -0
- package/dist/packages/core/src/domain/SpecSections.js +206 -0
- package/dist/packages/core/src/domain/SpecSections.js.map +1 -0
- package/dist/packages/core/src/domain/TestCommand.js +82 -0
- package/dist/packages/core/src/domain/TestCommand.js.map +1 -0
- package/dist/packages/core/src/domain/TraceabilityFormat.js +45 -2
- package/dist/packages/core/src/domain/TraceabilityFormat.js.map +1 -1
- package/dist/packages/core/src/infrastructure/HarnessConfigFile.js +31 -0
- package/dist/packages/core/src/infrastructure/HarnessConfigFile.js.map +1 -1
- package/dist/packages/core/test/unit/adversarial-probe.test.js +81 -0
- package/dist/packages/core/test/unit/adversarial-probe.test.js.map +1 -0
- package/dist/packages/core/test/unit/done-verification.test.js +84 -0
- package/dist/packages/core/test/unit/done-verification.test.js.map +1 -0
- package/dist/packages/core/test/unit/gate-command-integrity.test.js +114 -0
- package/dist/packages/core/test/unit/gate-command-integrity.test.js.map +1 -0
- package/dist/packages/core/test/unit/gherkin-quality.test.js +28 -0
- package/dist/packages/core/test/unit/gherkin-quality.test.js.map +1 -1
- package/dist/packages/core/test/unit/multi-stack.test.js +86 -0
- package/dist/packages/core/test/unit/multi-stack.test.js.map +1 -0
- package/dist/packages/core/test/unit/new-requirement.test.js +67 -0
- package/dist/packages/core/test/unit/new-requirement.test.js.map +1 -0
- package/dist/packages/core/test/unit/precedents.test.js +99 -0
- package/dist/packages/core/test/unit/precedents.test.js.map +1 -0
- package/dist/packages/core/test/unit/requirement-removal.test.js +124 -0
- package/dist/packages/core/test/unit/requirement-removal.test.js.map +1 -0
- package/dist/packages/core/test/unit/scenario-coverage.test.js +146 -0
- package/dist/packages/core/test/unit/scenario-coverage.test.js.map +1 -0
- package/dist/packages/core/test/unit/spec-sections.test.js +146 -0
- package/dist/packages/core/test/unit/spec-sections.test.js.map +1 -0
- package/dist/packages/core/test/unit/test-command.test.js +81 -0
- package/dist/packages/core/test/unit/test-command.test.js.map +1 -0
- package/dist/packages/core/test/unit/validate-project.test.js +21 -0
- package/dist/packages/core/test/unit/validate-project.test.js.map +1 -1
- package/dist/scripts/agents/commands.js +1 -1
- package/dist/scripts/agents/commands.js.map +1 -1
- package/dist/scripts/agents/init.js +59 -15
- package/dist/scripts/agents/init.js.map +1 -1
- package/dist/scripts/change/instructions.js +2 -2
- package/dist/scripts/change/instructions.js.map +1 -1
- package/dist/scripts/check.js +10 -0
- package/dist/scripts/check.js.map +1 -0
- package/dist/scripts/cli/commands/change/ChangeCommand.js +2 -2
- package/dist/scripts/cli/commands/change/ChangeCommand.js.map +1 -1
- package/dist/scripts/cli/commands/config/CiInitCommand.js +1 -1
- package/dist/scripts/cli/commands/config/CiInitCommand.js.map +1 -1
- package/dist/scripts/cli/commands/harness/RunCommand.js +214 -9
- package/dist/scripts/cli/commands/harness/RunCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/InferPackCommand.js +331 -31
- package/dist/scripts/cli/commands/pack/InferPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/AdoptCommand.js +86 -9
- package/dist/scripts/cli/commands/project/AdoptCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/InitProjectCommand.js +286 -45
- package/dist/scripts/cli/commands/project/InitProjectCommand.js.map +1 -1
- package/dist/scripts/cli/commands/project/UpdateCommand.js +118 -8
- package/dist/scripts/cli/commands/project/UpdateCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/CheckCommand.js +184 -0
- package/dist/scripts/cli/commands/quality/CheckCommand.js.map +1 -0
- package/dist/scripts/cli/commands/quality/DoctorCommand.js +20 -2
- package/dist/scripts/cli/commands/quality/DoctorCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/FixCommand.js +1 -1
- package/dist/scripts/cli/commands/quality/FixCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ReportCommand.js +1 -1
- package/dist/scripts/cli/commands/quality/ReportCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +406 -24
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/DoneCommand.js +108 -0
- package/dist/scripts/cli/commands/spec/DoneCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/NewCommand.js +178 -0
- package/dist/scripts/cli/commands/spec/NewCommand.js.map +1 -0
- package/dist/scripts/cli/commands/spec/PlanCommand.js +8 -2
- package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/ReqCommand.js +124 -4
- package/dist/scripts/cli/commands/spec/ReqCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/StatusCommand.js +84 -32
- package/dist/scripts/cli/commands/spec/StatusCommand.js.map +1 -1
- package/dist/scripts/docs/build-site.js +145 -35
- package/dist/scripts/docs/build-site.js.map +1 -1
- package/dist/scripts/docs/components.js +208 -0
- package/dist/scripts/docs/components.js.map +1 -0
- package/dist/scripts/docs/highlight.js +180 -0
- package/dist/scripts/docs/highlight.js.map +1 -0
- package/dist/scripts/docs/icons.js +63 -0
- package/dist/scripts/docs/icons.js.map +1 -0
- package/dist/scripts/docs/nav.js +9 -3
- package/dist/scripts/docs/nav.js.map +1 -1
- package/dist/scripts/gen_mcp_tools.js +22 -2
- package/dist/scripts/gen_mcp_tools.js.map +1 -1
- package/dist/scripts/harness/init.js +101 -40
- package/dist/scripts/harness/init.js.map +1 -1
- package/dist/scripts/harness/worktree-lock.js +161 -0
- package/dist/scripts/harness/worktree-lock.js.map +1 -0
- package/dist/scripts/infer_pack.js +4 -1
- package/dist/scripts/infer_pack.js.map +1 -1
- package/dist/scripts/lib/surface.js +88 -38
- package/dist/scripts/lib/surface.js.map +1 -1
- package/dist/scripts/new.js +10 -0
- package/dist/scripts/new.js.map +1 -0
- package/dist/scripts/plugin/gate-hook.js +2 -2
- package/dist/scripts/plugin/gate-hook.js.map +1 -1
- package/package.json +5 -2
- package/templates/adopt/AI_RULES.md.tpl +1 -1
- package/templates/adopt/spec.md.tpl +4 -4
- package/templates/base/spec.md.tpl +12 -0
- package/templates/ci/azure.yml.tpl +2 -2
- package/templates/ci/github.yml.tpl +2 -2
- package/templates/ci/gitlab.yml.tpl +1 -1
- package/templates/ci/jenkins.tpl +1 -1
- package/templates/contracts/test-strategy.md.tpl +2 -2
- package/templates/harness/harness.config.yaml.tpl +3 -3
- package/templates/harness/prompt-prefix.md.tpl +2 -5
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Requirement prose in `spec.md` (Fase 3.1).
|
|
4
|
+
*
|
|
5
|
+
* ## The gap
|
|
6
|
+
*
|
|
7
|
+
* `req add` wrote a matrix row and nothing else. The title went into the *Use
|
|
8
|
+
* Case* column and `spec.md` never gained a section, so the requirement existed
|
|
9
|
+
* as a table entry with no text anywhere.
|
|
10
|
+
*
|
|
11
|
+
* That is one cause with two symptoms, and the second is the expensive one:
|
|
12
|
+
*
|
|
13
|
+
* # Implement REQ-002
|
|
14
|
+
* - Feature file: -
|
|
15
|
+
* - Test artifact (write this first — TDD): -
|
|
16
|
+
* - Production artifact: -
|
|
17
|
+
* ## Gherkin scenario
|
|
18
|
+
* (empty)
|
|
19
|
+
*
|
|
20
|
+
* The harness prompt asks an agent to implement a requirement whose text is
|
|
21
|
+
* nowhere in the prompt. A cold evaluator's words: *"the loop doesn't close on
|
|
22
|
+
* a brownfield adopt"*. It cannot, because there is nothing to read.
|
|
23
|
+
*
|
|
24
|
+
* ## Why a placeholder obligation and not just the title
|
|
25
|
+
*
|
|
26
|
+
* `--strict-requirements` wants an RFC-2119 keyword, and a section that says
|
|
27
|
+
* only what the user typed would fail the project's own gate the moment they
|
|
28
|
+
* turned that flag on. Writing `MUST` into the sentence makes the generated
|
|
29
|
+
* section pass the gate it will be measured by — and marks itself as a draft
|
|
30
|
+
* the author is expected to rewrite, rather than pretending to be finished
|
|
31
|
+
* prose.
|
|
32
|
+
*/
|
|
33
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
34
|
+
exports.renderRequirementSection = renderRequirementSection;
|
|
35
|
+
exports.hasRequirementSection = hasRequirementSection;
|
|
36
|
+
exports.requirementSections = requirementSections;
|
|
37
|
+
exports.appendRequirementSection = appendRequirementSection;
|
|
38
|
+
exports.extractRequirementSection = extractRequirementSection;
|
|
39
|
+
/** `## REQ-014 — title`, in the shape the validator and `plan` already read. */
|
|
40
|
+
function renderRequirementSection(reqId, title) {
|
|
41
|
+
const heading = `## ${reqId} — ${title}`;
|
|
42
|
+
// `MUST satisfy:` rather than `MUST <title>`: a title can start with an
|
|
43
|
+
// identifier (`res.redirect sets …`) or an acronym, and gluing it onto a verb
|
|
44
|
+
// produces something ungrammatical often enough that it is not worth the
|
|
45
|
+
// heuristic that would try to guess.
|
|
46
|
+
const obligation = String(title || "").trim() || "the behaviour named above";
|
|
47
|
+
return (`${heading}\n\n` +
|
|
48
|
+
`The system MUST satisfy: ${obligation}.\n\n` +
|
|
49
|
+
`> Written by \`specgate req add\`. Replace this sentence with the real ` +
|
|
50
|
+
`obligation — what must hold, under which conditions, and how it is ` +
|
|
51
|
+
`observed.\n`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* A requirement heading, at any level from `##` to `####`.
|
|
55
|
+
*
|
|
56
|
+
* Requirements are commonly nested under a section — the shipped template puts
|
|
57
|
+
* them under "8. Key requirements" — so insisting on top-level `##` would fail
|
|
58
|
+
* documents that are perfectly well organised. The level is captured because
|
|
59
|
+
* the extractor needs to know where the section ends.
|
|
60
|
+
*/
|
|
61
|
+
const REQUIREMENT_HEADING = /^(#{2,4})\s+(.*)$/;
|
|
62
|
+
/**
|
|
63
|
+
* The requirement ids a heading line declares.
|
|
64
|
+
*
|
|
65
|
+
* Four shapes turned up in real documents before this stopped enumerating them:
|
|
66
|
+
* `## REQ-014 — title`, `### REQ-014`, `### Requirement: REQ-100 — title`, and
|
|
67
|
+
* a table row. Matching "a heading that names the id" covers the first three
|
|
68
|
+
* without a fifth special case the next document would break anyway.
|
|
69
|
+
*/
|
|
70
|
+
function headingRequirementIds(line) {
|
|
71
|
+
const m = REQUIREMENT_HEADING.exec(line.trim());
|
|
72
|
+
if (!m)
|
|
73
|
+
return null;
|
|
74
|
+
const ids = m[2].match(/\bREQ-[A-Za-z0-9.]+\b/g) || [];
|
|
75
|
+
return ids.length > 0 ? { level: m[1].length, ids } : null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* A requirement row in the `| ID | Requirement | … |` table §8 of the shipped
|
|
79
|
+
* template uses.
|
|
80
|
+
*
|
|
81
|
+
* Two conventions are in the wild and both are legitimate: `adopt` writes
|
|
82
|
+
* `## REQ-NNN` sections, while the original `init` template — and this
|
|
83
|
+
* repository's own spec.md — put one row per requirement in a table. Outlawing
|
|
84
|
+
* the table would have turned every project built from that template red on
|
|
85
|
+
* upgrade, for text that is right there in the document.
|
|
86
|
+
*
|
|
87
|
+
* The prose has to be real: a row whose requirement cell is empty, `-` or `TBD`
|
|
88
|
+
* is an id with nothing behind it, which is the case worth catching.
|
|
89
|
+
*/
|
|
90
|
+
const REQUIREMENT_TABLE_ROW = /^\|\s*(REQ-[A-Za-z0-9.]+)\s*\|([^|]*)\|/;
|
|
91
|
+
function tableRowText(specSource, reqId) {
|
|
92
|
+
const wanted = reqId.trim();
|
|
93
|
+
for (const line of String(specSource || "")
|
|
94
|
+
.replace(/\r\n/g, "\n")
|
|
95
|
+
.split("\n")) {
|
|
96
|
+
const m = REQUIREMENT_TABLE_ROW.exec(line.trim());
|
|
97
|
+
if (!m || m[1] !== wanted)
|
|
98
|
+
continue;
|
|
99
|
+
const text = m[2].trim();
|
|
100
|
+
if (text === "" || text === "-" || text.toUpperCase() === "TBD")
|
|
101
|
+
return null;
|
|
102
|
+
return text;
|
|
103
|
+
}
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
/** Does `spec.md` carry text for this requirement, in either convention? */
|
|
107
|
+
function hasRequirementSection(specSource, reqId) {
|
|
108
|
+
if (!reqId)
|
|
109
|
+
return false;
|
|
110
|
+
const wanted = reqId.trim();
|
|
111
|
+
const hasHeading = String(specSource || "")
|
|
112
|
+
.replace(/\r\n/g, "\n")
|
|
113
|
+
.split("\n")
|
|
114
|
+
.some((line) => {
|
|
115
|
+
const heading = headingRequirementIds(line);
|
|
116
|
+
return heading ? heading.ids.includes(wanted) : false;
|
|
117
|
+
});
|
|
118
|
+
return hasHeading || tableRowText(specSource, reqId) !== null;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Every `REQ-NNN` that `spec.md` declares a section for.
|
|
122
|
+
*
|
|
123
|
+
* Used in the other direction by the gate: a matrix row whose requirement has
|
|
124
|
+
* no section is a row describing something the specification never says.
|
|
125
|
+
*/
|
|
126
|
+
function requirementSections(specSource) {
|
|
127
|
+
const found = [];
|
|
128
|
+
for (const line of String(specSource || "")
|
|
129
|
+
.replace(/\r\n/g, "\n")
|
|
130
|
+
.split("\n")) {
|
|
131
|
+
const heading = headingRequirementIds(line);
|
|
132
|
+
if (heading) {
|
|
133
|
+
for (const id of heading.ids)
|
|
134
|
+
if (!found.includes(id))
|
|
135
|
+
found.push(id);
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const row = REQUIREMENT_TABLE_ROW.exec(line.trim());
|
|
139
|
+
if (!row || found.includes(row[1]))
|
|
140
|
+
continue;
|
|
141
|
+
const text = row[2].trim();
|
|
142
|
+
if (text === "" || text === "-" || text.toUpperCase() === "TBD")
|
|
143
|
+
continue;
|
|
144
|
+
found.push(row[1]);
|
|
145
|
+
}
|
|
146
|
+
return found;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* `spec.md` with a section for `reqId` appended, or unchanged if it has one.
|
|
150
|
+
*
|
|
151
|
+
* Appends rather than inserting in id order: `spec.md` is a document a person
|
|
152
|
+
* writes in, and reordering someone's prose to satisfy a sort is a worse
|
|
153
|
+
* surprise than a section at the end.
|
|
154
|
+
*/
|
|
155
|
+
function appendRequirementSection(specSource, reqId, title) {
|
|
156
|
+
if (hasRequirementSection(specSource, reqId)) {
|
|
157
|
+
return { content: specSource, added: false };
|
|
158
|
+
}
|
|
159
|
+
const body = String(specSource || "").replace(/\s+$/, "");
|
|
160
|
+
const separator = body === "" ? "" : "\n\n";
|
|
161
|
+
return {
|
|
162
|
+
content: `${body}${separator}${renderRequirementSection(reqId, title)}`,
|
|
163
|
+
added: true,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The body of `## REQ-NNN` in `spec.md`, heading included, or `null`.
|
|
168
|
+
*
|
|
169
|
+
* A section runs until the next heading of the same or higher level, so a
|
|
170
|
+
* `### ` subsection belongs to the requirement and a `## ` does not.
|
|
171
|
+
*/
|
|
172
|
+
function extractRequirementSection(specSource, reqId) {
|
|
173
|
+
if (!reqId)
|
|
174
|
+
return null;
|
|
175
|
+
const lines = String(specSource || "")
|
|
176
|
+
.replace(/\r\n/g, "\n")
|
|
177
|
+
.split("\n");
|
|
178
|
+
let start = -1;
|
|
179
|
+
let level = 2;
|
|
180
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
181
|
+
const heading = headingRequirementIds(lines[i]);
|
|
182
|
+
if (heading && heading.ids.includes(reqId.trim())) {
|
|
183
|
+
start = i;
|
|
184
|
+
level = heading.level;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
// No heading: the table row is the requirement's text, and the prompt needs
|
|
189
|
+
// it just as much.
|
|
190
|
+
if (start === -1) {
|
|
191
|
+
const text = tableRowText(specSource, reqId);
|
|
192
|
+
return text === null ? null : `## ${reqId.trim()}\n\n${text}`;
|
|
193
|
+
}
|
|
194
|
+
// The section ends at the next heading of the same level or higher, so a
|
|
195
|
+
// `####` sub-heading stays inside the requirement and the next `###` does not.
|
|
196
|
+
const boundary = new RegExp(`^#{1,${level}}\\s+\\S`);
|
|
197
|
+
let end = lines.length;
|
|
198
|
+
for (let i = start + 1; i < lines.length; i += 1) {
|
|
199
|
+
if (boundary.test(lines[i])) {
|
|
200
|
+
end = i;
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return lines.slice(start, end).join("\n").trim();
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=SpecSections.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpecSections.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/SpecSections.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* One answer to "how does this project run its tests" (Fase 2.3).
|
|
4
|
+
*
|
|
5
|
+
* There were two, and they disagreed on the same `pom.xml`: `onboard`/`adopt`
|
|
6
|
+
* said `./mvnw -B test`, `harness init` wrote `mvn -B test`. A cold evaluator
|
|
7
|
+
* found it by running both and noticing the mismatch, which is a bad way to
|
|
8
|
+
* learn that a tool has two opinions about your project.
|
|
9
|
+
*
|
|
10
|
+
* The wrapper wins, and not by coin toss. The harness runs each attempt in a
|
|
11
|
+
* bare git worktree; `./mvnw` and `./gradlew` are checked into the repository
|
|
12
|
+
* and work there, while `mvn` and `gradle` depend on what happens to be
|
|
13
|
+
* installed on the machine. Preferring the wrapper is the difference between a
|
|
14
|
+
* gate that runs and a gate that reports "command not found" as a failed
|
|
15
|
+
* attempt and burns one of the agent's three tries on it.
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.detectTestCommand = detectTestCommand;
|
|
19
|
+
exports.hasGherkinRunner = hasGherkinRunner;
|
|
20
|
+
function detectTestCommand(files, opts = {}) {
|
|
21
|
+
if (files.exists("package.json")) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = JSON.parse(files.read("package.json") || "{}");
|
|
24
|
+
const scripts = (parsed && parsed.scripts) || {};
|
|
25
|
+
if (opts.preferVerify && typeof scripts.verify === "string")
|
|
26
|
+
return "npm run verify";
|
|
27
|
+
// A declared script is the project's own answer and beats any guess.
|
|
28
|
+
if (typeof scripts.test === "string")
|
|
29
|
+
return "npm test";
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// A malformed package.json is the user's problem, not a reason to fail
|
|
33
|
+
// scaffolding — but it is also not evidence of a test script.
|
|
34
|
+
}
|
|
35
|
+
return "npm test";
|
|
36
|
+
}
|
|
37
|
+
// Wrapper first, everywhere it exists: it is in the repository, so it works
|
|
38
|
+
// in a bare worktree where the system tool may not be installed.
|
|
39
|
+
if (files.exists("pom.xml")) {
|
|
40
|
+
return files.exists("mvnw") ? "./mvnw -B test" : "mvn -B test";
|
|
41
|
+
}
|
|
42
|
+
if (files.exists("build.gradle") || files.exists("build.gradle.kts")) {
|
|
43
|
+
return files.exists("gradlew") ? "./gradlew test" : "gradle test";
|
|
44
|
+
}
|
|
45
|
+
if (files.exists("Cargo.toml"))
|
|
46
|
+
return "cargo test";
|
|
47
|
+
if (files.exists("go.mod"))
|
|
48
|
+
return "go test ./...";
|
|
49
|
+
if (files.exists("pyproject.toml") || files.exists("setup.py"))
|
|
50
|
+
return "pytest";
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Does anything in this project execute a `.feature` file?
|
|
55
|
+
*
|
|
56
|
+
* `doctor` reported "every scenario runnable" from a Gherkin *quality* check —
|
|
57
|
+
* When, Then, three steps — on a repository with no BDD runner anywhere, while
|
|
58
|
+
* the harness prompt in the same project said "nothing executes a `.feature`
|
|
59
|
+
* here". A cold evaluator listed the pair as a contradiction, and it is: one of
|
|
60
|
+
* them was describing the file and calling it the run.
|
|
61
|
+
*
|
|
62
|
+
* Shared so the two cannot drift apart again.
|
|
63
|
+
*/
|
|
64
|
+
function hasGherkinRunner(files) {
|
|
65
|
+
if (files.exists("features/step_definitions"))
|
|
66
|
+
return true;
|
|
67
|
+
for (const manifest of [
|
|
68
|
+
"package.json",
|
|
69
|
+
"pom.xml",
|
|
70
|
+
"build.gradle",
|
|
71
|
+
"build.gradle.kts",
|
|
72
|
+
"pyproject.toml",
|
|
73
|
+
]) {
|
|
74
|
+
if (!files.exists(manifest))
|
|
75
|
+
continue;
|
|
76
|
+
const source = files.read(manifest) || "";
|
|
77
|
+
if (/cucumber|behave|pytest-bdd|godog|specflow|reqnroll/i.test(source))
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=TestCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestCommand.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TestCommand.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAgCH,8CA4BC;AAaD,4CAcC;AAvDD,SAAgB,iBAAiB,CAAC,KAAmB,EAAE,OAAsB,EAAE;IAC7E,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,gBAAgB,CAAC;YACrF,qEAAqE;YACrE,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,UAAU,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,8DAA8D;QAChE,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,4EAA4E;IAC5E,iEAAiE;IACjE,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,eAAe,CAAC;IACnD,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEhF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB,CAAC,KAAmB;IAClD,IAAI,KAAK,CAAC,MAAM,CAAC,2BAA2B,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,KAAK,MAAM,QAAQ,IAAI;QACrB,cAAc;QACd,SAAS;QACT,cAAc;QACd,kBAAkB;QAClB,gBAAgB;KACjB,EAAE,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,qDAAqD,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* `ITraceabilityRepository`.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.POST_DRAFT_STATUS = exports.ALLOWED_STATUS = exports.LEGACY_HEADER = exports.RICH_HEADER = void 0;
|
|
12
|
+
exports.DELIVERED_STATUS = exports.POST_DRAFT_STATUS = exports.ALLOWED_STATUS = exports.LEGACY_HEADER = exports.RICH_HEADER = void 0;
|
|
13
13
|
exports.parseTraceabilityRows = parseTraceabilityRows;
|
|
14
14
|
exports.parseMatrixTraceLines = parseMatrixTraceLines;
|
|
15
15
|
exports.parseMatrixDependencies = parseMatrixDependencies;
|
|
@@ -19,6 +19,7 @@ exports.buildTraceabilityMarkdown = buildTraceabilityMarkdown;
|
|
|
19
19
|
exports.detectTraceabilityMode = detectTraceabilityMode;
|
|
20
20
|
exports.parseMatrixRows = parseMatrixRows;
|
|
21
21
|
exports.readRowFields = readRowFields;
|
|
22
|
+
exports.countDraftExempt = countDraftExempt;
|
|
22
23
|
function parseTraceabilityRows(existingContent) {
|
|
23
24
|
const rows = [];
|
|
24
25
|
const seen = new Set();
|
|
@@ -56,7 +57,14 @@ function parseTraceabilityRows(existingContent) {
|
|
|
56
57
|
testArtifact: cells[8],
|
|
57
58
|
status: cells[9],
|
|
58
59
|
};
|
|
59
|
-
|
|
60
|
+
// The requirement id is what makes a row a row. Keying on
|
|
61
|
+
// `featureFile::scenarioId` alone meant every proposal `adopt` seeds —
|
|
62
|
+
// which by design has neither yet — hashed to the same `-::-`, so all but
|
|
63
|
+
// the first disappeared from the parse while staying in the file. The
|
|
64
|
+
// allocator then reissued an id that was already taken, and `req link`
|
|
65
|
+
// wrote both rows at once. Three independent cold adoptions on three
|
|
66
|
+
// stacks hit it in the same five minutes of use.
|
|
67
|
+
const key = `${row.requirement}::${row.featureFile}::${row.scenarioId}`;
|
|
60
68
|
if (seen.has(key))
|
|
61
69
|
continue;
|
|
62
70
|
seen.add(key);
|
|
@@ -267,6 +275,13 @@ exports.ALLOWED_STATUS = new Set([
|
|
|
267
275
|
]);
|
|
268
276
|
/** The statuses that mean work has started — everything but `Draft`. */
|
|
269
277
|
exports.POST_DRAFT_STATUS = new Set([...exports.ALLOWED_STATUS].filter((s) => s !== "Draft"));
|
|
278
|
+
/**
|
|
279
|
+
* The statuses that claim the work exists. Before these, a row's declared
|
|
280
|
+
* paths are a plan — the file a requirement is going to land in — and a
|
|
281
|
+
* missing one is not drift. `Deprecated` is excluded: its files may have been
|
|
282
|
+
* removed on purpose.
|
|
283
|
+
*/
|
|
284
|
+
exports.DELIVERED_STATUS = new Set(["Implemented", "Verified", "Released"]);
|
|
270
285
|
/** Which of the two matrix shapes this file uses, or `null` if neither header is present. */
|
|
271
286
|
function detectTraceabilityMode(content) {
|
|
272
287
|
if (content.includes(exports.RICH_HEADER))
|
|
@@ -314,4 +329,32 @@ function readRowFields(cells, mode) {
|
|
|
314
329
|
status: cells[4] || "",
|
|
315
330
|
};
|
|
316
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Rows `--strict-tdd` did not check because they are still `Draft`.
|
|
334
|
+
*
|
|
335
|
+
* The TDD rules exempt a draft on purpose — a requirement nobody has started
|
|
336
|
+
* owes nothing yet — and that is defensible. What was not defensible was the
|
|
337
|
+
* output: `- Strict TDD gate: passed` over three rows with no scenario, no test
|
|
338
|
+
* and a `TBD` artifact reads as "these were checked and they are fine".
|
|
339
|
+
*
|
|
340
|
+
* A cold evaluator called that out as the documentation and the tool
|
|
341
|
+
* disagreeing. The rule is right; the sentence was hiding its own scope. So the
|
|
342
|
+
* count travels with the pass, the way the lock gate already reports how many
|
|
343
|
+
* packs it checked.
|
|
344
|
+
*/
|
|
345
|
+
function countDraftExempt(rows) {
|
|
346
|
+
let exempt = 0;
|
|
347
|
+
for (const row of rows || []) {
|
|
348
|
+
const status = String(row.status || "").trim();
|
|
349
|
+
if (status !== "Draft")
|
|
350
|
+
continue;
|
|
351
|
+
const testArtifact = String(row.testArtifact || "").trim();
|
|
352
|
+
const scenarioId = String(row.scenarioId || "").trim();
|
|
353
|
+
const missingTest = testArtifact === "" || testArtifact === "-" || testArtifact.toUpperCase() === "TBD";
|
|
354
|
+
const missingScenario = scenarioId === "" || scenarioId === "-";
|
|
355
|
+
if (missingTest || missingScenario)
|
|
356
|
+
exempt += 1;
|
|
357
|
+
}
|
|
358
|
+
return exempt;
|
|
359
|
+
}
|
|
317
360
|
//# sourceMappingURL=TraceabilityFormat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TraceabilityFormat.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceabilityFormat.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"TraceabilityFormat.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceabilityFormat.ts"],"names":[],"mappings":"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"}
|
|
@@ -87,6 +87,8 @@ const KNOWN_KEYS = new Set([
|
|
|
87
87
|
"protected_paths",
|
|
88
88
|
"allow_paths",
|
|
89
89
|
"message_report",
|
|
90
|
+
"prompt_precedents",
|
|
91
|
+
"adversary_profile",
|
|
90
92
|
]);
|
|
91
93
|
function readHarnessConfig(projectDir) {
|
|
92
94
|
const filePath = path.join(projectDir, exports.HARNESS_CONFIG_FILE);
|
|
@@ -99,6 +101,29 @@ function readHarnessConfig(projectDir) {
|
|
|
99
101
|
const config = {};
|
|
100
102
|
if (parsed.agent !== undefined)
|
|
101
103
|
config.agent = String(parsed.agent);
|
|
104
|
+
// Opt-in (D2): show the agent an accepted requirement from the same bounded
|
|
105
|
+
// context. Off by default because it costs prompt budget and says nothing
|
|
106
|
+
// useful until a project has verified work to point at.
|
|
107
|
+
// D3: the adversary. Resolved here for the same reason as the ladder — a
|
|
108
|
+
// worker process must not resolve a profile differently from its parent.
|
|
109
|
+
if (parsed.adversary_profile !== undefined) {
|
|
110
|
+
const name = String(parsed.adversary_profile).trim();
|
|
111
|
+
if (name) {
|
|
112
|
+
const agent = resolveProfileAgent(projectDir, name);
|
|
113
|
+
if (!isAdvisoryProfile(projectDir, name)) {
|
|
114
|
+
throw new Error(`.harness/profiles.yaml: profile '${name}' is used as adversary_profile but does ` +
|
|
115
|
+
"not declare `advisory: true`.\n" +
|
|
116
|
+
"Fix: add `advisory: true` to it. The adversary's writes are discarded so its " +
|
|
117
|
+
"probe cannot reach the branch — a profile whose work you expect to be kept is " +
|
|
118
|
+
"not an adversary.");
|
|
119
|
+
}
|
|
120
|
+
config.adversaryProfile = name;
|
|
121
|
+
config.profileAgents = { ...(config.profileAgents || {}), [name]: agent };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (parsed.prompt_precedents !== undefined) {
|
|
125
|
+
config.promptPrecedents = /^(1|true|yes|on)$/i.test(String(parsed.prompt_precedents).trim());
|
|
126
|
+
}
|
|
102
127
|
if (parsed.test_cmd !== undefined)
|
|
103
128
|
config.testCmd = String(parsed.test_cmd);
|
|
104
129
|
if (parsed.max_attempts !== undefined) {
|
|
@@ -255,6 +280,12 @@ function resolveHarnessSettings(fileConfig, cliArgs) {
|
|
|
255
280
|
// in the repository, not a flag somebody types differently each run.
|
|
256
281
|
attemptProfiles: file.attemptProfiles || [],
|
|
257
282
|
reviewProfile: file.reviewProfile || "",
|
|
283
|
+
// From the file only, like the role ladder: which agent is allowed to
|
|
284
|
+
// attack the work is a repository decision, not a flag typed per run.
|
|
285
|
+
adversaryProfile: file.adversaryProfile || "",
|
|
286
|
+
// From the file only. Whether an agent is shown examples is a property of
|
|
287
|
+
// the project, not of the run somebody is starting.
|
|
288
|
+
promptPrecedents: file.promptPrecedents === true,
|
|
258
289
|
profileAgents: file.profileAgents || {},
|
|
259
290
|
// From the file only, for the same reason as the role ladder: a flag that
|
|
260
291
|
// widens what the agent may edit is a flag somebody types to go green.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HarnessConfigFile.js","sourceRoot":"","sources":["../../../../../packages/core/src/infrastructure/HarnessConfigFile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HarnessConfigFile.js","sourceRoot":"","sources":["../../../../../packages/core/src/infrastructure/HarnessConfigFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* The adversarial verification step (D3).
|
|
5
|
+
*
|
|
6
|
+
* The reviewer that already exists returns prose. An adversary returns a test,
|
|
7
|
+
* and a test either fails or it does not — one is an argument, the other is
|
|
8
|
+
* evidence.
|
|
9
|
+
*
|
|
10
|
+
* The rule these tests exist to hold is the one the issue names: **the gate
|
|
11
|
+
* stays the only judge.** An adversary can always assert a behaviour the
|
|
12
|
+
* requirement never promised, so a failing probe is a finding and never a
|
|
13
|
+
* verdict.
|
|
14
|
+
*/
|
|
15
|
+
const test = require("node:test");
|
|
16
|
+
const assert = require("node:assert/strict");
|
|
17
|
+
const { shouldProbe, probeFinding, NO_PROBE } = require("../../src/domain/AdversarialProbe");
|
|
18
|
+
// ── when it runs ─────────────────────────────────────────────────────────────
|
|
19
|
+
test("no profile, no probe", () => {
|
|
20
|
+
assert.equal(shouldProbe({ profile: "", gatePassed: true, alreadyProbed: false }), false);
|
|
21
|
+
assert.equal(shouldProbe({ profile: null, gatePassed: true, alreadyProbed: false }), false);
|
|
22
|
+
});
|
|
23
|
+
test("a red gate is not probed", () => {
|
|
24
|
+
// Probing an implementation that already failed tells you nothing you did
|
|
25
|
+
// not know, and costs an agent invocation to learn it.
|
|
26
|
+
assert.equal(shouldProbe({ profile: "adversary", gatePassed: false, alreadyProbed: false }), false);
|
|
27
|
+
});
|
|
28
|
+
test("once per requirement, not once per attempt", () => {
|
|
29
|
+
// The probe is pure insurance; running it on every retry multiplies the cost
|
|
30
|
+
// of the one step in the loop that buys no progress.
|
|
31
|
+
assert.equal(shouldProbe({ profile: "adversary", gatePassed: true, alreadyProbed: true }), false);
|
|
32
|
+
});
|
|
33
|
+
test("configured, green, not yet probed — it runs", () => {
|
|
34
|
+
assert.equal(shouldProbe({ profile: "adversary", gatePassed: true, alreadyProbed: false }), true);
|
|
35
|
+
});
|
|
36
|
+
// ── what a failure produces ──────────────────────────────────────────────────
|
|
37
|
+
test("a failing probe is a warning, never an error", () => {
|
|
38
|
+
// Severity is the whole argument. An error would let the adversary fail a
|
|
39
|
+
// requirement it may simply have misunderstood.
|
|
40
|
+
const finding = probeFinding("REQ-007", {
|
|
41
|
+
ran: true,
|
|
42
|
+
broke: true,
|
|
43
|
+
detail: "expected [] to throw",
|
|
44
|
+
wrote: ["test/EdgeCaseTest.java"],
|
|
45
|
+
});
|
|
46
|
+
assert.equal(finding.severity, "warning");
|
|
47
|
+
assert.equal(finding.code, "adversarial_probe_failed");
|
|
48
|
+
});
|
|
49
|
+
test("the finding admits the probe may be wrong", () => {
|
|
50
|
+
// A finding that asserted the implementation is broken would send people to
|
|
51
|
+
// fix code that is correct. It has to name both readings.
|
|
52
|
+
const finding = probeFinding("REQ-007", {
|
|
53
|
+
ran: true,
|
|
54
|
+
broke: true,
|
|
55
|
+
detail: "",
|
|
56
|
+
wrote: ["test/EdgeCaseTest.java"],
|
|
57
|
+
});
|
|
58
|
+
assert.match(finding.message, /defect the scenario does not cover/);
|
|
59
|
+
assert.match(finding.message, /never promised/);
|
|
60
|
+
assert.match(finding.fix, /the gate is\s+still the judge/);
|
|
61
|
+
});
|
|
62
|
+
test("the finding names the file the adversary wrote", () => {
|
|
63
|
+
const finding = probeFinding("REQ-007", {
|
|
64
|
+
ran: true,
|
|
65
|
+
broke: true,
|
|
66
|
+
detail: "",
|
|
67
|
+
wrote: ["test/A.java", "test/B.java"],
|
|
68
|
+
});
|
|
69
|
+
assert.equal(finding.target, "test/A.java, test/B.java");
|
|
70
|
+
});
|
|
71
|
+
test("a probe that wrote nothing still names the requirement", () => {
|
|
72
|
+
const finding = probeFinding("REQ-007", { ran: true, broke: true, detail: "", wrote: [] });
|
|
73
|
+
assert.equal(finding.target, "REQ-007");
|
|
74
|
+
});
|
|
75
|
+
test("NO_PROBE is inert and frozen", () => {
|
|
76
|
+
// It is shared, so a caller that mutated it would poison every later run.
|
|
77
|
+
assert.equal(NO_PROBE.ran, false);
|
|
78
|
+
assert.equal(NO_PROBE.broke, false);
|
|
79
|
+
assert.ok(Object.isFrozen(NO_PROBE));
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=adversarial-probe.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adversarial-probe.test.js","sourceRoot":"","sources":["../../../../../packages/core/test/unit/adversarial-probe.test.ts"],"names":[],"mappings":"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"}
|