保管庫の原則
この保管庫のノートは2種類。混同しないことが全て。
2つのステータス(frontmatter status:)
- distillation … 正典が repo にある蒸留ノート。frontmatter に
canon:(repoルート相対の フルパス)とこの地図に無いもの:を必ず持つ。下の三条を厳守。 - vault-native … 正典が無く、この保管庫がそのまま正典(例:grill-meで設計を詰める、 このノート、ホーム)。三条の制約は受けない。
distillation の三条(蒸留ノートは放っておくと正典に化ける)
正典を repo に置いても「ノートで済ませて正典まで歩かない」逃げ道が残る。便利さゆえ蒸留ノートが de facto 正典に昇格し、いずれ正典と食い違って drift する。これを防ぐのは配置でなくノートを 自己限定的にすること:
- 薄さが安全装置 … 結論+発火条件の数行だけ。なぜの連鎖・理由・例外は載せない。 「正典の代わりに使えないほど薄い」を満たす。地図は地図に見えるべき。
- 欠落を名指す …
この地図に無いもの:で、何が正典にしか無いかを宣言する(脚注でなく壁)。 - 権威は一方向 … グラフと正典が食い違ったら常に正典が勝つ。ノートを直して勝たせない
(直すなら正典側、または「新しい正典を指す」ようノートの
canon:を直す)。
ノートが議論に勝った瞬間が、正典もどきの誕生日。
正典の置き場(canon は対象と同居・一本化)
distillation の canon: が指す原本は、次の 1 規則で一意に決まる(旧 A級/B級の区分は廃止):
- 自分のコードディレクトリを持つ物 → 正典は
<project>/DESIGN.md(コードの隣)。これが主。 WHAT(概要・構成・使い方)と WHY(不変量・棄却案・実装ログ・地雷)は別ファイルにせず、 この 1 枚を見出しで分けて持つ。 - コードの家を持たない横断物(
ports/INDEX/dispatch_log/ 学習アーカイブ・単発HTML 等) → 正典はdocs/<x>.md。 - 二重持ち禁止 … 同じ物の原本を
docs/<x>.mdと<project>/DESIGN.mdの両方に置かない。 canon ポインタは常に 1 本。
判定は「自分のコードフォルダを持つか?」の 1 問。
docs/は“横断レジストリ専用棚”であって、 プロジェクト正典の置き場ではない。
canon がツリー/複数アーキが同居する時
- ツリー canon(設計が厚い):根(
CONSTITUTION.md/DESIGN.md/SPEC.md)+adr/+plans/。 安定 WHAT と WHY は根に集約、深い証拠は副ファイル、可変状態(フェーズ・件数・進捗)は canon に 入れず地図・plans/へ。canon ポインタは根 1 本(新ファイルを作らない=二重持ち回避)。 - 複数アーキ/世代の同居:動く前身と新アーキが同居する時は、黙ってマージせず各系統を
ステータス付きで名乗らせる(正準/前身・動作/未完を明示)。行数は実態に応じる——
「前身だから一行」ではなく、動く系は動く分だけ正直に書く(痩せた正準を厚く・動く前身を
一行に潰すのは honest でない=憲法の役目は実態の正直な記述)。欠落・破損は
bankedに1行。
原子の形(汎化知見ノート)
sandbox/ の蜘蛛の巣を編むのは 原子 =汎化知見の最小単位。地図(distillation)が
「どこに何があるか」なら、原子は「何が真か」を 1 つだけ持つ。
- 1 ノート 1 アイデア … 1 つの主張・手法だけ。複数を束ねた“袋”ノートは分割する。
- 見出し=主張/手法(カテゴリ名は禁止) … 中身を読まずに結論が分かる断定形にする。
- ❌「Python の罠」「自動化のメモ」(カテゴリ=袋の入口)
- ⭕「相対 import を含むモジュールは
python -mで実行する」「不可逆操作の前に安い観測を挟む」
- 固有→canon・汎化→原子 … 振り分けの機械的テストは
「プロジェクト名を入れ替えても成り立つ文か?」。
- 「起動は
-m verschlimmsweeper.main」→ 入れ替え不可=固有→ canon(<project>/DESIGN.md)。 - 「相対 import を含むと
python file.pyは ImportError(-mで実行)」→ 入れ替えても真=汎化→ 原子。
- 「起動は
- 原子も
status:を持つ:他に正典があるなら distillation(canon:+三条)、 この保管庫が唯一の置き場なら vault-native。