valent-pipeline 0.19.43 → 0.19.45
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/package.json
CHANGED
|
@@ -35,6 +35,7 @@ Write `stories/{story_id}/output/qa-test-spec.md` so QA-B can prove the fix:
|
|
|
35
35
|
- **Affected-AC tests:** the existing test cases for the violated AC(s) (reference the source story's `qa-test-spec.md`) — they must still pass.
|
|
36
36
|
- **Real-dependency evidence:** for each active profile, keep the profile's mandatory black-box check (live HTTP + real DB for `api`, real browser for `ui`, etc.) — a fix is only proven against the real boundary, not a mock. The defect class that caused the REJECT (CORS, serialization, auth header, wire-format) lives exactly there.
|
|
37
37
|
- Do NOT invent broad new coverage — the point is to prove the defect is gone and nothing regressed.
|
|
38
|
+
- **Embed each case ID in its test NAME** (same rule as `steps/qa-a/write-acceptance-tests.md` / `steps/bend/write-tests.md`): every regression + affected-AC case carries a `TC-…` id, and the test title MUST contain it — `it('TC-B1: P95 percentile uses the right rank', …)`. `check-spec-conformance` + `trace check` locate each spec'd case by its id in the EXECUTED junit test name; a case id that appears in no test name reads as a MISSING case and fails the evidence gate. State this explicitly in the spec so the dev embeds the ids up front — it is the recurring first-pass miss on bug fixes (a wasted rework cycle every time).
|
|
38
39
|
- Also write the spec manifest `stories/{story_id}/output/qa-test-spec.manifest.json` (same shape as `steps/qa-a/write-spec.md` Step 10, including each case's `ac` mapping to the minimal reqs manifest) — the spec-conformance and trace gates run on bug items too.
|
|
39
40
|
|
|
40
41
|
## Step 4: Hand off
|
package/src/commands/evidence.js
CHANGED
|
@@ -16,7 +16,7 @@ import { dirname, join, isAbsolute } from 'path';
|
|
|
16
16
|
import { randomBytes } from 'crypto';
|
|
17
17
|
import { parse as parseYaml } from 'yaml';
|
|
18
18
|
import {
|
|
19
|
-
runEvidence, pinGate, formatRunTrailer, formatRunDigest, resolveRoot, evidenceDir, latestRun, resolveRunForAssert, detectLabelMultiplex, latestPins,
|
|
19
|
+
runEvidence, pinGate, formatRunTrailer, formatRunDigest, resolveRoot, evidenceDir, latestRun, resolveRunForAssert, requiredCaseIdsForRun, detectLabelMultiplex, latestPins,
|
|
20
20
|
verifyIntegrity, assertRules, assertRedRules, pinSourceDelta, snapshotFiles, buildProof, utcCompact,
|
|
21
21
|
latestAssert, collectFailingCases, authenticateBaseline, verifyShipEvidence, sha256Hex,
|
|
22
22
|
validStoryId, recordStageResults,
|
|
@@ -180,15 +180,18 @@ export async function evidenceAssertCmd(options) {
|
|
|
180
180
|
process.exit(2);
|
|
181
181
|
}
|
|
182
182
|
|
|
183
|
-
// Required
|
|
184
|
-
//
|
|
183
|
+
// Required case ids, read early so the run resolver can bind to the suite that actually carries them
|
|
184
|
+
// when a project multiplexes suites under one label (HARNESS-GAPS 2026-06-18 Gap 2). Prefers
|
|
185
|
+
// acceptance-tagged cases (normal stories) but falls back to all required id'd cases for bug-fix
|
|
186
|
+
// manifests (regression cases carry no `kind`) — else requiredCaseIds is empty and the resolver
|
|
187
|
+
// binds to the newest full-suite run, false-rejecting a clean bug fix on the count check.
|
|
185
188
|
// The full manifest is re-read below for the count/skips rules.
|
|
186
189
|
let requiredCaseIds = [];
|
|
187
190
|
try {
|
|
188
191
|
const mp = options.manifest ? abs(options.manifest) : join(root, 'stories', story, 'output', 'qa-test-spec.manifest.json');
|
|
189
192
|
if (existsSync(mp)) {
|
|
190
193
|
const m = JSON.parse(readFileSync(mp, 'utf-8'));
|
|
191
|
-
|
|
194
|
+
requiredCaseIds = requiredCaseIdsForRun(m?.cases);
|
|
192
195
|
}
|
|
193
196
|
} catch { requiredCaseIds = []; }
|
|
194
197
|
|
package/src/lib/evidence.js
CHANGED
|
Binary file
|