@rsaglobaltech/specgate 0.14.2 → 0.14.4
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 +52 -0
- package/dist/packages/core/src/application/GeneratePlanUseCase.js +11 -6
- package/dist/packages/core/src/application/GeneratePlanUseCase.js.map +1 -1
- package/dist/packages/core/src/domain/CatalogMerge.js +73 -0
- package/dist/packages/core/src/domain/CatalogMerge.js.map +1 -0
- package/dist/packages/core/src/domain/DerivedMatrix.js +51 -6
- package/dist/packages/core/src/domain/DerivedMatrix.js.map +1 -1
- package/dist/packages/core/src/domain/RequirementPlan.js +21 -2
- package/dist/packages/core/src/domain/RequirementPlan.js.map +1 -1
- package/dist/packages/core/src/domain/TraceMerge.js +161 -0
- package/dist/packages/core/src/domain/TraceMerge.js.map +1 -0
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js +6 -1
- package/dist/scripts/cli/commands/pack/ExpandDomainPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/pack/LintPackCommand.js +16 -4
- package/dist/scripts/cli/commands/pack/LintPackCommand.js.map +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js +1 -1
- package/dist/scripts/cli/commands/quality/ValidateSpecsCommand.js.map +1 -1
- package/dist/scripts/cli/commands/spec/PlanCommand.js +27 -10
- package/dist/scripts/cli/commands/spec/PlanCommand.js.map +1 -1
- package/dist/scripts/cli/commands/specops/SyncCommand.js +60 -5
- package/dist/scripts/cli/commands/specops/SyncCommand.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,58 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.14.4] — 2026-10-08
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
Found when the Golden State packs gained API and screen scenarios for 30
|
|
16
|
+
requirements already delivered:
|
|
17
|
+
|
|
18
|
+
- **A scenario added after delivery is no longer reported as done.** Linked
|
|
19
|
+
by mention, every row of a requirement got the tests that name the
|
|
20
|
+
requirement, so 52 new scenarios inherited the old tests and `status` said
|
|
21
|
+
99/99 done. Once a requirement's tests name one of its scenario ids, each
|
|
22
|
+
scenario is proved only by the tests that name it. A scenario without one
|
|
23
|
+
is a `Draft` row — pending in `status`, `NEEDS_TEST` in `plan`, picked up by
|
|
24
|
+
the harness — while the requirement keeps its status. Delivering it again
|
|
25
|
+
judges those rows as Implemented, so an untested scenario still fails.
|
|
26
|
+
- **`plan` counts a row with no test as not done.**
|
|
27
|
+
- **`plan --json` is complete through a pipe.** It exited before stdout
|
|
28
|
+
drained, so a plan over 64 KB reached the harness cut at 65,536 bytes
|
|
29
|
+
("plan produced invalid JSON").
|
|
30
|
+
|
|
31
|
+
## [0.14.3] — 2026-10-08
|
|
32
|
+
|
|
33
|
+
### Fixed
|
|
34
|
+
|
|
35
|
+
Found running the harness and upgrading packs on the Golden State
|
|
36
|
+
Reinforcing app with 0.14.2:
|
|
37
|
+
|
|
38
|
+
- **`specops sync` brings a pack's changes to the trace fields.** A pack that
|
|
39
|
+
added `depends_on` moved the lock to the new tag while every capability
|
|
40
|
+
spec answered "kept (local edits preserved)": the trace line is where the
|
|
41
|
+
pack's model links and the project's `status` meet, and the text merge kept
|
|
42
|
+
the local line. Trace lines are now merged field by field — what the pack
|
|
43
|
+
changed since the baseline takes the pack's value, everything else keeps
|
|
44
|
+
the project's.
|
|
45
|
+
- **`specops sync` regenerates a generated matrix** instead of merging it.
|
|
46
|
+
It rendered each pack into an empty directory, so a derived project got a
|
|
47
|
+
hand-kept matrix back and a "CONFLICT (no merge base)" on
|
|
48
|
+
`docs/specs/traceability.md`.
|
|
49
|
+
- **Domain catalogs are shared by every pack.** `aggregates.md`, `events.md`,
|
|
50
|
+
`commands.md`, `use-cases.md` and `domain-model.md` held the rows of the
|
|
51
|
+
last pack installed; a pack's rows now replace the rows with the same id
|
|
52
|
+
and join the rest.
|
|
53
|
+
- **`plan` lists every scenario of a requirement once,** and counts a
|
|
54
|
+
requirement done only when all of its scenarios are; it listed the last one
|
|
55
|
+
once per scenario and dropped the others. An artifact cell naming several
|
|
56
|
+
files is checked file by file.
|
|
57
|
+
- **The adoption baseline leaves the plan once delivered.** `test='npm test'`
|
|
58
|
+
and `artifact='existing codebase'` are a command and a description, not
|
|
59
|
+
files, so the baseline was planned — and handed to the harness — forever.
|
|
60
|
+
- **`pack lint` notes a requirement with no scenario.** Sixteen of
|
|
61
|
+
forty-six requirements shipped without one and lint said nothing.
|
|
62
|
+
|
|
11
63
|
## [0.14.2] — 2026-10-07
|
|
12
64
|
|
|
13
65
|
### Fixed
|
|
@@ -108,10 +108,11 @@ class GeneratePlanUseCase {
|
|
|
108
108
|
const ids = items.map((it) => it.requirement);
|
|
109
109
|
const declared = this.graphRepo.readDeclaredDependencies(projectDir);
|
|
110
110
|
const graph = RequirementGraph_1.RequirementGraph.fromDependencies(ids, declared);
|
|
111
|
-
|
|
111
|
+
// A requirement with several scenarios has several items: it is done when
|
|
112
|
+
// all of them are, and the order keeps every one of them, once.
|
|
112
113
|
const isDone = (id) => {
|
|
113
|
-
const
|
|
114
|
-
return
|
|
114
|
+
const its = items.filter((it) => it.requirement === id);
|
|
115
|
+
return its.length > 0 && its.every((it) => it.category === "DONE");
|
|
115
116
|
};
|
|
116
117
|
for (const item of items) {
|
|
117
118
|
const deps = graph.dependsOn[item.requirement] || [];
|
|
@@ -119,10 +120,14 @@ class GeneratePlanUseCase {
|
|
|
119
120
|
item.blocked_by = deps.filter((dep) => !isDone(dep));
|
|
120
121
|
}
|
|
121
122
|
const ordered = [];
|
|
123
|
+
const placed = new Set();
|
|
122
124
|
for (const id of graph.order) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
125
|
+
if (placed.has(id))
|
|
126
|
+
continue;
|
|
127
|
+
placed.add(id);
|
|
128
|
+
for (const item of items)
|
|
129
|
+
if (item.requirement === id)
|
|
130
|
+
ordered.push(item);
|
|
126
131
|
}
|
|
127
132
|
for (const item of items) {
|
|
128
133
|
if (!ordered.includes(item))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeneratePlanUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GeneratePlanUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"GeneratePlanUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/GeneratePlanUseCase.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The domain catalogs a pack writes — `docs/specs/aggregates.md`,
|
|
4
|
+
* `events.md`, `commands.md`, `use-cases.md`, `domain-model.md` — are shared
|
|
5
|
+
* by every pack a project installs. Writing each one whole made the last pack
|
|
6
|
+
* installed win: a project with six packs listed one pack's aggregates.
|
|
7
|
+
* Found building a real product from six packs (golden_app, finding #22).
|
|
8
|
+
*
|
|
9
|
+
* The fix is to treat a catalog as tables of rows keyed by their first
|
|
10
|
+
* column. A pack's rows replace rows with the same id and join the rest;
|
|
11
|
+
* rows other packs wrote stay. Pure: strings in, string out.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.CATALOG_DOCS = void 0;
|
|
15
|
+
exports.mergeCatalog = mergeCatalog;
|
|
16
|
+
const ROW = /^\|.*\|\s*$/;
|
|
17
|
+
const SEPARATOR = /^\|(\s*:?-{3,}:?\s*\|)+\s*$/;
|
|
18
|
+
function tablesIn(lines) {
|
|
19
|
+
const tables = [];
|
|
20
|
+
for (let i = 0; i + 1 < lines.length; i += 1) {
|
|
21
|
+
if (!ROW.test(lines[i]) || !SEPARATOR.test(lines[i + 1]))
|
|
22
|
+
continue;
|
|
23
|
+
let end = i + 2;
|
|
24
|
+
while (end < lines.length && ROW.test(lines[end]))
|
|
25
|
+
end += 1;
|
|
26
|
+
tables.push({ start: i, end, rows: lines.slice(i + 2, end) });
|
|
27
|
+
i = end - 1;
|
|
28
|
+
}
|
|
29
|
+
return tables;
|
|
30
|
+
}
|
|
31
|
+
function idOf(row) {
|
|
32
|
+
return row.split("|")[1]?.trim() ?? "";
|
|
33
|
+
}
|
|
34
|
+
/** `AGG-2` before `AGG-10`. */
|
|
35
|
+
function byId(a, b) {
|
|
36
|
+
return idOf(a).localeCompare(idOf(b), undefined, { numeric: true });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* `fresh` (what this pack renders) with every table's rows merged into the
|
|
40
|
+
* matching table of `existing` (what the project has). Tables are matched by
|
|
41
|
+
* position and header; when the two documents do not have the same tables,
|
|
42
|
+
* `fresh` is returned unchanged, because guessing would be worse.
|
|
43
|
+
*/
|
|
44
|
+
function mergeCatalog(existing, fresh) {
|
|
45
|
+
if (existing === null || existing === fresh)
|
|
46
|
+
return fresh;
|
|
47
|
+
const oldLines = existing.replace(/\r\n/g, "\n").split("\n");
|
|
48
|
+
const newLines = fresh.split("\n");
|
|
49
|
+
const oldTables = tablesIn(oldLines);
|
|
50
|
+
const newTables = tablesIn(newLines);
|
|
51
|
+
if (oldTables.length !== newTables.length ||
|
|
52
|
+
oldTables.some((t, i) => oldLines[t.start] !== newLines[newTables[i].start])) {
|
|
53
|
+
return fresh;
|
|
54
|
+
}
|
|
55
|
+
// Splice from the last table backwards so earlier indexes stay valid.
|
|
56
|
+
for (let i = newTables.length - 1; i >= 0; i -= 1) {
|
|
57
|
+
const mine = newTables[i];
|
|
58
|
+
const ids = new Set(mine.rows.map(idOf).filter((id) => id && id !== "-"));
|
|
59
|
+
const kept = oldTables[i].rows.filter((r) => !ids.has(idOf(r)));
|
|
60
|
+
const rows = [...kept, ...mine.rows].sort(byId);
|
|
61
|
+
newLines.splice(mine.start + 2, mine.rows.length, ...rows);
|
|
62
|
+
}
|
|
63
|
+
return newLines.join("\n");
|
|
64
|
+
}
|
|
65
|
+
/** Where `expand` writes the catalogs every pack in a project shares. */
|
|
66
|
+
exports.CATALOG_DOCS = [
|
|
67
|
+
"docs/specs/domain-model.md",
|
|
68
|
+
"docs/specs/use-cases.md",
|
|
69
|
+
"docs/specs/commands.md",
|
|
70
|
+
"docs/specs/events.md",
|
|
71
|
+
"docs/specs/aggregates.md",
|
|
72
|
+
];
|
|
73
|
+
//# sourceMappingURL=CatalogMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CatalogMerge.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/CatalogMerge.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,7 @@ exports.requirementsIn = requirementsIn;
|
|
|
41
41
|
exports.deriveRows = deriveRows;
|
|
42
42
|
exports.renderDerivedMatrix = renderDerivedMatrix;
|
|
43
43
|
exports.setTraceFields = setTraceFields;
|
|
44
|
+
exports.renderTraceComment = renderTraceComment;
|
|
44
45
|
exports.rowKey = rowKey;
|
|
45
46
|
exports.diffRows = diffRows;
|
|
46
47
|
exports.rowsOf = rowsOf;
|
|
@@ -119,18 +120,63 @@ function linkByMention(trace, id, sources) {
|
|
|
119
120
|
trace.artifact = code.join(", ");
|
|
120
121
|
}
|
|
121
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* One row per tagged scenario, each with the tests that prove *it*.
|
|
125
|
+
*
|
|
126
|
+
* A requirement linked by mention gave every one of its rows the tests that
|
|
127
|
+
* name the requirement, so a scenario added after delivery inherited the old
|
|
128
|
+
* tests and the gate stayed green. Found when a pack gave 30 delivered
|
|
129
|
+
* requirements API and screen scenarios: `status` said 99/99 done with 52 of
|
|
130
|
+
* them untested (golden_app finding #32).
|
|
131
|
+
*
|
|
132
|
+
* Once any test names one of the requirement's scenario ids, the project
|
|
133
|
+
* links by scenario for that requirement, and each row gets the tests that
|
|
134
|
+
* name its scenario — none, if none do. Calibrated per requirement, not per
|
|
135
|
+
* project or file: a requirement whose tests name only the requirement keeps
|
|
136
|
+
* linking that way, and a `test=` written in the trace is never overridden.
|
|
137
|
+
*
|
|
138
|
+
* Such a row is `Draft`, whatever the requirement's status: the scenario has
|
|
139
|
+
* not been started. The requirement keeps its status — what was delivered
|
|
140
|
+
* stays delivered — and the project stays valid, so the work can be done in
|
|
141
|
+
* PRs against a green branch. Nothing is let off: delivering the requirement
|
|
142
|
+
* again (`done`, the harness) judges its Draft rows as Implemented, and an
|
|
143
|
+
* untested scenario fails that gate.
|
|
144
|
+
*/
|
|
145
|
+
function scenarioVariants(trace, scenarios, sources, explicitTest) {
|
|
146
|
+
if (scenarios.length === 0)
|
|
147
|
+
return [trace];
|
|
148
|
+
const naming = scenarios.map((s) => s.scn === "-"
|
|
149
|
+
? []
|
|
150
|
+
: sources.tests
|
|
151
|
+
.filter((f) => mentions(f.source, s.scn))
|
|
152
|
+
.map((f) => f.path)
|
|
153
|
+
.sort());
|
|
154
|
+
const byScenario = !explicitTest && naming.some((n) => n.length > 0);
|
|
155
|
+
return scenarios.map((s, i) => {
|
|
156
|
+
const row = { ...trace, scn: s.scn, feature: s.feature };
|
|
157
|
+
if (byScenario) {
|
|
158
|
+
if (naming[i].length > 0)
|
|
159
|
+
row.test = naming[i].join(", ");
|
|
160
|
+
else {
|
|
161
|
+
delete row.test;
|
|
162
|
+
if (row.status && row.status !== "Deprecated")
|
|
163
|
+
row.status = "Draft";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return row;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
122
169
|
/** The matrix rows the sources imply. */
|
|
123
170
|
function deriveRows(sources) {
|
|
124
171
|
const rows = [];
|
|
125
172
|
for (const req of requirementsIn(sources.spec)) {
|
|
126
173
|
const trace = { ...req.trace };
|
|
174
|
+
const explicitTest = Boolean(trace.test);
|
|
127
175
|
if (!trace.uc && req.title)
|
|
128
176
|
trace.uc = req.title;
|
|
129
177
|
linkByMention(trace, req.id, sources);
|
|
130
178
|
const scenarios = trace.scn || trace.feature ? [] : taggedScenarios(sources.features, req.id);
|
|
131
|
-
const variants = scenarios
|
|
132
|
-
? scenarios.map((s) => ({ ...trace, scn: s.scn, feature: s.feature }))
|
|
133
|
-
: [trace];
|
|
179
|
+
const variants = scenarioVariants(trace, scenarios, sources, explicitTest);
|
|
134
180
|
for (const t of variants) {
|
|
135
181
|
const row = TraceabilityMatrix_1.TraceabilityMatrix.traceRow({ id: req.id, trace: t });
|
|
136
182
|
if (t.depends)
|
|
@@ -153,6 +199,7 @@ function deriveRows(sources) {
|
|
|
153
199
|
if (!req.id || fromSpec.has(req.id))
|
|
154
200
|
continue;
|
|
155
201
|
const trace = { ...(req.trace || {}) };
|
|
202
|
+
const explicitTest = Boolean(trace.test);
|
|
156
203
|
// Archived requirements link the same way: by being named.
|
|
157
204
|
linkByMention(trace, req.id, sources);
|
|
158
205
|
// And by their tagged scenarios, one row each, as spec.md requirements
|
|
@@ -160,9 +207,7 @@ function deriveRows(sources) {
|
|
|
160
207
|
// requirement installed from a pack — or archived from a change — never
|
|
161
208
|
// showed the scenarios that demonstrate it.
|
|
162
209
|
const scenarios = trace.scn || trace.feature ? [] : taggedScenarios(sources.features, req.id);
|
|
163
|
-
const variants = scenarios
|
|
164
|
-
? scenarios.map((sc) => ({ ...trace, scn: sc.scn, feature: sc.feature }))
|
|
165
|
-
: [trace];
|
|
210
|
+
const variants = scenarioVariants(trace, scenarios, sources, explicitTest);
|
|
166
211
|
for (const t of variants) {
|
|
167
212
|
const row = TraceabilityMatrix_1.TraceabilityMatrix.traceRow({ ...req, trace: t });
|
|
168
213
|
if (t.depends)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DerivedMatrix.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/DerivedMatrix.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DerivedMatrix.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/DerivedMatrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,15 @@ class RequirementPlan {
|
|
|
12
12
|
return false;
|
|
13
13
|
return !RequirementPlan.PLACEHOLDER_RE.test(stripped);
|
|
14
14
|
}
|
|
15
|
+
/** `src/a.ts`, `a.test.js, b.test.js` — not `npm test` or `existing codebase`. */
|
|
16
|
+
static looksLikePath(value) {
|
|
17
|
+
const parts = value
|
|
18
|
+
.replace(/`/g, "")
|
|
19
|
+
.split(",")
|
|
20
|
+
.map((p) => p.trim())
|
|
21
|
+
.filter(Boolean);
|
|
22
|
+
return parts.length > 0 && parts.every((p) => !/\s/.test(p) && /[/.]/.test(p));
|
|
23
|
+
}
|
|
15
24
|
static classifyRow(row, fileChecker) {
|
|
16
25
|
const reqId = row.requirement || "";
|
|
17
26
|
if (!/^REQ-\d+/.test(reqId))
|
|
@@ -19,9 +28,15 @@ class RequirementPlan {
|
|
|
19
28
|
const featureExists = fileChecker(row.featureFile || "");
|
|
20
29
|
const techDeclared = RequirementPlan.isMeaningful(row.technicalArtifact);
|
|
21
30
|
const testDeclared = RequirementPlan.isMeaningful(row.testArtifact);
|
|
22
|
-
const techExists = techDeclared && fileChecker(row.technicalArtifact || "");
|
|
23
|
-
const testExists = testDeclared && fileChecker(row.testArtifact || "");
|
|
24
31
|
const isDone = RequirementPlan.DONE_STATUSES.has(row.status || "");
|
|
32
|
+
// `adopt` records its baseline as `test='npm test'` and `artifact='existing
|
|
33
|
+
// codebase'` — a command and a description, not files. Once the
|
|
34
|
+
// requirement is delivered (`done` ran the gate), such a value is not
|
|
35
|
+
// missing evidence; without this the baseline was planned, and handed to
|
|
36
|
+
// the harness, as work forever (golden_app finding #29).
|
|
37
|
+
const present = (value) => fileChecker(value) || (isDone && !RequirementPlan.looksLikePath(value));
|
|
38
|
+
const techExists = techDeclared && present(row.technicalArtifact || "");
|
|
39
|
+
const testExists = testDeclared && present(row.testArtifact || "");
|
|
25
40
|
let category;
|
|
26
41
|
if (!featureExists)
|
|
27
42
|
category = "NEEDS_FEATURE";
|
|
@@ -31,6 +46,10 @@ class RequirementPlan {
|
|
|
31
46
|
category = "NEEDS_EVERYTHING";
|
|
32
47
|
else if (testDeclared && !testExists)
|
|
33
48
|
category = "NEEDS_TEST";
|
|
49
|
+
// A scenario with no test is not done, whatever the requirement's status:
|
|
50
|
+
// it is how a scenario added after delivery shows up (golden_app #32).
|
|
51
|
+
else if (!testDeclared)
|
|
52
|
+
category = "NEEDS_TEST";
|
|
34
53
|
else if (techDeclared && !techExists)
|
|
35
54
|
category = "NEEDS_IMPLEMENTATION";
|
|
36
55
|
else if (!isDone)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":";;;AAmDA,MAAa,eAAe;IACnB,MAAM,CAAU,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;IACjF,MAAM,CAAU,cAAc,GAAG,0BAA0B,CAAC;IAE5D,MAAM,CAAC,YAAY,CAAC,KAAU;QACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEM,MAAM,CAAC,WAAW,CACvB,GAAiB,EACjB,WAAyC;QAEzC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,
|
|
1
|
+
{"version":3,"file":"RequirementPlan.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/RequirementPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reconciling a file that carries `csda:trace` comments.
|
|
4
|
+
*
|
|
5
|
+
* A trace comment is one line holding fields with two owners: the pack writes
|
|
6
|
+
* the model links (`uc`, `cmd`, `agg`, `evt`, `context`, `depends`, `kind`),
|
|
7
|
+
* and the project writes its progress (`status` from `done`, `test` and
|
|
8
|
+
* `artifact` from `req link`). Merged as text, that line is where both sides
|
|
9
|
+
* change, so sync either conflicted on it or — when the pack's template text
|
|
10
|
+
* had not moved — kept the local line and silently dropped what the pack
|
|
11
|
+
* changed. Found building a real product from packs (golden_app, finding
|
|
12
|
+
* #24): a pack added `depends_on`, `sync` moved the lock to the new tag, and
|
|
13
|
+
* no requirement ever saw the dependency.
|
|
14
|
+
*
|
|
15
|
+
* So the trace lines are taken out of the text merge and merged field by
|
|
16
|
+
* field: a field the pack changed since the baseline takes the pack's value;
|
|
17
|
+
* every other field keeps the project's. The rest of the file goes through
|
|
18
|
+
* the ordinary three-way merge. Pure, like `reconcile`.
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.PACK_TRACE_KEYS = void 0;
|
|
22
|
+
exports.maskTraces = maskTraces;
|
|
23
|
+
exports.mergeTraceFields = mergeTraceFields;
|
|
24
|
+
exports.reconcileTraced = reconcileTraced;
|
|
25
|
+
const SpecParser_1 = require("./SpecParser");
|
|
26
|
+
const DerivedMatrix_1 = require("./DerivedMatrix");
|
|
27
|
+
const Reconciliation_1 = require("./Reconciliation");
|
|
28
|
+
const HEADING = /^#{1,6}\s+(?:Requirement:\s*)?(REQ-[A-Za-z0-9.]+)?/;
|
|
29
|
+
const TRACE = /<!--\s*csda:trace\b.*?-->/;
|
|
30
|
+
const MASK = "<!-- csda:trace -->";
|
|
31
|
+
/** The fields a pack writes into a trace comment; the rest belong to the project. */
|
|
32
|
+
exports.PACK_TRACE_KEYS = new Set([
|
|
33
|
+
"uc",
|
|
34
|
+
"cmd",
|
|
35
|
+
"qry",
|
|
36
|
+
"agg",
|
|
37
|
+
"evt",
|
|
38
|
+
"context",
|
|
39
|
+
"depends",
|
|
40
|
+
"kind",
|
|
41
|
+
]);
|
|
42
|
+
function hasTrace(text) {
|
|
43
|
+
return text !== null && TRACE.test(text);
|
|
44
|
+
}
|
|
45
|
+
/** Each trace line replaced by a bare marker, so the text merge never sees fields. */
|
|
46
|
+
function maskTraces(text) {
|
|
47
|
+
return text
|
|
48
|
+
.split("\n")
|
|
49
|
+
.map((line) => line.replace(TRACE, MASK))
|
|
50
|
+
.join("\n");
|
|
51
|
+
}
|
|
52
|
+
/** Requirement id → its first trace line, as written. */
|
|
53
|
+
function traceLines(text) {
|
|
54
|
+
const out = new Map();
|
|
55
|
+
if (text === null)
|
|
56
|
+
return out;
|
|
57
|
+
let current = null;
|
|
58
|
+
for (const line of text.split("\n")) {
|
|
59
|
+
const h = HEADING.exec(line.trim());
|
|
60
|
+
if (h) {
|
|
61
|
+
current = h[1] || null;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const t = TRACE.exec(line);
|
|
65
|
+
if (t && current && !out.has(current))
|
|
66
|
+
out.set(current, t[0]);
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
function fieldsOf(line) {
|
|
71
|
+
return line === undefined ? undefined : (0, SpecParser_1.parseTraceComment)(line);
|
|
72
|
+
}
|
|
73
|
+
function sameFields(a, b) {
|
|
74
|
+
const ka = Object.keys(a);
|
|
75
|
+
return ka.length === Object.keys(b).length && ka.every((k) => a[k] === b[k]);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* One requirement's fields after the pack moved from `base` to `incoming`
|
|
79
|
+
* while the project held `local`. With no base, only the pack's own keys are
|
|
80
|
+
* taken from `incoming`, since there is nothing to say what the pack changed.
|
|
81
|
+
*/
|
|
82
|
+
function mergeTraceFields(base, local, incoming) {
|
|
83
|
+
if (local === undefined)
|
|
84
|
+
return { ...(incoming || {}) };
|
|
85
|
+
const out = { ...local };
|
|
86
|
+
const theirs = incoming || {};
|
|
87
|
+
if (base === undefined) {
|
|
88
|
+
for (const [k, v] of Object.entries(theirs))
|
|
89
|
+
if (exports.PACK_TRACE_KEYS.has(k))
|
|
90
|
+
out[k] = v;
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
for (const k of new Set([...Object.keys(base), ...Object.keys(theirs)])) {
|
|
94
|
+
if (theirs[k] === base[k])
|
|
95
|
+
continue;
|
|
96
|
+
if (theirs[k] === undefined)
|
|
97
|
+
delete out[k];
|
|
98
|
+
else
|
|
99
|
+
out[k] = theirs[k];
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
/** Put the merged trace lines back where the masked text has markers. */
|
|
104
|
+
function rehydrate(masked, baseLines, localLines, incomingLines, baseKnown) {
|
|
105
|
+
const lines = masked.split("\n");
|
|
106
|
+
let current = null;
|
|
107
|
+
const placed = new Set();
|
|
108
|
+
const out = [];
|
|
109
|
+
for (const line of lines) {
|
|
110
|
+
const h = HEADING.exec(line.trim());
|
|
111
|
+
if (h)
|
|
112
|
+
current = h[1] || null;
|
|
113
|
+
if (!line.includes(MASK) || !current || placed.has(current)) {
|
|
114
|
+
out.push(line);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
placed.add(current);
|
|
118
|
+
const local = localLines.get(current);
|
|
119
|
+
const incoming = incomingLines.get(current);
|
|
120
|
+
const fields = mergeTraceFields(baseKnown ? fieldsOf(baseLines.get(current)) || {} : undefined, fieldsOf(local), fieldsOf(incoming));
|
|
121
|
+
// Keep a line as it was written when its fields did not change, so a
|
|
122
|
+
// sync that changes nothing leaves no diff.
|
|
123
|
+
const verbatim = [local, incoming].find((l) => l !== undefined && sameFields(fieldsOf(l), fields));
|
|
124
|
+
const rendered = verbatim ?? (0, DerivedMatrix_1.renderTraceComment)(fields);
|
|
125
|
+
if (rendered !== null)
|
|
126
|
+
out.push(line.replace(MASK, rendered));
|
|
127
|
+
}
|
|
128
|
+
return out.join("\n");
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* `reconcile`, with `csda:trace` lines merged field by field. Files without
|
|
132
|
+
* trace comments, `--force`, and genuine text conflicts take the plain path.
|
|
133
|
+
*/
|
|
134
|
+
function reconcileTraced(base, local, incoming, opts, merge) {
|
|
135
|
+
if (local === null || opts.force || !(hasTrace(local) || hasTrace(incoming))) {
|
|
136
|
+
return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
|
|
137
|
+
}
|
|
138
|
+
if (local === incoming)
|
|
139
|
+
return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
|
|
140
|
+
const maskedLocal = maskTraces(local);
|
|
141
|
+
const maskedIncoming = maskTraces(incoming);
|
|
142
|
+
const maskedBase = base === null ? null : maskTraces(base);
|
|
143
|
+
// No baseline and only trace fields differ: the pack's own keys are safe to
|
|
144
|
+
// take; refusing would leave the project on the old model forever.
|
|
145
|
+
const text = maskedBase === null && maskedLocal === maskedIncoming
|
|
146
|
+
? { outcome: "kept", write: null, baselineContent: null }
|
|
147
|
+
: (0, Reconciliation_1.reconcile)(maskedBase, maskedLocal, maskedIncoming, opts, merge);
|
|
148
|
+
if (Reconciliation_1.CONFLICT_OUTCOMES.has(text.outcome))
|
|
149
|
+
return (0, Reconciliation_1.reconcile)(base, local, incoming, opts, merge);
|
|
150
|
+
const final = rehydrate(text.write ?? maskedLocal, traceLines(base), traceLines(local), traceLines(incoming), base !== null);
|
|
151
|
+
if (final === local) {
|
|
152
|
+
return {
|
|
153
|
+
outcome: text.outcome === "kept" ? "kept" : "unchanged",
|
|
154
|
+
write: null,
|
|
155
|
+
baselineContent: incoming,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const outcome = text.outcome === "updated" ? "updated" : "merged";
|
|
159
|
+
return { outcome, write: final, baselineContent: incoming };
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=TraceMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TraceMerge.js","sourceRoot":"","sources":["../../../../../packages/core/src/domain/TraceMerge.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,7 @@ const manifest_1 = require("../../../specops/manifest");
|
|
|
58
58
|
const command_1 = require("../../../lib/command");
|
|
59
59
|
const project_root_1 = require("../../../lib/project-root");
|
|
60
60
|
const derived_writes_1 = require("../../../lib/derived-writes");
|
|
61
|
+
const CatalogMerge_1 = require("../../../../packages/core/src/domain/CatalogMerge");
|
|
61
62
|
const MatrixCommand_1 = require("../spec/MatrixCommand");
|
|
62
63
|
const PACKAGE_VERSION = (() => {
|
|
63
64
|
try {
|
|
@@ -300,8 +301,12 @@ function renderDomainDocs(pack, projectDir, dryRun) {
|
|
|
300
301
|
].join("\n"),
|
|
301
302
|
],
|
|
302
303
|
]);
|
|
304
|
+
// Shared by every pack in the project: this pack's rows join the rows other
|
|
305
|
+
// packs wrote instead of replacing the file (golden_app finding #22).
|
|
303
306
|
for (const [target, content] of docs.entries()) {
|
|
304
|
-
|
|
307
|
+
const file = (0, DiskPackRepository_1.safeResolve)(projectDir, target);
|
|
308
|
+
const existing = fs.existsSync(file) ? fs.readFileSync(file, "utf8") : null;
|
|
309
|
+
(0, DiskPackRepository_1.writeFile)(file, (0, CatalogMerge_1.mergeCatalog)(existing, content), dryRun);
|
|
305
310
|
}
|
|
306
311
|
}
|
|
307
312
|
/**
|