Auto-upgrade legacy git ref keys on workspace open
Earlier iterations of the git backend named per-task refs after the file
backend's filenames (refs/tsk/tasks/tsk-N.tsk). The current scheme uses just
the integer id (refs/tsk/tasks/N). Workspaces created or migrated under the
old scheme were unreadable: tsk list worked (the index ref kept the same
key) but tsk show/edit/drop failed because read_task looked under the new
key and saw nothing.
Add a one-shot rename pass in store_for that runs every time a git-backed
workspace is opened. Legacy keys (tsk-N.tsk) are renamed to the new scheme
(N); if both already exist, the legacy one is dropped.
Also adds a comprehensive command-flow test suite (run_every_command) that
mirrors each command_*'s workspace logic and runs against both backends.
This would have caught the migration bug had a legacy ref slipped into a
test fixture.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>