日本語 · English(未訳)

Kairos ドキュメントレビュー(第14回)— 1.0.12

収蔵(2026-10-26・kairos-project): 対象=公開 azathothx/kairos-lang HEAD 43e3734(版 1.0.12・Release v1.0.12)と検定 azathothx/kairos-lang-exam HEAD 937256a。 レビュー日 2026-10-26。方法=指示書 tools/cloud-sessions/review-14-clean-room.md の 5 観点+検定の抜き取り 10 問を、正本を知らない 6 本の新規の機械レビュー(手元・各観点 1 本・ 読むのは公開 2 本の clone だけ)に分担させた。所見は各観点の原文のまま(番号は観点つき=①-H1 …。収蔵の正規化=原文の相対リンクはコードスパンに置き換え、役割語の検査に掛かる語 2 つを言い換えた)。統合の総評と実測サマリは当方。裏取りと処置は末尾「処置の記録」。

0. 総評(統合=当方)

実測サマリ(統合)

項目 結果
npm test/typecheck(HEAD 43e3734) 880 本 PASS・typecheck PASS=README 日英・llms.txt・impl/README の記載と一致
相対リンク/公開 URL 261 本欠損 0/41 本すべて 200
追補 29 の 5 点の実走(②) 主張どおり動く。文書の抜け=ラベルの「字面」規則・.ics の題の複数式形
仕様の突合(③) ラベル・評価註釈・終了コード・at・take・within は一致。例示の不一致 1(month(2020))・of: の曖昧エラー・Modified 未実装の注記
英語ミラー(④) kairos フェンス日英同一。意味ズレ 1(hour)・索引の抜け
鮮度(⑤) 祝日表 2026/2027・exe・MCP・llms.txt は一致。Playground の固定窓・「プロトタイプ」の語(1.1.0 で処置済み)
検定の抜き取り(⑥) 10 問全行一致・版の名乗りは 1.0.12 で一致

観点① 新規読者の導線(+テスト数の突合)

レビュー日 2026-10-26。対象= azathothx/kairos-lang HEAD 43e3734(1.0.12)・azathothx/kairos-lang-exam HEAD 937256a。立場=公開物だけを読む外部レビュアー(初見の利用者+仕様を検査する技術者)。実行環境= Node v24.16.0・npm 11.13.0・機械の tz は Asia/Tokyo。

実測サマリ

検証項目 結果 根拠
cd impl && npm test(TZ=UTC) 39 ファイル・880 本 すべて PASS(56.7 s・終了コード 0) Test Files 39 passed (39) / Tests 880 passed (880)
npm run typecheck PASS(終了コード 0・出力なし) tsc --noEmit
テスト数の記載 vs 実数 一致= README.md:209「880 tests」・README.ja.md:37「880 テスト」・llms.txt:21「880 tests」・impl/README.md:234「39 ファイル・880 本」・en/spec/README.md「880 tests」 上記の実測 880
同・npm に公開済みの README(kairos-lang@1.0.12) 「39 ファイル・862 本」= HEAD と 18 本ずれ(公開時点の文面。L3) npm pack kairos-lang@1.0.12 → package/README.md:234
導線 1: README(英) 読める。ただし hero 例を機械 tz のまま走らせると時刻付きで出る(M2)・付録 A のリンクが日本語版(M4) 本文
導線 1: README(日) 最初のコード例が実行できない(H1) calendar: が指す premise が未定義: TSE
導線 2: Playground(公開 URL) 日英とも 200・配信中の IMPL_VERSION = '1.0.12'・例 8 本・app.js/core.js/js/index.js すべて 200 curl https://kairos-lang.org/playground/js/build-info.js
導線 3: レシピ(recipes/・en/recipes/) 日英 9 ページ対称・Playground リンクは前提込みで decode→CLI 実走= doctest の期待値と一致。本文の @JP ブロックは貼ると動かない(M3) 下記 M3 の再現
導線 4: CLI npx -y kairos-lang@1.0.12 --version → 1.0.12・node impl/dist/cli.js で payday/jp-holidays/rokuyo 3 例とも終了 0・開発路 node src/cli.ts --version → 1.0.12(Node 24) 本文
導線 5: MCP npx -y kairos-lang-mcp@1.0.12 --version → 1.0.12・stdio で initialize OK(serverInfo kairos-lang 1.0.12・proto 2025-06-18)・tool 4 本(kairos_list/next/validate/reference)・resources 2 種・kairos_list/next/validate/reference とも応答・tz 省略は入力検証エラー 本文
相対リンク(README 日英・llms.txt・mcp README 日英・recipes 日英 全 18 ページ・impl/README・SKILL.md 日英・MAINTENANCE.md=29 ファイル) 261 本・欠損 0 自作スクリプト(存在検査・ディレクトリは README/index の有無も検査)
公開 URL(上記文書から抽出・許可ホストのみ) 29 本すべて 200(kairos-lang.org 13・exam 1・github.com 4・raw.githubusercontent.com 15)。別途 /README.ja・/mcp/README.ja・/skills/kairos-authoring/SKILL(日英)・/recipes/・/en/recipes/・/spec/60-…・/en/spec/61-… も 200。未検査(指示のホスト外)= developercertificate.org・modelcontextprotocol.io・registry.modelcontextprotocol.io の 3 本 curl -L -o /dev/null -w '%{http_code}'
Release releases/tag/v1.0.12 200・releases/latest → v1.0.12(302)・資産 kairos-1.0.12-win-x64.zip(36,225,004 B)+ .sha256 GitHub API
npm kairos-lang latest 1.0.12(2026-10-26T00:07Z)・kairos-lang-mcp latest 1.0.12(同 00:12Z)。公開物の依存は kairos-lang: ^1.0.11(HEAD の mcp/package.json は ^1.0.12。M5) npm view kairos-lang-mcp dependencies
版番号の古さ README.md:58/README.ja.md:102/llms.txt:106「reference CLI 1.0.5」・llms.txt:93「1.0.2」。引用文 5 本は 1.0.12 で一字一句再現(L1) 下記 L1
ADR 数 README.md:221「53 ADRs」・README.ja.md:50「ADR-01〜53」・llms.txt:204「53」= design/20-adr の実数 53 と一致 grep -rl "^# ADR" design \| wc -l → 53

HIGH

①-H1 日本語 README の最初のコード例が、CLI・MCP・Playground のどれでも実行できない


MEDIUM

①-M1 クイックスタートの実出力に、README に説明のない警告・註釈・負の残走路が出る

①-M2 README の hero 例を README どおりに CLI で走らせると、日付ではなく時刻付きで出る(--tz の案内が README に無い)

①-M3 レシピ本文の最初の kairos ブロックは、貼っても動かない(@JP の標準前提は doctest 専用)

①-M4 README(英)は付録 A を「(Japanese)」として日本語ページにリンクするが、英訳が存在する

①-M5 公開済み kairos-lang-mcp@1.0.12 の依存は kairos-lang: ^1.0.11、リポジトリ HEAD は ^1.0.12


LOW

①-L1 「reference CLI 1.0.5」「1.0.2」の実物引用は 1.0.12 でも同文だが、版の表記が古い

①-L2 npm 配布の CLI でも --help の 1 行目が「kairos = node src/cli.ts」・例ファイルの実行コメントも開発路

①-L3 npm の kairos-lang@1.0.12 の README はテスト数 862、リポジトリ HEAD は 880

①-L4 playground/ に README が無く、GitHub 上でレシピの Playground リンクを踏むとソース一覧になる

①-L5 Windows 単体 exe(Release 資産)が README の導入節に無い


良かった点


観点② 1.0.12 の新しい面の実走検証

対象: 公開リポジトリ azathothx/kairos-lang HEAD 43e3734(impl/dist/cli.js --version → 1.0.12)。レビュー日 2026-10-26。全スイートは走らせず、同梱例(impl/examples/*.kairos)と文書の doctest を CLI で個別に実走した。比較対照として npm registry の kairos-lang@1.0.11(npm pack で取得・依存ゼロなのでそのまま node package/dist/cli.js)を同じ入力で走らせ、「変わらないもの」の主張を差分で確かめた。以下、コマンドはすべて clone のルートで node impl/dist/cli.js … の形(impl/examples/ の例を examples/… と略記)。

実測サマリ

項目 CHANGELOG の主張(spec/CHANGELOG.md 追補 29) 実測 判定
(a) --json results[].labels ラベル付き束縛がちょうど 1 つのとき dates と同長・string \| null・添えないときは鍵ごと無い(L792-797) examples/rokuyo.kairos 3 式とも labels あり(12 件・13 件・61 件、null 0)。payday・jp-holidays は鍵なし。shift(+1, unit: day) 後は全点 null。表 2 つの参照で鍵なし。next -n 2 では 2 件に切り詰め。schema(ajv draft 2020-12)に 5 本の実物が通り、ラベルを数値に変異させると通らない 一致
(a) --tsv 8 列目 label 見出しに label・無ければ空(L798) 見出し expr source uid date time epoch_ms note label。rokuyo の式 1 は 12・1・2…(impl/README.md:119 のとおり)。payday は空。--lang en でも行は同一。1.0.11 の 7 列と先頭 7 列が全行一致(3 例) 一致
(a) .ics の題 1 点 1 予定で「名前 · ラベル」・UID 不変・series は名前のまま(L799) 1 式のファイルで SUMMARY:二十四節気(抜粋) · 小寒、時刻付き(--tz UTC)では VALARM の DESCRIPTION も同じ題。series は名前のみ。UID 集合は 1.0.11 と一致(jp-holidays 20・payday 13・rokuyo 86)。ただし式が複数のファイルでは「名前 · 式 · ラベル」(②-M2) ほぼ一致(文書の抜け)
(a) external のラベル external の labels: も数える(L792) --supply で labels を渡すと --json/--tsv/.ics にラベルが乗る(小寒 大寒 立春 雨水) 一致
(b) 範囲外シグナルの構築 Error.stackTraceLimit を一時的に 0 にし必ず戻す・出力不変(L760-769) ライブラリ API で stackTraceLimit=7/3 を設定して評価 → 評価後も 7/3。jp-holidays 2026-01〜2028-01 の点・註釈・警告は 1.0.11 と一致。参考: bizDay \|> at(T09:00) 1 年は 1.0.11 1,257 ms → 1.0.12 664 ms(プロセス起動込み・3 回の最小) 一致
(c) next の window-clip 抑止 確定再評価では報告しない・list は従来どおり・地平線不足のときは従来どおり(L771-775) next --from 2026-10-26 examples/jp-holidays.kairos → warnings: [](1.0.11 は window-clip: shift(1) 2026-11-03 → 2026-11-04 を出す)。同じ範囲の list --to 2026-11-04 は 1.0.12 でも出す。点・to・残走路は両版で同一。everyDay \|> shift(+1, unit: day) を next -n 400 --horizon 1 すると不足(365 件)で window-clip が出る 一致
(d) 註釈だけの .ics 点 0・註釈ありなら註釈の予定だけ・終了コード 0・stderr の知らせ(日英)・点も註釈も 0 なら書かず 2(L779-786) list --ics --from 2026-12-01 --to 2027-02-01 examples/jp-holidays.kairos → VEVENT 1 件(20261231〜20270201・TRANSP:TRANSPARENT)・exit 0・stderr「⚠ 点 0([2026-12-01, 2027-02-01) に点がない)・範囲外の註釈 1 件=註釈の予定だけを書く」。--lang en/--ics-series も同じ。payday の --from 2026-03-02 --to 2026-03-03 は何も書かず exit 2。1.0.11 は同じ入力で exit 2・0 バイト 一致
(e) 残走路の起点 covering ..2026-12-31 を to 2027-02-01 で評価すると −31(L811) coverage[0].runwayDays: -31。A.4 の註(spec/60:139)・用語集(spec/50:28・en 38)・A.9 の表(spec/60:280)に同じ 1 文 一致
(e) asof 欠落の 2 文言 --supply の形の検査=「asof(文字列)が必須」/評価器=「契約違反: asof がない——external …」・どちらも kind: supply(L813) asof 無し → --supply … の "holidays": asof(文字列)が必須、asof " " → 契約違反: asof がない——external HRDB.holidays(…ADR-46)。どちらも error.kind: "supply"・exit 1 一致
(e) 12-31 開始の機序 reference/shift.md の落とし穴と jp-holidays の頭註(L812) shift.md:65-66・jp-holidays.kairos:4-5 に記載。実走の註釈は 2026-12-31..2027-02-01 一致
文書の doctest(機械抜き取り) 各ページの例は実行検証済み(reference/README.md:7) 自作の抜き取り器で # eval: ブロックを .kairos に書き出し、list --json --from --to [--tz] [--supply] と人間表示の両方で照合。reference 66/66・stdlib 28/28・recipes 37/37・skills/kairos-authoring 18/18=149 ブロック全一致(#=> の点列・#~> の註釈と警告・人間表示の行) 一致

未検証(この clone では確かめられないもの): MCP(kairos_list/kairos_next)の labels(mcp/ は未ビルドで npm の kairos-lang ^1.0.12 に依存)、Playground の buildIcs(ブラウザ)、--tsv の label 列のタブ無害化(言語のラベルはタブを含めないので CLI から作れない)。

所見

HIGH はなし。

②-M1 「本体式が参照するラベル付き束縛」の数え方は字面の直接参照であり、中間束縛を経由すると付かない——文書に書かれていない

②-M2 .ics の題は式が複数のファイルでは「名前 · 式 · ラベル」になる——README の --ics 節は「名前 · ラベル」としか書かない

②-M3 Excel 対照レシピは label 列を「ラベル付きの表(labels:)を 1 つ参照するとき」と書くが、cycle も数える

②-L1 .ics の X-KAIROS-LABEL は市民日のラベルで、1.0.12 の「ラベル」(結果の出口のラベル)と語が衝突する

②-L2 地平線不足の next に残る window-clip の助言「範囲を広げて評価する」は、next では --horizon を指す

良かった点

作業ファイル(clone 外・参照用): 抜き取り器 …/scratchpad/review14/work/doctest-run.mjs・結果 work/doctest-*.json・版間比較 work/compare-1011.mjs・検証用定義 work/lab-single.kairos・work/lab-multi.kairos・work/shift-next.kairos・scratch-ext/ext2.kairos+supply2.json。


観点③ 仕様の内部矛盾

実測サマリ

語 突き合わせた文書 実測 判定
ラベル(labels: テーブル/labels: 窓列/label: ラムダ/cycle/束縛名射影 B(d)) spec §3.8(20:309-313)・§4.2(30:50-64)・§4.9(30:339-379)、用語集 6.5(50:141-142)、reference/table-literal・segmentBy・cycle、stdlib/gregorian §1-2・kyureki §1、impl/README --json の labels(impl/README:51)、schema 射影の意味論は一致(lunarMonth(1)・sekki(s)・weekday(d))。出口 labels は式の字面に名前が現れる束縛だけを数える(a2・a4・a9 は付く/q1・s1・s2・a7・a8・q3・q4 は付かない)。labels: 窓の域外値引数は静的エラー(p1・p2)、month(2020)・month(13)・year(99999) は黙って 0 点(g3〜g5・p4) ③-H1・③-M3
評価註釈(範囲外) spec §4.10、reference/README 正準一行形(:67-68)、付録 B B.6 # ⚠ 範囲外 2028-01-01..2028-02-01(JP.holidays covering 2026-01-01..2027-12-31, asof 2026-10-22)=B.6 (3) の期待字面と一致。takeLast の頭側註釈も範囲が頭を含めば出る(r2) 一致
被覆サマリ・残走路 spec §4.10(30:469-473)、用語集(50:28)、付録 A A.4(60:139)・A.9(60:280)、付録 B B.2(61:83)・B.6・B.9(61:229) covering ..2027-12-31/to 2028-01-01 → 残走路 0 日、to 2028-02-01 → -31 日、covering ..2026-01-31/to 2026-03-01 → -28 日、..2026-12-31/to 2026-03-01 → 306 日(排他端起点) 数値は一致。B.2/B.9 の言い回しだけ ③-L3
window-clip/horizon-clip spec §7.8(90:178-181)、付録 A A.4(60:162-164)、impl/README:42・223、CHANGELOG 追補 22(:559-563)・29(:771-777)、reference/roll:72-73・shift:68-69・snapTo:61-62・takeLast:54-55 list: 警告: window-clip: roll(Preceding) 2026-02-01 → 2026-01-30(…§7.8)。同じ式の next では出ない。takeLast の下限側 horizon-clip: takeLast 1970-01-02(実体化下限で切れ——n=3 個中 2 個のみ…)、上限側は件数なし 一致。文言の範囲だけ ③-L5
終了コード 0/1/2 impl/README:44・55・72-73・98、--help 末尾、付録 B B.6(61:145・154・167-180)、mcp/README:50・README.ja:56、recipes/windows-admin:86・216、llms.txt:44 静的エラー→1(--json は error.kind: static)、契約違反 3 種→1(kind: supply、診断冒頭は B.6 の表と一字一致)、next -n 3 --horizon 1 不足→2(found: 1)、--ics 点 0・註釈 0→2、点 0・註釈 1→VEVENT 2 行で 0、list/--tsv の 0 点→0 一致
at の検査(引数・窓付き入力) spec §5.5(40:155-161)、用語集(50:136-137)、reference/at:3・47-53・79-80、stdlib/gregorian:37-38・99 at(2026-01-01T17:00)→静的エラー(誘導つき)、within(month) \|> at(T07:00)→静的エラー(誘導つき)、at(T07:30:15.250)→受理、.2505→字句エラー、T07:3→誘導つき字句エラー、T07:300→構文エラー(誘導なし)、T7:30→at: 引数が不足 一致。字句の形の記述ゆれ ③-L1・誘導の範囲 ③-L2
take/takeLast spec §4.7(30:215-239)・§5.2(40:51-55)、用語集(50:105-106・134-135)、reference/take・takeLast 窓付き入力→静的エラー(take・takeLast とも誘導つき)、takeLast(…, from:)→専用診断、take(0)→静的エラー、takeLast 覆域内は註釈なし(r2) 一致
within/nth/first spec §4.3(30:74-79)・I4、用語集 6.4(50:90)、reference/within:34・45-47・nth:7-12・49・first:8 入れ子は常に最内窓(within(quarter) \|> within(month) \|> nth(2)→各月 2 日、逆順→四半期の 2 日目、within→segmentBy も最内)。of: year が連鎖に無い→of: year に該当する窓がない。nth(0)→静的エラー。everyDay \|> first→I4 型エラー。wkst 未宣言の within(week)→未解決の名前: wkst 「曖昧=静的エラー」の実現形なし ③-M1・I15 ③-M4
roll(Modified)/epoch: spec §4.4(30:95)・§5.2(40:40)・§3.6(20:190-193)・§5.3(40:66)、用語集(50:70・149)、reference/roll:20・epochOrdinal:11-12、stdlib/gregorian:55-56、impl/README:213・230 roll(Modified, on: bizDay)→Modified は未実装(プロトタイプ)、epoch: 2000-01-06→プロトタイプは既定紀元(1970-01-01)のみ対応 ③-M2・③-L8
coincides の S に窓語 spec §4.9(30:316)、reference/coincides:13-16・119 coincides(month, day, d)→静的エラー(誘導つき) 一致

HIGH

③-H1 窓インスタンス参照の「域外の値引数は静的エラー」の例 month(2020) が、実物では黙って空になる

MEDIUM

③-M1 §4.3「曖昧なまま of: を省くのは静的エラー」に対応する形が無く、他の文書は「既定は最内窓」としか書かない

③-M2 Modified ロール規約は spec・reference で通常の規約として説明され、参照実装では未実装——reference/roll.md に注記が無い

③-M3 出口のラベル labels の「本体式が参照するラベル付き束縛」の「参照」の範囲が未定義——字面に現れる名前だけを数える

③-M4 reference/nth.md:37 の「正当な空(I15)」——仕様の不変条件は I1〜I8 までで I15 は存在しない

LOW

③-L1 単独時刻リテラルの形の記述が 3 通り

③-L2 不正形の時刻字句の「誘導つき」の範囲

③-L3 残走路の定義の言い回し(付録 B)が、付録 A が「1 日ずれる」と戒めた形

③-L4 impl/README の CLI 概要行が --help と合わない

③-L5 takeLast の horizon-clip 文言「n 個中 k 個のみ」は下限側だけ

③-L6 用語集 6.5 の anchor: の説明が cycle だけ

③-L7 reference/nth.md:36-45 の「第 2 月曜も同形:」の直後の例が第 2 営業日

③-L8 epoch: の上書きを勧める箇所に参照実装の制約の参照が無い

良かった点


観点④ 英語ミラーの意味ズレ

対象: azathothx/kairos-lang HEAD 43e3734(版 1.0.12)の en/ 配下と、en/ を外した同じパスの日本語正本。レビュー日 2026-10-26。読んだのは公開リポジトリの内容だけ。

方法: (1) 自作スクリプトで全組の front matter source_sha・ ``kairos ` フェンス・他言語フェンス・見出し数・数値トークン(版・日付・ADR・F・§・MUST・追補)・リンク先を機械比較、(2) レシピの Playground リンク(#s= の base64url)を復号してプログラム本体を比較、(3) 62 組すべてを段落単位で読み合わせ(並列の読み手に分担し、挙がった所見は当方が両ファイルの該当行を開いて再確認した。確認できなかったものは載せていない)。スクリプトと中間出力はリポジトリの外(scratchpad/review14/tools・out)に置き、リポジトリには書き込んでいない。

実測サマリ

項目 実測
en/ 配下の Markdown 63 ファイル(spec 10・reference 32・recipes 10・stdlib 4・skills 1・design/40-examples 2・en/README.md 1)
対訳のある組 62 組(en/README.md は索引ページで日本語の対がない。日本語のみのページ=spec/CHANGELOG.md・stdlib/kyureki.md は en 側で「Japanese-only」と明記されている)
source_sha の宣言 60 ページに宣言・60/60 一致(sha256 の先頭 12 桁=impl/test/doc-consistency.test.ts:297-310 と同じ定義で独立に再計算)。宣言なし=en/README.md・en/spec/README.md
` ```kairos ` フェンス 日英とも 162 本・全組で本数一致。コメント行を除いた正規化で 162/162 同一。バイト一致 159/コメント(翻訳)だけ違うもの 3(en/reference/cycle.md 1・en/recipes/windows-admin.md 2)
他のフェンス(text・mermaid・ebnf・powershell・plain) 全組で本数一致。差はコメント・ラベル・散文の翻訳のみ。EBNF(spec/40-grammar)は (* … *) と ? … ? 内の散文を除き規則本体が同一。PowerShell(recipes/windows-admin)はコマンド・引数・パスが同一(エラー文字列の翻訳のみ)
Playground リンク(recipes 9 ページ) 25 組。18 組はペイロードまで同一、7 組(excel 1・logistics 5・windows-admin 1)は先頭コメントの翻訳のみでコード同一。en 側は kairos-lang.org/en/playground/ を指し、en/playground/ は実在
見出し数 全組一致(例外: en/design/40-examples/README.md = ja 6/en 5 → ④-M4)
数値トークン(版・日付・ADR・F・§・MUST・追補) spec 10 組・stdlib 3 組・recipes 9 組・skills 1 組で多重集合一致。不一致は reference/take(ADR-52)・spec/50-glossary(追補 11)・takeLast(判断 6)・40-examples 2 件のみ(下記所見)
spec/60 MUST/SHOULD/MAY 34/35/2 で日英一致。A.8 チェックリスト 21 項目一致
spec/61 MUST/SHOULD/MAY・受け入れ試験 15/12/2・試験 4 本・B.8 チェックリスト 9 項目で一致。URL の形(最新・版つき)も同一
固定訳語の機械検査(doc-consistency.test.ts:357-380)の対象 en/spec・en/reference・en/stdlib・en/recipes(en/skills・en/design/40-examples は対象外)
フェンス同一性の機械検査(同 :313-335)の対象 en/spec・en/reference・en/stdlib・en/design/40-examples・en/recipes(en/skills は対象外 → ④-M3)

結論: 意味・数値・手順の差は 62 組でほぼ無く、ミラーの品質は高い。利用者が誤る差は 1 件(調査研究 11 の hour 窓)、抜け・不整合が 4 件、訳語の揺れ・表現が 18 件。


HIGH

④-H1 hour 窓を「Gregorian 標準に無い」と現在形で断言(日本語は「当時は無かった→ADR-50 で標準化」)


MEDIUM

④-M1 take の「関連」から ADR-52 が落ちている(本文は双方とも ADR-52 に言及)

④-M2 英語の索引ページ(en/README.md・en/spec/README.md)に recipes と skills が無い

④-M3 「コードブロックの乖離も機械検査で止まる」という説明と、検査の対象範囲が食い違う(en/skills が同一性検査の外)

④-M4 en/design/40-examples/README.md は「記法の規約」節と 2 文が無く、「Translated from」の体裁と合っていない


LOW

④-L1 「在圏」が in-scope と resident に割れる

④-L2 「還流第 N 便」「実装系還流」の訳が 4 通り

④-L3 「発報層」が同一ページ内で firing layer と alerting-layer

④-L4 「利用側」の訳が user side/caller/consumer

④-L5 「前文メンバー」が preamble member と premise members

④-L6 「十二支」が “the sexagenary cycle”(六十干支)

④-L7 「覆域」が takeLast だけ covering

④-L8 「先頭点」が span.md の 1 箇所だけ head instant

④-L9 stdlib 内の訳語の揺れ 3 組

④-L10 「出所」と「出自」が provenance/source/origin に跨がる

④-L11 用語集冒頭の「CHANGELOG 追補 11」参照が英語に無い

④-L12 takeLast の「ADR-49 判断 6」が “the ADR-49 deferral”

④-L13 ordinalIn の条件が「単位幅の整数倍」から「時間の整数」に狭まる

④-L14 windows-admin の小さな欠落 3 点

④-L15 イースターの定義文の精度差(英語の方が正確)

④-L16 段落・箇条の配置が違う(内容は同一)3 件

④-L17 source_sha の意味は伝わるが、読者が自分で確かめる手がかりが無い

④-L18 その他の訳語・見出しの揺れ(まとめ)


参考(日英の差ではないが、読み合わせで見えたもの)


良かった点


観点⑤ 鮮度と陳腐化

対象: 公開リポジトリ azathothx/kairos-lang HEAD 43e3734(版 1.0.12)。レビュー日 2026-10-26。外部の値は GitHub Release/API・npm registry・kairos-lang.org の配信物を同日に取得した。実行は作業用 clone の node impl/dist/cli.js(--version → 1.0.12)。全スイートは走らせていない。

実測サマリ

# 検証項目 見たもの(ファイル:行・外部の値) 結果
(1) 祝日表の年・covering:・残走路の見せ方 Playground playground/core.js: 7 表すべて covering: 2026..2027(:54, :105, :127, :149, :193, :242, :262)+空表の教材 holidays2027 = [] covering: 2027..2027(:176, :289)。2027 年分は内閣府・OPM の値と一致(3/21 春分→3/22 振替・9/23 秋分・OPM observed 6/18・7/5・12/24)。witness impl/test/next-window-and-playground.test.ts:102-121(鮮度=終端が今日+88 日より先・内容=2027 年分の照合)。配信中の core.js・js/build-info.js(IMPL_VERSION 1.0.12)は HEAD とバイト一致。recipes: 大半が covering: 2026..2026(例 recipes/excel-workday.md:146・cron-last-day-of-month.md:61)で doctest が期待値を固定し、2027 年に掛かる例は #~> 範囲外 … を本文に見せる教材。logistics-delivery.md:228,230 は 2026..2027。stdlib: stdlib/kyureki.md は朔データ covering: 2024-12-31..2027-12-31/asof: 2026-02-02(7 箇所)・Gregorian/Fiscal/ISOWeek は表を持たない。impl/examples/*.kairos は 2026..2026(⚠ を見せる教材と MAINTENANCE §1 に明記)。残走路の見せ方: CLI は # <表> covering A..B 残走路 N 日(--json は coverage[].runwayDays)。Playground は core.js:18-20/34-36 で同じ 2 行形(日英)。recipes/windows-admin.md:62-68 の例(残走路 -59 日)を同形の定義で再現=出力形式・値とも一致 表は現行。ただし業務の例の固定窓が尽きている/尽きる(⑤-M1)
(2) Windows ガイドの exe の版・Release 資産名・sha256 recipes/windows-admin.md:15-17/en/recipes/windows-admin.md:22-24: Release v1.0.12・kairos-1.0.12-win-x64.zip・「SHA256 は同じ場所の .sha256」・npm kairos-lang@1.0.12 と同一ソース。gh release view v1.0.12 → 資産 2 点 kairos-1.0.12-win-x64.zip(36,225,004 B)と .sha256(92 B)。.sha256 の値 6eabea03…b41ed = 取得した zip の sha256sum = Release 本文の記載。zip の中身は kairos.exe(最上位)と README-windows.txt(「Kairos 1.0.12」・Node v24.22.1・ガイド URL 日英)。releases/latest も v1.0.12 一致
(3) MCP README の版・導入コマンド・npm の最新版 mcp/README.md:20-43/README.ja.md:20-43: 導入は npx -y kairos-lang-mcp・claude mcp add kairos-lang -- npx -y kairos-lang-mcp・デスクトップアプリの JSON。版は本文に書かず「kairos-lang と同番」(:116)。HEAD mcp/package.json 1.0.12・server.json 1.0.12。npm kairos-lang-mcp dist-tags latest: 1.0.12(2026-10-26T00:12Z)・kairos-lang latest: 1.0.12(00:07Z)・両 1.0.12 の shasum は取得した tarball と一致。README の上限(10 年・n 1000・horizonYears 10・64 KB)=mcp/src/server.ts:23、リソース kairos://llms.txt/kairos://reference/{lang}/{word}=:167,173、tool 入力=:83-127 と一致。npm 公開物の README は HEAD と同一 一致。同梱 docs/llms.txt と依存指定だけ公開後の HEAD とずれ(⑤-L2)。Registry 掲載の真偽は許可された参照先の外=未検証
(4) llms.txt の版・テスト数・リンク llms.txt:13 1.0(2026-09-14)・:21 880 tests・:204 53 ADR(design/20-adr/ に 53 ファイル・INDEX「ADR-01〜53」)。raw.githubusercontent 16 本+github tree 2 本のリンク先は HEAD に全部実在(en/skills/kairos-authoring/SKILL.md・en/spec/61-supply-profile.md 含む)。配信中の https://kairos-lang.org/llms.txt は HEAD と diff 無し(16,087 B)。:85 の残走路例の形は CLI 出力と同形 一致
(5) 「準備中」「予定」「coming」等の残置 design/ を除く公開面を grep。「準備中」1 件=spec/CHANGELOG.md:801(⑤-L1)。「coming soon/in preparation/forthcoming/TBD/TODO/WIP/次の版/次版」0 件。「English(未訳)」(_includes/docs-topbar.html:50)は英訳の無いページだけに出る分岐=適正。「将来拡張/将来の opt-in」(reference/rebase.md:63・spec/40-grammar.md:163・impl/README.md:136,209)は仕様が意図して据え置く旨の表明=適正。「予定」は .ics の「予定(イベント)」の意味のみ 残置は実質 1 件(LOW)
(6) README 日英・spec/README の状態行 vs CHANGELOG README.md:207「Version 1.0 (declared 2026-09-14; addenda through no. 29, 2026-10-26)」・README.ja.md:35「追補 29〈2026-10-26〉」・spec/README.md:6 同・en/spec/README.md:7 同。spec/CHANGELOG.md:754「## 1.0 追補 29(2026-10-26)」が最終(追補 30 は無い)。テスト数 880 は入口 6 箇所(README 日英・llms.txt・en/spec/README・impl/README:234「39 ファイル・880 本」・CHANGELOG:824)で一致、impl/test/*.test.ts は 39 本。CI(.github/workflows/ci.yml:33-35)は JSON レポートで実数と突合し、43e3734 の CI は success(2026-10-26T03:29Z) 一致

テスト数の補足(推測を含む): 全スイートは走らせていないので、npx vitest list(静的収集)で 688 項目を得た。うち test/doctest.test.ts はループ生成のため 1 項目として数えられる(${sub}/${f} のまま表示)。doctest の対象 5 ディレクトリの # eval: 付き ```kairos ブロックを同じ正規表現で数えると 192(reference 66・stdlib 28・design/40-examples 43・recipes 37・skills 18)→ 688 − 1 + 192 = 879 が下限。他ファイルにもループ生成の項目が 1 件以上あれば 880 に届く。CI の突合が緑であることと併せ、880 は実スイートと一致していると判断する(断定は CI の結果に依る)。

所見

HIGH

該当なし。公開面の記載(版・資産名・sha256・テスト数・状態行・リンク)と実物(Release・npm・配信中のサイト・CLI)の不一致は見つからなかった。

MEDIUM

⑤-M1 Playground の業務の例「給料日(25 日)」は固定窓がすでに尽きており、他の固定窓も 2027-01-01 で尽きる。年次手順に窓の更新が無い。

⑤-M2 README(日英)の構成表と impl/README.md が参照実装を「プロトタイプ/prototype」と呼び、他の公開面の「1.0.12 の参照実装」と調子が合わない。

LOW

⑤-L1 spec/CHANGELOG.md:801 の「準備中の版では」は、1.0.12 公開後は指示対象が曖昧。

⑤-L2 npm kairos-lang-mcp@1.0.12 の同梱 docs/llms.txt(MCP リソース kairos://llms.txt)と依存指定が、公開後の HEAD と食い違う。

⑤-L3 Windows ガイド(日英)は Release の版・zip 名を本文に直書きしている(現在は一致)。

⑤-L4 MAINTENANCE.md:15「期限は 10 月初め。鮮度の検査(下の 2)が赤になる」は、検査の閾値と 1 か月ずれる。

⑤-L5 hn/ の短縮リンクは 2026 年のみの表と尽きた窓を埋め込む。

良かった点


観点⑥ 検定の抜き取り(10 問)

レビュー日 2026-10-26。対象=検定リポジトリ azathothx/kairos-lang-exam HEAD 937256a(公開サイト https://exam.kairos-lang.org )と、本体 azathothx/kairos-lang HEAD 43e3734(impl/dist/cli.js = --version 1.0.12)。すべて公開物だけを読み、CLI は教材の「検証」節の定義をそのままファイルに写して list --from … --to … --tz Asia/Tokyo で走らせた(README.md:47 の指示どおり)。再現用の定義ファイルと実出力は …/scratchpad/review14/work6/(exp/ が教材の期待・out/ が実出力・tb/ が教本だけの例)。

実測サマリ

抜き取り 10 問(級が偏らないよう 3 級 3・2 級 4・1 級 3)——10 問すべて一致。 比較は点の行だけでなく # 0 点・# ⚠ 範囲外・# 被覆サマリ の行まで、教材の text ブロックと diff で全行一致を見た。

# id 級 形式 評価範囲(教材) 教材の期待 CLI 実出力 判定
1 L3-004 3 出力予測 2026-01-05..2026-01-26 01-05, 01-12, 01-19 同 一致
2 L3-011 3 出力予測 2026-08-10..2026-08-17 08-10, 08-12, 08-13, 08-14 +被覆サマリ(残走路 16 日) 同(サマリ行も一致) 一致
3 L3-013 3 出力予測 2026-09-01..2026-10-01 09-04, 09-11, 09-18, 09-25(4 点=(b)) 同 一致
4 L2-003 2 作文 2026-01-01..2026-04-01 01-09, 02-13, 03-13 同 一致
5 L2-009 2 作文 2026-08-01..2026-12-01 08-28, 09-25, 10-30, 11-27 同(別解 within(month) \|> last も同一出力を実測) 一致
6 L2-014 2 作文 2026-08-01..2026-12-01 08-31, 09-30, 10-30, 11-30 +サマリ(残走路 31 日) 同(別解 bizDay \|> within(month) \|> last も同一) 一致
7 L2-015 2 作文 2026-07-01..2026-11-01 07-27, 08-25, 09-25, 10-26 +サマリ(残走路 61 日) 同 一致
8 L1-002 1 出力予測 2027-01-04..2027-01-11 01-04〜01-08 の 5 点+サマリ(残走路 355 日・註釈なし) 同 一致
9 L1-011 1 出力予測 2028-01-01..2028-06-01 # 0 点 + # ⚠ 範囲外 2028-01-01..2028-03-31(…) +サマリ(残走路 214 日) 同(3 行とも文字一致) 一致
10 L1-012 1 出力予測 窓 A 2026-01-01..02-01/窓 B 01-15..03-01 A: 01-05, 01-19/B: 01-19, 02-02, 02-16(重なり=01-19 のみ) 同 一致

再現コマンドの形(例 #7):

$ node impl/dist/cli.js list --from 2026-07-01 --to 2026-11-01 --tz Asia/Tokyo L2-015.kairos
2026-07-27
2026-08-25
2026-09-25
2026-10-26
# 被覆サマリ
#   holidays2026 covering 2026-01-01..2026-12-31 残走路 61 日

追加で走らせたもの(表の外・すべて一致): 残りの実行可能サンプル 4 問(L3-001・L2-011・L2-013・L1-015【A】【B】——【A】の # ⚠ 範囲外 … 残走路 -151 日・【B】の「註釈なし・残走路 ∞」まで一致)、教本だけにある例 7 本(L3 第 2 章の字句エラー文・第 3 章 last・第 4 章の二前提 # 式 1(2 件)/# 式 2(2 件)・L2 第 1 章 Preceding 形・第 3 章の二式・L1 第 1 章の boot 作法 残走路 -161 日・第 5 章の供給エラー文)。教本 L1 第 2 章が引用する警告文 警告: horizon-clip: shift 〈点〉(計算範囲 to+400日 の実体化地平線——言語の地平線ではない。ADR-37 判断 8) も、shift(500, unit: day) を走らせて実装の文言と一字一句一致することを確かめた。教本 L3 第 2 章の主張 3 点(1d12h は字句エラー/at(T09:00) で時刻付きになる/2026-01 は引き算に読まれる)も CLI で成立。

版の確認(一致)

面 名乗り 根拠
検定 README 「Playground と同じ版(参照実装 1.0.12・2026-10-26 追従)」 README.md:52
教本 3 冊 「言語 1.0 準拠〈2026-10-26 追従〉・spec_head: v1.0.12」 textbook/L3.md:3・L2.md:3・L1.md:3
問題 19 問 front matter spec_head: v1.0.12、公開ページのメタ行「追従: v1.0.12 / 検証: impl」 全 L*/*.md:7、_layouts/default.html:17、https://exam.kairos-lang.org/L3/001-first-of-month.html の実 HTML
CLI --version → 1.0.12 本体 impl/package.json:3
本番 Playground IMPL_VERSION = '1.0.12'(画面にも表示=core.js:337) curl https://kairos-lang.org/playground/js/build-info.js;本番 core.js の sha256 は本体リポジトリの playground/core.js と同一(89d00b34…)

導線(説明だけで辿れるか): トップ README → 教本 README → 各教本 → 章末「演習」→ サンプル問題 → 級 README → トップ、の相互リンクは公開サイトで全部 .html に変換されている(トップの内部 href 27 本・教本 L3 の演習リンク・級 README を実 HTML で確認、.md の残存リンクは「Improve this page」の GitHub 編集リンクのみ)。.md 直叩きは 404 だが、ページ内リンクには現れない。

Playground リンク: 教本 3 冊の 18 本すべてを base64url 復号し、復元されるソースが本文の kairos ブロック(行内コメント含む)と同一・f/t が # eval: の範囲と同一であることを確認。Playground の restore()(本体 playground/core.js:391-399)は s/f/t/z を読む実装で、リンクはその形に合う。curl https://kairos-lang.org/playground/ は 200。3 本の例=textbook/L3.md:39(コメント付き premise・f=2026-01-01・t=2026-04-01)、textbook/L2.md:147(二式・673 バイト)、textbook/L1.md:203(covering 中抜けの shift)。なお「ブラウザで開いて目視」まではしていない(復号と復元コードの静的確認)。

所見

HIGH: なし(期待出力と実物の不一致は 0/版の不一致は 0)。

MEDIUM

⑥-M1 サンプル問題には Playground リンクが 1 本もない——級 README の「Playground で再現できる」が説明だけでは辿れない

⑥-M2 CLI での再現手順(コマンドの形と --tz Asia/Tokyo)がトップ README の 1 箇所にしかなく、教本・級 README からは辿れない

⑥-M3 問題ページの中で検証の日付と版が二重になっている(ヘッダ=v1.0.12・2026-10-26/本文=7〜8 月の「公開 HEAD」)

LOW

⑥-L1 解説に内部台帳の番号(F7・F11・F98・F66・I4)と ADR 番号がリンク無しで出る

⑥-L2 L2-003 の spec_refs「§7.2」は別の定番形(第 2 営業日の次の金曜)

⑥-L3 boot 作法の例日 2026-08-02 が「執筆日」であることが書かれていない

良かった点


処置の記録(kairos-project・2026-10-26〜)

(裏取りと処置は下に追記する。番号は所見の番号。公開面の修正は main=1.0.12 の文書同期、評価器に関わるものは rc-1.1=1.1.0。)

裏取り

HIGH 3 件と MEDIUM 21 件は、所見の再現コマンドを当方でも走らせて確かめた(①-H1=README.ja の冒頭例は CLI で静的エラー・差し替え後は 12 点/③-H1=month(13) は 0 点で通る/④-H1=en の (l) 節が現在形)。 テスト数(880)・リンク(261+41)・検定 10 問の実測は所見のとおり。

処置(公開面=main の文書同期・1.0.12)

番号 処置
①-H1 README.ja の冒頭例を自己完結形(2026 年の祝日表+bizDay 導出)に=CLI で 12 点。README のコードブロックの doctest 化は見送り(README は例示の層=```text・同じ内容は Playground の例で担保)
①-M1・M2 クイックスタート直下に「出力の読み方」4 行(範囲外・残走路・window-clip・--tz)を日英で
①-M3 全レシピ(日英 18 本)の最初の kairos ブロックの前に「@JP は doctest の標準前提=Playground リンクの前提込みの形を使う」の注記
①-M4 README.md の付録 A のリンクを英訳(en/spec/60)+日本語に
①-M5 記録のみ=npm の kairos-lang-mcp 1.0.12 は公開時点の ^1.0.11。HEAD の ^1.0.12 は次の公開(1.1.0)で揃う(runbook のゲート)
②-M1・③-M3 「本体式の字面に現れる束縛名だけを数える(中間の束縛・値関数の中は辿らない)」を impl/README・CHANGELOG 追補 29・schema の description に明文化。--help の文言は 1.1.0(rc-1.1)
②-M2 .ics の題「名前 · 式 · ラベル」(式が複数)を impl/README と CHANGELOG に
②-M3 Excel 対照レシピ日英=label 列は「ラベル付きの束縛(labels: の表・weekday などの cycle)」
③-H1 spec §4.9 日英の例を lunarMonth(13) に差し替え、「標準の month/year は計算ラベル=域外は空」の 1 文を §4.9・用語集 6.4・stdlib/gregorian §2(日英)に
③-M1 spec §4.3 日英=「of: で名指した窓が連鎖に無いときは静的エラー(既定は常に最内窓=曖昧は生じない)」
③-M2 reference/roll 日英・spec §4.4 日英の Modified に「参照実装 1.0.12 では未実装」の注記
③-M4 reference/nth 日英の「I15」→「空は正当=ADR-15」
④-H1 en の 40-examples/11 (l) を日本語(ADR-50 で標準化・当時の書き方)の訳に
④-M1 en/reference/take の Related に ADR-52
④-M2 見送り=日本語の spec/README にも recipes/skills は無い(ミラーの差ではなく索引の設計。入口は README 日英と llms.txt)
④-M3 doc-consistency のフェンス同一性検査に en/skills/kairos-authoring/ を追加
④-M4 en 40-examples/README に「Notation conventions」節
⑤-M1 Playground の payday/monthend3(日英)を window: 120(選んだ日から 120 日)に。MAINTENANCE に補足
⑤-M2 README 日英・impl/README の「プロトタイプ」を外した(1.1.0 の文言を前倒し。診断文の語は 1.1.0 で)
⑥-M1 見送り(記録)=問題ページの Playground リンクは生成器(playground-links.mjs)を問題にも広げる作業=次の追従で
⑥-M2 教本 3 冊の前書きと級 README に CLI の再現手順(--tz Asia/Tokyo 必須)
⑥-M3 公開問題の本文の日付・HEAD の二重記述を落とし front matter(spec_head/verified)に一本化(bank 30 問)
LOW 41 今回は見送り。妥当なもの(①-L5 Windows exe の導入節・③-L4 impl/README の概要行・③-L7 nth の例の見出しなど)は次の文書同期で順次

検査=doc-consistency・doctest・全スイート 880(publish.sh のゲート)・検定 verify(108 問+教本 18 例 全問 PASS)。