ADR-50: hour 窓の標準化と ordinalIn の整合検査
判断: Gregorian 標準に hour = chronos grid 1h(経過 1 時間のタイル)を追加し、あわせて
ordinalIn の整合検査を新設する——経過幅グリッドの単位窓 × 枠窓で、枠窓の開始が単位の目盛り上に
ないとき明示エラー(黙って半端な序数を出さない。F1 標準糖衣候補の系=hour への適用と検査の
新設は設計者裁定 2026-08-17。候補設計 draft §1.31=4 視点並列検証で初版の安全較正が実測棄却
され全面改稿——本 ADR の本体は検査の側にある)。
-
hour は経過タイルであって壁時計の「時」ではない。幅リテラル
hの読み(ADR-12/28: h/m/s は常に経過時間)と一貫。ただし同じ表に並ぶday = chronos grid 1dは市民幅なので 「day が市民なら hour も」の類推が実誤読導線——stdlib の表の行内に「(day と違い)市民時では ない」を明記する。位相は経過幅の既定=在圏 tz の市民紀元(ADR-31/33・F107)。 - 整列の正しい述語は「紀元差」であって「オフセットの整数時性」ではない(初版較正の棄却・
実測)。紀元は在圏 tz 相対(1970-01-01T00:00〈在圏 tz〉)なので、タイルが市民日開始・壁時計の
時境界に一致する条件は「評価域の各瞬間で offset(t) − offset(紀元) が 1h の整数倍」——
- 一致: Asia/Tokyo・UTC・America/New_York・Asia/Kolkata(恒常 +05:30——非整数時オフセット でも紀元差ゼロで完全整列・実測)。
- 破れ: Asia/Kathmandu(1986 に +05:30→+05:45)・Asia/Singapore(1981 に +07:30→+08:00——現行整数時なのに破れる反例・実測)・Australia/Lord_Howe(半時 DST——季節で整列が反転する最悪例・実測)。 tz 単位の静的分類は原理的に不可能(季節・年代依存)——検査は per-instance・評価時・データ 相対の層(ADR-33)でなければならない。
-
整合検査(新設・ADR-36 判断 7 の免除の精密化):
ordinalIn(u, w, d)で u が経過幅 グリッドのとき、「d の属する w 窓インスタンスの開始点が u の目盛り上にあること」を検査し、 外れたら明示エラー(文言に壁時計の正道=isOpen/strideBy(1d, from: 時刻)への誘導を含める)。 判断 7 の免除根拠「区間所属は黙って空にならない」には「序数の取り違え」という黙り方の 反例が立った(Kathmandu 実測: 別タイルの 2 点が同じ序数 1・05:10→序数 5〈壁+1=6 と不一致〉、 すべて無音)——免除系から u/w 境界不整合を除く(ADR-36 追記参照)。プロトタイプの較正: filter は実体化範囲(評価端+400 日)の全点に述語を当てるため、季節反転 tz(Lord_Howe)では 夏の評価でも冬の窓に当たって予告的にエラーになる(安全側・黙誤読ゼロ)。 -
検査では守れない側の落とし穴=DST 切替日の序数。整数時 DST の tz(NY 等)は境界一致が 保たれ検査も通るが、切替日は day が 23/25 タイルになり
ordinalIn(hour, day, d)=壁時計の 時+1 の等式が割れる(実測: 秋戻し日の壁 23:30→序数 25)。営業スロット形(11 §(l))は 切替日に黙って 1 時間ずれる——壁時計概念の帯は宣言側が正準(ADR-41 の isOpen・壁時計 anchor の strideBy)。stdlib の落とし穴節はこの誘導を先頭に置く(F76 の再発防止——整列 検査が守るのは Kathmandu 型であって NY 型ではない)。 - 守備範囲: minute/second は標準に入れない(同じ 1 行で派生可能・秒タイルは実体化コストが
大きい=F80。解説に派生 1 行の案内と「tick 生成は strideBy へ」の誘導を置く)。壁時計の
「時」窓(DST 日にラベルが飛ぶ/重なる従属窓・定義的ラベル)は対象外——F78(壁時計の時刻
値射影・保留)の隣接領域として受け皿を明文化(窓形の需要が立てば別途 F 採番)。
旧 LMT 年代(1888 以前の +09:18:59 等)は紀元差破れの年代版だが評価範囲(1970〜)の外。
名は
hour(premise 公開語=仮・1.0 一括確定の流儀。既存文書の自己定義は全て同値で with の 同値上書きになり無害——grep 確認済み)。
経緯: 11 §(l) の実測(派生 1 行で張れる)→ 裁定「hour のみ進める」→ 候補設計(draft §1.31 初版 =「整列検査が弾く」「非整数時オフセットが破れる」と較正)→ 4 視点並列検証が二重の誤りを実測で 検出(検査は存在しない・Kolkata は整列する——3 視点が独立に到達)→ 全面改稿(破れの述語を 紀元差に・本体を検査の新設に昇格)→ 裁定「新設する」→ ADR 化・実装(stdlib 1 行+検査+テスト 6 本=Kathmandu/Singapore/Lord_Howe の拒否と Kolkata の整列を実測固定)。