You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The expedited 15-minute Rust Gate still blocks before shadow startup on a fresh
legacy-Python health publication and a worst-case Python RuntimeMaxSec budget.
Rust candidate validation does not require a particular Python process lifetime;
Python is retained unchanged for rollback while the persistent legacy spool is
the parity input.
Change contract
Permit the signed 15-minute Rust Gate to start immediately without waiting for
Python health publication or Python runtime budget. Keep the Python production
unit unchanged as rollback, retain legacy-spool parity, and keep real-segment,
Rust health, OSS readback, immutable evidence, candidate identity, and cutover
checks fail-closed.
Candidate: exact-main signed release rebuilt after this PR merges, with candidate, release-manifest, control-manifest, control-archive, and clean-ustar SHA bindings independently read back from OSS.
Controller: /root is the sole production controller; all other work is read-only.
Stop rule: stop the Rust shadow and retain Python if artifact verification, real-segment preflight, Rust health, parity, OSS readback, immutable evidence, or the 1501-second Gate policy fails.
Rollback: keep the current canonical Python unit unchanged through the Gate; if cutover verification fails, restore that verified Python control and stop Rust.
Acceptance criteria
Legacy-Python mode does not wait for a new/fresh Python health publication
before starting the Rust shadow.
Legacy-Python mode does not require remaining RuntimeMaxSec to cover the
Gate or preflight.
A Python PID/restart during the Gate does not invalidate otherwise valid
Rust evidence; the canonical production unit remains untouched for rollback.
Legacy-spool parity remains mandatory and uses a Rust-derived bounded cutoff.
The production Gate remains 900 seconds plus the existing 601-second parity
tail and still requires real closed-segment preflight, Rust health, OSS
readback, immutable bindings, and fail-closed policy validation.
Focused counterexamples reject missing parity, Rust health, OSS, or immutable
evidence even though Python admission is non-blocking.
Test seam
deployment/aliyun/polymarket-raw-ops-shadow-gate.sh through deployment/aliyun/test-polymarket-raw-ops-control-plane.sh.
Out of scope
Collector/uploader data semantics, production cutover itself, research,
snapshot/#235, changing the Python unit, or weakening Rust/OSS/immutable checks.
Rollout / rollback
Build a new exact-source signed release, independently read it back, run the real
closed-segment preflight, then run the 1501-second Gate. On any failure stop the
Rust shadow and leave Python production unchanged.
Parent
#486
Defect
The expedited 15-minute Rust Gate still blocks before shadow startup on a fresh
legacy-Python health publication and a worst-case Python
RuntimeMaxSecbudget.Rust candidate validation does not require a particular Python process lifetime;
Python is retained unchanged for rollback while the persistent legacy spool is
the parity input.
Change contract
Permit the signed 15-minute Rust Gate to start immediately without waiting for
Python health publication or Python runtime budget. Keep the Python production
unit unchanged as rollback, retain legacy-spool parity, and keep real-segment,
Rust health, OSS readback, immutable evidence, candidate identity, and cutover
checks fail-closed.
Runtime control
Acceptance criteria
before starting the Rust shadow.
RuntimeMaxSecto cover theGate or preflight.
Rust evidence; the canonical production unit remains untouched for rollback.
tail and still requires real closed-segment preflight, Rust health, OSS
readback, immutable bindings, and fail-closed policy validation.
evidence even though Python admission is non-blocking.
Test seam
deployment/aliyun/polymarket-raw-ops-shadow-gate.shthroughdeployment/aliyun/test-polymarket-raw-ops-control-plane.sh.Out of scope
Collector/uploader data semantics, production cutover itself, research,
snapshot/#235, changing the Python unit, or weakening Rust/OSS/immutable checks.
Rollout / rollback
Build a new exact-source signed release, independently read it back, run the real
closed-segment preflight, then run the 1501-second Gate. On any failure stop the
Rust shadow and leave Python production unchanged.