v0.1.62
Highlights
GitHub PR Experience
- Applies explain throttle pauses and checkpoint resumes — when the engine's throttler pauses a row copy or checksum, the PR says so, and a stalled row count reads as a deliberate pause rather than a hang. (#1039)
- A configurable agent hint on plan comments — deployments can render their own guidance to coding agents alongside a plan. (#895)
- Over-cap pull requests get a cap-specific blocking check — a PR that exceeds the schema file cap is told exactly that, instead of failing behind a generic check. (#1032)
- One terminal comment for an exhausted durable command — a command that runs out of retries answers once, at the bottom of the timeline. (#1052)
- Control requests name the operator who issued them — the plane that records a durable control request carries the caller through to the PR notice and the apply log, even when another plane accepted the command. (#1020, #967)
- A refused apply names the apply and table holding the database — the refusal points at the blocking work instead of stating that the database is busy. (#1034)
- Check Run summaries are sanitized — error text on a Check Run summary can no longer leak raw driver or connection detail into a public pull request. (#1044)
Apply Correctness
- Remote dispatches are keyed by deployment and verified on the way back — a deployment's sibling operations share one remote apply, so the data plane echoes the operation key it resolved and the control plane checks it before persisting remote ids. (#1049, #1050)
- VSchema-only applies are shaped as a deployment-scoped finalizer — a VSchema change dispatches as a task-less finalizer rather than resurrecting sibling DDL as shard-less work. (#1045)
- Task-less stop and cancel settle truthfully when the lease is lost — a control request against an apply whose lease has moved reports what actually happened. (#1047)
- A shutting-down process hands an apply back cleanly — a process going down releases its apply instead of leaving it to time out. (#1019)
- Queued shards ready for cutover are normalized — a shard that has finished copying is presented consistently regardless of how it queued. (#1035)
- The revert window is kept for unsafe changes — an unsafe change retains its window to be reverted rather than closing it early. (#1040)
- The pre-deploy context baseline is bounded to recent history — the baseline reads a recent window instead of the full history. (#1046)
Webhook Durability
- Lost auto-plans are recovered from
check_suite.requested— a plan that never landed is picked back up instead of leaving the PR without one. (#1002) retry_afteris honored as a not-before time — a delivery asked to wait is held until its time rather than retried early. (#999)- Deliveries that can never succeed are dead-lettered — a permanently failing delivery stops consuming retries. (#1023)
- Stale auto-plan claims coalesce through a superseded terminal state — a claim overtaken by a newer one resolves instead of lingering. (#1001)
- Both issue-comment paths share one gate ladder — the durable and direct paths evaluate the same gates in the same order. (#1053)
PostgreSQL & Storage
- Native-safe PostgreSQL schema changes apply via pg-sprite — PostgreSQL applies run through the pg-sprite engine. (#1025)
- A
storage.dialectswitch routes the storage stack — the configured dialect selects the MySQL or PostgreSQL back end. (#1013) - PostgreSQL sessions are pinned to UTC — storage sessions no longer inherit the server's timezone. (#1018)
Data Plane
- Schema pull is delegated to the data plane engine capability — pull runs on the engine that owns the database rather than in the control plane. (#1022)
- Plan and pull validate the database type against the server config — validation reads the configured types instead of a hardcoded list. (#1031)
- Managed MySQL connections interpolate query parameters client-side — every connection opened through the shared helper interpolates parameters itself. (#1029)
Observability
- Engine log routing is correct and race-free — engine log lines reach the right apply log without racing. (#1028)
- GitHub request metrics distinguish transport failures from 404s — a dial failure and a missing resource are no longer the same signal. (#1024)
- A resumed or failed drive explains itself in the apply log — the log states why a drive resumed or failed. (#1027)
- The tern health RPC logs its cause on failure — a failed health check names what went wrong. (#1026)
- Webhook log severities are right-sized for oncall triage — expected conditions stop logging at warning and above. (#1037)
Upgrade notes
pending_drops.enablednow defaults tofalse. The pending-drops quarantine is opt-in; deployments that relied on the previous default-on behavior must set it explicitly. (#1057)- The
taskstable gainsthrottledandthrottle_reason. On MySQL the self-bootstrapping schema check applies this at startup. On PostgreSQL the bootstrapper creates missing tables but does not alter existing ones, so apply these columns before deploying. - This release requires Go 1.26.6. Consumers embedding the module must be on that toolchain or newer.
- Upgrade data planes alongside the control plane when running sharded Vitess. A control plane on this version dispatching a sharded or VSchema-only apply to a data plane older than this version fails that dispatch closed, by design (#1050). Non-sharded MySQL applies derive an empty operation key and are unaffected.
Contributors
Full Changelog: v0.1.61...v0.1.62