Kairos ドキュメント最終レビュー(第11回)— 1.0(9/14)前の綻び出し
対象: 本体 azathothx/kairos-lang HEAD a16377c(第10回 0272244 から8コミット・約2,100行: ADR-51〜53(at/takeLast/時刻リテラル Thh:mm)・糖衣定義ページ・節気データ訂正・旧暦2033年問題の明文化・617テスト)+検定 kairos-lang-exam HEAD 2c931f3(変更なし)
レビュー日: 2026-08-27(公開まで18日)
方法(5面): ①新規読者視点の通読更新 ②追補15分を遡り「仕様の縫い目」の敵対的検査 ③検定全体の最新仕様突合 ④宣言日リハーサル棚卸し ⑤全機械検証——3並行のフレッシュスイート(HIGH/主要MEDIUMは手当り全件ソース裏取り・検定34ブロックを617実装で再実走(全通過)・本体617/617・機械バッテリー全green)
0. 総評
最終スイートは実を結びました。宣言前に直すべき指摘が4件(A〜D)見つかっています。いずれも直近の追補(ADR-49〜52)が共有規範(README の「できないこと」・EBNF・輸送表)に触れ漏れした同一の型で、修正はどれも小規模です。それ以外の意味論・データ・実行例・翻訳・機械の網はすべて健全で、検定の全34ブロックは最新実装でも全通過。節気訂正の波及も完全、ADR-53 の新規化に抵触する既存例もゼロでした。A〜D を潰せば 9/14 の出荷に耐えます。
実測サマリ(全て通過)
| 検証 | 結果 |
|---|---|
| 本体スイート | 617/617(4入口の記載値と一致) |
| 検定34ブロック実走(617実装) | 全通過——take/takeLast/at/ADR-53 導入後も検定の全期待値が有効 |
| リンク(192 md)・不可視文字・en≡ja同一性・source_sha・Playground指紋 | 全て green |
| 節気訂正(清明 4/5・芒種 6/6)の波及 | reference・40-examples・fixture・en 全箇所一貫(95-reference-data の一次値はもともと正・旧誤値の残存ゼロ・立春起点の八十八夜/二百十日は無影響) |
| ADR-53(ラムダ捕獲の静的エラー) | 仕様への繋ぎ込み一貫・既存ドキュメントの全例が新規化下でも合法(敵対 grep で違反ゼロ) |
| 検定19問の正答 | 全問が現行仕様でも正しく・かつ正準形のまま(at/take による置き換え対象なし——各 reference の落とし穴を検定の形がむしろ正当な誘導例として先取り) |
1. 宣言前必修(A〜D・いずれも小規模修正)
[A] README(英)の「できないこと」に COUNT が残存。 README.md:76 は「count-based termination (RRULE COUNT)」を今もできないこととして列挙しています。これは ADR-49 の take(n, from:) で解消済みで、spec §1.2 の比較表は日英とも打ち消し線+「Resolved (ADR-49)」に更新済みです。README だけ読んだ新規読者が「先頭N個は不可能」と誤解した直後に reference/take.md が覆す構図。該当行を削除か「resolved by take」の一言に(ja README は同リストを持たず spec 参照のため無傷)。
[B] EBNF の param-key に until が無い(takeLast(n, until:) が文法上導出不能)。 spec/40-grammar.md:202-204(en 同)の param-key は14語で ADR-52 の until が含まれず、§5.2/§4.7/glossary/reference が規定する takeLast(3, until: 2026-08-21) は EBNF から導けません。実装は動作している(impl/README は「EBNF をそのままパーサに」と主張)。仕様と文法の直接矛盾です。同時に発見された既存欠落: rebase(to:) の to も昔から param-key に無い(ADR-40 が追加を怠った・11回のレビューをすり抜けた初検出)。同じ1行で両方直せます。ADR-46 が kind/source を足した前例どおり param-key へ "to" | "until" を追補。
[C] §4.10 輸送表に takeLast 行が無い。 spec/30-body-layer.md:387 自身が「core 全演算子に輸送行を義務づける(行の無い演算子は註釈を運ばない)」と規定し、直下の表(:391-400)に「take 行はあるが takeLast 行がありません」。ADR-52 判断4(鏡像輸送+条件付き縮小)と reference/takeLast.md は輸送を規定済みなので、字面どおり読むと自己矛盾。ADR-52 の文言で1行追加(en+source_sha 同時)。
[D] 状態行4入口が「追補 13・2026-08-21」のまま。 CHANGELOG には追補 14・15(2026-08-26)が収蔵済みで、同じ状態行のテスト数だけが 617 に更新されています——「テスト数は機械検査・追補番号は手動」の間隙で生じる、第3回指摘B と同型のドリフト。spec/README.md:6・README.md:148・README.ja.md:31・en/spec/README.md:7 を「追補 15・2026-08-26」へ。再発防止: doc-consistency のテスト数検査と同じ枠で「状態行の追補番号 == CHANGELOG の最終追補番号」を1本足せば恒久化します(1.0 後は「1.0+追補N」に読み替えて同じ網を使えます)。
2. 宣言前推奨(MEDIUM)
- [E] §4.5 整列表の保存行に take/takeLast が無い(
spec/30-body-layer.md:158)。ADR-36 改訂4・ADR-49/52 は「整列表に行を追加」と明記しており、ADR の主張と仕様表が食い違う。2語を保存行へ追記。 - [F] 糖衣循環の静的エラーが §4.8 に無い。 F110 の解消記録と
reference/sugar-definition.mdはともに「§4.8 に明文化」と言うが、実際の規定は §5.3 のみ。§4.8 に1文(相互参照可)。 - [G] F111 ログが仕様の現状と矛盾。 §5.5 にはラベル等値(字面の一致・識別子宣言だけが語彙導入)が明文化済み(:146)なのに、
90-findings.md:255の F111 は「未対応…裁定待ち・1.0 非ブロック」のまま——処置候補② が実行されたのにログが未更新。加えてこの棚と糖衣定義ページを載せたコミット群(2026-08-20)に CHANGELOG 追補が無い(追補 12→13 の間隙。F110 は挙動変更を含むため追補相当)。ログ更新+欠番期の追補追記を推奨。 - [H] ADR 数の英語側残存:
README.md:160「50 ADRs」・llms.txt:78「50 architecture decision records」・design/README.md:21「ADR-01〜44」——実数53(ja README・INDEX は正)。既存検査は和文パターンのみ対象のすり抜け——英語形(”N ADRs”)と design/README を検査対象へ。 - [I] README と spec の比較表の判定差: 「User-defined calendars」の BDC 列が README=✓・spec=△(検証録10で精密化された側が spec のみ)。README は「spec 版は箇条インタイプの完全版」と謳うため、判定まで違うのは約束違反——README 側も△へ。
- [J] 検定 L2-013 解説の一般化が ADR-53 と食い違い: 「束縛は式の整理にいつでも使ってよい」——ADR-53 でラムダ変数を掴む括り出しは静的エラーになったため無条件では成立しない(正答自体は合法・正準のまま)。「(ラムダ変数を含む部分式の括り出しは除く=ADR-53)」の一句を。検定側は他に L3 教本のリテラル一覧に
Thh:mm不在(LOW・9/14 追従時にまとめて)と RC5 表記4行(下記棚卸し)のみ。 - [K]
design/10-domain-model.md:90-92の「二演算子」残存(現在形文書・四演算子へ)。[L] doctest 規約の「行が無ければ註釈ゼロ」の文が# resolve:項に置かれ誤読を招く(日英・#~>項へ移動)。
3. LOW(任意・9/14 までに余裕があれば)
glossary 値型行に「単独時刻」欠落/impl/README の機構列挙が ADR-46 で停止・テスト一覧「28中18ファイル」/検証録11の「555 テスト」vs 追補12「552」(同日付の記録齟齬)/README 英日のフォルダ列に recipes・検証録11 が不足(llms.txt は正確)/英語 README の mermaid に全角括弧/検定 README「v1」vs L1教本「v1.1」・便の front matter と解説の HEAD 不一致3件/EBNF の既存非終端(digit2/digit4/digits/letter が未定義非終端・elapsed-width が空導出可・パラメータ付き束縛への covering 後置を許す)——最後の EBNF 群は 1.0 の文法凍結前に一度だけ棚卸しする価値があります。
4. 宣言日(9/14)棚卸し——「RC5」言及の全数
計画(70-release 作業一覧2)どおりの一斉更新対象を機械列挙しました。本体15行: 状態行4(README 英日・spec/README・en/spec/README)=[D]と同時更新/llms.txt:11/Playground 注記2(ja/en index.html:11)/§5.4 の経緯記述2(spec/40-grammar.md:234・en:306)と reference/table-literal.md:64・en:86 の「RC5 追補 9」引用=歴史表記なので残す(計画済みの「RC5 残存検査」にはこの4行の許容リストが必要)/design/70-release-1.0.md 内3行=手順書自身。検定4行: README.md:51・教本3冊の「RC5 準拠」——spec_head 一括更新(22ハンチ→1.0 タグ)と検証ブロック再実走を。他に検定に「リリース候補」の語は無く、この4行で全部です。
5. まとめ
| 項目 | 判定 |
|---|---|
| 出荷可否 | A〜D(README の COUNT・EBNF の until/to・輸送表 takeLast 行・状態行の追補番号)を潰せば GO——いずれも数行の修正 |
| 意味論・データ・実行例 | 全 green(節気訂正の波及完全・ADR-53 抵触ゼロ・検定34/34) |
| 検定 | 全問正準のまま。J の一句+9/14 の RC5 追従のみ |
| 宣言日作業 | 棚卸し完了(本体15行+検定4行・歴史表記4行の許容リスト付き) |
| 構造的知見 | 今回の A〜D は全て「新語彙が共有規範(入口の否定リスト・EBNF・輸送表・状態行)に届かなかった」型。恒久化は [D] の追補番号検査に加え、「新 ADR 確定時のチェックリスト(EBNF param-key・輸送表・整列表・入口の否定リスト)」を ADR テンプレートに4行足すと、1.0 後の追補でもこの型が構造的に止まります |
11回を通じて、残っている綻びは「機械の網がまだ張られていない縫い目」だけになりました。A〜D と宣言日手順はどれも軽く、9/14 の 1.0 は現実的に十分間に合います。良い公開を——そして、公開後の最初の追補でこの網がそのまま効きます。
処置記録(2026-08-27・受領同日)
必修 A〜D=全消化: [A] README 英の COUNT 行を解消済み注記へ(「was on this list until
ADR-49」)[B] EBNF param-key へ "to" | "until" 追補(日英・ADR-40/52 の欠落補綴)[C] 輸送表へ
takeLast 行(ADR-52 判断 4 の文言・日英)[D] 状態行 4 入口を「追補 15〈2026-08-26〉」へ+
doc-consistency に「状態行の追補番号 == CHANGELOG 最終追補番号」検査を新設(1.0 後は
「1.0+追補 N」へ読み替えて同じ網)。
MEDIUM E〜L=全消化: [E] 整列表保存行へ take/takeLast [F] §4.8 に循環静的エラーの 1 文
(§5.3 相互参照・日英)[G] F111 ログを実態(①明文化は 8/21 実施済み)へ更新+追補 13 冒頭に
欠番期(8/20 の F110・sugar-definition 新設)の補記 [H] 英語側 3 箇所を 53 へ+検査を英語形
(”N ADRs”)と design/README へ拡張——新検査が即座に 4 箇所目(en/spec/README の「50 ADRs」)を
検出・修正 [I] README 比較表の BDC 列を △ へ(spec の判定根拠に文言も整合)[J] 検定 L2-013 の
「いつでも」に ADR-53 の除外一句(検定リポジトリ側コミット)[K] 10-domain-model を四演算子へ
[L] doctest 規約の「行が無ければ註釈ゼロ」を #~> 項へ移動(日英)。
LOW=一部消化: glossary 値型行へ単独時刻・README 英 mermaid の全角括弧・README 英日 フォルダ表へ 11 カタログ。残(9/14 まで任意)は 70-release「宣言日と段取り」欄に記録 (EBNF 棚卸し・impl/README 現行化・検証録 11 の 555/552 注記・検定表記統一)。
構造的知見の常設: 新 ADR 確定時チェックリスト 4 面(EBNF param-key・輸送表・整列表・入口の 否定リスト)を 20-adr/README に常設。RC5 残存検査の許容リスト 4 行も 70-release に記録。 618 テスト全通過(新設検査 1 本込み)・en sha 5 対追従・Playground 再ビルド・4 入口 618。