koyu check が返すメッセージの全目録である。コードは 65、族は 19、内訳は error 49 件・warning 16 件。この頁はどのコードがどの族に属し、どの重さを持つかを一枚で見せる。原因と最小の再現と直し方は族ごとの頁にある。
check が言うのは書かれたものがデータとして矛盾していないかまでである。建物として使えるかは言わない — それは koyu validate の 15 の規則が別に言う。二つは型からして別で、check は Diagnostic { code, severity } を返し、validate は Finding { rule, level } を返す。コードの綴り (3字+2桁) と規則の綴り (site.escape のような 章.規則) も字面で見分けがつく。
人向けの check はコードを表示しない。この索引を引く前に --json を付けてコードを手に入れる — 手順は診断を読むにある。
severity は二つしかない
| severity | 意味 | check の終了コード | check --strict の終了コード |
|---|
error | 構成が成立していない。書かれた構成から一意な形が作れない | 1 | 1 |
warning | 疑わしい。成立はしていて、形も一意に決まる | 0 | 1 |
severity はコードの不変属性である。同じコードが場合によって error になったり warning になったりはしない。重さを変える必要が出たときは、既存コードの severity を動かさず、新しいコードを切る。
症状から引く
| 症状 | 見るコード |
|---|
| 境界を書いたのに「接していない」と言われる | BND04 |
| 扉や窓を置いたら「線分が複数あります」と言われる | OPN05 |
| 外壁に窓を開けたいのに置けない | OPN04 OPN05 |
| 階段や吹抜けを書いたのに叱られる | VRT01 VRT02 VRT03 |
| 階段に扉を書いたら「解釈されません」と言われる | VRT05 |
| 空間を並べたら「領域が重なっています」と言われる | GEO02 |
| 住戸を室に割ろうとして重なりを叱られる | GEO02 — 直し方は割付ではない |
| 境界のパスを書いたら「未定義」と言われる | REF01 |
床材を貼った area が通らない | SEG01 SEG02 |
| レベルを書いたつもりが「レベルが特定できません」と言われる | SUF02 |
| 階高の検算が通らない | HGT01 HGT02 |
| 天井高や床組み厚を書かずに、天井も床も生成されていない | SUF01 SUF03 |
| 属性を書いたのに効いていない | ATT01 ATT02 ATT03 |
| 敷地の数字が合わない | check は言わない — koyu validate の site.escape / site.area が言う |
| 階段の踏面や勾配が窮屈 | check は言わない — koyu validate の stair.proportion / run.slope が言う |
| 外皮に穴が開いている | check は言わない — koyu validate の envelope.gap が言う |
| ファイルが1行も読まれずに落ちる | SYN01 |
全コード
並びは台帳の順である。
REF — 参照 (1)
| コード | severity | 一文 |
|---|
| REF01 | error | 未定義の空間を参照しています |
BND — 境界 (6)
| コード | severity | 一文 |
|---|
| BND01 | error | 同じ空間同士の境界は書けません |
| BND02 | error | 境界が重複しています |
| BND03 | error | 異なるレベルの空間に壁境界は書けません |
| BND04 | error | 空間が接していないため境界を導けません |
| BND05 | warning | 同じ空間対に edge 限定つきと無しの境界が併存しています |
| BND06 | warning | 外周に残る辺が無く、境界線分がゼロです |
LVL — レベル (1)
| コード | severity | 一文 |
|---|
| LVL01 | error | 二つのレベルの z が同じです |
GEO — 領域の重なり (2)
| コード | severity | 一文 |
|---|
| GEO01 | error | 一つの空間の領域同士が重なっています |
| GEO02 | error | 二つの空間の領域が重なっています |
VRT — 垂直境界 (6)
| コード | severity | 一文 |
|---|
| VRT01 | error | 垂直境界は領域とレベルを持つ空間同士に書きます |
| VRT02 | error | 垂直境界は隣り合うレベルの間に書きます |
| VRT03 | error | 垂直境界の空間が平面上で重なっていません |
| VRT04 | warning | void 境界の上側が type:void ではありません |
| VRT05 | warning | 垂直境界の開口は解釈されません |
| VRT06 | warning | 垂直境界の seg は解釈されません |
OPN — 開口 (8)
| コード | severity | 一文 |
|---|
| OPN01 | error | hinge の軸違い |
| OPN02 | error | 開口同士が重なっています |
| OPN03 | warning | open 境界の開口は通行に影響しません |
| OPN04 | error | 開口を置ける境界線分がありません |
| OPN05 | error | 境界線分が複数あって曖昧です |
| OPN06 | error | 開口の幅が境界線分の長さを超えています |
| OPN07 | error | 開口の明示位置の軸違い |
| OPN08 | error | 開口の明示位置が線分からはみ出します |
SEG — 数えない分節 (8)
area (室の内側) が SEG01・SEG02、seg (境界の上) が SEG03〜SEG08 である。
| コード | severity | 一文 |
|---|
| SEG01 | error | 領域を持たない空間に area は書けません |
| SEG02 | warning | area が領域からはみ出しています |
| SEG03 | warning | open 境界の seg は解釈されません |
| SEG04 | error | seg を置ける境界線分がありません |
| SEG05 | error | seg の境界線分が複数あって曖昧です |
| SEG06 | error | seg の幅が境界線分の長さを超えています |
| SEG07 | error | seg の明示位置の軸違い |
| SEG08 | error | seg の明示位置が線分からはみ出します |
ZON — ゾーン (2)
| コード | severity | 一文 |
|---|
| ZON01 | warning | ゾーンの下に空間がありません |
| ZON02 | warning | ゾーンと同じパスの空間があります |
HGT — 高さの不変量 (2)
| コード | severity | 一文 |
|---|
| HGT01 | error | 上階の床に食い込みます |
| HGT02 | error | 部分吹抜けの被覆が足りません |
SUF — 充足性 (4)
| コード | severity | 一文 |
|---|
| SUF01 | error | 天井高が決まらず、天井も屋根も生成できません |
| SUF02 | error | レベルが特定できず、立体が一つも生成できません |
| SUF03 | warning | レベルに slab が無く、床が一枚も生成されません |
| SUF04 | warning | 縦動線の宣言に対して形が一つも生成されません |
SIT — 敷地形状 (3)
| コード | severity | 一文 |
|---|
| SIT01 | error | 敷地形状に重複する頂点があります |
| SIT02 | error | 敷地形状が自己交差しています |
| SIT04 | warning | polygon に対応するゾーンがありません |
SIT03 と SIT05 は欠番である。
UID — 同一性 (4)
| コード | severity | 一文 |
|---|
| UID01 | error | uid は数字だけのトークンにできません |
| UID02 | error | uid に空白は使えません |
| UID03 | error | uid が重複しています |
| UID04 | error | 同じ対象の中で name が重複しています |
ATT — 属性 (3)
| コード | severity | 一文 |
|---|
| ATT01 | error | 属性は正の数値で書きます |
| ATT02 | error | 属性の値が台帳の語彙にありません |
| ATT03 | error | 台帳に無い属性キーで、名前空間もありません |
DAY — 採光の対象 (1)
| コード | severity | 一文 |
|---|
| DAY01 | error | daylight は 1 (採光判定の対象) か 0 (対象外) です |
RUN — 縦動線 (4)
| コード | severity | 一文 |
|---|
| RUN01 | error | 一つの空間に縦動線の宣言が複数あります |
| RUN02 | error | 縦動線の値は上る向き N/E/S/W です |
| RUN03 | error | 縦動線の領域が矩形一つでない、またはレベルが不明です |
| RUN05 | error | form の値が不正、または形が決まりません |
RUN04・RUN06・RUN07・RUN08 は欠番である。
LIN — 描かれた線 (3)
| コード | severity | 一文 |
|---|
| LIN01 | error | 線が二つの空間を分離していません |
| LIN02 | error | 垂直境界に線は描けません |
| LIN03 | warning | 線が何も切っていません |
COL — 柱 (2)
| コード | severity | 一文 |
|---|
| COL01 | warning | 宣言に対して立つ柱が0本です |
| COL02 | warning | 同じ交点に先の柱宣言が立っています |
VER — 言語版の受理条件 (4)
| コード | severity | 一文 |
|---|
| VER01 | error | koyu 0.1 のファイルに、境界が宣言されていない接触ペアがあります |
| VER02 | error | koyu 0.3 以前のファイルに daylight の無い居室型があります |
| VER03 | error | koyu 0.4 以前のファイルに 0.5 の語があります |
| VER04 | error | koyu 0.5 以前のファイルに 1.0 の語があります |
SYN — 構文・合成 (1)
| コード | severity | 一文 |
|---|
| SYN01 | error | 構文または合成のエラー |
SYN01 は個別の検査ではなく、読み込みが投げた例外を一件に写したものである。check --json のときにだけ現れる — --json を付けない check は例外をそのまま印字して終了コード1で終わる。
番号は再利用しない。過去の出力が読めなくなるからである。11 の番号が欠番で、そのうち 6 つは koyu validate の規則へ、4 つは SUF の族へ移った。何が何に置き換わったかは欠番の診断コードにある。
BND07 HGT03 HGT04 HGT05 RUN04 ENV01 RUN06 RUN07 RUN08 SIT03 SIT05
check が緑でも見ていないこと
緑は「構成がデータとして矛盾しておらず、書かれた構成から形が作れる」までを意味する。建築としての妥当性については何も言わない。特に次の二つは緑のまま通り抜ける。
閉じた建物。接する空間の既定は壁であり、壁は扉が無ければ通れない。扉を一枚も書かない二階建ては緑のまま完全に密封される。
koyu doors <file> /L2/bed /out/road
これが「到達できません」と答えたら、動線が繋がっていない。koyu validate の access.unreachable も同じことを違反として言う。
採光。窓を一枚も書かなくても緑になる。koyu light <file> が居室ごとの 1/7 判定を出し、koyu validate の daylight.ratio が違反として言う。
check の呼び方と旗は koyu check に、判定の側は koyu validate にある。