外部レビュー第 7 回(ドメイン移行・本体更新・言語検定)——指摘と処置の全件表(+第 8 回確認の追記)
- 受領: 2026-08-03(設計者経由・原文は設計者の手元)。処置=同日。
- 対象: 本体公開 HEAD
1f9d41a(dc3a3b2からの 8 コミット=ドメイン移行・Playground 新設・ F106・kramdown 修正ほか)+ 新規kairos-lang-exam(検定教材の公開リポジトリ=教本 3 冊・ サンプル問題 19 問・約 1,850 行)。 - 方法(レビュー側申告): 検定は教材・概念問題を仕様正本と突き合わせ(並行精査・HIGH/MEDIUM は ソース行で裏取り)・実行可能な検証ブロック 33 件を参照実装で全数実走。本体は差分精査+ ドメイン移行の構文検査+本番実査+機械チェック+テストスイート実走(469/469 当時)。
- 総評(レビュー側): 「検定教材は非常に高品質。実行例が全部本当に動く教材は稀有。作問形式 (spec_refs/spec_head/verified・検証ブロック同梱)はドキュメント本体の『主張を機械で守る』手法の 延長で模範的。その上で HIGH 1 件=1 級中核トピックの covering 意味論が仕様と真逆」。
- 当方総括: E1 は全件表のとおり全面的に正当——機械挙動の正答は正しいのに意味の解釈が 正反対、という検定教材で最も危険な型(1 級=運用意味論の看板トピックでの逆転)。本体側は 健全で、K1(Playground 同期ゲート欠如)は第 3 回 J(en フェンス同一性)と同じ処方で恒久化した。
指摘と処置
| # | 重要度 | 対象 | 指摘 | 判定 | 処置(2026-08-03) |
|---|---|---|---|---|---|
| E1 | HIGH | 検定 | L1-002 と 1 級教本第 1 章が空テーブル [] covering: 2027..2027 を「祝日ゼロの主張ではなく『まだ空』」と解説——仕様(§3.8「範囲内は完全」・ADR-45 判断 4「範囲内に点が無いことは知識」)と真逆。正本 reference/table-literal の boot 作法(覆域=観測日当日のみの最小主張・残走路即負が信号)とも不整合。実害=実在の祝日 2027-01-01 が無註釈で営業日発火・残走路 +355 日は偽の安心 |
正当(全面) | L1-002: 問題文を中立化(「担当者がこう書いた——是非は解説で」)・解説を全面書き換え(この式は「2027 年は完全・祝日ゼロ」の主張=過大主張・正しい boot は観測日当日のみの閉端最小主張)。教本第 1 章: 解釈段落を正しい向きに書き直し+boot 作法の対比例を新設([] covering: 2026-08-02..2026-08-02・範囲外註釈並走+残走路 −161 日の実出力を検証ブロックつきで追加)・開端の警告は維持 |
| E2 | MED | 検定 | 決定性の記述から「同じデータ」(asof・external は同一スナップショット相対)の条件が脱落(L1-008 正答 (c)・教本第 4 章)——spec §7.8 は三条件 | 正当 | 両所に「同じデータ」を補完(asof が版を担う・データ更新で結果が変わるのは決定性の破れではなく供給の更新、まで明記) |
| E3a | MED | 検定 | README「全問題はリファレンス実装での実行検証つき」——概念 5 問は verified: spec-line で検証ブロックなし(同 README 上部の区別と自己矛盾) |
正当 | 「実行可能な問題(出力予測・作文)は実行検証つき・概念問題は仕様行根拠」へ精密化 |
| E3b | MED | 検定 | README の L1-002 ラベル「(概念)」 vs front matter form: output-prediction(ファイル側が正) |
正当 | ラベルを(出力予測)へ。全 19 問の機械照合を verify に常設(不一致は本件 1 件のみと確認済み) |
| E3c | MED | 検定 | 教本 3 冊だけ spec_head が無く「v1・RC5 準拠」のみ——「spec_head で追従を機械検出」の網の外に、最も実行例の多い教材がある |
正当 | 教本 3 冊の版行に spec_head を付与+教本の spec_head 存在検査を verify に常設 |
| E3d | MED | 検定 | L2-015 解説が「給料日(L2-001)」を参照するが L2-001 は非公開=公開リポジトリでは欠番 | 正当 | 参照を自己完結の記述に書き換え+公開ファイルからの問題 id 参照の公開性検査を verify に常設 |
| E4 | MED | 検定 | L2-013 の spec_refs「§4.1(束縛)」——§4.1 は基本形で束縛の記述なし(正: §3.5/§4.8) | 正当 | spec_refs と解説の §参照を §3.5・§4.8 へ修正 |
| K1 | MED | 本体 | Playground は「リファレンス実装をそのまま実行」と主張するが、生成物 playground/js と impl/src の同期を守る公開側の機械検査が無い(ビルドは非公開スクリプト・現時点は最新修正まで同期済みを確認) |
正当 | 同期ゲートを常設: ビルド時に impl ソースの指紋(sha256 先頭 12 桁)を playground/js/build-info.js へ焼き込み、doc-consistency が「焼き込み指紋 == 現 impl/src+stdlib の指紋」を検査(ビルド忘れで検査が割れる——第 3 回 J と同じ処方) |
| K2 | LOW | 本体 | spec/50-glossary の表セル 2 行(:77 公開境界語・:106 糖衣定義)が 7/30 kramdown 修正の取りこぼし——実体はエスケープ剥がれ(バッククォート内の裸 \|>)で、GFM はコードスパン内でもセルを割るため GitHub 表示で表が壊れる(kramdown 側は無事と実測)。en 側は残存なし |
正当(機構は精密化) | 2 行を <code>|></code> 形へ変換(en は sha 追従のみ)+「テーブル行のコードスパン内の裸パイプ」検査を doc-consistency に常設(既存検査は \| 形のみで網の外だった) |
| K3 | LOW | 本体 | _config.yml:2 の説明コメントが旧「公開 URL: azathothx.github.io/…」のまま |
正当 | 正準ドメイン(旧 URL はパス保存 301)の記述へ更新 |
| L1 | LOW | 検定 | L3-001 の spec_refs「§4.3(窓と選択子)」——§4.3 は選択子のみ(窓は §4.2) | 正当 | 「§4.2(窓)」「§4.3(選択子)」の 2 項に分離 |
| L2 | LOW | 検定 | 教本第 2 章の実体化地平線(評価 to+400 日)が実装定数であることのヘッジが弱い | 正当 | 「リファレンス実装の定数であって言語の地平線ではない・実装が違えば幅も違う」を明記 |
| L3 | LOW | 検定 | 教本第 3 章のまわり読み「reference/shift(輸送の注記)」——shift.md に該当注記なし | 正当(リンク切れ同然) | reference/shift.md(英日)に輸送の注記を追加する側で解消(平行移動像・「点が出ないこと」と「出ない理由の信用」は別——教材のまわり読みが真になり、reference の網も充実) |
| L4 | LOW | 検定 | README 英語部が en/spec を “always canonical” と表現——正本は日本語(en 側自身がそう宣言) | 正当 | 正本リンクを日本語 spec へ・en はミラーと明記 |
| L5 | LOW | 検定 | 「三級構成はこれで完結」が誤読余地(3 級の構成?) | 正当 | 「三つの級の教本はこれで完結」へ |
| L6 | LOW | 検定 | 字句エラー実演 2 件の行番号表記が # eval: 行の数え方で 1 行ズレ(8:2/9:2)——実害なし・任意 |
正当(軽微) | 対応なし(エラーメッセージ本文は完全一致・行番号は提示用フェンスの性質と整理) |
検査の網の補強(本レビュー起点の常設化=計 5 本)
検定側(tools/verify.mjs): (1) README 形式ラベル vs front matter form の全数照合、
(2) 公開ファイルからの問題 id 参照の公開性検査(非公開 id への言及=公開側で欠番)、
(3) 教本の spec_head 存在検査。
本体側(doc-consistency): (4) テーブル行コードスパン内の裸パイプ検査(K2 の網)、
(5) Playground 同期ゲート(K1=焼き込み指紋の一致)。
残る確認 1 点(レビュー側が承認制限で未実測)への応答
旧 URL /reference/shiftBoundary.html(英日とも)の転送を当方で実測——両方 200・
rephase.html への案内ページ配信を確認(jekyll-redirect-from 健在・第 5 回 N4 の恒久対策が
機能継続)。
追記(同日・設計者実測=レビュー枠外の同種指摘)
Playground に favicon が無い(意図的か?の照会)——実測の結果意図ではなく構造の漏れ:
配信 /playground/ はレイアウト未適用の素の HTML 断片で、<head> ごと欠けていた(favicon の
ほかパンくず・言語切り替え・seo-tag も不在)。原因=GitHub Pages が自動適用する
jekyll-default-layout は Markdown のみ対象で、front matter 付き .html ページには layout を
付けない。処置=playground/index.html に layout: default を明記(サイト共通の favicon
〈kairos-mark.svg 主・PNG フォールバック〉と topbar を継承)+ 同型の layout 欠落 .html が
他に無いことを掃引で確認。favicon の絵柄はサイト共通のマーク版(kairos-mark.svg)が正——
kairos-pipe.svg はワードマーク(横組み)で favicon 用途ではない、の整理も確認。
評価と学び
- 「実行例が全部本当に動く教材」の裏づけ=レビュー側の独立実走 33/33 全一致は、doctest 文化を
教材へ移植した設計(検証ブロック同梱・
--updateでのみ期待値生成)の外部実証。
追記(2026-08-03・第 8 回=再レビューの確認)
第 7 回指摘は全件解消・新規バグゼロ(対象=本体 44493ad・検定 2c931f3)。レビュー側の
独立実測=検定の実行検証ブロック 34/34 全通過(対比例の新設で 1 件増・⚠ 註釈と残走路
−161 日の期待値まで一致)・本体テストスイート実走 474/474(入口 4 箇所の記載値と一致・
新設 2 検査〈Playground 指紋・表パイプ〉込み)・相対リンク 162 md 壊れ 0・不可視文字/en≡ja
フェンス同一性/source_sha 全 green。個別評価: E1 は「解消(模範的)」(同一シナリオ・同一検証を
保ちながら解釈を正した組み替えと最小主張の対比例新設)・K1 は「解消(処方どおり)」。
総評=「指摘→修正→同型の再発防止検査の常設というループが両リポジトリで一貫して機能。検査は
当初の数本から 20 本超まで育った。主張がすべて機械に守られる出荷品質。今回のサイクルは完全に
閉じた」。持ち越しの旧 URL 転送の目視確認も設計者が完了(azathothx.github.io/kairos-lang/reference/shiftBoundary.html・
kairos-lang.org/reference/shiftBoundary.html の両経路とも reference/rephase.html へ転送)——
第 7 回サイクルはこれで全項クローズ。残る任意候補=本体流 doc-consistency(spec_head 完全
検査など)の検定リポジトリへのさらなる移植(急がない・検定側 verify に 3 検査は移植済み)。
- E1 の型=機械の答えは合っているのに意味の解釈が逆——実行検証の網は素通りする(出力は 正しいから)。概念の主張は仕様の字面と突き合わせる人力レビューだけが捕まえる、という 検証形態の分担の実例。検定教材では正答より解説の向きが危険、を規律として記憶する。
- 検定リポジトリ新設の初回レビューで HIGH が 1 件で済んだのは、正本と同じ「主張を機械で守る」 様式を初日から敷いた効果(レビュー側評価とも一致)。