Armed the order-publish leg of apps-pmv2-weather-as-algo at ~20:15Z by rolling pin 9a07960 → e5521c4 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, globaldry_run, PM gates at build+sign — NO POST hits the exchange. The publish leg fires real NATS envelopes ontopmv2.order.weather_as.entryso downstream consumers can dogfood the message shape, but the chain dead-ends at the PM signer in dry_run mode.
What rolled + armed
| Field | Value |
|---|---|
| Service | apps-pmv2-weather-as-algo (Pattern B, Python --loop) |
| Old pin | 9a07960 (observe→lock→match→gate→self-measure only, no publish) |
| New pin | e5521c4 |
| New image | sha256:8e592f03... |
| Container | restartCount=0 post-deploy |
| Env arm | WEATHER_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:
- Edit
secrets/pmv2-weather-as-algo.env, appendWEATHER_AS_PUBLISH=1. - 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. - Dispatch
deploy-apps.ymlforapp=pmv2-weather-as-algo. - Verify inside container:
docker exec apps-pmv2-weather-as-algo-app-1 printenv | grep WEATHER_AS_PUBLISHreturnsWEATHER_AS_PUBLISH=1.
Kill switch
Unset
WEATHER_AS_PUBLISHin 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=0this tick (no gate admit, normal idle behavior).settled=1.
The arm is hot; first publish will fire on the next gate_admit.
Related
- weather-as-deploy-pattern-b-2026-06-23 — original Pattern B deploy shape (continuous
--loopservice) - weather-as-selfmeasure-pnl-fixes-2026-06-23 — self-measure ledger (the dedup source for the once-per-market/day rule)
- gcp-terraform-ansible-gotchas — gotcha #28 (
rtk proxy cat | rtk proxy gh secret setto push env without echoing) - crypto-emit-max-fires-cap-clear-2026-06-25 — sibling deploy event same evening; also verifies
PMV2_ORDERSwildcard subject capture - cohort-firstmover-roll-d851d44-2026-06-25 — sibling deploy event same evening
- levandor-infra — VM project overview