成果物
成果物には、検証済みメタデータ、ソースパス、明示的な参照、リソース名があります。 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 には対応していません。
9 種類の文書には 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をスキップする。 - 存在しない成果物ディレクトリを無視する。
- シンボリックリンクをたどらず、拒否する。
- パストラバーサル、絶対パス、バックスラッシュ、制御文字、隠しパス要素、依存関係ディレクトリを拒否する。
リポジトリ全体を走査することはありません。 ファイルシステムが変わらなければ結果は決定論的です。パッケージの場所には宣言された順序があり、各ディレクトリはソート順にたどります。
検査中に、信頼できないプロセスがローカルプロジェクトの内容を変更してはいけません。