產出物
產出物具有已驗證的中繼資料、來源路徑、明確的參照及資源名稱。 Markdown 產出物也會保留本文文字。
套件管理的位置
協定第 1 版只探索以下遞迴來源 glob:
- Vision:
research/**/*.md、prd/**/*.md和context/**/*.md - Loop:
triage/**/*.md、design-document/**/*.md、spec/**/*.md和ticket/**/*.md - Evidence:
adr/**/*.md、audit/**/*.md、record/**/*.json和drift/**/*.json
每個 glob 都以 .drifts/<pillar>/ 為根。
evidence/audit/runs 和 evidence/audit/reports 等巢狀稽核路徑也包含在 audit glob 內。
不支援任意來源 glob。
九類文件使用 Markdown,Record 和 Drift Event 封套則使用 JSON。
探索時,中繼資料的 type 必須與來源目錄相符。
解析
parseArtifact(text: string, artifactPath: string): ParsedArtifactparseArtifact 接受 .md 和 .json 路徑。
它會驗證中繼資料、推導 vision.prd 等支柱資源、收集明確的參照,並傳回原始產出物路徑。
對 Markdown 而言,body 是前置資料結束分隔符之後的文字。
對 JSON Record 和 Drift Event 而言,body 為空。
不支援的副檔名、格式錯誤的輸入、缺少前置資料,或超過 1 MiB 的產出物,會產生代碼為 ARTIFACT_INVALID 的 LangDriftError。
探索
await discoverArtifacts(root, {
maxFiles: 1000,
maxDirectories: 1000
})兩項限制的預設值都是 1000,且必須是安全正整數。
呼叫端可明確選擇其他上限。檔案讀取上限為 1 MiB。
探索行為如下:
- 只巡訪套件宣告的
.drifts位置 - 處理前先排序目錄項目
- 略過以點開頭的項目和
node_modules - 忽略不存在的產出物目錄
- 拒絕符號連結,而不跟隨它們
- 拒絕路徑穿越、絕對路徑、反斜線、控制字元、隱藏路徑區段及相依套件目錄
它不會掃描整個儲存庫。 只要檔案系統不變,結果就是確定的:套件位置有宣告的順序,每個目錄也都依排序巡訪。
檢查期間,不受信任的程序不得變更本機專案內容。