RELEASE ENGINEERING · COMPLETE ROOT · NO AUTOMATIC ACTIVATION

DEPLOY ONE RELEASE.
PROVE WHAT IS RUNNING.

Evulgare’s cPanel cutover contract stages and verifies one complete root tree before an operator changes the live application. Build identity, runtime bytes, Passenger configuration, database readiness, routes, and evidence review remain separate checks.

PACKAGE STATE READY FOR OPERATOR CUTOVER WITH WIP QUALIFICATIONS 2.0.0-rc.9-WIP
CRITICAL FILES 25 ALL MATCH
PASSENGER WRAPPER CPANEL WRAPPER POINTS TO CPANEL APP cPanel owns the generated wrapper
CUTOVER PHASES 9 operator-controlled
PROOF CONDITIONS 16 PASS
01 · CPANEL CONTRACT

The values that must not drift.

Python
3.13.14
Application root
evulgare.com
URL path
EMPTY
Startup file
cpanel_app.py
Entry point
application
Public root
/

Do not configure cPanel to start passenger_wsgi.py. cPanel generates that wrapper. It must point to cpanel_app.py and expose application.

02 · CUTOVER SEQUENCE

Each phase produces evidence before the next begins.

  1. CUT-01

    BACKUP

    Create timestamped backups of .env, MySQL, and the current application root.

    CHANGES LIVE STATE
  2. CUT-02

    VERIFY ARCHIVE

    Verify root layout, build identity, runtime-integrity manifest, member hashes, modes, and forbidden-file rules.

    READ-ONLY / STAGING
  3. CUT-03

    STAGE

    Extract to a separate staging directory and verify the clean tree before touching the active root.

    READ-ONLY / STAGING
  4. CUT-04

    REPLACE ROOT

    Replace the active root with the verified staged tree while preserving the private environment file.

    CHANGES LIVE STATE
  5. CUT-05

    INSTALL AND MIGRATE

    Install requirements in the Python 3.13.14 virtual environment, run Alembic upgrade, and run idempotent seeding.

    CHANGES LIVE STATE
  6. CUT-06

    DIAGNOSE

    Run full-stack, runtime-integrity, deterministic proof, memory, preflight, and pytest checks.

    READ-ONLY / STAGING
  7. CUT-07

    RESTART

    Restart Passenger only after all staged and application checks pass.

    CHANGES LIVE STATE
  8. CUT-08

    LIVE PROBE

    Verify candidate version, database reachability, catalog readiness, routes, redirects, headers, cache, compression, and absence of secret leakage.

    READ-ONLY / STAGING
  9. CUT-09

    EVIDENCE REVIEW

    Create a bounded production-host evidence candidate, review it explicitly, and preserve residual unknowns.

    READ-ONLY / STAGING
03 · RUNTIME INTEGRITY

Critical bytes are checked against the packaged manifest.

Critical runtime file integrity
PathExpected bytesActual bytesState
app/__init__.py 10163 10163 PASS
app/blueprints/api_v2/routes.py 27886 27886 PASS
app/blueprints/docs/routes.py 24279 24279 PASS
app/blueprints/main/routes.py 8666 8666 PASS
app/blueprints/simulations/routes.py 11178 11178 PASS
app/config.py 4407 4407 PASS
app/content/release/build-info.json 558 558 PASS
app/content/simulations/scenarios.json 78319 78319 PASS
app/content/simulations/workbench-v2.json 42775 42775 PASS
app/deployment_cutover.py 10974 10974 PASS
app/release_metadata.py 4617 4617 PASS
app/runtime_integrity.py 12910 12910 PASS
app/security.py 3710 3710 PASS
app/simulation_explorer.py 15430 15430 PASS
app/simulation_registry.py 4135 4135 PASS
app/simulation_workbench.py 88787 88787 PASS
app/static/css/base.css 140904 140904 PASS
app/static/css/simulation-workbench.css 40922 40922 PASS
app/static/js/simulation-explorer.js 10316 10316 PASS
app/static/js/simulation-workbench.js 62988 62988 PASS
cpanel_app.py 5828 5828 PASS
env_loader.py 2233 2233 PASS
requirements-dev.txt 55 55 PASS
requirements.txt 477 477 PASS
wsgi.py 285 285 PASS

Runtime status SHA-256 31304b2be16f5e4479768a2ead683f56217028cfe5479136475720ccbf91c9fe

04 · READINESS

Liveness is not readiness.

/livez proves the process can expose immutable package identity. /readyz additionally requires matching runtime bytes, no configured-version conflict, a reachable database, and a ready ten-record simulation catalog.

  • Repository-controlled package version equals the candidate release.
  • Configured APP_VERSION is absent or matches the package version.
  • All critical runtime files match the packaged integrity manifest.
  • The cPanel Passenger wrapper points to cpanel_app.py/application and is not recursive.
  • MySQL is reachable and Alembic migration state is current.
  • The ten-record Simulation Explorer catalog reports READY.
  • No required route returns an unhandled server error.
05 · ROLLBACK

Rollback preserves history.

  • Preserve the pre-cutover root and database backup until live acceptance completes.
  • Rollback must restore a mutually compatible root, database schema, and private environment.
  • A rollback restores technical state only; it does not erase evidence of the failed cutover.

A rollback restores technical state. It does not delete failed-cutover evidence or prove that downstream effects were remedied.

06 · DETERMINISTIC PROOF

The contract is checked without claiming deployment occurred.

CUT-P01 PASS

Candidate release identity is exact

CUT-P02 PASS

cPanel Python version is exact

CUT-P03 PASS

Root application path is unprefixed

CUT-P04 PASS

Startup module is cpanel_app.py

CUT-P05 PASS

WSGI entry point is application

CUT-P06 PASS

Passenger wrapper remains cPanel-owned

CUT-P07 PASS

Complete-root replacement is required

CUT-P08 PASS

Private environment remains outside the ZIP

CUT-P09 PASS

All nine cutover phases are present and ordered

CUT-P10 PASS

Live probe includes candidate identity and readiness routes

CUT-P11 PASS

Rollback is not automatic

CUT-P12 PASS

No automatic activation or migration

CUT-P13 PASS

No automatic release promotion

CUT-P14 PASS

Runtime integrity proof passes

CUT-P15 PASS

Public persistence remains disabled

CUT-P16 PASS

Synthetic null sink remains explicit

Cutover SHA-256 48d38ca6a489dc97862cf8dbfeb923f704cb6c712bd01d4bfbb4e9791977a9d2
Proof SHA-256 851a124de664a327389a4d94382c4e684255e12bfff1121dc2c36de4178c8678

SYNTHETIC PUBLIC BOUNDARY

DEPLOYMENT EVIDENCE IS NOT OPERATIONAL AUTHORITY.

This surface does not control a vehicle, select a target, authorize force, alter a database, activate Passenger, or promote a release. Every public simulation remains synthetic and terminates at SYNTHETIC_NULL_SINK.