valent-pipeline 0.19.52 → 0.19.53

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.52",
3
+ "version": "0.19.53",
4
4
  "description": "v3 multi-agent AI pipeline for software development lifecycle",
5
5
  "type": "module",
6
6
  "bin": {
@@ -2115,10 +2115,21 @@ async function runStory(story) {
2115
2115
  // the round-trip cost and the rework-cycle count. Same preCriticChecks the gate runs; the
2116
2116
  // skip-waiver / spec-conformance rules are always named. Static + args only => journal-replay safe.
2117
2117
  const preHandoffStaticCmds = preCriticChecks.map((c) => subCmd(c, storyId, effectiveWorkspaces))
2118
- const preHandoffNote = (preHandoffStaticCmds.length || specConformanceEnabled || traceCheckEnabled)
2118
+ // Fix #3 (rework-reduction, 2026-06-24): the pre-CRITIC gate ALSO runs spec-conformance + trace check
2119
+ // (runPreCriticGate below), but the dev was only TOLD the rules, never handed the commands to run them.
2120
+ // The field's `rework after static` round-trips were test files with a dropped assertion target / a
2121
+ // missing AC trace-id / a mis-placed waiver — all catchable by running these two CLIs in the build turn.
2122
+ // Thread the SAME commands the gate runs into the self-gate so the dev catches them in-context (no
2123
+ // re-spawn). Static + args only => journal-replay safe.
2124
+ const preHandoffSpecCmds = [
2125
+ ...(specConformanceEnabled ? [`node .valent-pipeline/bin/cli.js check-spec-conformance --story ${storyId}`] : []),
2126
+ ...(traceCheckEnabled ? [`node .valent-pipeline/bin/cli.js trace check --story ${storyId}`] : []),
2127
+ ]
2128
+ const preHandoffNote = (preHandoffStaticCmds.length || preHandoffSpecCmds.length)
2119
2129
  ? '\n\n## Definition of done — run these BEFORE you write your handoff\n' +
2120
2130
  'The deterministic pre-CRITIC gate runs the moment you hand off; a failure costs a full rework cycle (a re-spawn). Pass them first-try:\n' +
2121
2131
  preHandoffStaticCmds.map((c) => ` - \`${c}\` — must exit 0 (lint / type / static).\n`).join('') +
2132
+ preHandoffSpecCmds.map((c) => ` - \`${c}\` — must exit 0 (spec-conformance / trace: catches a dropped assertion target, an omitted spec\'d case, a missing AC trace-id, or an un-waived skip BEFORE the gate round-trips you).\n`).join('') +
2122
2133
  ' - Every deliberately skipped or pending test MUST carry an inline `// valent-waiver: <reason>` (on the skip line or in the test name) — an un-waived skip is rejected by the spec-conformance check.\n' +
2123
2134
  ' - Do NOT drop a spec\'d assertion target or omit a spec\'d case to make a suite pass.\n' +
2124
2135
  'Run them locally, fix EVERYTHING they flag, and only then write your handoff — this is part of the build, not the gate\'s job to find for you.'