@rsaglobaltech/specgate 0.14.4 → 0.14.5
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
CHANGED
|
@@ -8,6 +8,16 @@ The release process is in [`docs/release-process.md`](docs/release-process.md).
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.14.5] — 2026-10-08
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- **The pack drift gate checks every scenario of a requirement.** It compared
|
|
16
|
+
a requirement's first matrix row with the pack's first scenario, which was
|
|
17
|
+
right only while each requirement had one: once the Golden State packs gave
|
|
18
|
+
requirements API scenarios, `validate --against-lock` reported 30 of them
|
|
19
|
+
as drifted while every scenario was in place.
|
|
20
|
+
|
|
11
21
|
## [0.14.4] — 2026-10-08
|
|
12
22
|
|
|
13
23
|
### Fixed
|
|
@@ -93,30 +93,36 @@ class CheckAgainstLockUseCase {
|
|
|
93
93
|
});
|
|
94
94
|
continue;
|
|
95
95
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
96
|
+
// Every scenario the pack declares for the requirement must be in the
|
|
97
|
+
// project, at the feature the pack names. Comparing the requirement's
|
|
98
|
+
// first row with the pack's first scenario was right only while each
|
|
99
|
+
// requirement had one: with several, the order of the rows decided, and
|
|
100
|
+
// a pack that added `api_…` scenarios failed every one of them as
|
|
101
|
+
// drifted while all were present (golden_app finding #34).
|
|
102
|
+
const drift = (message) => diagnostics.push({
|
|
103
|
+
severity: "error",
|
|
104
|
+
code: "pack_requirement_drifted",
|
|
105
|
+
message,
|
|
106
|
+
target: id,
|
|
107
|
+
fix: `Reconcile with \`specgate specops diff --pack ${entry.pack_id} --as-change\`, or accept the local decision by recording it in a change.`,
|
|
108
|
+
});
|
|
109
|
+
const rows = matrixRows.filter((r) => bare(r.requirement).toUpperCase() === String(id).toUpperCase());
|
|
110
|
+
const linked = rows.filter((r) => !isEmpty(r.scenarioId));
|
|
111
|
+
for (const scn of scenarios.get(id) || []) {
|
|
112
|
+
if (!scn.id)
|
|
113
|
+
continue;
|
|
114
|
+
const match = rows.find((r) => bare(r.scenarioId) === scn.id);
|
|
115
|
+
if (!match) {
|
|
116
|
+
// A requirement the project has not linked to any scenario yet is
|
|
117
|
+
// not drift; one linked elsewhere is.
|
|
118
|
+
if (linked.length > 0) {
|
|
119
|
+
drift(`${label} points at scenario ${linked.map((r) => bare(r.scenarioId)).join(", ")}, but the pack declares ${scn.id}.`);
|
|
120
|
+
}
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (scn.target && !isEmpty(match.featureFile) && bare(match.featureFile) !== scn.target) {
|
|
124
|
+
drift(`${label} points at feature ${bare(match.featureFile)} for ${scn.id}, but the pack declares ${scn.target}.`);
|
|
125
|
+
}
|
|
120
126
|
}
|
|
121
127
|
}
|
|
122
128
|
const local = matrixRows.filter((r) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckAgainstLockUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/CheckAgainstLockUseCase.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CheckAgainstLockUseCase.js","sourceRoot":"","sources":["../../../../../packages/core/src/application/CheckAgainstLockUseCase.ts"],"names":[],"mappings":"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"}
|