docs: CORRECTION — the chain gates are rolled back, not armed noetl/ai-meta#362, #360 reopened. The 772/0 reading was real but the window was too short: 13 divergences over 839 engagements (98.45%) an hour later, and all three vars were removed. The cause is neither of the mechanisms these pages describe. An event commits into the MIDDLE of an ORDER BY event_id read — a snowflake event_id is minted before insert, so commit order is not id order, and the id-ordered log is not the append-only growing prefix populate_from_log assumes. Proven by position arithmetic: the store held at position 72 what the log holds at position 73. ⚠ Volume is not duration. 772 comparisons over minutes says nothing about an hourly mechanism.
docs: the chain store on the read path — the guards, StaleLog, and the corrected arming state noetl/ai-meta#360. New page `execution-chain-store.md`: the four-step shape of `LogSourcedChainSource::chain_for`, a table of every guard AND what each one exists to prevent, and how to read the 13 pinned outcome labels. Linked from Home and _Sidebar. ⚠ Corrections to `deployment-specification.md`, which had become wrong: - It said the gates were ARMED IN PROD on v3.117.1. That ramp was ROLLED BACK at 13:28Z on 6.3% comparator divergence, which proved to be a FALSE alarm. The armed state is v3.117.2 since 17:30Z, and the re-ramp measured 772 comparisons with 0 failures. - The pinned set is 13 series, not 11: v3.117.2 adds `stale_log` and `stale_log_unresolved`. Their presence is the cheapest proof of which binary is running — more direct than the image tag, which can disagree with reality. - The read path now takes a SECOND log read on `StaleLog`, which is what keeps the #358 two-writer alarm armed after a behind snapshot stopped counting as a divergence. Recorded on the flag whose path it is. - Rollback guidance sharpened: v3.117.1 PREDATES the fix, so an image roll-back restores the false-divergence behaviour. Remove the three vars instead (~17s).