• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

umputun / ralphex / 25756868348
83%

Build:
DEFAULT BRANCH: master
Ran 12 May 2026 07:21PM UTC
Jobs 1
Files 43
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 May 2026 07:20PM UTC coverage: 82.866% (+0.1%) from 82.751%
25756868348

push

github

web-flow
fix: tolerate plan file rename during execution (#342)

* feat: drop redundant move-plan checkbox from make_plan.txt

The framework already moves the plan to completed/ at end of run via
MovePlanToCompleted, gated by the move_plan_on_completion config option.
The LLM-task move was redundant and the source of mid-run rename risk
when the model wrote a different basename than the file on disk.

Add a tripwire test in pkg/config/prompts_test.go that asserts the
embedded template no longer contains any path-relocation substring
(move this plan, completed/, mv, relocate), catching reworded
re-introductions, not just the verbatim original.

Related to umputun/ralphex#341

* feat: tolerate renamed plan file during execution

When an LLM-driven task renames the plan file mid-run (e.g. dashed
YYYY-MM-DD-<slug>.md becomes compact YYYYMMDD-<slug>.md after a
git mv), the task loop used to spin forever: resolvePlanFilePath
fell back to completed/<exact-basename> only, hasUncompletedTasks
returned true on every ParsePlanFile error including fs.ErrNotExist,
and MovePlanToCompleted's idempotency check missed the renamed
destination.

Three layers of defense, all using the same dashed/compact swap:

- resolvePlanFilePath probes the alternate-format basename in both
  the original directory (in-place rename) and completed/ (moved
  and renamed) after the existing exact-basename probes.
- hasUncompletedTasks distinguishes fs.ErrNotExist from other
  parse errors and returns false when the file is truly gone,
  letting the ALL_TASKS_DONE signal exit the loop. Last-line-of-
  defense, runs after resolvePlanFilePath has exhausted all probes.
- MovePlanToCompleted treats a renamed destination as already-moved
  for idempotency. When the in-place renamed source collides with
  a stale completed/<altBase> copy, surface as already-completed
  and leave both files for manual resolution rather than clobbering.
- pkg/web/loadPlanWithFallback gets the same alt-format fallback
  so... (continued)

95 of 102 new or added lines in 5 files covered. (93.14%)

9 existing lines in 3 files now uncovered.

6974 of 8416 relevant lines covered (82.87%)

223.75 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
78.57
-21.43% pkg/web/plan.go
3
78.88
1.43% pkg/git/service.go

Coverage Regressions

Lines Coverage ∆ File
5
89.73
-1.71% pkg/web/session_manager.go
2
78.57
-21.43% pkg/web/plan.go
2
81.87
1.55% pkg/web/watcher.go
Jobs
ID Job ID Ran Files Coverage
1 25756868348.1 12 May 2026 07:21PM UTC 43
82.87
GitHub Action Run
Source Files on build 25756868348
  • Tree
  • List 43
  • Changed 7
  • Source Changed 0
  • Coverage Changed 7
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 306b1625 on github
  • Prev Build on master (#25690721475)
  • Next Build on master (#25757087520)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc