Skip to content

🐛 orchestrate-template: degraded-mode の DEFAULT_BRANCH fallback がブランチ名を返さない #34

Description

@tyabu12

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/HEADrefs/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 の比較が再度走る、という副次的な効果もある。

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions