Skip to content

v0.1.58

Choose a tag to compare

@github-actions github-actions released this 03 Aug 15:54
· 148 commits to main since this release
56ca39f

Highlights

Direct Execution (new)

  • Direct-routed ALTERs now execute as native MySQL DDL — changes the planner routes to direct execution run under the policy's lock-wait bound instead of a full copy, making small/metadata-only changes fast and safe. (#836)
  • direct_execution policy configuration — a new opt-in config block (enabled, max_table_rows, lock_acquisition_timeout) controls when direct execution is allowed. (#858)
  • Plan-time execution-mode verdicts — plans resolve and display whether each statement will run direct or via copy, so the route is visible before anything applies. (#886)
  • Disclosure and manual confirmation for direct-execution changes — PR comments call out direct-routed statements and require an explicit confirmation before applying. (#839)

GitHub PR Experience

  • Apply is marked as the primary action with ▶️ — the apply instruction stands out from secondary commands in the plan comment. (#896)
  • Failed tables surface their own error — a failed table shows its failure reason directly below its progress row, carried on a new per-table error_message progress field. (#888, #890)
  • Pre-copy failures render without a misleading progress bar — failures before the copy starts no longer show 0% progress. (#880)
  • Remote apply failures surface their reason in the PR comment — instead of a bare failed state. (#878)
  • Support-channel footer shows exactly when it should — offered on unmanaged-schema notices and unsafe-change refusals, and omitted everywhere it was noise. (#884, #871, #883)
  • Bare plans stay silent on non-owning deployments — a bare plan command no longer fans out duplicate comments from deployments that don't own the change. (#870)
  • Multi-deployment detail bodies use derived status — detail sections stay consistent with the aggregate state. (#882)

Driver Correctness

  • Pending operations are only claimed when their apply is still claimable — a driver can no longer pick up work under an apply that has settled or moved on. (#906)
  • Stranded pending operations under settled applies are reaped — leftover operations from interrupted drives are cleaned up instead of wedging future work. (#911)
  • The persisted tenant is authoritative for durable webhook deliveries — redeliveries resolve to the tenant recorded at receipt time. (#872)
  • Gate evaluation failures are distinguished from merit blocks — an evaluation error fails closed and reads as an error, never as a judged "blocked". (#823)

Observability

  • Apply identity on the full drive lifecycle — operator, sequential, grouped, resume/control, task-readiness, gRPC client, engine, and handler log lines all carry the apply's triage identifiers, so a failed or stalled apply can be traced end-to-end from logs alone. (#877, #879, #881, #885, #887, #889, #893, #913, #914, #917)
  • Spirit control-path and apply logs route through the change logger with table context — engine log lines land in the same identity-scoped stream as the rest of the drive. (#918, #875)
  • Stuck-pending apply diagnostics are surfaced and preserved — the diagnosis of why an apply sat pending survives for later triage. (#816)
  • Log fields that collided with reserved log-pipeline attributes were renamed — affected fields index correctly again. (#874)

Internals

  • StatementType is owned by pkg/ddl behind the parser seam — DDL classification no longer leaks parser types across package boundaries. (#908)
  • Docs: where to put the schema directory in namespaced repos. (#849)
  • Spirit pin advanced to latest main. (#894)

Contributors

What's Changed

  • refactor(webhook): distinguish gate evaluation failures from merit blocks by @Kiran01bm in #823
  • fix(github): show support footer only on unsafe-change apply refusals by @aparajon in #871
  • fix(observability): rename log fields that collide with reserved log-pipeline attributes by @aparajon in #874
  • fix(github): keep bare-plan fan-out silent on non-owning deployments by @aparajon in #870
  • fix(observability): carry table context on Spirit apply log lines by @aparajon in #875
  • fix(tests): isolate awssm resolver test from ambient AWS environment by @Kiran01bm in #876
  • refactor(webhook): make the persisted tenant authoritative for durable deliveries by @Kiran01bm in #872
  • feat(observability): bind apply identity to operator drive-scoped logger by @Kiran01bm in #877
  • refactor(github): declare support-footer eligibility at render time by @aparajon in #883
  • fix(github): offer the support channel on unmanaged-schema notices by @aparajon in #884
  • fix(github): surface remote apply failure reason in PR comment by @Kiran01bm in #878
  • feat(observability): bind apply identity to local resume and control logs by @Kiran01bm in #879
  • feat(github): render pre-copy failures without a progress bar by @Kiran01bm in #880
  • feat(github): use derived status in multi-deployment detail bodies by @Kiran01bm in #882
  • feat(api): add the direct_execution policy configuration surface by @aparajon in #858
  • feat(observability): bind apply identity to sequential drive logs by @Kiran01bm in #881
  • fix(observability): preserve drive logger in task readiness checks by @Kiran01bm in #885
  • feat(observability): bind apply identity to grouped drive logs by @Kiran01bm in #887
  • feat(observability): bind identity-scoped logger to gRPC client core remote drive loop by @Kiran01bm in #889
  • feat(github): surface a failed table's error below its row by @Kiran01bm in #888
  • Bump spirit to @main (e94e99be2c1b) by @morgo in #894
  • feat(engine): resolve plan-time execution-mode verdicts under the direct execution policy by @aparajon in #886
  • feat(engine): execute direct-routed ALTERs as native MySQL DDL under the policy's lock bound by @aparajon in #836
  • feat(api): carry per-table error_message on TableProgress by @Kiran01bm in #890
  • feat(github): disclose direct-execution changes and require manual confirmation by @aparajon in #839
  • feat(observability): complete gRPC client apply-identity logger adoption by @Kiran01bm in #893
  • fix(github): mark the apply instruction as the primary action with ▶️ by @aparajon in #896
  • feat(observability): surface and preserve stuck-pending apply diagnostics by @Kiran01bm in #816
  • docs(namespaces): where to put the schema directory by @Kiran01bm in #849
  • refactor(ddl): own StatementType in pkg/ddl behind the parser seam by @Kiran01bm in #908
  • ci: pre-pull external Docker images with bounded retry by @Kiran01bm in #912
  • feat(observability): carry the apply identity into Spirit engine log records by @Kiran01bm in #913
  • feat(observability): carry full apply attrs on operator lifecycle logs by @Kiran01bm in #914
  • feat(observability): carry the apply identity into handler lifecycle log records by @Kiran01bm in #917
  • fix(operator): only claim pending operations whose apply is still claimable by @aparajon in #906
  • fix(operator): reap stranded pending operations left under settled applies by @aparajon in #911
  • feat(observability): route Spirit control-path logs through the change logger by @Kiran01bm in #918

Full Changelog: v0.1.57...v0.1.58