日本語 · English(未訳)

ADR-15: 空ストリームは正当な値。出自は評価註釈に分離。判定はスコープ外

判断: ロールや選択の結果、有効点が一つも無いとき、エラーを投げず空ストリームを返す。空は例外でなく値。 ただし「なぜ空か」(窓内に有効点ゼロ等)を、値とは別レイヤーの評価註釈(provenance)として残せるようにする。 空が正当か事故かの判定そのものは言語の責務外とする。

背景: 無限遅延ストリームという土台に、ゼロ件=例外は異物。filter が全部落とせば空は当然の結果。 一方で空には意味の違う二種がある。正当な空(その月に該当営業日が無い、未来で範囲外、条件が厳しく合致なし)と、 事故の空(カレンダーデータ未投入、祝日定義の年が抜けている、タイポで全日が弾かれた)。結実した日時の列の上では 両者が区別できず、「データ欠損で静かに発報が消える」という、最も陰湿なサイレント故障を生む。 これは一貫して避けてきた「黙って違う結果」の、何も出ないという形。

却下した案: 有効点ゼロでエラー停止する案。ストリーム代数に異物を持ち込み、純粋性を損なうため却下。

帰結: 三段で線を引く。

改訂(2026-07-08・ADR-37): 評価註釈を具体化するにあたり、「空の出自」を「区間の出自」へ 一般化する。註釈(第一号は「範囲外」=データ被覆域の外)は結果ストリームに並走する区間に付き、 空でない結果にも付く——範囲外区間に規則由来の点(satSun 等)は出続けるが、データ由来の点が 欠けているかもしれない、という形の危険は「空」だけでは表せないため。空はその特別な場合(註釈区間で 点が一つも残らなかった形)。本 ADR の三段の線引き(値は普通・出自は註釈・判定は外部)は不変。 なお「註釈なし」は既知のデータ端に起因しないことを言うだけで正当性の証明ではない(タイポの 全落ちは註釈ゼロの空のまま外部判定に渡る)。詳細は ADR-37。