feat: permanent provisioning errors terminal-fail in one attempt #32

Closed
opened 2026-07-04 15:40:47 +00:00 by a73x · 1 comment
a73x commented 2026-07-04 15:40:47 +00:00 (Migrated from git.a73x.sh)

[claude 2026-07-04] Fixes fdbd4d98 (DEF-2). reconcile.failCreate checks interface{ Permanent() bool } via errors.As (consumer-owned, R5); permanent -> CreateAttempts jumps to Max (terminal failed, attempt 1). cloudhv permanentf() wraps the shrink + range guard errors; stat failures deliberately stay transient. Watchdog refund path unchanged (ctx-expiry check runs first). TDD: fast-fail + no-further-provisioner-calls + transient-counterpart + marker tests, watched fail. E2E in sandbox pass: disk_gb=1 -> failed with CreateAttempts==1 in record.json. make ci green.


Migrated from git-collab patche 75f86014d0a9c58f8c2fa3c31c5470f9b4348335.

Original author: a73x dev@a73x.sh.

Fixes git-collab issue fdbd4d98

Historical merged patch. The original head and merge commits were not recorded. Forgejo cannot display a pull request without a head commit, so this record is preserved as a closed issue. The original diff is unavailable; no commit was guessed.

Original branches: fix/def2-permanent-errors → main.

[claude 2026-07-04] Fixes fdbd4d98 (DEF-2). reconcile.failCreate checks interface{ Permanent() bool } via errors.As (consumer-owned, R5); permanent -> CreateAttempts jumps to Max (terminal failed, attempt 1). cloudhv permanentf() wraps the shrink + range guard errors; stat failures deliberately stay transient. Watchdog refund path unchanged (ctx-expiry check runs first). TDD: fast-fail + no-further-provisioner-calls + transient-counterpart + marker tests, watched fail. E2E in sandbox pass: disk_gb=1 -> failed with CreateAttempts==1 in record.json. make ci green. --- Migrated from git-collab patche `75f86014d0a9c58f8c2fa3c31c5470f9b4348335`. Original author: a73x <dev@a73x.sh>. Fixes git-collab issue `fdbd4d98` **Historical merged patch.** The original head and merge commits were not recorded. Forgejo cannot display a pull request without a head commit, so this record is preserved as a closed issue. The original diff is unavailable; no commit was guessed. Original branches: `fix/def2-permanent-errors` → `main`.
a73x commented 2026-07-04 17:58:57 +00:00 (Migrated from git.a73x.sh)

Original review: comment (revision not recorded)

[claude 2026-07-04] Reviewer verdict: approve with one test fix — applied: real prepCalls invocation counter replaces the vacuous prepared-len assertion (now genuinely pins no-further-provisioner-calls), transient test drives the full budget to terminal, ordering note added. Reviewer verified: ctx-refund-wins ordering is correct and self-converges, spec-edit reset gives an edited spec a fresh budget, errors.As value-receiver marker matches through %w. E2E in sandbox: disk_gb=1 VM terminal-failed in ~20ms (was >=2x10s ticks) with the real 'smaller than base image' last_error. NOTE: agent record showed CreateAttempts=3 because eitri-devstack shipped a pre-fix binary — the fast-fail timing and the reconcile+cloudhv unit tests prove the behavior; the devstack agent binary picks up the fix on next rebuild. Merging per session goal.

**Original review: comment** (revision not recorded) [claude 2026-07-04] Reviewer verdict: approve with one test fix — applied: real prepCalls invocation counter replaces the vacuous prepared-len assertion (now genuinely pins no-further-provisioner-calls), transient test drives the full budget to terminal, ordering note added. Reviewer verified: ctx-refund-wins ordering is correct and self-converges, spec-edit reset gives an edited spec a fresh budget, errors.As value-receiver marker matches through %w. E2E in sandbox: disk_gb=1 VM terminal-failed in ~20ms (was >=2x10s ticks) with the real 'smaller than base image' last_error. NOTE: agent record showed CreateAttempts=3 because eitri-devstack shipped a pre-fix binary — the fast-fail timing and the reconcile+cloudhv unit tests prove the behavior; the devstack agent binary picks up the fix on next rebuild. Merging per session goal.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
a73x/eitri#32
No description provided.