Armed the order-publish leg of apps-pmv2-weather-as-algo at ~20:15Z by rolling pin 9a07960e5521c4 AND setting WEATHER_AS_PUBLISH=1 in the secret. The new pin is env-gated, default OFF; this is the first time the weather-AS lane has a path to publish entry envelopes to NATS. Money safety intact: dry_run end-to-end, PM gates at build+sign. Sibling note to crypto-emit-max-fires-cap-clear-2026-06-25 and cohort-firstmover-roll-d851d44-2026-06-25.

This is a DRY arm — no real money

weather_as=dry_run, global dry_run, PM gates at build+sign — NO POST hits the exchange. The publish leg fires real NATS envelopes onto pmv2.order.weather_as.entry so downstream consumers can dogfood the message shape, but the chain dead-ends at the PM signer in dry_run mode.

What rolled + armed

FieldValue
Serviceapps-pmv2-weather-as-algo (Pattern B, Python --loop)
Old pin9a07960 (observe→lock→match→gate→self-measure only, no publish)
New pine5521c4
New imagesha256:8e592f03...
ContainerrestartCount=0 post-deploy
Env armWEATHER_AS_PUBLISH=1 added to secrets/pmv2-weather-as-algo.env

Boot version line confirms the cutover:

e5521c4 feat(weather-as): env-gated order publish on gate-admit (WEATHER_AS_PUBLISH, default off)

Behavior change

On a gate_admit, scan() now publishes the pmv2-contracts entry envelope to subject pmv2.order.weather_as.entry. Constraints:

  • Once per market/day (self-measure dedup; the same self-measure ledger weather-AS already maintains).
  • Only when env WEATHER_AS_PUBLISH=1. Default OFF at the binary level; no publish without explicit env arm.

No change to observe / lock / match / gate / self-measure — those keep running identically.

Env-arm procedure (per [[gcp-terraform-ansible-gotchas|gotcha #28]])

The local secrets/pmv2-weather-as-algo.env is gitignored AND ignored by deploy-apps.yml — the GitHub Actions repo secret PMV2_WEATHER_AS_ALGO_ENV is the source of truth. The arm path:

  1. Edit secrets/pmv2-weather-as-algo.env, append WEATHER_AS_PUBLISH=1.
  2. Push to GH-Actions secret without echoing the value: rtk proxy cat secrets/pmv2-weather-as-algo.env | rtk proxy gh secret set PMV2_WEATHER_AS_ALGO_ENV -R wowjeeez/terraform.
  3. Dispatch deploy-apps.yml for app=pmv2-weather-as-algo.
  4. Verify inside container: docker exec apps-pmv2-weather-as-algo-app-1 printenv | grep WEATHER_AS_PUBLISH returns WEATHER_AS_PUBLISH=1.

Kill switch

Unset WEATHER_AS_PUBLISH in the env, re-push the secret, redeploy. Same gotcha #28 path in reverse. The publish leg goes dark instantly on container restart.

NATS-side prerequisites — already in place

The weather_as NKey was minted in a prior session (pin 5db34c0) with PUB permit on pmv2.order.weather_as.>. No NATS-side change needed for this roll. Subject is captured by PMV2_ORDERS (wildcard pmv2.order.> — verified during the crypto cap-clear session same evening).

First scan post-arm

  • 11 cities scanned.
  • 1 locked (paris, gate_blocked → no admit).
  • 10 no_lock.
  • published=0 this tick (no gate admit, normal idle behavior).
  • settled=1.

The arm is hot; first publish will fire on the next gate_admit.