Skip to content

Make the 15-minute Polymarket Rust Gate non-blocking on Python #490

Description

@proerror77

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 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.

Runtime control

  • Target: ECS i-6we6afeqsvv8uo1ixmyo; only the five canonical Polymarket units; research/snapshot/Capture full-update Polymarket CLOB evidence for token microstructure research #235 excluded.
  • 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.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingready-for-agentFully specified and safe for an autonomous agentruntimeRequires deployment, runtime mutation, or live evidence for closure

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions