Skip to content

Session Handoff [windows]: #1792 and #1795 Landed and Promoted, #2488 and #2495 Next #2504

Closed

Description

@ptr727

Next steps

Work this lane from the maintainer's Windows host, one issue per branch through drive-pr, and run each fix natively before claiming it fixed.

  1. Make the Test Suite Pass or Skip Cleanly on Windows #2488: make the test suite pass or skip cleanly on Windows. Start with the 16 symlink-privilege errors through one shared skip helper, then the 8 read -a failures. Done means python3 -m unittest discover -s tests exits 0 on this host.
  2. Canonicalize -Dir in bootstrap.ps1 Before Refusing a Drive or Share Root #2495: canonicalize -Dir in bootstrap.ps1 before refusing a drive or share root, the shape host-setup/menu.ps1 already uses. Small, and TestPowerShellKeptTreeHandling already drives Resolve-Directory.
  3. host-setup: menu.sh and menu.ps1 hub-cache locks do not coordinate across tools #1094: menu.sh locks hub.lock with flock, while menu.ps1 uses a named Mutex, and the two never coordinate. Lock a Bootstrap Run's Directory, and Remove an Empty Leftover at a Tree's Name #2503 proved the fix shape. Have menu.ps1 open the same hub.lock with FileShare.None and drop the Mutex. Mind menu.sh's shared reader lock, since a pwsh FileShare.Read open maps to LOCK_SH on Linux. Done means a cross-tool test like test_a_lock_bootstrap_sh_holds_refuses_this_loader.
  4. Bootstrap registers its temporary tree as the live Claude Code skills source, then deletes it #1756 and Two concurrent bootstrap runs can remove each other's tree #1764, now checkable through TestPowerShellKeptTreeHandling.
  5. The rest of the lane, oldest first, from the list under State.

External blockers

  • Every fix here is verified on the Windows host, so a session elsewhere can author a change but cannot close it.
  • Roll out global ~/.claude/CLAUDE.md safety rules to all machines #365 is a per-machine installer rollout that rewrites the host's hooks, settings.json and CLAUDE.md, so ask before running it.
  • No WSL pwsh exists on this host, so a cross-loader lock test runs only in Linux CI or a mcr.microsoft.com/powershell container.

Internal dependencies

State

The parked decision queue

The queue holds 0 open decision issues.

What the last round did

What not to repeat

  • Running drive-pr step 4's remote branch delete from the base clone after removing the worktree. gh-write-guard denies a git push against the primary checkout, so the whole command is refused. Verify and delete the remote branch from the task's own worktree first, then remove the worktree. The prescription itself is The Prescribed Post-Merge Remote-Branch Delete Cannot Run Where the Procedure Puts It #1682.
  • Rewriting a guard line while editing around it. A replacement that spanned the reparse-point check dropped it, and only the existing link tests caught it. Keep a replacement's old string to the lines that change.
  • Taking a directory find cannot read for an empty one. -z $(find ...) discards find's exit status, so an unreadable foreign directory read as empty and was moved aside. Check the status. On Linux pwsh even the marker's Test-Path throws there, so the whole check sits in one try.
  • Naming a plain IOException as contention. .NET raises the same type for a read-only mount or a full disk, so the message names the reason first and calls another run only the usual cause.

New learnings

  • .NET's FileShare.None and flock(1) exclude each other on Linux in both directions. A pwsh/bash lock pair can therefore share one file with no second primitive. Verified in a mcr.microsoft.com/powershell container, and kept as test_a_lock_bootstrap_sh_holds_refuses_this_loader in tests/test_bootstrap.py.
  • Across WSL and Windows on /mnt/c, a Windows FileShare.None holder makes the WSL open itself fail with EACCES rather than flock refusing. bootstrap.sh's open-failure message names that case.

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Oct 7, 2026
  2. ptr727 commented on Oct 8, 2026

    @ptr727
    OwnerAuthor

    Continued in #2519, round 5 on track windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions