@ai-dev-methodologies/rlp-desk 0.14.4 → 0.14.5

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": "@ai-dev-methodologies/rlp-desk",
3
- "version": "0.14.4",
3
+ "version": "0.14.5",
4
4
  "description": "Fresh-context iterative loops for Claude Code — autonomous task completion with independent verification",
5
5
  "scripts": {
6
6
  "postinstall": "node scripts/postinstall.js",
@@ -1508,6 +1508,28 @@ _verifier_pane_has_verdict() {
1508
1508
  return 1
1509
1509
  }
1510
1510
 
1511
+ # v0.14.5 Bug Report #6 Fix-M (worker mirror of Fix-A/Fix-D):
1512
+ # Worker (claude sonnet 1m) writes commit + iter-signal.json verify signal
1513
+ # then claude CLI parks at its idle prompt. check_no_progress observes
1514
+ # byte-stasis on the worker pane and would BLOCK after 600s even though
1515
+ # the signal is on disk. When the pane is the worker pane AND a valid
1516
+ # iter-signal is on disk, defer to the harvest step (poll_for_signal in
1517
+ # run_single_worker) instead of escalating BLOCKED.
1518
+ _worker_pane_has_signal() {
1519
+ local pane_id="$1"
1520
+ [[ -n "${WORKER_PANE:-}" && "$pane_id" == "${WORKER_PANE}" ]] || return 1
1521
+ [[ -n "${SIGNAL_FILE:-}" && -s "$SIGNAL_FILE" ]] || return 1
1522
+ jq -e . "$SIGNAL_FILE" >/dev/null 2>&1 || return 1
1523
+ local iter_field us_field status_field
1524
+ iter_field=$(jq -r '.iteration // empty' "$SIGNAL_FILE" 2>/dev/null)
1525
+ us_field=$(jq -r '.us_id // empty' "$SIGNAL_FILE" 2>/dev/null)
1526
+ status_field=$(jq -r '.status // empty' "$SIGNAL_FILE" 2>/dev/null)
1527
+ [[ "$iter_field" =~ ^[0-9]+$ ]] || return 1
1528
+ [[ -n "$us_field" ]] || return 1
1529
+ [[ "$status_field" == "verify" || "$status_field" == "verify_partial" ]] || return 1
1530
+ return 0
1531
+ }
1532
+
1511
1533
  # v5.7 §4.17 (codex Critic HIGH): generic no-progress timeout — independent
1512
1534
  # of prompt detection. Closes the gap where an undetected prompt or alive-
1513
1535
  # but-frozen Worker can bypass Layer 4 and infinite-wait.
@@ -1534,6 +1556,16 @@ check_no_progress() {
1534
1556
  PANE_LAST_CHANGE_TS[$pane_id]=$now
1535
1557
  return 0
1536
1558
  fi
1559
+ # v0.14.5 Bug Report #6 Fix-M: claude worker finishes (commit + iter-signal
1560
+ # write) then parks at its idle prompt. byte-stasis would BLOCK after 600s
1561
+ # even though the signal is on disk. Worker mirror of the verifier branch
1562
+ # above — defer to poll_for_signal harvest when SIGNAL_FILE is valid.
1563
+ if _worker_pane_has_signal "$pane_id"; then
1564
+ PANE_LAST_CONTENT_FOR_PROGRESS[$pane_id]="$capture"
1565
+ PANE_LAST_CHANGE_TS[$pane_id]=$now
1566
+ log_debug "[GOV] iter=${ITERATION:-0} worker_progress_check=signal_present pane=$pane_id signal=${SIGNAL_FILE}"
1567
+ return 0
1568
+ fi
1537
1569
  # v0.14.2: root-cause tracing for Bug Report #4. When the watcher is
1538
1570
  # examining a verifier pane that does NOT have a verdict yet, log once
1539
1571
  # per byte-stasis transition so post-mortem can tell whether the