Patch release of Terrapod — three bug fixes since v0.22.0.
Bug Fixes
-
Cloud-block
tofu init/terraform initnow succeeds against Terrapod workspaces. OpenTofu and Terraform's cloud backend readsworkspace.tag-namesto decide whether the workspace already carries the cloud-block-declared tags. Terrapod was returning onlylabels(a Terrapod-specific attribute) and nottag-names, so the CLI always saw an empty set, fired the legacyAddTagswrite, hit a 404, and bailed out withError updating workspace ... resource not found. Now exposestag-namesrendered from labels in both bare-key and key=value form, plus accept-and-ignore no-op endpoints forPOST/DELETE /workspaces/{id}/relationships/tags. Labels remain operator-controlled — clients can't mutate them. (#271) -
Run state-transition path no longer depends on the listener SSE round-trip for the happy path. The runner's
POST /plan-resultand newPOST /apply-resultendpoints now drive theplanning → plannedandapplying → appliedtransitions directly via a shared idempotent helper. The reconciler's listener-driven Job-status flow stays as a fallback for cases where the runner can't post (OOM, SIGKILL before the entrypoint runs, network partition). Plus listener SSE recovery improvements: a 30s read watchdog wraps everyaiter_linescall so silent stream stalls are detected and reconnected, a 10-minute mandatory periodic reconnect prevents stale Redis pubsub subscriptions from surviving indefinitely, and every dispatched SSE event is now logged at INFO so listener consumption is visible in operator dashboards. Fixes the production failure mode where a Job completed cleanly but the run sat inplanningfor an hour until the stale-check timeout. (#273) -
Drift detection on non-VCS workspaces now picks the configuration version that produced the current state, not the latest uploaded. The previous logic could plan against a CV that had never been applied, surfacing diffs between two configs rather than actual infrastructure drift. Joins on the runs table to find the CV referenced by the most recent successful apply; returns no-op if the workspace has never been applied. (#274)
Status
Beta — patch only, no API or schema changes. Drop-in replacement for v0.22.0.
Full Changelog: v0.22.0...v0.22.1