{"data":{"automatic_activation":false,"automatic_database_change":false,"automatic_release_promotion":false,"cpanel":{"application_root":"evulgare.com","application_url_path":"","entry_point":"application","passenger_wrapper_owned_by_cpanel":true,"python":"3.13.14","startup_file":"cpanel_app.py"},"cutover_sha256":"48d38ca6a489dc97862cf8dbfeb923f704cb6c712bd01d4bfbb4e9791977a9d2","expected_routes":["/","/livez","/readyz","/healthz","/simulations/","/simulations/autonomous-drone-control","/docs/acceptance","/docs/acceptance/deployment-cutover","/company/eviulon-defense-partnership","/api/v2/status","/api/v2/deployment/cutover","/api/v2/simulations/health","/robots.txt","/sitemap.xml"],"operational":false,"phases":[{"changes_live_state":true,"description":"Create timestamped backups of .env, MySQL, and the current application root.","id":"CUT-01","name":"BACKUP","operator_action":true},{"changes_live_state":false,"description":"Verify root layout, build identity, runtime-integrity manifest, member hashes, modes, and forbidden-file rules.","id":"CUT-02","name":"VERIFY ARCHIVE","operator_action":true},{"changes_live_state":false,"description":"Extract to a separate staging directory and verify the clean tree before touching the active root.","id":"CUT-03","name":"STAGE","operator_action":true},{"changes_live_state":true,"description":"Replace the active root with the verified staged tree while preserving the private environment file.","id":"CUT-04","name":"REPLACE ROOT","operator_action":true},{"changes_live_state":true,"description":"Install requirements in the Python 3.13.14 virtual environment, run Alembic upgrade, and run idempotent seeding.","id":"CUT-05","name":"INSTALL AND MIGRATE","operator_action":true},{"changes_live_state":false,"description":"Run full-stack, runtime-integrity, deterministic proof, memory, preflight, and pytest checks.","id":"CUT-06","name":"DIAGNOSE","operator_action":true},{"changes_live_state":true,"description":"Restart Passenger only after all staged and application checks pass.","id":"CUT-07","name":"RESTART","operator_action":true},{"changes_live_state":false,"description":"Verify candidate version, database reachability, catalog readiness, routes, redirects, headers, cache, compression, and absence of secret leakage.","id":"CUT-08","name":"LIVE PROBE","operator_action":true},{"changes_live_state":false,"description":"Create a bounded production-host evidence candidate, review it explicitly, and preserve residual unknowns.","id":"CUT-09","name":"EVIDENCE REVIEW","operator_action":true}],"preconditions":["Back up .env, MySQL, and the current application root.","Stop the cPanel Python application before replacing the root.","Use one complete root-content archive; do not merge selected folders from different releases.","Keep the private .env outside the distributable ZIP and restore it only after staging verification.","Do not set the cPanel startup file to passenger_wsgi.py."],"public_persistence":false,"qualification":"This is a deployment and evidence contract, not evidence that the cPanel cutover occurred.","readiness_conditions":["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."],"release":"2.0.0-rc.9-WIP","rollback":{"automatic":false,"requirements":["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."]},"runtime_integrity":{"critical_file_count":25,"passed":true,"passenger_wrapper_state":"CPANEL_WRAPPER_POINTS_TO_CPANEL_APP","status_sha256":"31304b2be16f5e4479768a2ead683f56217028cfe5479136475720ccbf91c9fe"},"schema":"evulgare.deployment-cutover.v1","status":"READY_FOR_OPERATOR_CUTOVER_WITH_WIP_QUALIFICATIONS","terminal":"SYNTHETIC_NULL_SINK"},"meta":{"api_version":"v2","automatic_deployment":false,"automatic_promotion":false,"digest":"48d38ca6a489dc97862cf8dbfeb923f704cb6c712bd01d4bfbb4e9791977a9d2","operational":false,"persisted":false,"request_id":"39585623-d466-482c-af66-e59d3dbd5ced","synthetic":true,"workbench_version":"2.0.0"},"ok":true}
