spec-kitty / spec-kitty/spec-kitty
bug: stale/frozen worktree lane rewind is reported as generic force override instead of targeted diagnostic
- Dominant language
- Python
- Stars
- 1.6k
- Forks
- 165
- Avg merge
- 14h 22m
- Merged PRs (30d)
- 343
Description
## Summary
During a watched Spec Kitty session on 2026-06-04, retrospective analysis showed a forced lane override on WP02. The agent later classified it as a known frozen-worktree stale-state quirk on `move-task`, not a real guard failure.
The product currently records force transitions, and merge hollow-review warnings look at force-heavy histories. That is useful, but stale/frozen worktree repair cases need a targeted diagnostic so operators do not read them as review independence failures or arbitrary guard bypasses.
## Current behavior
`move-task` can emit forced backward/rewind transitions, and status snapshots track `force_count`.
Merge then warns about hollow reviews when `force_count >= 2` or reviewer self-approval events are present.
This lumps together different cases:
- real guard override
- self-review fallback
- reviewer rejection rewind
- stale/frozen worktree state repair
## Expected behavior
When `move-task` encounters or repairs stale/frozen worktree state, the event trail should preserve a machine-readable reason/category distinct from generic force override.
Possible shape:
```json
{
"force": true,
"reason": "stale_worktree_repair: ...",
"policy_metadata": {
"force_category": "stale_worktree_repair",
"diagnostic_code": "STALE_WORKTREE_REWIND_REPAIR"
}
}
```
## Acceptance criteria
- Add a reproduction fixture for the frozen/stale worktree rewind case that currently requires/records force.
- The emitted event has a distinct diagnostic/category.
- Merge hollow-review warning excludes or separately reports stale-worktree repair force events.
- `spec-kitty doctor` or status output gives a direct remediation for stale/frozen worktree state.
Contributor guide
Research direction
Start by tracing the move-task force transitions and the status snapshot force_count handling, then follow how merge produces hollow-review warnings. Reproduce the frozen/stale worktree rewind case, inspect the emitted event and the spec-kitty doctor or status output, and verify that the new diagnostic is distinct, warning behavior is separated, and remediation is shown.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100