Skip to content

Name the Leftover Old Tree When the Bash Loader Cannot Remove It - #2218

Merged
ptr727 merged 1 commit into
developfrom
feature/auto-1790
Oct 1, 2026
Merged

ptr727 merged 1 commit into
developfrom
feature/auto-1790

Conversation

@ptr727

@ptr727 ptr727 commented Oct 1, 2026

Copy link
Copy Markdown
Owner

The Linux loader's swap_in called remove_owned bare on a leftover owned .old tree, so an entry rm could not remove aborted the run with only rm's own error. It now stops with the loader's message naming the .old path and the remedy, matching what bootstrap.ps1 already says in the same state. A test with a locked entry in the leftover tree fails without the change.

Closes on promotion: #1790

🤖 Generated with Claude Code

Closes on promotion: #1790

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 1, 2026 06:40
@coderabbitai

coderabbitai Bot commented Oct 1, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: f95cada4-3aca-4c42-adbf-c5b928015a28

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Oct 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (develop@db4dbd0). Learn more about missing BASE report.

Additional details and impacted files
@@            Coverage Diff             @@
##             develop    #2218   +/-   ##
==========================================
  Coverage           ?   56.61%           
==========================================
  Files              ?       16           
  Lines              ?     7482           
  Branches           ?        0           
==========================================
  Hits               ?     4236           
  Misses             ?     3246           
  Partials           ?        0           
Flag Coverage Δ
python-3.13 56.61% <ø> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The two-line change is traced-correct, parallels the existing PowerShell loader message, and is covered by a dedicated regression test whose setup reaches exactly the targeted failure path.

Review effort: Balanced
Findings: None

What changed in this PR

The Linux bootstrap loader's swap_in previously called remove_owned "$retired" bare when clearing a leftover owned .old tree. If an entry in that tree could not be removed (e.g. a locked directory), remove_tree returned non-zero and set -Eeuo pipefail aborted the run with only rm's raw error, leaving no indication of the .old path or the remedy, and every later kept-tree run failed the same way. This PR adds a || die refusal that names the .old path and the fix, bringing bootstrap.sh into parity with the message bootstrap.ps1 already emits in the same state.

Changes:

  • Wrap remove_owned "$retired" in swap_in with || die, producing a path-naming refusal consistent with bootstrap.ps1:309.
  • Add a regression test seeding a live tree, a staged .new, and a locked .old, asserting the swap stops, the message names the .old path, and the live tree is preserved.
File Description
host-setup/​bootstrap.sh Adds a `
tests/​test_bootstrap.py Adds a test that a locked leftover .old beside a live tree fails the swap with the loader's message and leaves the live tree intact.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@ptr727
ptr727 merged commit 3c13429 into develop Oct 1, 2026
11 checks passed
ptr727 added a commit that referenced this pull request Oct 1, 2026
## Summary

Promotes develop to main, carrying the pull requests below, each already
reviewed and merged into develop.

- [#2203](#2203): Strip
every heredoc body a line opens in the wait-loop rule.
- [#2216](#2216): Point
the charset-unknown message at where a tier is classified.
- [#2218](#2218): Name the
leftover old tree when the Bash loader cannot remove it.
- [#2227](#2227): End the
guard's stdin redirect scan at a trailing comment.
- [#2230](#2230): Tell
apart the causes a labels payload is refused for.
- [#2232](#2232): Correct
the task names and pointers in the Python tasks snippet header.
- [#2234](#2234): Drop the
stale private-repository note from PhotoCleaner's registry entry.
- [#2237](#2237): State
the bootstrap's archive live channel in two skills.
- [#2239](#2239): Stop the
promotion count on a failed fetch in backlog-burndown.
- [#2241](#2241): Render
the include walk once per `build_dist.py --check` run.
- [#2243](#2243): Have the
tree check call `escapes_repo_root` and refuse a symlinked component.
- [#2247](#2247): Refuse a
Windows drive component anywhere in a tree path.
- [#2222](#2222): Tick the
adopted repos in the merge-bot and gate rollout stages.
- [#2121](#2121): Refuse a
dangling remote-tracking target in `local_review`.
- [#2249](#2249): Ignore a
quoted separator when the guard finds a loop's `done`.

Closes #2112
Closes #2171
Closes #1790
Closes #2152
Closes #1372
Closes #2149
Closes #1082
Closes #1772
Closes #1310
Closes #1379
Closes #1452
Closes #2244
Closes #2168
Closes #2106
Closes #2207

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants