From c00ce0a622b1a94ee2c6a32e2e8c8efe2b869b19 Mon Sep 17 00:00:00 2001 From: Akira Date: Thu, 5 Mar 2026 13:35:26 +0900 Subject: [PATCH] Add windmill-specific harness, index, and task/golden templates --- HARNESS.md | 70 +++++++++++++++++++++++++++++++++++++++++ INDEX.md | 60 +++++++++++++++++++++++++++++++++++ state/tasks/.gitkeep | 0 state/tasks/TEMPLATE.md | 25 +++++++++++++++ tests/golden/.gitkeep | 0 5 files changed, 155 insertions(+) create mode 100644 HARNESS.md create mode 100644 INDEX.md create mode 100644 state/tasks/.gitkeep create mode 100644 state/tasks/TEMPLATE.md create mode 100644 tests/golden/.gitkeep diff --git a/HARNESS.md b/HARNESS.md new file mode 100644 index 0000000..0ce2f05 --- /dev/null +++ b/HARNESS.md @@ -0,0 +1,70 @@ +# HARNESS.md + +## 目的 +- このリポジトリ(Windmill運用)で、Codex / Claude Code / ローカルLLMの協調作業を安全かつ再現可能にする。 +- 大きい指示文より、コンテキスト設計・制約・検証・記録を優先する。 + +## 役割分担 +- Codex: 要件分解、変更方針、レビュー観点、ドキュメント整備。 +- Claude Code: 実装、コマンド実行、検証、差分反映。 +- ローカルLLM: 下書き生成、軽量リファクタ提案、代替案提示。 + +## 依頼フォーマット(必須3行) +1. Purpose: 何を達成するか +2. Target: どのファイル/機能/環境か +3. Done: 何を確認できたら完了か + +## 作業スコープ +- 主対象: `workflows/`, `mcp/`, `docker-compose-dev.yml`, `docker-compose.yml`, `sync_to_git.sh`, `HANDOFF.md`, `SERVER_SETUP.md` +- 原則: 1タスク1責務。仕様変更と大規模改修を同時に進めない。 +- 仕様/挙動変更時は、同タスクでドキュメント更新まで行う。 + +## コンテキスト方針 +- 長い会話ログは渡さない。 +- 毎回渡す情報は最小化する: + - 依頼3行(Purpose/Target/Done) + - 関連ファイルのパス + - 失敗コマンド + ログ先頭5行 + 末尾5行 + - 現在の前提・制約 +- トークン圧迫時は要約スナップショットへ圧縮する。 + +## 安全レール +- 破壊的操作(削除、履歴改変、本番反映)は事前承認必須。 +- シークレットをプロンプト/ログ/コミットに含めない。 +- タスクに無関係なパスは編集しない。 +- 想定外の差分を検知したら作業停止して確認する。 + +## 検証ポリシー(Windmill向け固定) +- L1 構成検証: + - `docker compose -f docker-compose-dev.yml config` +- L2 サービス検証(必要時): + - `docker compose -f docker-compose-dev.yml up -d db windmill_server` + - `docker compose -f docker-compose-dev.yml ps` + - `docker compose -f docker-compose-dev.yml exec -T windmill_server curl -fsS http://localhost:8000/api/version` +- L3 変更対象別検証: + - `mcp/` 変更時: `docker compose build windmill_mcp` と `docker compose up -d windmill_mcp` + - `workflows/` 変更時: `wmill sync` 関連手順を `SERVER_SETUP.md` / `HANDOFF.md` に沿って確認 +- 失敗時は必ずログを残す: + - `docker compose -f docker-compose-dev.yml logs --tail=200 windmill_server` + +## 品質ゲート +- 変更内容に対応するL1/L2/L3結果を記録して完了とする。 +- サイレントな挙動変更は禁止(テスト/手順書更新を伴うこと)。 +- 運用手順に影響する変更は `HANDOFF.md` または `SERVER_SETUP.md` を同時更新する。 + +## 記録ルール +- タスクごとに `state/tasks/.md` を作成。 +- 最低記録項目: + - task_id + - 依頼3行 + - 変更ファイル + - 実行コマンドと結果 + - 未解決リスク/次アクション + +## ゴールデンデータセット +- 再発した不具合は `tests/golden/` に再現手順/入出力を追加する。 +- 修正時は可能な限り先に再現ケースを追加してから直す。 + +## 復旧方針 +- 作業前にバックアップブランチを作る。 +- 緊急時はバックアップブランチに即時復帰できる状態を維持する。 diff --git a/INDEX.md b/INDEX.md new file mode 100644 index 0000000..29e92a5 --- /dev/null +++ b/INDEX.md @@ -0,0 +1,60 @@ +# INDEX.md + +## Start Here +1. `AGENTS.md`(存在する場合) +2. `HARNESS.md` +3. `HANDOFF.md` +4. `SERVER_SETUP.md` +5. 今回タスクの3行(Purpose/Target/Done) + +## このリポジトリで優先的に見る場所 +- 運用メモ: + - `HANDOFF.md` + - `SERVER_SETUP.md` +- 実装・設定: + - `workflows/` + - `mcp/` + - `docker-compose-dev.yml` + - `docker-compose.yml` + - `sync_to_git.sh` +- 実行時状態: + - `.env`(読み取りのみ・値の露出禁止) + - `.mcp.json`(読み取りのみ・値の露出禁止) +- 記録: + - `state/tasks/` + - `tests/golden/` + +## 作業手順(固定) +1. 依頼3行を確定する。 +2. 変更対象を最小ファイルに絞る。 +3. 小さい差分で実装する。 +4. 検証を実行する(HARNESSのL1/L2/L3)。 +5. `state/tasks/.md` に記録する。 +6. 必要なら `HANDOFF.md` / `SERVER_SETUP.md` を更新する。 + +## Agent入力テンプレート +- Purpose: ... +- Target: ... +- Done: ... +- Constraints: ... +- Relevant files: + - path1 + - path2 +- Verification commands: + - cmd1 + - cmd2 + +## 検証コマンド(このrepo既定) +```powershell +docker compose -f docker-compose-dev.yml config +docker compose -f docker-compose-dev.yml up -d db windmill_server +docker compose -f docker-compose-dev.yml ps +docker compose -f docker-compose-dev.yml exec -T windmill_server curl -fsS http://localhost:8000/api/version +docker compose -f docker-compose-dev.yml logs --tail=200 windmill_server +``` + +## 完了条件(DoD) +- 要求された挙動を満たす。 +- 検証結果が記録されている。 +- 運用手順影響がある場合、関連ドキュメントが更新されている。 +- 未解決リスクと次アクションが明示されている。 diff --git a/state/tasks/.gitkeep b/state/tasks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/state/tasks/TEMPLATE.md b/state/tasks/TEMPLATE.md new file mode 100644 index 0000000..9050ad7 --- /dev/null +++ b/state/tasks/TEMPLATE.md @@ -0,0 +1,25 @@ +# Task Record Template + +- task_id: TASK-YYYYMMDD-001 +- date: YYYY-MM-DD + +## Request (3 lines) +- Purpose: +- Target: +- Done: + +## Changed Files +- path/to/file + +## Commands +- cmd: +- result: success/fail +- notes: + +## Verification +- L1: +- L2: +- L3: + +## Risks / Next Actions +- diff --git a/tests/golden/.gitkeep b/tests/golden/.gitkeep new file mode 100644 index 0000000..e69de29