Rolled apps-pmv2-cohort-algo-firstmover from pin 8977b5b → d851d44 at ~20:19Z. The headline change: the on-chain feed migrated from Alchemy WSS log-subscription to eth_getLogs HTTP polling via the 150-proxy rotating pool — kills the WSS CU bleed on the cohort lane. Same pin also bumps consensus-alert threshold 2 → 4. Sibling note to crypto-emit-max-fires-cap-clear-2026-06-25 and weather-as-dry-publish-arm-2026-06-25 (three deploy events same evening).
For Agents
Cohort has THREE components —
firstmover+query-responder+scheduled-run. Onlyfirstmoverwas rolled here; the other two are untouched per cohort’s own confirm. The cohort lane’s WSS dependency is gone after this roll, but PM self-watch (pmv2-onchain-watch) is on a separate WSS path and still uses Alchemy WSS (swapped from DRPC ogws on 2026-06-25 to escape flapping). Don’t conflate the two paths in future debugging.
What rolled
| Field | Value |
|---|---|
| Service | apps-pmv2-cohort-algo-firstmover (cohort component 1 of 3) |
| Old pin | 8977b5b (Alchemy WSS log-subscription) |
| New pin | d851d44 |
| New image | sha256:716ee0d2... |
| Container | restartCount=0 post-deploy |
| Deploy shape | Pattern B containerized via apps Ansible role |
Key change — on-chain feed WSS → HTTP polling
Boot log proof of the migration:
INFO cohort_algo::pmv2::watch::poll_feed: polygon poll feed armed interval_secs=5 max_blocks=2000
- Old shape: Alchemy WSS log-subscription, subscribed to log events as they arrived. Continuous CU spend even when no events fired.
- New shape:
eth_getLogsHTTP polling at 5-second cadence, max 2000 blocks per pull, routed through the 150-proxy rotating pool that cohort/PM/crypto already share. CU spend is bounded by poll frequency, not by event flow.
Other changes in the same pin
- Consensus-alert threshold 2 → 4. Per cohort’s status. Reduces alert volume.
first_mover_core armed cohort=18(wascohort=20prior). Minor cohort window resize; no architectural shift.
What this does NOT change
- PM self-watch (
pmv2-onchain-watch) still uses Alchemy WSS. That was swapped from DRPC ogws on 6/25 to escape flapping — separate decision, separate lane. - The other two cohort components (
query-responder,scheduled-run) — untouched per cohort’s confirm. - NATS publish path (
cohort.signals) — unchanged; only the on-chain feed transport changed. See cohort-firstmover-nats-migration.
Approval chain
Standard cohort-producer per-task go-ahead + Andras’s #480 standing-auth carve-out for deploys/env/NATS/redispatch/restart applies. No producer-DB mutation here — straight redeploy. No surfacing needed.
Related
- cohort-firstmover-nats-migration — the prior cohort lane decision (in-process → NATS publish); transport change there, on-chain feed change here
- polygon-wss-provider-drpc — Polygon WSS provider context (DRPC ogws history)
- crypto-emit-max-fires-cap-clear-2026-06-25 — sibling deploy event same evening
- weather-as-dry-publish-arm-2026-06-25 — sibling deploy event same evening
- babylon-deploy-notes — coordination context
- levandor-infra — VM project overview