Skip to content

config ディレクトリが起動時に存在しない場合の自動リカバリ(祖先ディレクトリ watch) #338

Description

@GeneralD

agent type scope priority complexity relates

背景

Issue #329 で「config ファイルが未作成でも親ディレクトリを監視して、後からの作成を初期ロードとして拾う」対応を入れた。ただし config ディレクトリ自体($XDG_CONFIG_HOME/lyra など)が daemon 起動時に不在の場合は watch を張る fd が無く、watchChanges は nil を返す。この場合、ディレクトリを作って config を置いても daemon の再起動が必要になる。

この制限#329 時点で明示的にスコープ外として文書化済み(docs/ARCHITECTURE.md「provided the config directory itself exists at start」、および ConfigWatchSession.armed() の doc コメント)。PR #337 の Round 4 レビュー(CodeRabbit)で改めて指摘があり、follow-up の課題として切り出す。

提案

存在する最も近い祖先ディレクトリ($XDG_CONFIG_HOME$HOME の順にフォールバック)を watch し、目的の config ディレクトリが作成されたら watch を下位に張り替えて initial load を発火する「祖先 watch + 段階的 re-arm」を追加する。

検討事項

  • 祖先 watch はイベントの頻度が高い($HOME 直下の変化を全部拾う)ため、debounce と「目的パスが出現したときだけ反応する」フィルタが必須
  • ConfigWatchSession の re-arm 機構(イベント毎にディスクから対象を再解決)に乗せられるか、別 tier が要るか
  • 需要の希少性(初回セットアップ時のみ)と実装の重さのバランス — lyra config init が案内を出す軽量代替で足りる可能性もある

関連

以下の issue / PR関連する:

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions