Skip to content

RFC 0001: pgmold owns expand/contract zero-downtime migrations#331

Draft
fmguerreiro wants to merge 3 commits into
mainfrom
docs/rfc-0001-pgmold-expand-contract
Draft

RFC 0001: pgmold owns expand/contract zero-downtime migrations#331
fmguerreiro wants to merge 3 commits into
mainfrom
docs/rfc-0001-pgmold-expand-contract

Conversation

@fmguerreiro
Copy link
Copy Markdown
Owner

design doc: should pgmold subsume pgroll's expand/contract responsibility.

  • prompted by v5.4.0 sagri deploy: hand-written pgroll migration drifted from declarative schema, needed manual prod intervention
  • four options: fix pipeline seams (A), rebuild pgroll stateless (B), rebuild pgroll stateful (C), pgmold-plans-pgroll-executes (E)
  • recommends A now (cheap, reversible), E as long-term target gated on a pgroll op-vocab coverage spike
  • L0-L8 test matrix included as the risk section

doc: docs/rfc/0001-pgmold-owns-expand-contract.md
status Draft. needs stakeholder review before Proposed.

evaluates whether pgmold should subsume pgroll's zero-downtime
expand/contract responsibility. carries four options: fix the
pipeline seams (A), rebuild pgroll stateless (B), rebuild pgroll
stateful (C), and pgmold-plans-pgroll-executes (E). recommends A
now, E as the long-term target gated on a pgroll op-vocab coverage
spike. includes the L0-L8 test matrix as the risk section.
pins how pgmold and pgroll are used together under E: the thin
pgroll-awareness stance (file-format + object-ignore, no state
coupling), the loose-vs-tight orchestration fork, the pipeline
deploy sequence, the v5.4.0 worked example showing the failure
is impossible by construction, and the loud coverage fallback.
spike run locally and closed. result: not a pgroll-coverage question.
pgmold cannot represent a rename (no Rename op; name-keyed diff);
proven by execution it emits destructive drop+add that fails on a
populated table. pgroll v0.16 vocab is rich, not the bottleneck.

recommendation reframed: ship A now (pipeline reorder + ownership
boundary), add a rename directive as an independent pgmold-correctness
item (Beads pgmold-3po5), defer E until that ships and only if the
managed coupling tax proves painful. spike Beads pgmold-e5bj closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant