valent-pipeline 0.19.36 → 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
|
@@ -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,
|
|
@@ -1875,6 +1887,21 @@ async function runStory(story) {
|
|
|
1875
1887
|
await runGitStep(storyId, [
|
|
1876
1888
|
`node .valent-pipeline/bin/cli.js git start-story --story ${storyId}${gitFlags}`,
|
|
1877
1889
|
], 'start', 'QA')
|
|
1890
|
+
// Cross-lane pin coherence on the inline-fix revalidation path (2026-06-19, M-28): the blocking
|
|
1891
|
+
// bug's fix already merged INTO this story branch (ship-story --into) and was CRITIC-approved in
|
|
1892
|
+
// its OWN lane — but that merge advanced the story tip PAST the story's last critic pin. The
|
|
1893
|
+
// revalidation runs no CRITIC (by design — the fix was already reviewed) and `commitAndRepin`
|
|
1894
|
+
// no-ops here (no devTasks), so the STALE story critic pin would trip `pins:critic`
|
|
1895
|
+
// (evidence assert --require-pins critic) against the merged tip and FALSE-VOID a genuine SHIP —
|
|
1896
|
+
// exactly the 2.11 reject. Re-pin critic so the pin records the cross-lane coverage that
|
|
1897
|
+
// genuinely exists (story code @ the old pin + the bug fix @ its lane's own approving pin); the
|
|
1898
|
+
// bug only merged here because it SHIPPED through its own CRITIC+JUDGE gates, and this no-rebuild
|
|
1899
|
+
// path introduces no new source, so the coverage is real. The v3 source-delta check still
|
|
1900
|
+
// fails-closed on any genuine un-reviewed change after this point. This is the "revalidation
|
|
1901
|
+
// legitimately re-pins" case the pin-coherence doctrine already anticipates (evidence.js).
|
|
1902
|
+
await runGitStep(storyId, [
|
|
1903
|
+
`node .valent-pipeline/bin/cli.js evidence pin --story ${storyId} --gate critic`,
|
|
1904
|
+
], 'reval-repin-critic', 'QA')
|
|
1878
1905
|
}
|
|
1879
1906
|
await spawn('QA-B', 'qa-b.md',
|
|
1880
1907
|
'This is a RE-VALIDATION of a previously-rejected story whose blocking bug has since been fixed and ' +
|
package/src/lib/git-flow.js
CHANGED
|
@@ -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 = {}) {
|