feat(witness): Implement ephemeral polecat model for immediate recycling (#81)
Updates HandlePolecatDone to auto-nuke polecats immediately after MR submission when cleanup_status=clean. This separates polecat lifecycle from MR lifecycle: - Polecat lifecycle: spawning → working → mr_submitted → nuked - MR lifecycle: created → queued → processed → merged (handled by Refinery) Key changes: - Try auto-nuke for ALL POLECAT_DONE messages regardless of MR status - If cleanup_status=clean (branch pushed), nuke immediately - If dirty state, create cleanup wisp for manual intervention - Cleanup wisps are now exception handling, not the normal flow Conflict resolution is handled by the Refinery, which creates NEW tasks for NEW polecats when merge conflicts are detected. (gt-si8rq.9) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in: