日本語 · English(未訳)

1.1 RC の草稿(2026-10-18・判断前)。観点の異なる 3 案(最小の語彙追加/読みやすさと教材/実装と波及)を独立に起こし、審査役が採点して統合した。2026-10-19 に推奨案で確定し、2026-10-21 に ADR-54・ADR-55 として起こした。本書は経過の記録(判断前の本文のまま)。実測の根拠は 1.0.10〜1.0.11 準備版の参照実装。

1.1 RC: 2 項目の相互整合・衝突掃引・束の判断材料・決める論点の一覧

3-8(since/before)× 3-10(labelOrdinal)——1.1 RC の相互整合・衝突掃引・束の判断材料

前提: 正本は読むだけ(変更なし)。実走は 1.0.10 の impl(node src/cli.ts list)。試験ファイルは /tmp/claude-1000/-home-haray-sandbox-kairos-project/61014c74-c851-4851-b301-ec81b4be1567/scratchpad/wf-rc11/t1-cmp.kairos 〜 t15-eq-label-num.kairos、掃引コーパスは同ディレクトリの code-corpus.txt。


1. 整合の所見——2 語を一つの語彙として読めるか

軸 3-10 labelOrdinal(B, x) 3-8 since(p)/before(p) 判定
層・register core 射影族(複合綴り: ordinalIn・epochOrdinal・snapTo・coincides と同列) stdlib 糖衣・段語(単語: at・take・filter と同列) ○ それぞれの族の綴り規則に乗る(spec §5.4 の既存語と同じ)
引数の置き方 束縛が先・点/値が最後(ordinalIn(u, w, d)・coincides(S, w, d) と同順) 位置引数 1 つ(at(a)・nth(n) と同形)・named-arg なし ○
起点・境界 1 起点(ordinalIn と同じ「第 N」。0 起点は l[i]・epochOrdinal に温存) 半開 [since, before)(評価範囲 [from, to)・窓・isOpen と同じ) ○ 両方とも既存の規約を継承し新規約を作らない
単位 持たない(宣言順の位置) 持たない(chronos 上の瞬間の全順序) ○ 3-8 の「単位の問い」は epochOrdinal 形の人工物という読みと整合
暦法非依存 値域は宣言リスト・暦法を見ない 順序は chronos・tz は在圏で解決(ADR-33) ○
型規則との関係 ラベル→数値への唯一の橋。ラベル同士の順序は定義しない 時点にだけ順序を足す。ラベル・数値との混在はエラー ○ 補完関係。実測: weekday(d) >= Fri は今日「数値ではない: string」(t6)・weekday(d) == 1 は「等値比較の両辺の型が異なる…」(t15)。両方入れば 3-8 のラベル側エラーの誘導先に labelOrdinal(weekday, d) >= labelOrdinal(weekday, Fri) が書ける(片方だけなら誘導先が無い)
dispatch 点形 labelOrdinal(B, d) ≡ labelOrdinal(B, B(d))=§2.7(10-types.md:104-122)の「点→射影」に乗る 該当なし ○
互換の縁 core 語=同名束縛は静的エラー。実測 t8: epochOrdinal = l => 1 → 「core 語 epochOrdinal の再定義は静的エラー(§4.8)」exit 1 stdlib 語=利用側 top-level の同名束縛を黙って覆う。実測 t4: top-level at(a) = s => s(恒等)を書いても everyDay |> at(T09:00) は 09:00 の点を出す=stdlib が勝つ・警告なし。premise ブロック内の再定義は利用側が勝つ(t9: 日の点が出る)。根拠 impl/src/eval.ts:2091-2104 lookupBinding=premise → calendar-system → topBindings △ 非対称。同じ 1.1 で入る 3 語のうち 1 語は「うるさく止まる」・2 語は「黙って意味が変わる」。spec には top-level 束縛と公開語の優先順の明文は無い(§3.4 は premise 間の曖昧のみ・§4.8 は core 語のみ)。→ 論点 C2
診断文言 日本語型名で書く前提 草稿は「追補 22 の等値エラーと同じ型名」 △ 今日の順序比較の経路は num()(eval.ts:3388-3390)=kindOf の英語種別(point・string)、等値は typeName(1929-1935)の日本語。3-8 の新分岐は typeName 側で書き、両辺を見る(t7: t >= T14:00 は左辺 point で止まり単独時刻の誘導に届かない)。3-10 の文言も同じ typeName に揃えると一語彙として読める
教材上の重なり 点形の売りの一つ「曜日番号」 — △ 実測: ordinalIn(day, week, d) == 7 は wkst: Mon で日曜(t12)・wkst: Sun で土曜(t13)、isoWeekday(d) == 7(ISOWeek)は wkst に依らず日曜(t14)。「月=1…日=7」は 1.0 で既に isoWeekday が返す。点形の固有価値は wkst 非依存の weekday 番号と external/labels: cycle 束縛(B(d) 経由しか道が無い)に絞って説明するのが正確

結論: 命名・引数・起点・境界・単位は互いに矛盾せず、既存の 2 つの族(射影族/段語)の規則をそれぞれ継承している。一語彙として揃っていないのは (1) 互換の縁の硬さ と (2) 診断の型名 の 2 点で、どちらも 1 文の規約と実装の 1 分岐で揃う。


2. 衝突の有無(機械掃引の根拠)

語彙集合(spec と stdlib から採取):

候補名の照合(上の全集合に対し whole-word):

候補 語彙集合との衝突 kairos コードコーパス(spec・reference・stdlib・40-examples・recipes・en の ```kairos フェンス+.kairos=2,493 行) 検定・ブログ・zenn・供給側 docs(識別子として) 1.0 で束縛名として合法か(実走)
labelOrdinal なし 0 0 合法(t3 exit 0)
ordinalOf・labelNo なし 0 0 合法(t3)
ord なし(散文 2 件のみ: reference/segmentBy.md:142・en 182 の「ord(lunar(d)) の類」) 0 0 合法(t3)
since・before・after・between なし(散文のみ。eval.ts:1599 の since は内部変数) 0 0 合法(t2: since(p) = …/before(p) = … を top-level 糖衣として定義し exit 0・3 点)
until param-key と同綴り(until:) 4(すべて until:) 0 合法(t5: until(p) = … が解析・実行される)→ 衝突は字句でなく可読性の問題
from・to param-key と同綴り from 61・to 3(すべて from:/to:) 0 合法(t5: from(p) = … exit 0)

→ 推奨名 labelOrdinal・since・before は全集合・全コーパスで 0 件。until/from/to の不採理由は「同綴りの named-arg と 2 役」で、実装上の障害ではない(1.0 でも書ける)。


3. 束の判断材料——両方/片方/どちらも糖衣

問い 事実 帰結
3-10 は糖衣で済むか 値層にリスト探索の原語が無い(§3.5 の演算子表: 添字 l[i]・in のみ)・再帰禁止(F110)・値域は宣言に住む(TableV に domain が無い: eval.ts:122-130) 不可。三項 12 段は値域ごとの手書き。core 1 語が最小
3-8 は糖衣で済むか since は stride(1, from: p) 展開で 1.0 でも書ける(提案側実測・註釈が評価域末尾まで膨張)。before の 1.0 核は epochOrdinal 形(単位必須・t2 で成立)か差 \(提案側実測で整列なし/窓付きで割れる=当方は未再走)。順序比較は num() 固定(eval.ts:1905-1908・t1 で「数値ではない: point」exit 1) 単位なしの before は core の受理拡大なしに書けない。糖衣だけで出すなら since 限定+単位付き
1.1 の定義との関係 90-open:11「追加拡張=新語・新構文の追加で、既存の式の意味は不変」。3-10 は字義どおり新語。3-8 は型規則の緩和(エラー→定義)。先例 ADR-45「静的エラーだった形の合法化=追加拡張」(CHANGELOG.md:207)は凍結前の RC5 追補 7。凍結後の追補は全部「言語不変」(追補 22 の「偽エラー 2 形が評価できる」はバグ修正) 3-8 を入れるなら 1.1 の定義文に「エラーだった形の合法化を含む」の 1 句が要る。3-10 だけなら不要
触る面の重なり 両方: eval.ts・spec §4.8(予約の規約)・§4.9(表/等値の型)・§5.4(確定行)・glossary・CHANGELOG「1.1」節・doc-consistency の正規表現(test/doc-consistency.test.ts:231 ^## (?:RC\d+|1\.0) 追補 (\d+))と状態行 4 入口(spec/README.md:7・README.ja.md・README.md:202「naming is final for every word」・en/spec/README.md)・Playground 再構築(指紋は src+stdlib)・MCP 再バンドル(mcp/scripts/bundle-docs.mjs:36 は reference/*.md のファイル名から words.json を自動生成=確認済み)・検定追従・semver minor 束ねれば版上げの固定費(約半日/回)が 1 回。片方ずつだと 2 回
供給契約 3-10: --supply の labels は文字列配列(cli.ts:133-135・schema/supply.schema.json:46-55)=不変。3-8: 無関係 どちらも wire・schema・MCP tool に変更なし
需要 3-10: 1 例(供給側の大安・不成就日)+ monthNo 衝突事故(収蔵 28)。3-8: 2 例(11 §(n)・ブログ第 35 弾) いずれも「需要が続けば」の閾は満たしている
片方だけのときの穴 3-10 だけ: ラベルの順序は数値経由で書けるが時点の切り出しは epochOrdinal 形のまま。3-8 だけ: weekday(d) >= Fri のエラーに誘導先が無い 同時に入ると互いの診断の誘導先になる(§1 の表)

勧め: (A) 両方を 1.1.0 で一度に。ただし順序は 3-8 の受理拡大(論点 S1)を先に裁定——(a) 認めるなら束で進める・(b) 認めないなら 3-10 単独で 1.1.0 とし、3-8 は「利用側糖衣 since(stride 形)」の案内に留めて before は見送り。(D)「どちらも糖衣」は 3-10 が原理的に不可なので成立しない。


4. 決める論点の一覧(2 項目を畳んだ・推奨つき)

共通(束に関わる)

# 論点 選択肢 推奨
C1 1.1「追加拡張」の定義に受理拡大(エラーだった形の合法化)を含めるか 含める/新語・新構文に限る 含める(ADR-45 の先例を 1.1 の定義文に明記)。これが 3-8 の可否そのもの
C2 1.1 の新語と同名の利用側束縛の扱い(互換の縁を一様に) (i) 文書化のみ(stdlib 語は黙って覆う=t4 の現状)/(ii) stdlib 公開語の top-level 再定義を一律静的エラー(at・monthStart にも遡る)/(iii) 1.1 以降に追加した語(core・stdlib を問わず)に限り同名の top-level 束縛を静的エラー/(iv) since・before を core 語にする (iii)。3 語の縁が同じ硬さになり、§4.8/§5.4 に「1.1 以降の新語は予約され同名束縛は改名」の 1 文で両項目を覆える。1.0 の at 等の挙動は不変。コーパス 0 件なので実害は無いが原理(「黙って意味が変わらない」)を守る
C3 1.1 の記録書式 「## 1.1(日付)——…」節を新設・状態行を「1.0 で凍結・1.1 で N 語追加」・正規表現を 1.1 対応/「1.1 追補 1」の通し番号 節新設。最初の変更で赤になる面(doc-consistency.test.ts:231・入口 4 箇所・README.md:202・spec/README.md:7「命名は全語確定」)を枝の最初の commit で直す
C4 束ね方と版 両方で 1.1.0/3-10 先行 1.1.0・3-8 は 1.2/3-16 まで待つ 両方で 1.1.0(§3)。3-16 は ADR-51 改訂の大物なので待たない
C5 ADR 番号と候補設計の置き場 3-10=ADR-54・3-8=ADR-55(最新 ADR-53)/逆 裁定順に 54・55。INDEX.md:15「ADR-01〜53」の範囲表記を更新。候補設計は 00-syntax-draft §1.34/§1.35
C6 reference の形と正準例の差し替え時期 1 語 1 ファイル(labelOrdinal.md・since.md・before.md)・segmentBy.md の三項形は「1.0 互換の書き方」で併記・11 §(n) は糖衣形に/1.1 公開まで現状 1 語 1 ファイル・公開と同時に差し替え・旧形は併記(words.json はファイル名から自動)
C7 診断の型名 新しい順序比較と labelOrdinal のエラーを typeName(日本語)で統一・両辺を見る/現行 num() の英語種別のまま 統一(t6・t7 の現状「数値ではない: string/point」は英語種別で左辺止まり)
C8 下流の追従 検定は follow→verify→publish で 1.1 に同版・ブログ 492(10/22)はそのまま・1.1 公開後に追補記事・供給側へ便で通知(旧形は合法のまま・任意採用) そのまま

3-10 固有

# 論点 推奨
T1 名 labelOrdinal(族の綴り・全コーパス 0 件・ord は 1.0 で合法な束縛名=t3・ordinalOf は yearOf/monthOf と Of の向きが逆・labelNo は monthNo 事故と同 register)
T2 引数形 値形+点形(点形 ≡ labelOrdinal(B, B(d))。§4.10 の註釈輸送・ADR-40 の tz 名検査を B(d) 経由で継承)。「コマの番号」案は不採・別項へ。教材では点形の固有価値を「wkst 非依存の曜日番号・external/labels: cycle」と書く(t12〜t14)
T3 値域の範囲 3 形(external の labels:・窓束縛 cycle・labels: cycle)。並行列 labels: は窓順なので不受理(誘導: 数値を直接書く=stdlib/kyureki.md:46 の形・または epochOrdinal)
T4 起点 1
T5 値域の重複 呼び出し時の静的エラーのみ(宣言側は今日合法=提案側実測)
T6 数値・論理値の値域 一様に位置。実測: 窓束縛 cycle [1, …] は「cycle のラベルは名前」exit 1(t10)・external も名前限定(eval.ts:1169)・labels: cycle [1, 2, 3] は受理され seg(d) == 2 が 2026-02-01 を返す(t11)=数値値域が立つのは labels: cycle だけ
T7 案 0(labels: に数値) 不採(供給契約 cli.ts:133-135・schema:46-55 の変更・名前ラベルに効かない)
T8 4 勤 4 休の「何日目」 90-open に別項(位相の量。需要 2 例目で phaseIn 級)

3-8 固有

# 論点 推奨
S1 時点どうしの順序比較を定義する受理拡大(中心) 認める(== は時点に定義済み eval.ts:1920・§4.9 等値の型・順序への完成として説明が立つ)。認めないなら since 限定の stride 形+before 見送り
S2 名 since/before(0 件・境界と英語が一致。until は takeLast(n, until:) の点包含と境界反転・from/to は param-key と 2 役=t5 で書けるが字面が散る)
S3 糖衣 2 語を受理拡大と同時に出すか 同時(需要の動機は読みやすさ)
S4 置き場 Gregorian 公開語(at の隣・gregorian.kairos:30)。影の手当ては C2 (iii) に合流
S5 日粒度の列に時刻付きリテラル 文書化のみ(日の点は 00:00・当日は 1 日ずらす)
S6 単独時刻どうしの順序 定義しない(3-11 と同時)
S7 1.0 文書への先行案内 待つ(stride 形は註釈膨張・before が無い)

草稿の行番号の訂正(小): doc-consistency の正規表現は :231(it( が :228)・spec/README.md の状態行は :7・README.md:202 は草稿どおり。