valent-pipeline 0.19.44 → 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valent-pipeline",
3
- "version": "0.19.44",
3
+ "version": "0.19.45",
4
4
  "description": "v3 multi-agent AI pipeline for software development lifecycle",
5
5
  "type": "module",
6
6
  "bin": {
@@ -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 acceptance case ids, read early so the run resolver can bind to the suite that actually
184
- // carries them when a project multiplexes suites under one label (HARNESS-GAPS 2026-06-18 Gap 2).
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
- if (Array.isArray(m?.cases)) requiredCaseIds = m.cases.filter((c) => c?.kind === 'acceptance' && c?.required !== false && c?.id).map((c) => c.id);
194
+ requiredCaseIds = requiredCaseIdsForRun(m?.cases);
192
195
  }
193
196
  } catch { requiredCaseIds = []; }
194
197
 
Binary file