yoi/tickets/workflow-directory-layout.md

4.5 KiB

Workflow の物理配置を .insomnia/workflow に分離する

背景

現行の Workflow は <workspace>/.insomnia/memory/workflow/<slug>.md に配置される。これは実装上 memory subsystem の loader / linter に載せていた名残だが、概念上は不自然になっている。

Workflow は session-derived な記憶ではなく、人間が管理する手順・操作ポリシーである。一方で .insomnia/memory/summary.mddecisions/requests/_staging/ は自動抽出・統合される memory state であり、ignore や書き込み禁止の扱いも異なる。

この混在により、.insomnia/.gitignorememory を ignore すると project-authored Workflow まで Git 管理から外れる。また、memory write tool が Workflow 書き込みを禁止するなど、「memory 配下にあるが memory ではない」ものとして扱う歪みが出ている。

Knowledge は既に .insomnia/knowledge/<slug>.md として memory/ の外にある。Workflow も同様に .insomnia/workflow/<slug>.md を canonical path とし、memory state から分離する。

要件

canonical path の変更

Workflow の標準配置を以下に変更する。

<workspace>/.insomnia/workflow/<slug>.md

旧配置は以下。

<workspace>/.insomnia/memory/workflow/<slug>.md

新規作成・ドキュメント・補完・resolver の説明は新配置を使う。

互換読み取り

移行期間のため、loader は当面旧配置も読む。

  • 新配置 .insomnia/workflow/<slug>.md を優先する
  • 旧配置 .insomnia/memory/workflow/<slug>.md も fallback として読む
  • 同じ slug が両方にある場合は新配置を採用する
  • 旧配置を読んだ場合、可能なら warning / notification / log のいずれかで migration hint を出す

旧配置の完全廃止は本チケットでは行わない。廃止が必要になったら別 ticket とする。

linter / registry / completion

  • Workflow linter は新配置を検査できる
  • requires の Knowledge 参照検査は従来通り維持する
  • WorkflowRegistry は source path として新旧どちらも保持できる
  • /<slug> completion / invocation は新配置・旧配置の双方から読める
  • resident workflow (model_invokation: true) の広告も新配置を対象にする

memory state との分離

.insomnia/memory/ は generated / session-derived state として扱い、Workflow は含めない。

推奨される layout:

.insomnia/
  manifest.toml
  workflow/
    auto-maintain.md
    worktree-workflow.md
  knowledge/
    <slug>.md
  memory/
    summary.md
    decisions/
    requests/
    _staging/

.insomnia/.gitignorememory 丸ごと ignore ではなく、generated memory state のみを ignore する形にする。

例:

/memory/_staging/
/memory/summary.md
/memory/decisions/
/memory/requests/

既存ファイルの移行

workspace に既存 Workflow がある場合、新配置へ移す。

対象例:

.insomnia/memory/workflow/auto-maintain.md
.insomnia/memory/workflow/worktree-workflow.md

移行後:

.insomnia/workflow/auto-maintain.md
.insomnia/workflow/worktree-workflow.md

移行は Git 管理対象として扱えるようにする。

範囲外

  • Workflow の自動生成ポリシー変更
  • Workflow frontmatter schema の大幅変更
  • Workflow DSL 化
  • 旧配置の即時廃止
  • memory tool で Workflow を書けるようにする変更
  • 内部 Worker Workflow 化そのもの(tickets/internal-worker-workflow.md の対象)

完了条件

  • Workflow の canonical path が .insomnia/workflow/<slug>.md として実装・文書化されている
  • 既存の .insomnia/memory/workflow/<slug>.md も互換読み取りできる
  • 新旧両方に同じ slug がある場合、新配置が優先される
  • Workflow linter / loader / completion / invocation のテストが新配置をカバーしている
  • .insomnia/.gitignore が generated memory state のみを ignore し、.insomnia/workflow/*.md を Git 管理できる
  • この workspace の既存 Workflow が .insomnia/workflow/ に移されている
  • docs/plan/workflow.md や関連コメントが新配置に更新されている

参照

  • docs/plan/workflow.md
  • crates/memory/src/workspace.rs
  • crates/memory/src/workflow.rs
  • crates/pod/src/workflow/mod.rs
  • tickets/auto-maintain-workflow.md
  • tickets/internal-worker-workflow.md