欠番の診断コード
11 の綴りが欠番である。番号は再利用しない。同じ綴りが別の意味を持つと、過去の出力もログも読めなくなる。台帳 (DIAGNOSTIC_CODES) にこれらのキーは無く、プログラムから引くと undefined が返る。
DIAGNOSTIC_CODES["BND04"]; // "error"
DIAGNOSTIC_CODES["BND07"]; // undefined
欠番になった理由は三つに分かれる。
| 理由 | 欠番 |
|---|---|
判定だったので koyu validate へ移った — 閾値を持ち、建築の判断であって構成の整合ではない | ENV01 RUN06 RUN07 RUN08 SIT03 SIT05 |
| 「情報が足りない」という一つの話だったので SUF の族へ合流した | HGT03 HGT04 HGT05 RUN04 |
| 役目そのものが消えた | BND07 |
一覧
| 欠番 | 当時の severity | 当時言っていたこと | いま同じことを言うもの |
|---|---|---|---|
| BND07 | warning | 接しているのに境界が宣言されていない | 無し — 未宣言の接触は既定で壁になる |
| ENV01 | warning | 外皮に穴 — 何にも面していない外周がある | envelope.gap (caution) |
| HGT03 | warning | 上階に slab が無く高さ検査ができない | SUF03 (warning) |
| HGT04 | warning | 天井高が不明で高さ検査ができない | SUF01 (error) |
| HGT05 | warning | 領域を持つ空間のレベルが特定できない | SUF02 (error) |
| RUN04 | warning | 上にレベルが無く、縦動線の形が生成できない | SUF04 (warning) |
| RUN06 | warning | 導出された段が窮屈 (踏面が狭い / 2R+T が快適域の外) | stair.proportion (caution) |
| RUN07 | warning | 導出された勾配が宣言や常用域から外れる | run.slope (caution) |
| RUN08 | warning | 縦動線の形はあるが、上下を繋ぐ垂直境界が無い | run.disconnected (caution) |
| SIT03 | error | 建物が敷地形状からはみ出している | site.escape (violation) |
| SIT05 | warning | 敷地面積の宣言と導出が食い違う | site.area (caution) |
右列の envelope.gap 以下は koyu check の診断ではなく koyu validate の規則である。型からして別で、check は Diagnostic { code, severity } を、validate は Finding { rule, level } を返す。level は violation (守られなかった) と caution (疑わしい) の二つで、severity の error / warning とは別の軸である — 前者は建築の側の重さ、後者は構成の壊れ方を言う。
判定が core から出た理由
check はかつて二種類のことを同時に言っていた。「境界が未定義の空間を参照している」(REF01) と「外皮に穴がある」(ENV01) が、同じ配列に同じ severity で並んでいた。前者は構成が壊れているという読解の失敗であり、後者は建築として疑わしいという判断である。
分けた理由は二つある。
第一に、緑の意味が一文で言えなかった。「check が緑」の意味を書こうとすると、「構成が矛盾していない、ただし外皮と階段と採光と敷地については建築的にも一応見ている、ただしその判定は粗い」という文になる。これは定義ではない。いまは一文で言える — 構成がデータとして矛盾しておらず、書かれた構成から一意な形が作れる。建築としての妥当性については何も言わない。
第二に、判定を足すたびに凍る面が伸びていた。区画・避難距離・排煙・用途別の面積率を足したくなるたび、診断コードの台帳が伸び、そのすべてが「壊さないと約束した面」に見えてしまう。判定は別の面に置かれ、増やしても捨てても言語の版は動かない。
判定は捨てていない。置き場所を変えただけである。koyu validate を実行すれば、六つの規則はいまも同じことを言う。
koyu validate examples/tower/main.muro
充足性が一つの族になった理由
HGT03・HGT04・HGT05・RUN04 は、族の名としては高さと縦動線に分かれていたが、言っていたことは一つだった — 形を作るのに必要な情報が書かれていない。
| 欠番 | 当時の本文 | 実際に言っていたこと |
|---|---|---|
| HGT03 | 上階に slab が未宣言で高さ検査ができません | 立式に要る値が書かれていない |
| HGT04 | 天井高が不明で高さ検査ができません | 同上 |
| HGT05 | レベルが特定できません | z が書かれていない |
| RUN04 | 上にレベルが無いため形が生成されません | 形が一つも出ない |
どれも「宣言された不変量が破れている」という報せではない。HGT01 / HGT02 が書かれた値が矛盾していることを言うのに対し、この四つは値が書かれていないことを言っていた。族が違う。
畳んだときに重さが変わったものが二つある。HGT04 (warning) は SUF01 (error) になり、HGT05 (warning) は SUF02 (error) になった。天井高が決まらなければ押し出す高さが無く、レベルが決まらなければ z が無い。どちらも立体が一つも出ないので、疑わしいのではなく形が作れない。severity はコードの不変属性なので、重さが変わる以上、綴りも新しくなる — これが四つが欠番になったもう一つの理由である。
いま高さの検査が見るのは「書かれた値が矛盾しているか」だけで、値が無ければ黙って先へ進む。それを言う仕事は充足性の検査に移った。
BND07 だけは置き換えが無い
BND07 はかつて「接しているのに境界が宣言されていません」という警告だった。接する二つの空間の既定が壁になったことで、この警告は役目を失った。未宣言の接触はもはや「未定義」ではなく「壁」を意味し、警告が促していた宣言は既定の導出そのものに置き換わった。
つまり boundary を書くのは、例外 (type:open・air:1) と、属性や開口を載せるときだけである。書かなければ壁が導かれる。
そして「壁は扉が無ければ通れない」ので、扉を一枚も書かない建物は緑のまま密封される。動線を見る道具は check ではなく koyu doors と koyu validate の access.unreachable である。
索引に戻る
現行の 65 コードは診断コード索引にある。