Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

fix(release): make promotion atomic#340

Draft
NikolayS wants to merge 7 commits into
agent/fix-tle-upgradeNikolayS/PgQue:agent/fix-tle-upgradefrom
agent/fix-release-promotionNikolayS/PgQue:agent/fix-release-promotionCopy head branch name to clipboard
Draft

fix(release): make promotion atomic#340
NikolayS wants to merge 7 commits into
agent/fix-tle-upgradeNikolayS/PgQue:agent/fix-tle-upgradefrom
agent/fix-release-promotionNikolayS/PgQue:agent/fix-release-promotionCopy head branch name to clipboard

Conversation

@NikolayS

@NikolayS NikolayS commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

  • add strict final-SemVer promotion and post-tag devel-restore commands
  • regenerate twice, stage/verify all four stable artifacts, and swap the complete directory with rollback
  • record SHA-256/version coherence in a stable manifest, including both uninstall files
  • verify plain/TLE version targets and exact embedded-body equality
  • make stable documentation-channel promotion part of the release PR, including stable paths, tag-pinned source links, website build, and the post-tag return to development
  • add promotion failure/partial/stale/checkout-isolation regressions and a complete server release checklist

Fixes #325.

Stack

Validation

  • current frozen 0.2 artifact verification passed
  • missing/stale artifact fixtures failed as expected
  • disposable-copy 0.3.0 promotion, deterministic double build, whole-directory swap, and devel restore passed
  • forced post-stamp build failure restored lifecycle/devel and retained complete stable artifacts
  • checkout fingerprint remained unchanged
  • exact config-version default/override/mismatch behavior passed
  • PostgreSQL 18 full regression suite passed
  • combined release integration passed the development docs contract and website build; docs: document idempotency and partition keys #342 separately exercises simulated stable promotion and return-to-development contracts
  • shell syntax, ShellCheck, YAML parsing, structural actionlint, and git diff --check passed

The final promoted bytes do not exist yet, so the checklist keeps the supported-PG stable matrix, stateful v0.2 upgrade, final stable pg_tle fresh/update paths, both uninstalls, reviewed release notes, and documentation-channel promotion as mandatory pre-tag gates. #333 supplies continuous real pg_tle update coverage.

@NikolayS NikolayS changed the title release: make stable promotion atomic build(release): make promotion atomic Jul 11, 2026
@NikolayS
NikolayS changed the base branch from agent/fix-tle-upgrade to main July 11, 2026 14:05
@NikolayS NikolayS closed this Jul 11, 2026
@NikolayS NikolayS reopened this Jul 11, 2026
@NikolayS
NikolayS changed the base branch from main to agent/fix-tle-upgrade July 11, 2026 14:07
@NikolayS NikolayS changed the title build(release): make promotion atomic fix(release): make promotion atomic Jul 11, 2026

@NikolayS NikolayS left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REV rubric review

This is a manual execution of the repository's five applicable REV rubrics because the automated ultrareview quota was unavailable. It is not bot output. SOC2 was omitted as required.

  • Bug hunter: promotion staging, verification, rollback, and devel restoration are fail-closed; no additional high-confidence defect found.
  • Security reviewer: scripts use strict mode/IFS, quoted paths, isolated staging, and checksum/version coherence; no command-injection or credential finding.
  • Test analyzer: failure, partial, stale, isolation, Postgres, and integration paths are broad; CI is 17/17 green. Initial implementation/tests are retrospective rather than chronological RED.
  • Docs reviewer: RELEASE.md is appropriately release-specific and the checklist makes unproduced final artifacts explicit.
  • Guidelines checker: shellcheck is clean, but history contains unsupported repo-specific release:, test:, and ci: types; one docs subject is 54 characters. The PR title also differs from the main release: subject.

Blocking merge-order constraint: this PR is based on #333 and states that #342 supplies the documentation contract. #342 is itself stacked on #339. Do not merge or execute final promotion until #333 and the #339#342 documentation stack have landed or this branch has been synchronized and the combined checks rerun.

Nonblocking/history: preserve published history and use a compliant repo-specific squash/merge subject. A real-user promotion evidence comment remains required. This COMMENT review is not an approval.

@NikolayS

Copy link
Copy Markdown
Owner Author

Real-user verification evidence

Verified exact head 1b4ba4cdbb81a43b73c1e96ca152036821410f1f.

Chronological RED to GREEN:

git checkout 7ae1883
bash tests/test_release_promotion.sh

git checkout 1b4ba4c
bash tests/test_release_promotion.sh
bash -n \
  build/promote-release.sh \
  build/read-version.sh \
  build/verify-release-artifacts.sh \
  tests/test_release_promotion.sh
shellcheck \
  build/promote-release.sh \
  build/read-version.sh \
  build/verify-release-artifacts.sh \
  tests/test_release_promotion.sh

RED output:

FAIL: build/promote-release.sh must set the safe shell IFS

The GREEN promotion suite passed promotion, repeated transformation, restore,
rollback, and manifest-isolation cases.

I also exercised the maintainer path in a disposable copy with fresh
Postgres 18:

bash build/promote-release.sh 0.3.0
bash build/verify-release-artifacts.sh
export PAGER=cat
psql --no-psqlrc --set=ON_ERROR_STOP=1 \
  --dbname="$PGQUE_TEST_DSN" --file=sql/pgque.sql
psql --no-psqlrc --set=ON_ERROR_STOP=1 \
  --dbname="$PGQUE_TEST_DSN" --file=tests/run_all.sql
psql --no-psqlrc --set=ON_ERROR_STOP=1 \
  --dbname="$PGQUE_TEST_DSN" --file=tests/acceptance/run_acceptance.sql
psql --no-psqlrc --set=ON_ERROR_STOP=1 \
  --dbname="$PGQUE_TEST_DSN" --file=sql/pgque_uninstall.sql

Key output:

artifact verification: passed
=== ALL TESTS PASSED ===
ALL ACCEPTANCE TESTS PASSED
schemas named pgque after uninstall: 0

Full CI run 29155476659 passed on this exact head. Merge-order gate: #342 must
land before #340. This is an ordering dependency only; #340's base must not be
rewritten to #342.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@NikolayS

Copy link
Copy Markdown
Owner Author

Added a docs-only follow-up (RELEASE.md, commit 5fe4cca) closing two review findings; no script behavior changed.

  • Undefined post-release devel convention: --restore-devel 0.3.0 re-stamps devel to 0.3.0-devel, which SemVer-orders before the released 0.3.0, so a post-release main build is ambiguous with a pre-release one — a new "Open the next development cycle" section now establishes the after-tagging convention (bump to the next minor -devel, e.g. 0.4.0-devel) and enumerates every place that must move together: the pgque.version() literal in devel/sql/pgque-additions/lifecycle.sql, the two regenerated devel artifacts, the hardcoded literals in tests/test_release_promotion.sh, and the test_pgque_config fallback in tests/test_pgque_config.sql.
  • Stale PGTLE_UPGRADE_FROM_VERSION: it is hardcoded to 0.2.0 in build/transform.sh and was never mentioned in RELEASE.md, so the next release would silently ship an update path from 0.2.0 only and refuse 0.3.0 upgraders — the same checklist section now requires bumping it to the just-released version and extending tests/test_tle_upgrade.sql accordingly.

Also added one line to the release-notes checklist ("Tag and publish") requiring the notes to document the devel-channel pg_tle case (a db registered at X.Y.Z-devel has no update path to stable — safe refusal — plus the operator's manual path).

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.

release: make stable/devel promotion atomic and verifiable

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.