Summary
skills/orchestrate-creator/orchestrate-template.md の degraded-mode fallback が、ブランチ名ではなく完全な ref を返す。
3. Verify on default branch (skip if `RESUMING`): `DEFAULT_BRANCH=$(gh repo view --json
defaultBranchRef -q '.defaultBranchRef.name')` (fallback `git symbolic-ref refs/remotes/origin/HEAD`
in degraded mode). If not on it, offer `git switch`.
git symbolic-ref refs/remotes/origin/HEAD は refs/remotes/origin/main を返す。--short を付けても origin/main で、どちらもブランチ名にならない。
$ git symbolic-ref refs/remotes/origin/HEAD
refs/remotes/origin/main
$ git symbolic-ref --short refs/remotes/origin/HEAD
origin/main
$ git fetch origin refs/remotes/origin/main
fatal: couldn't find remote ref refs/remotes/origin/main
$ git rev-list HEAD..origin/refs/remotes/origin/main
fatal: ambiguous argument
影響
degraded mode(gh 未認証)でのみ発火し、そこでは fallback が DEFAULT_BRANCH の唯一の供給源になる。壊れる consumer:
- Step 0 pre-flight 3 —
git switch "$DEFAULT_BRANCH" が失敗し、ブランチ比較も永久に一致しない
- Step 0 pre-flight 4 —
git pull --ff-only origin "$DEFAULT_BRANCH" が fatal(warn-don't-block なのでノイズに留まる)
- Step 4 —
git fetch origin {DEFAULT_BRANCH} と git rev-list --count HEAD..origin/{DEFAULT_BRANCH} が実行中に fatal
git diff {DEFAULT_BRANCH}...HEAD の2箇所だけは、完全な ref も diff の被演算子として妥当なので偶然動く。
失敗はすべて fatal: を stderr に出す loud な形で、破壊的ではない。ただし degraded mode は元々機能が削られた経路なので、そこで唯一残っている検証手段が落ちる。
提案
(fallback `git symbolic-ref --short refs/remotes/origin/HEAD | sed 's|^origin/||'` in degraded mode)
origin/HEAD 自体が未設定のクローン(fresh clone では珍しくない)では git remote set-head origin -a での復旧に触れておくと親切だと思う。
補足
この修正は既に tyabu12/pastura#1453 でローカルに適用済み。.claude/rules/orchestrate.md の back-port 方針(「un-upgraded copy が wrong な場合のみ能動的にスイープする」)に照らすと、これは suboptimal ではなく wrong の側なので、生成済みプロジェクトへの周知が要るケースだと思う。
テンプレートのハッシュが変われば、Step U-2 のハッシュ一致による "up to date" 短絡が解けて U-3 の比較が再度走る、という副次的な効果もある。
Summary
skills/orchestrate-creator/orchestrate-template.mdの degraded-mode fallback が、ブランチ名ではなく完全な ref を返す。git symbolic-ref refs/remotes/origin/HEADはrefs/remotes/origin/mainを返す。--shortを付けてもorigin/mainで、どちらもブランチ名にならない。影響
degraded mode(
gh未認証)でのみ発火し、そこでは fallback がDEFAULT_BRANCHの唯一の供給源になる。壊れる consumer:git switch "$DEFAULT_BRANCH"が失敗し、ブランチ比較も永久に一致しないgit pull --ff-only origin "$DEFAULT_BRANCH"が fatal(warn-don't-block なのでノイズに留まる)git fetch origin {DEFAULT_BRANCH}とgit rev-list --count HEAD..origin/{DEFAULT_BRANCH}が実行中に fatalgit diff {DEFAULT_BRANCH}...HEADの2箇所だけは、完全な ref も diff の被演算子として妥当なので偶然動く。失敗はすべて
fatal:を stderr に出す loud な形で、破壊的ではない。ただし degraded mode は元々機能が削られた経路なので、そこで唯一残っている検証手段が落ちる。提案
origin/HEAD自体が未設定のクローン(fresh clone では珍しくない)ではgit remote set-head origin -aでの復旧に触れておくと親切だと思う。補足
この修正は既に tyabu12/pastura#1453 でローカルに適用済み。
.claude/rules/orchestrate.mdの back-port 方針(「un-upgraded copy が wrong な場合のみ能動的にスイープする」)に照らすと、これは suboptimal ではなく wrong の側なので、生成済みプロジェクトへの周知が要るケースだと思う。テンプレートのハッシュが変われば、Step U-2 のハッシュ一致による "up to date" 短絡が解けて U-3 の比較が再度走る、という副次的な効果もある。