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

umputun / ralphex / 32404424157
86%

Build:
DEFAULT BRANCH: master
Ran 20 Aug 2026 06:41PM UTC
Jobs 1
Files 55
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

20 Aug 2026 06:39PM UTC coverage: 84.191% (+0.03%) from 84.166%
32404424157

push

github

web-flow
fix: restrict the completed-plan archive commit to the plan paths (#437)

* fix: restrict the completed-plan archive commit to the plan paths

MovePlanToCompleted ended in a bare `git commit -m`, which takes the whole
index. In worktree mode this call runs against the user's main checkout via
MainGitSvc, and that checkout stays usable for the length of the run - so
anything staged there while the run was in progress was committed under
"move completed plan: ...". The clean-tree guard in preparePlanBranch only
runs once, at worktree creation, and cannot see staging that happens later.

Switch to the pathspec-restricted commitFiles, which already exists on the
backend and lost its only production caller in #260. Unrelated staged work
now stays staged instead of being swept in.

The source path is only a valid pathspec when the move went through `git mv`;
on the os.Rename fallback the source was never tracked and naming it fails the
commit outright. The path list is therefore built from the branch actually
taken rather than by re-testing the file.

This also covers the non-worktree path, where the archive commit could
likewise absorb leftover staged work under a message that does not describe
it. Nothing documented or tested relied on that.

Related to #435

* fix: correct the fallback rationale and pin the recorded rename

Review of the previous commit found three defects in it.

The comment justifying the destination-only path list claimed the os.Rename
fallback runs only on a source git never tracked. That is not true: git mv also
refuses when the destination already exists, and resolvePlanMoveTargets returns
done=false as soon as the source exists without checking the destination, so a
tracked source reaches the fallback whenever a stale completed/ copy of the same
basename is lying around. The invariant that actually holds is narrower - the
source is a valid pathspec only when git mv staged its deletion - and both the
comment and the CLAUDE.md line ... (continued)

11 of 12 new or added lines in 3 files covered. (91.67%)

7871 of 9349 relevant lines covered (84.19%)

226.98 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
80.94
0.29% pkg/input/input.go
Jobs
ID Job ID Ran Files Coverage
1 32404424157.1 20 Aug 2026 06:41PM UTC 55
84.19
GitHub Action Run
Source Files on build 32404424157
  • Tree
  • List 55
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 0c307538 on github
  • Prev Build on master (#32313522745)
  • Next Build on master (#32586472500)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc