feat: AI-DLC の更新伝播メカニズムを導入 (Phase 1-3) #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/ai-dlc-update-mechanism"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
取り込み先プロジェクトへ上流 AI-DLC の更新を届けつつ、下流のテーラリングを壊さない仕組みを3フェーズで実装しました。
背景
従来の配備ロジックは二択しかなく、その中間がありませんでした。
copyFileSyncIfNotExistscopyDirRecursiveSyncさらに配備先にバージョン情報が残らないため、何が入っているかも、どこが手で書き換えられたかも判定できませんでした。
中核原則: 1つのファイルを上流と下流で共同所有しない
所有者を必ずどちらか一方に決め、境界をディレクトリまたはマーカーで物理的に区切ります。
コミット構成
各コミットは単体でチェックアウトしても動作します(初回導入・再実行の冪等性を3コミットすべてで確認済み)。
1.
3d21849配備台帳と3方向差分による更新伝播 (Phase 1)配備内容を
.ai-dlc/manifest.jsonに sha256 で記録し、「上流が変えたか」「ローカルが変えたか」を独立に判定します。.ai-dlc-newに出力owned同期へ変更し、無条件上書きを廃止AI-DLC Guardマーカーで判定し、他ツールのフックを奪わない.sh/.ps1フォールバックは台帳を扱えないため初回導入専用化2.
710eec0所有権を分離し AGENTS.md を管理ブロック方式へ (Phase 2)ステアリングファイルは各AIツールがルート直下の固定名を読むため分割できません。そこでマーカーで境界を引き、上流はマーカー間の本文だけを差し替えます。
ブロック外の記述は更新の判定対象にすら入らないため、上流がルールを追加してもコンフリクトなしで自動反映されます。
移行も自動化しています。
skills/(未編集).ai-dlc/skills/へ自動移動skills/(編集済み)3.
19c547fsync / diff / doctor コマンドと配布経路を整備 (Phase 3)ai-dlc syncai-dlc diffai-dlc doctor終了コード:
0正常 /1エラー・--strict違反 /2要判断ありtemplates/ci_cd/ai_dlc_update_check.yml: 週次で上流更新を検知し、更新 PR を自動発行。下流は PR をレビューして merge するだけになりますdocs/PUBLISHING.md: 配布・公開手順とバージョニング方針。npm 公開は必須ではなく、npxは Git URL から直接解決できますsetup_ai_dlc.jsはai-dlc syncの後方互換ラッパへ縮小(従来の呼び出し方は維持)検証
使い捨てプロジェクトに対して以下17項目を確認済みです。
diffの「差分なし」判定doctorでの検知・exit 2--forceでの解決とバックアップ生成--dry-runで副作用ファイルが一切生成されないことレビュー時の注目点
templates/setup/lib/blocks.jsのnormalizeBody()— 「書き出す形」と「ハッシュを取る形」を揃えるための関数です。ここがずれると未編集のブロックが毎回ローカル編集と誤検出されます(実装中に実際に踏みました)templates/setup/lib/migrate.js— 移行時にファイルを削除する条件(ハッシュ一致時のみ)package.jsonを2.0.0へ上げています