Parent
#447
What to build
Make the Polymarket market-recorder deployment admission fail closed when the active market-tape uploader runtime is still a legacy Python path that cannot consume recorder outputs containing quote_collection_failure. The recorder deploy preflight/install path must verify uploader compatibility before mutating production, instead of validating only the recorder process and output freshness.
Acceptance criteria
Why now
Live ECS evidence on 2026-07-29 showed polymarket-market-tape-upload.service failing with unsupported update kind 'quote_collection_failure' while polymarket-market-tape.service remained active. The current recorder deploy contract can treat recorder rollout as healthy without proving the downstream uploader can archive the resulting segment format.
Out of scope
- Changing the legacy Python uploader implementation.
- Changing raw-ops cutover sequencing or formal Gate supervision in the same PR.
- Research/snapshot changes.
Parent
#447
What to build
Make the Polymarket market-recorder deployment admission fail closed when the active market-tape uploader runtime is still a legacy Python path that cannot consume recorder outputs containing
quote_collection_failure. The recorder deploy preflight/install path must verify uploader compatibility before mutating production, instead of validating only the recorder process and output freshness.Acceptance criteria
polymarket-market-recorder-deploy.sh preflightandinstallfail closed when the active market-tape uploader identity is not the Rust raw-ops uploader runtime./proc/PID/exe, fresh output, rollback, and lock semantics remain unchanged.Why now
Live ECS evidence on 2026-07-29 showed
polymarket-market-tape-upload.servicefailing withunsupported update kind 'quote_collection_failure'whilepolymarket-market-tape.serviceremained active. The current recorder deploy contract can treat recorder rollout as healthy without proving the downstream uploader can archive the resulting segment format.Out of scope