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

umputun / ralphex / 24635767912
84%

Build:
DEFAULT BRANCH: master
Ran 19 Apr 2026 06:13PM UTC
Jobs 1
Files 42
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

19 Apr 2026 06:12PM UTC coverage: 81.839% (-0.2%) from 82.014%
24635767912

push

github

web-flow
fix: preserve progress file on failed run (#288) (#289)

* fix: preserve progress file on failed run (#288)

Close() previously wrote "Completed:" footer on every exit, so a failed
run (auth error, crash, user abort) was indistinguishable from success.
On restart with the same plan, isProgressCompleted detected the footer
and truncated the file, wiping Q&A/iteration history that plan mode
relies on for resume.

Add SetFailed(err) on Logger; when set, Close() writes a sanitized
"Failed: ... - <reason>" footer instead. isProgressCompleted still
matches only "Completed:", so failed files take the append-on-restart
path preserving history.

Wire SetFailed at all executor sites: executePlan (including
ErrUserAborted), runWithWorktree (named-return defer), and runPlanMode
(scoped planCreationErr so follow-on execution failures don't mark
the plan-creation log failed).

sanitizeFailureReason strips control chars and rune-aware truncates
to 200 runes — prevents embedded separator+Completed patterns in
external tool stderr from false-positiving the tail scan.

* fix: address code review findings

- clarify NewLogger, SetFailed, isProgressCompleted godoc to distinguish
  Completed: and Failed: footer semantics
- simplify sanitizeFailureReason using strings.Map and drop redundant
  empty-input branch subsumed by the post-sanitization check
- make TestLogger_SetFailed_TruncatesLongReason actually exercise the
  multibyte truncation boundary with a pure-cyrillic payload, and assert
  rune cap derived from maxFailureReasonRunes
- add TestSanitizeFailureReason_OnlyControlChars covering the
  previously-unreached 'unknown error' fallback path
- expand CLAUDE.md progress-file-fresh-start bullet to cover Failed:
  footer preservation and where SetFailed is invoked

* fix: address Copilot review findings on #289

Copilot flagged 4 consistency/sanitization issues:

- sanitizeFailureReason claimed "any control character" but code only
  handled ASCII C0+DEL. Switch to uni... (continued)

25 of 48 new or added lines in 2 files covered. (52.08%)

4 existing lines in 2 files now uncovered.

6453 of 7885 relevant lines covered (81.84%)

207.23 hits per line

Uncovered Changes

Lines Coverage ∆ File
23
43.0
-0.93% cmd/ralphex/main.go

Coverage Regressions

Lines Coverage ∆ File
2
43.0
-0.93% cmd/ralphex/main.go
2
86.55
-1.17% pkg/web/session.go
Jobs
ID Job ID Ran Files Coverage
1 24635767912.1 19 Apr 2026 06:13PM UTC 42
81.84
GitHub Action Run
Source Files on build 24635767912
  • Tree
  • List 42
  • Changed 3
  • Source Changed 0
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 3344c8f3 on github
  • Prev Build on refs/tags/v0.27.2 (#24539454054)
  • Next Build on master (#24635840620)
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