valent-pipeline 0.19.37 → 0.19.38

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/bin/cli.js CHANGED
@@ -472,7 +472,7 @@ gitCmd
472
472
  .command('commit-phase')
473
473
  .description('Commit everything dirty as one typed conventional commit `{type}({story}): {summary}` with Story/Phase trailers; no-op when clean')
474
474
  .requiredOption('--story <id>', 'Story identifier')
475
- .requiredOption('--phase <phase>', 'Commit phase: spec | red | build | rework | review | evidence | ship | rollover | snapshot')
475
+ .requiredOption('--phase <phase>', 'Commit phase: spec | red | build | rework | review | evidence | ship | rollover | snapshot | sync | backlog')
476
476
  .option('--gate <gate>', 'Gate name for rework commits (static | critic | green | evidence)')
477
477
  .option('-m, --message <summary>', 'Commit summary (defaults per phase)')
478
478
  .option('--root <dir>', 'Project root (defaults to cwd)')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valent-pipeline",
3
- "version": "0.19.37",
3
+ "version": "0.19.38",
4
4
  "description": "v3 multi-agent AI pipeline for software development lifecycle",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1462,6 +1462,18 @@ const backlog = await persistBacklog(
1462
1462
  integration,
1463
1463
  )
1464
1464
 
1465
+ // (B) Commit the backlog dispositions persistBacklog just wrote (M-28/M-19 root). persistBacklog
1466
+ // runs `backlog ship|reject|requeue` (which WRITE pipeline-backlog.yaml) but nothing committed the
1467
+ // result — it rode the NEXT start-story snapshot, and a plan/checkout that ran first (the following
1468
+ // sprint) discarded the uncommitted write, silently reverting shipped stories to `groomed` (the
1469
+ // 2.9/2.10 status-drift). Commit it NOW, on the target, so no later checkout can drop it. commit-phase
1470
+ // is a no-op when the tree is clean (e.g. an all-skip resume where persist wrote nothing).
1471
+ if (gitFlowEnabled && !(backlog && backlog.skipped)) {
1472
+ await runGitStep('sprint', [
1473
+ `node .valent-pipeline/bin/cli.js git commit-phase --story sprint --phase backlog`,
1474
+ ], 'persist-commit', 'Backlog')
1475
+ }
1476
+
1465
1477
  return {
1466
1478
  shipped: results.every((r) => r.shipped),
1467
1479
  stories_shipped: shippedCount,
@@ -53,6 +53,7 @@ export const PHASE_TYPES = {
53
53
  ship: 'chore', // final sweep before merge: post-review rework + QA/judge artifacts
54
54
  rollover: 'chore', // reject/blocked sweep so the branch holds everything for the fix/retry
55
55
  sync: 'chore', // re-ship prep: target merged into the retained branch (sync-story)
56
+ backlog: 'chore', // sprint-end backlog dispositions, committed AT persist so a later plan/checkout cannot discard the uncommitted write (M-28/M-19)
56
57
  };
57
58
 
58
59
  const DEFAULT_SUMMARIES = {
@@ -66,6 +67,7 @@ const DEFAULT_SUMMARIES = {
66
67
  rollover: 'roll over story work',
67
68
  snapshot: 'snapshot uncommitted work before story branch',
68
69
  sync: 'sync target into story branch before re-ship',
70
+ backlog: 'persist sprint backlog dispositions',
69
71
  };
70
72
 
71
73
  function git(cwd, args, opts = {}) {