Skip to content

🐛 [fix] collect + review: run the filer on Windows; stop doubling refactor titles - #68

Merged
EricTechPro merged 3 commits into
mainfrom
fix/collect-windows-refactor-title
Oct 19, 2026
Merged

EricTechPro merged 3 commits into
mainfrom
fix/collect-windows-refactor-title

Conversation

@EricTechPro

Copy link
Copy Markdown
Owner

Note

⏳ In review · round 1 · ✅ 6/7 AC · Closes #64 · Closes #65 · head 0511f63

Problem

Solution

  • collect-state imports fcntl only when present; otherwise it locks with msvcrt.locking and turns contention into BlockingIOError, so the existing retry and exit-4 path is unchanged
  • Without fcntl, the helper runs the .sh filer as a bash child and keeps holding the lock until it exits, instead of exec
  • Without fcntl, the child proves the lock with a per-hold random token file (removed when the hold ends) instead of an inherited fd; POSIX keeps flock, exec and the inode check unchanged
  • scheduled-intake.md names both lock paths; the module docstring states the platform behavior
  • The refactor filer strips a leading <emoji> [<kind>] <scope>: from --title before adding its own; only an all-non-ASCII first word triggers it
  • super-review/SKILL.md says --title is the bare problem; the stale "lands in Backlog, not Ready" header comment now matches the code

Acceptance criteria

  • The collector helper imports and runs with no fcntl module
    ↳ tests/test_collect_windows.py ImportTests + every intake case through a no-fcntl shim
  • A concurrent collector call returns collector busy; no writes attempted (exit 4) on the portable path
    ↳ WindowsIntakeTests.test_bounded_lock_wait_does_not_mutate_and_can_run_after_release
  • An interrupted write still blocks retry with "Collector write outcome unresolved"
    ↳ WindowsIntakeTests.test_interrupted_write_still_blocks_retry
  • Receipt actions refuse a missing or forged lock token
    ↳ WindowsIntakeTests.test_receipt_action_refuses_forged_or_stale_token
  • Dry-run and a real --yes filing exit 0 on real Windows 11 + Git for Windows
    ↳ not verified: no Windows host here; the msvcrt path is exercised through a flock-backed stand-in
  • A pre-formatted refactor title is not prefixed twice
    ↳ tests/test-file-refactor.sh "a pre-formatted title is not prefixed twice (review: refactor tickets filed by the Reviewer get their title prefix twice #65)"
  • Bare titles such as Map [x] fields: keep order are left untouched
    ↳ same block, two bare cases

Iteration history

Lane Done Time Details
🔨 builder ✅ Oct 18 bash tests/run-safety.sh → PASS 58 suites · 0511f63

Risk

🟢 Low · POSIX lock path makes the same flock, exec and inode calls as before, behind if fcntl; the Windows path is new and tested only through a stand-in. The title strip only fires on an emoji-led [kind] scope: prefix.

🤖 Generated with Claude Code

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

EricTechPro and others added 3 commits October 18, 2026 23:32
…fd token)

- Import fcntl only when present; fall back to msvcrt locking, contention still raises BlockingIOError
- On the portable path run the .sh filer as a bash child while the parent holds the lock
- Prove the held lock with a per-hold random token file instead of an inherited fd; POSIX keeps the inode check
- Rerun the full intake suite through a no-fcntl shim (busy, unresolved-write and forged-token guards)

Closes #64

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- The refactor filer drops a leading `<emoji> [<kind>] <scope>: ` from --title before adding its own
- Only an all-non-ASCII first word triggers the strip, so bare titles like `Map [x] fields: keep order` stay
- super-review SKILL.md says --title is the bare problem, as super-collect already does
- Refresh the stale header comment: cards with acceptance criteria land in Ready

Closes #65

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- Python 3.12 subprocess probes import msvcrt to detect Windows; the shim's fake msvcrt made it import _winapi and every Windows-path test died on CI
- Shim now imports subprocess before installing the stand-in, so only the script under test sees it
- Add a shim-ordering regression guard that holds on any interpreter

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@EricTechPro
EricTechPro force-pushed the fix/collect-windows-refactor-title branch from 0511f63 to d1d39f2 Compare October 19, 2026 06:41
@EricTechPro
EricTechPro merged commit 86536a1 into main Oct 19, 2026
13 checks passed
@EricTechPro
EricTechPro deleted the fix/collect-windows-refactor-title branch October 19, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant