Remove gt polecat done/reset/finish/sleep commands (idle producers)
These commands transitioned polecats to idle state, violating the transient model. From PRIMING.md: "Polecats exist only while working. One task, then nuked." Removed: - gt polecat done - marked polecat as done and returned to idle - gt polecat reset - force reset polecat to idle state - gt polecat finish - alias for done - gt polecat sleep - deprecated transition to done state - gt polecat wake - deprecated transition to working state - Manager.Finish() method - Manager.Reset() method - Manager.Wake() method - Manager.Sleep() method The correct model is: polecats use 'gt done' which signals Witness for nuke. There is no "return to idle" - only death. (gt-32d4a) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -649,71 +649,6 @@ func (m *Manager) ClearIssue(name string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Wake transitions a polecat from idle to active.
|
||||
// Deprecated: In the transient model, polecats start in working state.
|
||||
// This method is kept for backward compatibility with existing polecats.
|
||||
func (m *Manager) Wake(name string) error {
|
||||
polecat, err := m.Get(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Accept both idle and done states for legacy compatibility
|
||||
if polecat.State != StateIdle && polecat.State != StateDone {
|
||||
return fmt.Errorf("polecat is not idle (state: %s)", polecat.State)
|
||||
}
|
||||
|
||||
return m.SetState(name, StateWorking)
|
||||
}
|
||||
|
||||
// Sleep transitions a polecat from active to idle.
|
||||
// Deprecated: In the transient model, polecats are deleted when done.
|
||||
// This method is kept for backward compatibility.
|
||||
func (m *Manager) Sleep(name string) error {
|
||||
polecat, err := m.Get(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Accept working state as well for legacy compatibility
|
||||
if polecat.State != StateActive && polecat.State != StateWorking {
|
||||
return fmt.Errorf("polecat is not active (state: %s)", polecat.State)
|
||||
}
|
||||
|
||||
return m.SetState(name, StateDone)
|
||||
}
|
||||
|
||||
// Finish transitions a polecat from working/done/stuck to idle and clears the issue.
|
||||
// This clears the assignee from any assigned issue.
|
||||
func (m *Manager) Finish(name string) error {
|
||||
polecat, err := m.Get(name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Only allow finishing from working-related states
|
||||
switch polecat.State {
|
||||
case StateWorking, StateDone, StateStuck:
|
||||
// OK to finish
|
||||
default:
|
||||
return fmt.Errorf("polecat is not in a finishing state (state: %s)", polecat.State)
|
||||
}
|
||||
|
||||
// Clear the issue assignment
|
||||
return m.ClearIssue(name)
|
||||
}
|
||||
|
||||
// Reset forces a polecat to idle state regardless of current state.
|
||||
// This clears the assignee from any assigned issue.
|
||||
func (m *Manager) Reset(name string) error {
|
||||
if !m.exists(name) {
|
||||
return ErrPolecatNotFound
|
||||
}
|
||||
|
||||
// Clear the issue assignment
|
||||
return m.ClearIssue(name)
|
||||
}
|
||||
|
||||
// loadFromBeads gets polecat info from beads assignee field.
|
||||
// State is simple: issue assigned → working, no issue → idle.
|
||||
// We don't interpret issue status (ZFC: Go is transport, not decision-maker).
|
||||
|
||||
Reference in New Issue
Block a user