Require proven large-demo startup

This commit is contained in:
Richard Courtman 2026-08-29 03:28:50 +01:00
parent cb0e55671f
commit c006b15871
4 changed files with 22 additions and 2 deletions

View file

@ -14,9 +14,12 @@ git rev-parse -q --verify "${TAG_REF}^{commit}" >/dev/null || {
# Reusable workflows execute from the caller revision, while the installed
# binary comes from TAG_REF. The large-estate profile is safe only when that
# exact runtime implements both required scaling boundaries.
# exact runtime implements both scaling boundaries and carries an explicit
# startup-readiness marker earned by the complete governed profile. Source
# structure alone is not proof that health becomes responsive at that scale.
if git grep -q 'mockEagerHistoryPVEGuestLimit' "${TAG_REF}" -- internal/monitoring/mock_metrics_history.go && \
git grep -q 'UpdateMetricCohort' "${TAG_REF}" -- internal/mock/integration.go; then
git grep -q 'UpdateMetricCohort' "${TAG_REF}" -- internal/mock/integration.go && \
git grep -q 'mockLargeEstateStartupReady' "${TAG_REF}" -- internal/monitoring/mock_metrics_history.go; then
PROFILE="large-estate"
MOCK_NODES=50
MOCK_VMS_PER_NODE=10

View file

@ -2023,6 +2023,21 @@ release-note screenshots referenced by the validated body, and reject every
unreferenced asset. Recovery remains activation-only and may not rebuild or
replace the qualified candidate.
Activation recovery run `33227705135` published stable `v6.4.0` and bound
customer convergence to run `33227719830`. Docker aliases, Helm Pages, and the
paid-runtime broker converged, but the stable demo's large-estate restore left
the v6.4.0 process unresponsive and the public health endpoint unavailable.
The convergence owner was cancelled after the restore exceeded its bounded
health window; its global promotion lease released successfully. Dedicated
demo recovery run `33228777096` reproduced the failure with the exact installed
binary and unit, preserved the Relay process, restored the prior runtime
configuration, and compensated by stopping only `pulse.service`. A tagged
runtime may therefore enter the 50-node, 48-hour-seed public demo profile only
when it carries an explicit `mockLargeEstateStartupReady` marker earned by that
complete startup and browser proof. The eager-history and update-cohort source
markers remain necessary but are not sufficient. Runtimes without the explicit
proof marker use the governed 8-node, two-hour-seed legacy-bounded profile.
The preceding `v6.4.0-rc.8` qualification attempt used exact source SHA
`bac7e5d9526d76a6b4e34738511b07609dda80ed`. Release run `33128595650`
passed preparation, frontend bundle, Windows installer smoke, release smoke,

View file

@ -1839,6 +1839,7 @@ func TestUpdateDemoWorkflowUsesGovernedNetworkPath(t *testing.T) {
`Resolve target-compatible demo runtime profile`,
`git grep -q 'mockEagerHistoryPVEGuestLimit'`,
`git grep -q 'UpdateMetricCohort'`,
`git grep -q 'mockLargeEstateStartupReady'`,
`PROFILE="large-estate"`,
`MOCK_NODES=50`,
`MOCK_VMS_PER_NODE=10`,

View file

@ -1943,6 +1943,7 @@ class ReleasePromotionPolicyTest(unittest.TestCase):
self.assertIn("Resolve target-compatible demo runtime profile", demo)
self.assertIn("mockEagerHistoryPVEGuestLimit", demo_profile)
self.assertIn("UpdateMetricCohort", demo_profile)
self.assertIn("mockLargeEstateStartupReady", demo_profile)
self.assertIn('PROFILE="legacy-bounded"', demo_profile)
self.assertIn("MOCK_NODES=8", demo_profile)
self.assertIn("MOCK_VMS_PER_NODE=6", demo_profile)