ci-git-describe-empty-checkout-exit-128
Solution written to ~/ci-git-describe-empty-checkout-exit-128.md.
Diagnosis: git describe --tags --abbrev=0 needs a reachable tag. actions/checkout defaults to a shallow, tag-less clone, and act/forks may have no tags at all — so the command exits 128 with No names found, cannot describe anything.
Fix (proven in afeb151): probe for tags before any describe call and early-exit successfully on the empty path:
git describe --tags --abbrev=0 >/dev/null 2>&1 \
|| { echo "::warning::No git tags found; skipping tag-dependent step"; exit 0; }
or a reusable probe step exposing has_tags, with each tag-dependent step gated by if: steps.tags.outputs.has_tags == 'true'.
Verified locally:
- Unpatched, no tags → fatal: No names found..., exit=128 (reproduced).
- Guarded, no tags → ::warning::..., exit=0.
- After git tag v1.2.3 → v1.2.3 unchanged (parity preserved).
The doc covers the reusable-probe and inline-guard variants, the optional fetch-depth: 0/fetch-tags: true hardening (not a substitute), and a full verification matrix.
# Evidence - Problem class: ci-git-describe-empty-checkout-exit-128 - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-15T17:01:24.424Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "CI step (version authority / tag build) dies exit 128 on checkout without tags/history (act/shallow fork). Fix proven in deployBunker/bunker commit afeb151: guard each tag-dependent step with an early-exit tag probe (git describe --tags --abbrev=0 || ::warning:: + exit 0) before the describe call; parity assertions unchanged on tags-present path. Judge PASS 27d706fb.", "environment": "github-actions", "language": "yaml", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "ci-git-describe-empty-checkout-exit-128", "provider": "openrouter", "solved_at": "2026-09-15T17:01:24.425Z", "version": ""}Solution written to ~/ci-git-describe-empty-checkout-exit-128.md.
Diagnosis: git describe --tags --abbrev=0 needs a reachable tag. actions/checkout defaults to a shallow, tag-less clone, and act/forks may have no tags at all — so the command exits 128 with No names found, cannot describe anything.
Fix (proven in afeb151): probe for tags before any describe call and early-exit successfully on the empty path:
git describe --tags --abbrev=0 >/dev/null 2>&1 \
|| { echo "::warning::No git tags found; skipping tag-dependent step"; exit 0; }
or a reusable probe step exposing has_tags, with each tag-dependent step gated by if: steps.tags.outputs.has_tags == 'true'.
Verified locally:
- Unpatched, no tags → fatal: No names found..., exit=128 (reproduced).
- Guarded, no tags → ::warning::..., exit=0.
- After git tag v1.2.3 → v1.2.3 unchanged (parity preserved).
The doc covers the reusable-probe and inline-guard variants, the optional fetch-depth: 0/fetch-tags: true hardening (not a substitute), and a full verification matrix.
# Evidence - Problem class: ci-git-describe-empty-checkout-exit-128 - Model: openrouter/deepseek/deepseek-v4.1-flash - Solved: 2026-09-15T17:01:24.424Z - Verification: solution produced by pi in sandbox; see signatures.json
{"description": "CI step (version authority / tag build) dies exit 128 on checkout without tags/history (act/shallow fork). Fix proven in deployBunker/bunker commit afeb151: guard each tag-dependent step with an early-exit tag probe (git describe --tags --abbrev=0 || ::warning:: + exit 0) before the describe call; parity assertions unchanged on tags-present path. Judge PASS 27d706fb.", "environment": "github-actions", "language": "yaml", "model": "openrouter/deepseek/deepseek-v4.1-flash", "problem_class": "ci-git-describe-empty-checkout-exit-128", "provider": "openrouter", "solved_at": "2026-09-15T17:01:24.425Z", "version": ""}