amsd-pipeline-workflow 0.1.25 → 0.1.26

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.
@@ -43,12 +43,27 @@ ruled=false
43
43
  # the rung attribution.
44
44
  retry_count="${ATTEMPT_RETRY:-}"; STORY_MODEL="${ATTEMPT_MODEL:-}"
45
45
  _err="$TMPDIR/attempt-verify.log"; _out="$TMPDIR/attempt-output.log"; : > "$_out"
46
- stage=""
46
+ stage=""; plan_note=""
47
+ # THE STRUCTURED NO-CHANGE ROUTE (run 11, 2026-10-21): verify_story_deliverables excuses "all declared files unchanged" only through the
48
+ # pipeline's prose handler (the consumer's change line is exactly "none"). A consumer whose fix sites ALL say changeRequired:false
49
+ # (generator/plan-no-change-structured.js) has had its plan carried out by a Writer that edited nothing. Only that one failure class
50
+ # (STORY_REJECTION_KEY unchanged-all:) is excused — a missing file or any other finding is not.
51
+ planned_no_change() {
52
+ case "${STORY_REJECTION_KEY:-}" in unchanged-all:*) ;; *) return 1 ;; esac
53
+ local _p _sj
54
+ for _p in "${PRD_FILE:-}" "${MAIN_PRD_FILE:-}"; do
55
+ [ -n "$_p" ] && [ -f "$_p" ] || continue
56
+ _sj=$("$NODE_BIN" "$(dirname "${BASH_SOURCE[0]}")/../generator/plan-no-change-structured.js" "$_p" "$STORY" "$EPAM_CODELINE" 2>/dev/null) || continue
57
+ plan_note="the story's plan gives ${EPAM_CODELINE} no change ($(printf '%s' "$_sj" | jq -r '.reason // empty')) — its declared files are unchanged, as planned"
58
+ STORY_REJECTION_KEY=""; return 0
59
+ done
60
+ return 1
61
+ }
47
62
  complete_codeline_manifests "$PROJECT_ROOT" >/dev/null 2>&1
48
63
  for s in deliverables typecheck lint tests; do
49
64
  : > "$_err"
50
65
  case "$s" in
51
- deliverables) verify_story_deliverables "$STORY" 2>"$_err" ;;
66
+ deliverables) verify_story_deliverables "$STORY" 2>"$_err" || planned_no_change ;;
52
67
  typecheck) run_tsc_verification "$STORY" "$_out" 2>"$_err" ;;
53
68
  lint) run_repo_lint_verification "$STORY" "$_out" 2>"$_err" ;;
54
69
  tests) run_external_verification "$STORY" "$_out" 2>"$_err" \
@@ -83,6 +98,6 @@ fi
83
98
  # a passing attempt ends this writer process; a failing one leaves its globals to the failure handling and the next attempt
84
99
  if [ "$passed" = true ]; then wp_clear "$STATE"; else wp_save "$STATE/writer-process.json"; fi
85
100
  jq -cn --argjson p "$passed" --argjson ruled "$ruled" --arg st "$stage" --argjson d "$det" --arg vf "$VERIFICATION_FAILURE" --rawfile m "$_err" \
86
- --argjson s "$same" --arg k "$([ "$passed" = false ] && printf '%s' "${STORY_REJECTION_KEY:-}")" --arg t "${LAST_TEST_CMD:-}" \
101
+ --arg pn "$plan_note" --argjson s "$same" --arg k "$([ "$passed" = false ] && printf '%s' "${STORY_REJECTION_KEY:-}")" --arg t "${LAST_TEST_CMD:-}" \
87
102
  '{passed:$p, stage:(if $st == "" then null else $st end), deterministic:$d, verificationFailure:$vf, message:$m,
88
- sameViolation:$s, rejectionKey:$k, testCommand:$t, ruledEnvironmental:$ruled}'
103
+ planNote:$pn, sameViolation:$s, rejectionKey:$k, testCommand:$t, ruledEnvironmental:$ruled}'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "amsd-pipeline-workflow",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "The AMSD pipeline as Claude workflows. Installed by the amsd-pipeline installer: install.sh --workflows",
5
5
  "license": "UNLICENSED",
6
6
  "bin": {