Fresh worktrees don't have submodules checked out, so the pre-push run-tests hook failed on first push with a manual-fix error message. run-bats.sh now runs `git submodule update --init --recursive` automatically instead of just printing instructions. Also records two lessons from working across bare-repo/worktree boundaries this session: the repo root has no working tree (edits there are invisible to git), and local remote-tracking refs go stale after a merge — verify via the Gitea API before asking about cleanup. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FNJWdVvdgvZCHi1hZGqgVQ