問題
Kairos を組み込んだ発報システムが停止し、30 分後に再起動した。停止中に予定時刻を過ぎた発火の 扱いについて、言語仕様が定めていることとして正しいものを一つ選べ。
- (a) 言語が missed-fire を検出し、自動的に遅延発火する
- (b) 停止中の発火は言語仕様上失われる
- (c) 言語は決定的な点列の列挙(同じ定義・同じデータ・同じ範囲なら同じ結果)までを保証し、 取りこぼしの検出・遅延実行・冪等性は発報層の責務
- (d) 再起動後の評価は停止時刻を起点に再計算されるため結果が変わる
正答
(c)
解説
spec §7.7/§7.8 の分業ループ: 言語=「この範囲の発火点はこれ」という決定的な列挙の提供 (決定性の条件は同じ定義・同じ評価範囲・同じデータ——asof が担い、external は同一 スナップショット相対。データを更新すれば結果が変わるのは決定性の破れではなく供給の更新。 再実体化しても予定不変——だから発報層は停止前後の列を突き合わせて missed-fire を計算で 検出できる)。発火の実行・at-least-once・冪等・遅延ポリシーは発報層の設計領域。(d) が誤りな のは決定性そのもの——評価は実行時刻に依存しない(実行起点相対の形も「注入された時点」からの 計算として決定的・§7.7)。