Validate candidate migration baseline during release
Dependency Audit / dependency-audit (push) Failing after 1m42s
Deployment Installer / deployment-installer (push) Successful in 6s
Security Audit / security-audit (push) Successful in 10m38s

This commit is contained in:
2026-08-04 15:01:50 +02:00
parent 077735bc24
commit 8e890b37ed
3 changed files with 17 additions and 4 deletions
+5 -3
View File
@@ -59,9 +59,11 @@ Core next, and the meta tag last. This is a dependency guarantee for a
single-capacity Actions runner: the developer package cannot run before its single-capacity Actions runner: the developer package cannot run before its
exact Core and module versions have entered the queue. exact Core and module versions have entered the queue.
The same release entry point records the reviewed current Alembic heads under The same release entry point first validates the migration graph, then records
the target release version and reruns the strict migration audit before it the reviewed current Alembic heads under the target release version and reruns
changes package versions, commits, or tags. A failed baseline check therefore the strict migration audit before it changes package versions, commits, or
tags. The default preflight intentionally does not require those heads to exist
in the previous release baseline. A failed candidate-baseline check therefore
cannot produce a protected package release. cannot produce a protected package release.
It builds one wheel and, where applicable, one npm tarball. The workflow records It builds one wheel and, where applicable, one npm tarball. The workflow records
+10
View File
@@ -51,6 +51,16 @@ class ReleaseEntrypointGateTests(unittest.TestCase):
self.assertLess(module_push, core_push) self.assertLess(module_push, core_push)
self.assertLess(core_push, support_push) self.assertLess(core_push, support_push)
def test_default_migration_preflight_accepts_new_release_heads(self) -> None:
script = (META_ROOT / "tools" / "release" / "push-release-tag.sh").read_text()
audit_function = script[
script.index("run_migration_release_audit()") :
script.index("record_migration_release_baseline()")
]
self.assertNotIn("--strict-if-baseline", audit_function)
self.assertIn('command+=("--strict")', audit_function)
def test_source_catalog_generator_enforces_explicit_repo_versions(self) -> None: def test_source_catalog_generator_enforces_explicit_repo_versions(self) -> None:
script = (META_ROOT / "tools" / "release" / "generate-release-catalog.py").read_text() script = (META_ROOT / "tools" / "release" / "generate-release-catalog.py").read_text()
+2 -1
View File
@@ -533,7 +533,8 @@ run_migration_release_audit() {
command+=("--strict") command+=("--strict")
;; ;;
auto) auto)
command+=("--strict-if-baseline") # A coordinated release creates a new baseline after confirmation. The
# preflight validates the graph; strictness applies to that new baseline.
;; ;;
warn) warn)
;; ;;