容器
一個剛好可以壓成 zip 的目錄。
一個 MLF 封包是一個目錄裡的一組明確紀錄。.mlf 檔就是那個目錄的決定性、ZIP 相容交換形式 —— 同樣的位元組、同樣的意義,沒有第二套需要同步維護的格式。
1.0 凍結了什麼
- 決定性的
.mlfdir與.mlf容器。 - 唯一的
manifest.json進入點。 - 矩陣、儲存格、區域、角色與樣式紀錄。
- 來源公式、正規化 AST 與相依圖三者共存。
- 路徑圖與可逆投影中繼資料。
- 來源歷程、轉換損失報告、四層指紋與校驗和。
- MLF 0.1 讀取相容,以及非破壞性遷移到 1.0。
- 安全的匯入匯出邊界,並明確回報不支援的功能。
是紀錄,不是一坨
正典封包是一組明確的紀錄,不是一個序列化的大物件。每個檔案回答一個問題,而且各自可以在不解析其餘部分的情況下讀取。
manifest.json- 選定文件層級的資源。
- 矩陣 JSONL
- 儲存格、區域與樣式,一行一筆。
- 公式 JSONL
- 來源運算式與正規化 AST。
- 圖 JSONL
- 相依邊與遍歷路徑。
- 歷程 JSONL
- 只追加的歷史。
- 報告
- 指紋與轉換損失。
checksums.json- 把路徑綁到位元組。
層次分離
六件事,刻意分開。穩定的檔案格式主要住在 L1–L3;執行、模型與治理元件消費這個格式,不重新定義它。
- L0實體基底
- L1容器與完整性穩定格式
- L2矩陣知識模型穩定格式
- L3公式、相依、路徑與歷程圖穩定格式
- L4執行與模型投影
- L5人類投影與治理
L1–L3 承載穩定的檔案格式。L4 與 L5 消費它,但不重新定義它。
這條界線就是格式能活得比工具久的原因。整個投影層可以換掉,而容器一個位元組都不用動。
投影
序列、矩陣張量、圖張量、執行階段、分片、摘要與人類表格輸出,全部都是投影。它們不是來源結構的替代品,而這個格式從不用投影去取代它的來源。
呈現
人類視圖就是一個視圖。它被寫進 projections/human_views.jsonl,跟結構並存,不是取而代之。
決定性
同一份輸入編譯兩次,會得到逐位元組相同的封包。這正是四個指紋能跨機器比較的前提,也是 mlfc diff 談的是「兩個封包」而不是「兩次序列化」的原因。