メインコンテンツまでスキップ

凍る面 — 何を壊さないか

1.0 は機能の完成ではない。壊さないと約束する面の確定である。

三つの版

版は互いに独立に数えられる三本ある。混ぜると、どちらの約束が破られたのか言えなくなる。

何に付くか現在
muro の版言語と意味論と合成の規則。「このように書かれたファイルは、この意味であり続ける」1.0
koyu の版実装。「この実装の面を壊さない」。どの muro を実装するかを宣言する0.16.0
正準 JSON の形式版綴り。キーの集合・並び・照合順・正規化・数の表記koyu-canonical/1.0

.muro のファイルが名乗るのは言語の版だけである。処理系の出来を名乗るのではない。

koyu 1.0

形式版が別に要るのは、同じ意味論を別のキーで綴り直すことがありうるからである。境界の向きを保存する a キーの追加は、言語を一語も変えずに綴りを変えた。逆に、言語版が上がっても綴りが変わらないことはある。

二本は同時に到達しなくてよい

現に muro は 1.0 に到達し、koyu は 0.x のままである。

これは遅れではなく、二つが別の約束だからである。muro の 1.0 は「この版で読めたものは、以後も同じ意味で読める」を言い、koyu の 1.0 は「この実装の面を壊さない」を言う。言語は確定し、実装はまだ何も凍結を約束していない — 前者だけが先に確定できるし、実際に確定した。

外部のビュアーは独立に版を持ち、従う muro の版を宣言する。検証の面は版を持たず、追加的に増える。

「意味保存」の定義

言語の版を上げるかどうかは、変更が意味保存であるかで決まる。この語の意味は固定されている。

意味保存とは、導出物 — 正準 JSON・グラフ・集計・SVG — が不変であることを指し、診断の増減は含まない。

だから検査を足しても言語の版は動かない。曖昧でない原本の導出物が 1 バイトも変わらないなら、その変更は意味保存の内側にある。逆に、同じ綴りが別の建物を意味するようになる変更は、必ず版を上げる。

旧版の宣言は意味が保たれる場合だけ受理される。同じ文字列が別の建物を意味してしまう組み合わせは VER01–04 が error で止め、二つの選択肢(意味を明示的に書き足す / 版を上げる)を示す。

凍結する八つの面

約束の内容
muro 1.0 の文法と意味論この版で読めたものは、以後も同じ意味で読める
合成の規則層の強度順序・単一値の解決・集合の編集・出所。同じ入力からは常に同じ結果が出る
同一性uid が同じなら同じものである。パスと名の規則
属性の三層と名前空間運搬層は見ない、という約束を含む
機械形式形式版を名乗る。同じ入力からは同じバイト列が出る — 照合順と正規化が定まっている。合成の結果を持ち、形を持たない
導出規則明文であり、参照実装が API として提供される
構造整合の診断コードと severity。緑の意味が約束の範囲の定義と一致する
公開 API と CLI解析・合成・正準化・問い・導出。コマンド(14 個)、引数、終了コード

診断について一つ念を押す。severity はコードの不変属性である。同じコードが場合によって error になったり warning になったりはしない。重さを変えるときは新しいコードを切り、古い綴りは欠番になる。

凍結の対象でないもの

存在してよいが、凍結対象でないことが明示されている。

  • 形の生成と描画svgPlan / svgAxo、CLI の plan axo、MCP の plan_svg。CLI の(サブコマンド名・引数・終了コード)は凍るが、SVG の中身は凍らない
  • 建築的な判定 — 15 の規則と koyu validate の出力。増える面である
  • MCP のツール群(12 個)— 追加的に増える面として扱う
  • 外部形式との往復と取り込み
  • 人のための面 — エディタ支援・オーサリング
  • 運搬層の属性の意味

変わってはならないのは SVG ではなく Form である

描画は Form を描くだけである。だから SVG の見た目はいつ変わってもよい。色も線幅も線種も、記号の作図慣習も、紙面の余白も、凍る面には無い。

凍るのは Form の側である — 座標・厚み・z 範囲・向き・対象の同一性・平面の分類。同じ構成から違う Form が出ることは欠陥であり、同じ Form から違う SVG が出ることは欠陥ではない。

「描くだけ」であることは機械が縛る。描画側が形を組み立てる部品を一つも引いていないこと、導出定数が描画側に綴られていないこと、平面に出た黒帯が Form の「切られた区間」そのものであることを、テストが検査する。

隣り合う頁