本文へ移動
ドキュメントを探す

成果物

成果物には、検証済みメタデータ、ソースパス、明示的な参照、リソース名があります。 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): ParsedArtifact

parseArtifact は .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 をスキップする。
  • 存在しない成果物ディレクトリを無視する。
  • シンボリックリンクをたどらず、拒否する。
  • パストラバーサル、絶対パス、バックスラッシュ、制御文字、隠しパス要素、依存関係ディレクトリを拒否する。

リポジトリ全体を走査することはありません。 ファイルシステムが変わらなければ結果は決定論的です。パッケージの場所には宣言された順序があり、各ディレクトリはソート順にたどります。

検査中に、信頼できないプロセスがローカルプロジェクトの内容を変更してはいけません。

GitHub でこのページを編集