Kairos 言語仕様 — RC 履歴
リリース候補(RC)宣言ごとの差分と追補の記録。README(最新ステータス) の前段から移した
当時の記録(追記型・古い順)で、旧仮称や当時の宿題表記はそのまま残す。現況の正本は spec 本文・
命名の確定状況は §5.4・宿題は ../design/90-open-questions.md。
RC1 → RC2(2026-07-07)
通読レビューで ADR-29/30 の反映漏れと章間齟齬を修正(EBNF へ labels: を追補、前文を独立文とするスコープの
EBNF 修正、高階関数の記述修正ほか)、射影一族ほか六語の命名確定、宿題の分類再確認(DoD)。
RC2 追補(2026-07-07)
リファレンス実装(../impl/)の綻び F43〜F50 を解消——例の不整合修正(F45〜F48)と ADR-31(grid の
既定整列+anchor:・紀元 epoch:・stride 一族の from: 必須化)・ADR-32(文字列リテラル。
tz: "Asia/Tokyo")。
RC2 → RC3(2026-07-08)
頻出しながら未定義だった土台の明文化と、最後の未確定機構の確定:
ADR-33(TZ の定義)=射影パラメータモデル(基底 chronos は TZ 非依存・TZ は市民座標への版付き写像・
「錨」は射影に付く)、市民日は「その日付になる最初の瞬間」からの半開区間、chronos はうるう秒を持たない
一様な理想化軸=UTC の各日を 86,400 秒と数える(23:59:60 は字句エラー)、DST の隙間・重複に落ちる時刻リテラルは
明示エラー(解決規約は将来の opt-in)、紀元の tz 相対性の明文化。ADR-34(label: 付与式の束縛規則)=
ラムダは窓の先頭点を受け、意味論は定義的等式「名前(d) ≡ 付与式(先頭点)」(射影時・遅延評価)・
点±幅算術は導入しない。あわせて ADR-30/31 に改訂節(「別点の窓参照」の精密化・データ由来窓の
epochOrdinal=存在する最初の窓が 0(F60)・div/mod の負数は floor(F63))、用語集に TZ の項を新設、
§3.6 の「うるう秒で 23〜25 時間」の誤記を修正。標準 premise は 4 本に拡充済み(../stdlib/——Fiscal・
ISOWeek・Kyureki と暦座標糖衣。ISO 週番号が label: なしの確定語彙で書ける発見 F57 を含む)。
RC3 → RC4(2026-07-08)
最後まで残っていた二つの継続項目の確定:
ADR-35(カレンダー実体の宣言)=calendar: に立てる実体は予約公開語 nonWorking(仮称)を持つ
premise(新構文ゼロ・§3.9 新設)。正体判定(ADR-19 の延長)は nonWorking の day 整列と tz: 宣言
(内側固定の執行点)まで要求し、bizDay は言語規定の標準導出(calendar: 在圏の予約名)。軸位置の
premise 名(on: TSE)は正体判定+標準導出への読み替え(F53 解消)。修飾ピンの member 解決規則
(定義側優先)を明文化。ADR-36(結合子・軸所属の粒度整合)=整列(alignment)の静的検査を導入
(F56/F54 解消・§4.5)。整列=「全点が原子グリッド G(幅・正規化位相・tz 名)の目盛り上」という導出構造
からの主張で、&/\/filter(on:)/roll(on:)/shift(unit: 点列軸)/stride は両辺同一 G を要求
(黙って空振りする形を静的エラーに)・snapTo が明示の再整列・和 | は不問(混合スケジュール保護)・
tz 名はリテラル文字列の等値。あわせて ADR-05 に注記(整列は型でなく静的性質)・I8 の字面に結合子を追補・
glossary に整列/カレンダー実体/nonWorking/bizDay を追加・reference に nonWorking.md を新設。
リファレンス実装は実体・標準導出・整列検査まで実装し 147 テスト全通過(doctest の標準前提も実体経由)。
新出の宿題は F67〜F70(../design/40-examples/90-findings.md)。
RC4 → RC5(2026-07-08)
評価註釈(I6・ADR-15)の初めての具体化(F61 解消):
ADR-37(範囲外出自と covering: の活性化)=covering: は「範囲内は完全・範囲外は未知」の二面の
主張で値には触れない(列の全要素の包含は静的検査——当初案の clip は敵対検証の致命反例で却下)。
範囲外出自は結果に並走する区間註釈〔[a,b)・種・源・covering・asof〕で、伝播は core 全演算子の
輸送表(§4.10 新設——結合子は和・shift は平行移動像・roll は依存像・選択子は窓拡幅・stride は位相
汚染・segmentBy の edges: 発火は覆域端=実効被覆域)。相殺は自動でなく明示の被覆主張(束縛
後置 covering:)のみ。エラーの分類器=実効被覆域(外なら「落として註釈」・内なら従来どおり硬エラー)。
器は二つ——評価範囲にクリップする区間註釈と、クリップしない被覆サマリ(源・covering・asof・完結
主張・残走路)。covering の表現域を拡張: 開端(2021..・..=完結主張・統治つき)と区間
リスト(中抜けの申告)。あわせて ADR-15/26 に改訂節(空の出自→区間の出自)、I6 の字面更新、
EBNF(covering-list・束縛後置)、glossary 5 項追加。bizDay 標準導出の「データの尽きた先の黙った退化」
(ADR-35 判断 3)が退化するが観測可能になる。リファレンス実装は註釈の区間輸送・包含検査・分類器・
被覆サマリまで実装し 188 テスト全通過(実装検証で判断 5 の必要条件検査を精密化=ADR-37 改訂。
判断 1 の tz: 必須の執行のみ宿題)。
RC5 追補 1(2026-07-08)——所属の意味論の縁の確定
F68・F70 解消: ADR-38=(a) 窓所属の述語
coincides(S, w, d)(仮称三語目・§4.9 射影一族=値式の有界存在量化)。時刻付き・混合スケジュールへの
例外日適用(filter(t => not coincides(closures, day, t))——発火時刻を保存して「日」で除く)の受け皿。
確定は証人規則(真=非註釈区間の証人のみ・偽=窓が実効被覆域内)・S の市民時 tz と w の tz 名
不一致は静的エラー(クロス tz の裏口封じ)・整列要求は課さない(区間所属=ADR-36 判断 7 免除系へ)。
(b) stride は入力相対に確定(軸引数削除・n ≥ 1 の整数・from: 以上の最初の入力点が第 0 歩・
ADR-36 の stride 整列検査は削除)。あわせて ADR-37 判断 4 の filter 輸送行を逆像拡幅に精密化
(F75——窓越し述語の過小近似の穴)。使い分けの規範「同じ点なら結合子〈snapTo で整合〉・同じ
所属なら coincides」を §4.5 とエラー文言に整備。
RC5 追補 2(2026-07-08)——並行リストの結びの確定
F62 解消: ADR-39=テーブルの labels: を
segmentBy 窓列へ一般化(新語ゼロ・三ラベル源の対称完成——点データ/窓規則/窓データ・§4.2)。
読みは束縛名射影・整列は専用の窓列序数(実効被覆域内の先頭マーカー窓が 0——epochOrdinal とは
紀元跨ぎで食い違うため相乗りしない)・同長性検査(リスト長 == 覆域基準の窓数・評価範囲非依存=
正確・窓束縛の評価と同時)。前提=マーカー有限・無註釈の単一覆域。締め=edges: clip/empties:
drop/label: 同居/cycle/gen 語すべて静的エラー+未知の名前付き引数の黙殺も封止。守るのは長さのみ
(中身の照合は doctest・coincides の分担)。ADR-30 に改訂節(適用先一般化・補助束縛パターンの再配置)。
RC5 追補 3(2026-07-08)——日付ラベル保存の再錨と多 TZ の実行検証
F69 解消: ADR-40=
点変換 rebase(to: "tz")(仮称)=日付ラベルを保存して to tz の同日付の市民日先頭へ写す(§4.4)。
snapTo=chronos 所属・rebase=ラベル対応の二本立てで ADR-36 の整合手段が完成(TSE×NYSE の共通
営業日が書ける)。w=day 固定・非存在日付(Pacific/Apia 2011-12-30)は明示エラー・免除系の tz 名
検査を同時拡張(ADR-36 改訂 2)。リファレンス実装は IANA tz(依存ゼロ)で多 TZ を実装——DST 切替日
23/25h(ADR-11/12 幅規約の初の実行検証)・premise 相対 day グリッド・tz: 必須の全面執行。
RC5 追補 4(2026-07-09)——営業時間の供給規約と標準導出
F67 本体・F79 裁定: ADR-41=
カレンダー実体の細粒度層(§3.9)。供給規約=実体の予約公開語の対 sessionOpens/sessionCloses(仮称・実体 tz
の市民座標=壁時計で宣言・任意・with 継承込みで対判定)・セッション=半開区間の和・整合性検査
(結合実効被覆域∩実体化範囲での局所交互・端の切り欠き合法・同時刻対は両点保持)・標準導出
bizOpen/bizClose/isOpen(実体相対)。あわせて ADR-31 改訂 2=時刻付き anchor:/from: の
窓境界(壁時計ラベル読み・隙間→最初の瞬間・重複→最初)と shift の経過保存の明文化(F81/F83)。
RC5 追補 5(2026-07-09)——位置依存の名前解釈と窓インスタンス参照
F64/F9 解消: ADR-42=
適用の型規則(§2.7 新設——名前の解釈は候補集合を出現位置の期待型で絞り、複数残れば曖昧エラー。
軸位置の premise 名〈ADR-35〉・点引数=束縛名射影〈ADR-34〉・値引数=窓インスタンス参照の三面)と、
窓インスタンス参照 W(v)=逆像(§4.9——W(v) ≡ W の要素点列 |> filter(d => W(d) == v)。
year(2020)=その年の日々・marineDay & year(2020) の正準形・新語彙ゼロ)。dispatch は糖衣
展開後・実引数束縛後の引数式の型で分岐。標準ラベル=year/month(Gregorian)+year(Fiscal——
上書きはラベルを継承しないため同時付与)。ゼロマッチは空だが、静的に列挙できるラベル値域の域外は
静的エラー(month(2020) 級のタイポ封じ)。EBNF は stream-atom の修飾適用形
(Gregorian.year(2020))のみ追補。
RC5 追補 6(2026-07-09)——純命名の一括確定とリテラルの締め
F51・F66/F97: 仮称 9 語の
うち 8 語を正式名に確定(供給の対のみ opens/closes → sessionOpens/sessionCloses に改名・
ADR-41 改訂。残る仮称は shiftBoundary 一語=1.0 送り継続)。ADR-43=(a) 日付リテラルの
値域は字句エラー(2026-02-30 級の拒否——実装が黙って 2026-03-02 へロールオーバーしていた
サイレント面を封じる)・(b) 固定オフセット TZ は厳格一意形 "±HH:MM" のみ(ADR-36 の
「リテラル字面の等値」が依存する一意性)・(c) 時点は値型の一員(裸の値束縛 d0 = 2026-05-15
合法=F97 解消・ADR-42 の dispatch 表は「点以外の値→インスタンス参照」に精密化)。
RC5 追補 7(2026-07-14)——空テーブルリテラル(実装系還流の初便)
ADR-45=F98(発報層実装からの第一次還流で出た綻び——「点ゼロだが覆域は主張したい」束縛の
一次形が無く、恒偽 filter の回避形が迂遠): 空リスト [] は covering: 後置に限り時間ストリーム
定数(空テーブル)に昇格する。空形は covering 明示必須(省略既定「列の端」が空列で定義できない)・
labels: [] のみ合法・包含/昇順/同長の各検査は空虚に成立。整列は空虚適合の第三状態(ADR-36
改訂 3=全整列に適合し検査に通る・結合は相手を継承)。EBNF は変更なし(要素列は既に省略可能——
意味論注記のみ改稿)。既存の式の意味は不変(静的エラーだった形の合法化=追加拡張)。検証の副産物
として roll 空軸の依存像の実装欠陥(F99)を発見・修正。
RC5 追補 8(2026-07-14)——外部供給宣言 external(socket の確定)
ADR-46=発報層還流第一次の実測痛点 2 件(静的ソース不可・統治の焼き忘れ)を受けた socket の
要否込み裁定(設計者裁定=採用・宣言語 external)。設計の核=実行時に解決されるテーブル
リテラル——新型・新代数ゼロで、リテラルが字面で運ぶ静的性質を宣言(kind:=整列の主張・
labels:=値域の列挙)が先取りし、解決値に同一の統治検査(covering/asof 必須・包含・昇順・同長・
日付の実在)を供給契約として課す。premise 束縛の右辺(先頭)限定・解決は評価文脈の随伴
(一評価一解決・要求駆動・定義側 premise 単位のスナップショット)・解決失敗は供給エラー
(機械可読な部分類——「まだ無い」〈ADR-45〉と型で区別)。EBNF は param-key に kind/source を
追加のみ。§7.8 の決定性は「同一スナップショット相対」の条件を明記。既存の式の意味は不変
(追加拡張)。ADR-26 改訂 3(式に埋める/器で受ける、の使い分け確定)。
RC5 追補 9(2026-07-25)——テーブル後置の順序自由化と窓列被覆域の精密化(発報層還流 第 5 便)
第 3 の適用ドメイン(暦×占い)の実運用検証(発報層還流 第 5 便)が炙り出した 2 件:
- テーブルリテラル後置の順序自由化(F104):
covering:/labels:の後置を順序自由・各一回 とする(EBNF §5.6 を{ covering | labels }形に改訂)。従来文法は固定順(covering → labels) だったが、実装が逆順のcovering:をラベルリストの後置として黙って捨てていた——受理拡大に よる封じ(二重指定は構文エラー)。既存の式の意味は不変(追加拡張)。 - 窓列の実効被覆域の精密化(F105・ADR-37 改訂 3):
segmentByの窓列は「窓の張られた範囲」 だけを語る——マーカー覆域内でも窓のない区間(edges: drop/errorの頭側・empties: dropの 中抜け)は窓列由来の範囲外註釈とし、labels 射影・coincidesの読みには「落として註釈」で 応える(従来は硬エラー——filter 派生マーカー〔覆域始端 < 最初のマーカー〕で filter 正準形が 評価不能だった)。エラー→註釈の緩和方向のみで、正しく評価できていた式の意味は不変。
RC5 追補 10(2026-07-25)——窓列への周期ラベル labels: cycle(ADR-47)
segmentBy の labels: の値位置に周期形 cycle リスト anchor: 実日 を追加(発報層還流 第 5 便
§3 の実需——節切り月の十二支・月家九星・月星座など「窓列=暦の単位・ラベル=固定周期」の形。
候補設計 4 視点検証・設計者裁定 3 件を経た採用)。意味論は窓束縛 cycle と同一「anchor の属する窓が
先頭ラベル」= list[(i − i₀) mod N]・新語彙ゼロ。同長性検査は課さない(covering が伸びても式
不変=ADR-46 静的ソース原則との整合)——守るのは位相の宣言のみで、マーカー中途増減・非周期列への
誤用は機械検出されない(照合は doctest・coincides の分担)。anchor は窓列のいずれかの窓に区間
所属(頭側・範囲外は明示エラー)。締めは静的 labels: と同一を継承。あわせて named-arg の重複指定を
静的エラーに一般化。既存の式の意味は不変(追加拡張)。EBNF は segment-labels/cycle-labels を追加。
RC5 追補 11(2026-07-26)——最後の仮称を rephase に裁定・命名完全確定
窓境界の位相ずらし糖衣の正式名を rephase に裁定(旧仮称 shiftBoundary・設計者裁定=
当初「1.0 宣言時」予定の条件 3 を前倒し)。根拠は三点: (1) 展開の実体(span の phase:
差し替え)と名が一致——rephase(δ, on: W, unit: U) ≡ W = U span (_ => k) phase: ((φ₀+δ) mod k)、
(2) rebase(点の再錨)・anchor:(位相を留める実日)との re-/錨・位相語彙系の対称——ADR-47 で
「位相」が利用者向け語彙に昇格したことが後押し、(3) 簡潔(13 字→7 字)と点変換 shift との
同語幹回避。比較候補 shiftBoundary 昇格・shiftPhase・offsetBoundary/moveBoundary は
不採用(経緯は design/30-syntax/01)。boundary の語は k 可変組を扱う将来の別演算子
(スコープ外)に温存。これで全語彙が正式名——仮称ゼロ。意味論・展開・シグネチャは不変
(純命名)。全コーパス一括置換(spec・reference〈ページ改名 shiftBoundary.md→rephase.md〉・
stdlib・impl・図版・英語ミラー)。