Summary
今回のセッションで、parallel-implementation policy / guardrail / team-background-worktree の相互作用により、通常の実装より大きく余分な復旧コストが発生しました。
特に問題だったのは、mutation 前に team/background を強制するフックと、HEAD が存在しない/初期コミット前の repo では worktree 系が成立しないことが組み合わさり、先に進めない状態が発生した点です。
Why this matters
この挙動は、以下のような「新規repo立ち上げ」や「初期実装」では高確率で発生しえます。
- 新規
git init 直後で HEAD がまだ無い
- まだ初期コミットが無いので worktree が切れない
- しかし guardrail が mutation 前に team/background を必須化する
- その結果、初期コミットを作るための最小変更すら進めづらい
実際には、hook/tooling がユーザー意図を守るどころか、復旧のための手作業・重複コミット・不要な試行回数を増やしてしまいました。
Concrete problems observed
1) team/background/worktree が HEAD 無し repo で即失敗する
Observed error:
fatal: invalid reference: HEAD
Happened when:
team を使って write task を fan-out したとき
background で初期セットアップを流したとき
Impact:
- parallel policy を守ろうとすると失敗
- しかし policy 的に team を通さないと mutation できず、行き止まりになる
2) mutation を止める hook が、bootstrapping 用の最小操作まで塞いだ
Observed behavior:
- mutation 前に
team 呼び出しを要求される
- しかし
team 側は HEAD 無しで失敗
- 結果として
.gitignore 作成や初期コミット作成のような最小復旧手順まで難しくなる
Expected:
- HEAD 無し / 初期コミット前なら、guardrail は bootstrap mode に自動でフォールバックし、
初期コミット成立までの最小 mutation を許可してほしい
3) read-only / mutating boundary の判定が一貫しない
Observed behavior:
- 一見 read-only に見える bash 呼び出しでも、parallel policy 理由でブロックされるケースがあった
- 逆に team 実行後の結果は main worktree 側に反映されたりされなかったりで、状態把握が難しかった
Impact:
- 「今ブロックされている理由」が user/assistant 両方に分かりづらい
- recovery path が見えにくい
4) team/background の結果反映が不透明で、duplicate/unclear commit state を生みやすい
Observed behavior:
- worker 側では done 扱いでも、main 側にファイルが見えないケースがあった
- 同種の setup/data commit が複数回積み上がった
- どの commit が実際に main worktree に反映されたのか追いづらかった
Impact:
- 公開前に履歴が不自然になる
- assistant が追加の調査・再実装・手動 recovery を強いられる
Reproduction outline
- 新規ディレクトリで
git init
- 初期コミット前の状態で、parallel-implementation policy を有効化
- mutation 前に
team または background が必須な状況を作る
- write task を worktree ベースで投げる
fatal: invalid reference: HEAD で失敗
- その後、最小 bootstrap mutation も hook に止められやすくなる
- recovery のために direct edit / direct commit / 再試行が増える
Expected behavior
- 初期コミット前でも deadlock しない
- team/background が失敗するなら、guardrail が自動で safe fallback を提示する
- worker の結果が main にどう反映されたかが明確
- duplicate commit や ghost success を生まない
Actual behavior
- policy は厳格に適用されるが、tooling 側が bootstrap 状態に追従していない
- その結果、"守るほど詰まる" 状態になる
Proposed fixes
A. Add bootstrap-aware guardrail mode
If repo has no HEAD / no initial commit:
- skip worktree-dependent fanout requirements
- allow a minimal bootstrap mutation set:
- create
.gitignore
- create first commit
- set initial remote if explicitly requested
B. team/background should degrade gracefully when HEAD is missing
Instead of hard failure:
- detect
HEAD absence early
- either:
- run direct-in-repo isolated tasks without worktree, or
- return an actionable structured error with a suggested bootstrap sequence
C. Improve mergeback/result transparency
For each worker run, expose clearly:
- whether changes were written in main repo or isolated worktree
- whether mergeback succeeded
- resulting commit hash on main
- files actually changed on main
D. Enforce clearer mutation classification
Hooks should distinguish:
- read-only discovery commands
- bootstrap mutations
- normal implementation mutations
- release/publish mutations
This prevents overblocking harmless discovery while still guarding real destructive changes.
E. Add duplicate-commit prevention / warning
If a worker claims success but main worktree is unchanged, surface that explicitly instead of silently proceeding.
Suggested acceptance criteria for a fix
- Fresh
git init repo + parallel policy no longer deadlocks
team/background on no-HEAD repo returns either a safe fallback path or succeeds without worktree
- assistant can reach initial commit without manual escape hatches
- worker mergeback status is machine-readable and user-visible
- duplicate/ambiguous commit states are detectably prevented
Session impact summary
In this session, a meaningful amount of time was spent not on product implementation, but on:
- recovering from
invalid reference: HEAD
- re-establishing a usable repo state
- manually checking whether worker changes actually landed
- cleaning up or working around duplicated commit history
This makes the current behavior especially costly for greenfield projects, exactly where bootstrap ergonomics matter most.
Summary
今回のセッションで、parallel-implementation policy / guardrail / team-background-worktree の相互作用により、通常の実装より大きく余分な復旧コストが発生しました。
特に問題だったのは、mutation 前に team/background を強制するフックと、HEAD が存在しない/初期コミット前の repo では worktree 系が成立しないことが組み合わさり、先に進めない状態が発生した点です。
Why this matters
この挙動は、以下のような「新規repo立ち上げ」や「初期実装」では高確率で発生しえます。
git init直後で HEAD がまだ無い実際には、hook/tooling がユーザー意図を守るどころか、復旧のための手作業・重複コミット・不要な試行回数を増やしてしまいました。
Concrete problems observed
1) team/background/worktree が HEAD 無し repo で即失敗する
Observed error:
fatal: invalid reference: HEADHappened when:
teamを使って write task を fan-out したときbackgroundで初期セットアップを流したときImpact:
2) mutation を止める hook が、bootstrapping 用の最小操作まで塞いだ
Observed behavior:
team呼び出しを要求されるteam側は HEAD 無しで失敗.gitignore作成や初期コミット作成のような最小復旧手順まで難しくなるExpected:
初期コミット成立までの最小 mutation を許可してほしい
3) read-only / mutating boundary の判定が一貫しない
Observed behavior:
Impact:
4) team/background の結果反映が不透明で、duplicate/unclear commit state を生みやすい
Observed behavior:
Impact:
Reproduction outline
git initteamまたはbackgroundが必須な状況を作るfatal: invalid reference: HEADで失敗Expected behavior
Actual behavior
Proposed fixes
A. Add bootstrap-aware guardrail mode
If repo has no HEAD / no initial commit:
.gitignoreB. team/background should degrade gracefully when HEAD is missing
Instead of hard failure:
HEADabsence earlyC. Improve mergeback/result transparency
For each worker run, expose clearly:
D. Enforce clearer mutation classification
Hooks should distinguish:
This prevents overblocking harmless discovery while still guarding real destructive changes.
E. Add duplicate-commit prevention / warning
If a worker claims success but main worktree is unchanged, surface that explicitly instead of silently proceeding.
Suggested acceptance criteria for a fix
git initrepo + parallel policy no longer deadlocksteam/backgroundon no-HEAD repo returns either a safe fallback path or succeeds without worktreeSession impact summary
In this session, a meaningful amount of time was spent not on product implementation, but on:
invalid reference: HEADThis makes the current behavior especially costly for greenfield projects, exactly where bootstrap ergonomics matter most.