Runs 1180/1181 both failed identically: instant context deadline exceeded on the pre-destroy status GET, while pvesh get .../status/current answers in 0.7s on the node. Root cause: the bpg provider takes timeout_delete from STATE at destroy time, and importing the timeout-less stage-1 shims stored 0 — a zero-second context. (Import/plan use read-path timeouts, hence stage 1 looked clean. Provider timeout-handling weaknesses are a known theme: bpg issues #1621, #1620, discussion #1037.)
v2 shims declare all timeouts explicitly and mirror the real attributes (unprivileged=true matters — it is ForceNew, mirroring prevents a replace). One in-place apply writes the timeouts into state; then the follow-up PR deletes the file and the destroy has a real deadline.
After merge: plan (I verify in-place only, no replace) → apply → stage-2c file deletion PR → destroy apply → PVE final census.
Runs 1180/1181 both failed identically: instant `context deadline exceeded` on the pre-destroy status GET, while `pvesh get .../status/current` answers in 0.7s on the node. Root cause: the bpg provider takes `timeout_delete` from STATE at destroy time, and importing the timeout-less stage-1 shims stored **0** — a zero-second context. (Import/plan use read-path timeouts, hence stage 1 looked clean. Provider timeout-handling weaknesses are a known theme: bpg issues #1621, #1620, discussion #1037.)
v2 shims declare all timeouts explicitly and mirror the real attributes (`unprivileged=true` matters — it is ForceNew, mirroring prevents a replace). One in-place apply writes the timeouts into state; then the follow-up PR deletes the file and the destroy has a real deadline.
After merge: plan (I verify in-place only, no replace) → apply → stage-2c file deletion PR → destroy apply → PVE final census.
`tofu validate` passes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei
Both destroy applies (runs 1180/1181) died instantly with 'context
deadline exceeded' on the pre-destroy status GET while the PVE API
answers in <1s: the bpg provider reads timeout_delete from STATE at
destroy time, and the stage-1 import stored 0 for the timeout-less
shims — a zero-second context. Read paths carry their own timeout,
which is why import and plan were clean.
v2 declares all timeouts explicitly (one in-place, no-API update
writes them into state) and mirrors the real container attributes
(unprivileged=true is ForceNew — mirroring prevents a replace).
No ignore_changes this time: the timeout update must actually apply.
Flow: merge -> plan (must be in-place only) -> apply -> follow-up PR
deletes the file -> destroy apply.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Runs 1180/1181 both failed identically: instant
context deadline exceededon the pre-destroy status GET, whilepvesh get .../status/currentanswers in 0.7s on the node. Root cause: the bpg provider takestimeout_deletefrom STATE at destroy time, and importing the timeout-less stage-1 shims stored 0 — a zero-second context. (Import/plan use read-path timeouts, hence stage 1 looked clean. Provider timeout-handling weaknesses are a known theme: bpg issues #1621, #1620, discussion #1037.)v2 shims declare all timeouts explicitly and mirror the real attributes (
unprivileged=truematters — it is ForceNew, mirroring prevents a replace). One in-place apply writes the timeouts into state; then the follow-up PR deletes the file and the destroy has a real deadline.After merge: plan (I verify in-place only, no replace) → apply → stage-2c file deletion PR → destroy apply → PVE final census.
tofu validatepasses.🤖 Generated with Claude Code
https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei