Highlights
Vitess Safety
- VSchema deletions are treated as unsafe changes — removing a VSchema entry is classified as unsafe and gated accordingly, instead of passing as an ordinary edit. (#1075)
- In-place vindex mutations are treated as unsafe changes — editing a vindex in place is classified alongside deletions rather than read as a benign rewrite. (#1081)
Apply Correctness
- A deployment-keyed apply completes only when its generation manifest is satisfied — the dispatcher's declared operation set is the completion authority, so an apply whose siblings are still arriving stays running instead of terminalizing early and refusing later attachments. (#1076)
- Sequential operation-scoped drives leave the parent apply to the projection — a drive that owns one operation no longer writes the parent's state directly, so the parent reflects the derived verdict over all of its operations. (#1074)
Schema Configuration
ignore_namespacesinschemabot.yaml— a repository can exclude namespaces from schema discovery, and the ignored set is reported back so the exclusion is visible rather than silent. (#1073)
CLI
pull --lintsurfaces schema lint findings — pulling a schema can report lint findings on what it pulled, with unlintable tables and unsupported dialects named explicitly. (#1080)
GitHub PR Experience
- Throttle reasons are explained inline, with a reference doc — a throttled apply says why it is throttled in the PR and links to the full explanation, rather than showing a stalled count. (#1072)
PostgreSQL
- Durable controls resolve terminally on typed lifecycle declines — a control request the engine declines for a typed lifecycle reason settles terminally instead of retrying against a decision that will not change. (#1078)
- The config-to-apply path is covered and the fail-closed plan seam is removed — PostgreSQL planning no longer routes through a seam that blocked plans lacking classifier verdicts. (#1067)
Internals
- The effective-Vitess-state policy is shared in one helper — the state derivation lives in a single place instead of being restated at each call site. (#1071)
- Storage parity families are linted against exact
time.Timeequality — the parity tests compare timestamps exactly rather than through a looser check. (#1070) - The release process and its compatibility checks are documented — the repository documents how a release is cut and what compatibility gates it must clear. (#1066)
Upgrade notes
- The
appliestable gainsexpected_operation_keys. On MySQL the self-bootstrapping schema check applies this at startup. On PostgreSQL the bootstrapper creates missing tables but does not alter existing ones, and it fails startup when an expected column is absent, so add this column before deploying. - The data plane's chunk-time knob is removed and its lock wait timeout is fixed at 10s. Volume no longer tunes a target chunk time; deployments that relied on volume to influence chunk sizing should expect the engine's own sizing instead. (#1077)
- Spirit / checkpoint compatibility: unchanged. This release moves the Spirit pin, but the checkpoint table definition (
_<table>_chkpnt) is identical to the previous release, so a row copy interrupted by a redeploy resumes from its checkpoint rather than restarting. - No toolchain change. This release stays on Go 1.26.6; consumers embedding the module need no toolchain move.
Contributors
Full Changelog: v0.1.62...v0.1.63