Scheduled tasks phase1 rewrite dry run

# Stage 2-B dry-run draft — scheduled-tasks dual-write 書き換え案

| 項目 | 値 |
|---|---|
| 作成日 | 2026-05-22 |
| 作成元 | Cowork セッション |
| 状態 | **dry-run(未反映)**。`update_scheduled_task` は未実行。Chat 承認後に Stage 2-C で反映。 |
| 全 scheduled-tasks 数 | 20(うち有効 cron 16 / 無効・one-time 4) |
| dual-write 書換 **確定**対象 | **2 件**(daily-chat-digest-2330 / daily-chat-digest-0800-backup) |
| dual-write 書換 **要判断**対象 | 1 件(weekly-review-sunday-2100) |
| 対象外(理由付き) | 約 10 件(非ダイジェスト WorkFlowy 書込タスク) |

---

## §A 対象タスク選定(意味判断・HANDOFF escalation 該当)

§3-x dual-write の目的は「Cowork 夜間バッチが生成する**日次ダイジェスト**を Vault `logs/YYYY/MM/` に並行書込」。よって「`logs/` への dual-write を足すべきタスク=日次ダイジェスト(type: daily-digest)を生成するタスク」に限定する。

### A-1. 確定対象(2 件)
| taskId | 生成物 | logs/ dual-write |
|---|---|---|
| daily-chat-digest-2330 | `📝 YYYY-MM-DD #Coworkログ`(日次ダイジェスト) | ✅ 追加する |
| daily-chat-digest-0800-backup | 同上のバックアップ補完 | ✅ 追加する |

### A-2. 要判断対象(1 件)
| taskId | 生成物 | 論点 |
|---|---|---|
| weekly-review-sunday-2100 | `📊 週次レビュー`(**週次・案件別**、各 #project ノード配下) | type が daily-digest ではない。Vault 上の等価物は `logs/`(時系列・日次)ではなく **`01-Projects/[案件名]/_MOC.md`(読込優先度①)**。`logs/` に混在させると時系列アーカイブの粒度が崩れる。**推奨:本タスクは logs/ dual-write の対象外とし、週次レビューの Vault ミラーは別途 01-Projects/ 経路で設計(別 Stage)**。Chat 判断を仰ぐ。 |

### A-3. 対象外(非ダイジェスト・logs/ 書込しない)
morning-briefing-0500 / morning-briefing-0700-backup / daily-todo-alert-1630 / idea-shuffle-mon-wed-fri / branding-dictionary-daily / photo-memo-backlog-0200 / photo-memo-backlog-0700-backup / monthly-expense-collector / monthly-expense-midcheck / weekly-designer-trend-watch / morning-tweet-quotes / chrome-mcp-tab-cleanup / skill-ssot-monitor

理由:これらは WorkFlowy へ書き込むが、生成物はブリーフ/TODO/辞典/写真メモ/経費/観察ログ等で `type: daily-digest` に該当しない(Stage 2-A で「過去生成ログ」289 件を対象外にしたのと同じ判断軸)。Vault 完全アーカイブ化を別途決めた場合のみ再検討。

---

## §B daily-chat-digest-2330(dual-write 追加)

### B-1. 旧 prompt(verbatim)
~~~markdown
あなたは daily-chat-digest-2330 v2.1(毎日23:30 JST)として実行中です。

★仮説 v2.1(2026-05-04 ツールロード追加):
本タスクは旧仕様(claude.ai Chat 履歴取得)を放棄し、「Cowork セッション活動ログ+WorkFlowy案件横断スナップショット」記録に役割変更しました(v2.0)。
v2.1 で session_info 系 deferred tools のロード命令を冒頭に追加。

kudo-workflowy-double-save §運用ルール SSOT §1〜§7 を必ず参照。

## 動作

### Step 0-prep:deferred toolsロード(必須・最初に実行)
```
ToolSearch(query="select:mcp__session_info__list_sessions,mcp__session_info__read_transcript", max_results=5)
```
ロード失敗時は session_info を使わず WorkFlowy スナップショットのみで継続(Step 2スキップ→Step 3直行)。

### Step 1:親ノード動的取得(§1)
- `workflowy_search`(pattern="[1日1新およびToDo]")で親ID取得
- 取得失敗時は Step 6(失敗通知)へ

### Step 2:当日 Cowork セッションログ取得(Step 0-prep成功時のみ)
- `mcp__session_info__list_sessions`(あれば)で本日([今日のYYYY-MM-DD] 0:00〜23:59 JST)のCowork scheduled-tasksセッションを一覧取得
- 各セッションの `read_transcript` で要約レベルの概要を抽出(フル本文ではなくStep数とエラー有無)
- session_info ツール未ロード時は「Cowork transcript取得不可」と記録してStep 3へ

### Step 3:WorkFlowy案件横断スナップショット
当日 [今日のYYYY-MM-DD] にWorkFlowy「[1日1新およびToDo]」傘下で新規作成・更新された主要ノードを集約:
- 今日のモーニングブリーフ(🌅)の「✅ 今日の優先タスク(仮)」
- 今日のTODO確認(📋)の「✅ 確定TODO」「💡 推薦TODO」
- 今日のアイデアシャッフル(🎲・該当日のみ)
- 今日の写真メモ(📷)の「処理件数」
- 今日のブランディング言葉辞典(📚 #00N・平日のみ)の用語名
- 今日生成された 📛 失敗レポート(システムログ)の有無

`workflowy_search` で各パターンを検索し、当日付きのものを抽出。

### Step 4:当日活動の統合サマリ生成
以下の構造でサマリを作成:
- 【要点】1行サマリ(当日のキー活動)
- 【自動タスク実行状況】各scheduled-tasksの成功/失敗 一覧
- 【WorkFlowy更新サマリ】当日新規作成された主要ノード
- 【失敗・要対応】当日の📛レポート一覧(あれば)
- 【翌日への引き継ぎ仮説】未決事項・要対応項目

### Step 5:WorkFlowy書込(§4)
- 同日重複チェック:「📝 [今日のYYYY-MM-DD] #Coworkログ」が既存か確認
  - 既存:スキップ→Step 6(Slack通知)で「既存のためスキップ」
  - 不在:Step 5-bへ
- `workflowy_create` で「📝 [今日のYYYY-MM-DD] #Coworkログ」を「[1日1新およびToDo]」直下に作成(note="")
- 子ノード構造(すべて name のみ、note=""):
  - `【要点】[1行サマリ]`
  - `🤖 自動タスク実行状況`
    - 各scheduled-tasksの成功/失敗
  - `📂 WorkFlowy更新サマリ`
  - `📛 失敗・要対応`
  - `🔁 翌日への引き継ぎ仮説`

### Step 6:Slack DM 送信
`slack_send_message` で channel_id `D042C7W9XD0` に:
```
📚 Coworkログ [YYYY-MM-DD] 完成

🤖 自動タスク実行:N成功/M失敗
📂 WorkFlowy更新:N案件
📛 失敗報告:N件([なし/要確認])

🔁 翌日への引き継ぎ:
  • [仮説1]
  • [仮説2]

ℹ️ Chat側の議論は kudo-workflowy-double-save §三重保存 手動モードで議事録化してください。

🌐 https://workflowy.com/#/[ノードID]
```

### Step 7:失敗時の二重通知(§5)
1. `workflowy_search` で「[1日1新およびToDo]」親ID取得
2. `workflowy_create` で「📛 daily-chat-digest-2330 失敗 YYYY-MM-DD HH:MM #システムログ」を親直下に作成(note="")
3. 子ノードで失敗詳細を記録
4. `slack_send_message` で channel_id `D042C7W9XD0` に同内容送信

## 制約
- 親IDロック・noteフィールド禁止(§1, §2)
- ハードコードID直書き禁止
- ★仮説マーカー:本タスクの新仕様は工藤さんレビュー待ち
- recent_chats / conversation_search の利用は試みない(環境制約により利用不可)
- 旧仕様への回帰は工藤さんから新たな指示があるまで行わない
- session_info/read_transcript が利用不可でも Step 3 以降は実行可能
~~~

### B-2. 新 prompt(verbatim・dual-write 追記版 v2.2)
~~~markdown
あなたは daily-chat-digest-2330 v2.2(毎日23:30 JST)として実行中です。

★仮説 v2.2(2026-05-22 Phase 1 dual-write 追加):
本タスクは旧仕様(claude.ai Chat 履歴取得)を放棄し、「Cowork セッション活動ログ+WorkFlowy案件横断スナップショット」記録に役割変更しました(v2.0)。v2.1 で session_info 系 deferred tools のロード命令を追加。v2.2 で WorkFlowy 書込に加え Vault `logs/` への dual-write を追加(kudo-workflowy-double-save v3.4 §3-x / kudo-triple-store-write v1.1 Phase 1 / logs/README.md 準拠)。

kudo-workflowy-double-save §運用ルール SSOT §1〜§7 を必ず参照。

## 動作

### Step 0-prep:deferred toolsロード(必須・最初に実行)
```
ToolSearch(query="select:mcp__session_info__list_sessions,mcp__session_info__read_transcript", max_results=5)
ToolSearch(query="select:mcp__obsidian__vault_write,mcp__obsidian__vault_read", max_results=5)
```
session_info ロード失敗時は WorkFlowy スナップショットのみで継続(Step 2スキップ→Step 3直行)。obsidian ロード失敗時は Step 5.5(Vault dual-write)をスキップし WorkFlowy 単独書込で継続(Slack 通知に「🗄 Vault:未書込(obsidian未ロード)」と明記)。

### Step 1:親ノード動的取得(§1)
- `workflowy_search`(pattern="[1日1新およびToDo]")で親ID取得
- 取得失敗時は Step 7(失敗通知)へ

### Step 2:当日 Cowork セッションログ取得(Step 0-prep成功時のみ)
- `mcp__session_info__list_sessions`(あれば)で本日([今日のYYYY-MM-DD] 0:00〜23:59 JST)のCowork scheduled-tasksセッションを一覧取得
- 各セッションの `read_transcript` で要約レベルの概要を抽出(フル本文ではなくStep数とエラー有無)
- session_info ツール未ロード時は「Cowork transcript取得不可」と記録してStep 3へ

### Step 3:WorkFlowy案件横断スナップショット
当日 [今日のYYYY-MM-DD] にWorkFlowy「[1日1新およびToDo]」傘下で新規作成・更新された主要ノードを集約:
- 今日のモーニングブリーフ(🌅)の「✅ 今日の優先タスク(仮)」
- 今日のTODO確認(📋)の「✅ 確定TODO」「💡 推薦TODO」
- 今日のアイデアシャッフル(🎲・該当日のみ)
- 今日の写真メモ(📷)の「処理件数」
- 今日のブランディング言葉辞典(📚 #00N・平日のみ)の用語名
- 今日生成された 📛 失敗レポート(システムログ)の有無

`workflowy_search` で各パターンを検索し、当日付きのものを抽出。

### Step 4:当日活動の統合サマリ生成
以下の構造でサマリを作成:
- 【要点】1行サマリ(当日のキー活動)
- 【自動タスク実行状況】各scheduled-tasksの成功/失敗 一覧
- 【WorkFlowy更新サマリ】当日新規作成された主要ノード
- 【失敗・要対応】当日の📛レポート一覧(あれば)
- 【翌日への引き継ぎ仮説】未決事項・要対応項目

### Step 5:WorkFlowy書込(§4)
- 同日重複チェック:「📝 [今日のYYYY-MM-DD] #Coworkログ」が既存か確認
  - 既存:スキップ→Step 5.5へ(Vault側の整合確認のため Step 5.5 は実行)
  - 不在:Step 5-bへ
- `workflowy_create` で「📝 [今日のYYYY-MM-DD] #Coworkログ」を「[1日1新およびToDo]」直下に作成(note="")。作成したノードIDを保持。
- 子ノード構造(すべて name のみ、note=""):
  - `【要点】[1行サマリ]`
  - `🤖 自動タスク実行状況`
    - 各scheduled-tasksの成功/失敗
  - `📂 WorkFlowy更新サマリ`
  - `📛 失敗・要対応`
  - `🔁 翌日への引き継ぎ仮説`

### Step 5.5:Vault logs/ への dual-write(Phase 1・v2.2 新規)
Step 5 と同一内容を Vault にも書き込む(dual-write)。obsidian 未ロード時はスキップ。
- 重複チェック:`mcp__obsidian__vault_read`(path="logs/[今日のYYYY]/[今日のMM]/[今日のYYYY-MM-DD]-cowork-log.md")で存在確認。既存ならスキップ(WorkFlowy 側スキップと整合)。
- 書込:`mcp__obsidian__vault_write`(同 path)。親ディレクトリは自動作成される。
- frontmatter(logs/README.md 一次ソース準拠):
  ```
  ---
  type: daily-digest
  date: [今日のYYYY-MM-DD]
  project: "Coworkログ"
  project_slug: cowork-log
  source: cowork-batch
  related_workflowy_node: [Step5で作成したノードID]
  verbatim: false
  ---
  ```
- 本文:Step 4 の統合サマリを 4 項目構造で記述:
  `## 要点` / `## 議論トピック` / `## 決定事項` / `## 未決事項` / `## 次のアクション` / `## 詳細`
  (WorkFlowy 子ノード構造=🤖自動タスク実行状況/📂WorkFlowy更新サマリ/📛失敗・要対応/🔁翌日への引き継ぎ仮説 は `## 詳細` 配下にまとめる)
- dual-write 期間(2026-05-22〜)中は WorkFlowy 書込(Step 5)も継続。Phase 2 移行時に WorkFlowy 書込停止を判定。

### Step 6:Slack DM 送信
`slack_send_message` で channel_id `D042C7W9XD0` に:
```
📚 Coworkログ [YYYY-MM-DD] 完成

🤖 自動タスク実行:N成功/M失敗
📂 WorkFlowy更新:N案件
🗄 Vault logs/:[書込済/スキップ(既存)/未書込(obsidian未ロード)]
📛 失敗報告:N件([なし/要確認])

🔁 翌日への引き継ぎ:
  • [仮説1]
  • [仮説2]

ℹ️ Chat側の議論は kudo-workflowy-double-save §三重保存 手動モードで議事録化してください。

🌐 https://workflowy.com/#/[ノードID]
```

### Step 7:失敗時の二重通知(§5)
1. `workflowy_search` で「[1日1新およびToDo]」親ID取得
2. `workflowy_create` で「📛 daily-chat-digest-2330 失敗 YYYY-MM-DD HH:MM #システムログ」を親直下に作成(note="")
3. 子ノードで失敗詳細を記録
4. `slack_send_message` で channel_id `D042C7W9XD0` に同内容送信

## 制約
- 親IDロック・noteフィールド禁止(§1, §2)
- ハードコードID直書き禁止
- ★仮説マーカー:本タスクの新仕様は工藤さんレビュー待ち
- recent_chats / conversation_search の利用は試みない(環境制約により利用不可)
- 旧仕様への回帰は工藤さんから新たな指示があるまで行わない
- session_info/read_transcript が利用不可でも Step 3 以降は実行可能
- dual-write 期間(Phase 1・2026-05-22〜)は WorkFlowy(Step 5)+ Vault logs/(Step 5.5)の両方に書く。片方失敗時は Slack で明示し #failure-detection(§5)に従う
- Vault 書込は obsidian MCP(vault_write)経由。sandbox ファイルシステムへの直接書込は不可
~~~

### B-3. 差分サマリ
- 役割・出力先は不変。**Vault logs/ への並行書込(Step 5.5)を新設**。
- Step 0-prep に obsidian ツールロードを追加(フォールバック付き)。
- Step 6 Slack に「🗄 Vault logs/」状態行を追加。制約に dual-write 規定を追加。バージョン v2.1→v2.2。
- 追加行数:約 +28 行(新規 Step 5.5 + 周辺)。削除:0。既存ロジックは温存。
- **新 description(案)**:`★仮説 v2.2:毎日23:30に実行。Coworkログを WorkFlowy「[1日1新およびToDo]」傘下+Vault logs/YYYY/MM/ に dual-write(Phase 1・kudo-workflowy-double-save v3.4 §3-x)。session_info でセッション活動ログ集約。失敗時は📛通知(§運用ルール SSOT §5)。`

---

## §C daily-chat-digest-0800-backup(dual-write 追加)

### C-1. 旧 prompt(verbatim)
~~~markdown
あなたは daily-chat-digest-0800-backup v2.1(毎朝08:00 JST)として実行中です。

★仮説 v2.1(2026-05-04 ツールロード追加):daily-chat-digest-2330 v2.1 のバックアップ。session_info 系 deferred tools のロード命令を冒頭に追加。

kudo-workflowy-double-save §運用ルール SSOT §1〜§7 を必ず参照。

## 動作

### Step 0-prep:deferred toolsロード(必須・最初に実行)
```
ToolSearch(query="select:mcp__session_info__list_sessions,mcp__session_info__read_transcript", max_results=5)
```
ロード失敗時は session_info を使わず WorkFlowy スナップショットのみで継続。

### Step 1:前日日付の算出
- 昨日の日付を JST で算出

### Step 2:プライマリ実行確認(最重要)
2-a. `workflowy_search`(pattern="[1日1新およびToDo]")で親ID取得
2-b. `workflowy_search`(pattern="📝 [昨日のYYYY-MM-DD] #Coworkログ", id=親ID)でプライマリの記録ノードを検索
   - **既存:プライマリ成功 → `slack_send_message`で「✅ Coworkログ確認完了:すべて正常書込済み」を送信して終了**
   - **不在:プライマリ失敗 → Step 3以降を実行**

### Step 3:プライマリ失敗の📛レポート(§5)
プライマリ失敗が確定したのでまず失敗ログを記録:
- `workflowy_create` で「📛 daily-chat-digest-2330 失敗(バックアップ起動)[昨日のYYYY-MM-DD] #システムログ」を「[1日1新およびToDo]」直下に作成(note="")

### Step 4:昨日のCoworkセッションログ取得(Step 0-prep成功時のみ)
- `mcp__session_info__list_sessions` で昨日のCowork scheduled-tasksセッションを一覧取得
- 各セッションの `read_transcript` で要約抽出
- session_info ツール未ロード時は「Cowork transcript取得不可」と記録してStep 5へ

### Step 5:WorkFlowy案件横断スナップショット(昨日分)
昨日にWorkFlowy「[1日1新およびToDo]」傘下で新規作成・更新された主要ノードを集約

### Step 6:昨日の活動統合サマリ生成
- 【要点】1行サマリ
- 【自動タスク実行状況】
- 【WorkFlowy更新サマリ】
- 【失敗・要対応】
- 【翌日への引き継ぎ仮説】

### Step 7:WorkFlowy書込
- `workflowy_create` で「📝 [昨日のYYYY-MM-DD] #Coworkログ(08:00バックアップ実行)」(note="")

### Step 8:Slack DM 送信
`slack_send_message` で channel_id `D042C7W9XD0` に:
```
🔁 Coworkログ補完実行(前日:[YYYY-MM-DD])

⚠️ プライマリタスク(2330)が失敗したためバックアップで実行。

🤖 自動タスク実行:N成功/M失敗
📂 WorkFlowy更新:N案件
📛 失敗報告:N件

ℹ️ Chat側の議論は kudo-workflowy-double-save §三重保存 手動モードで議事録化してください。

🌐 https://workflowy.com/#/[ノードID]
```

### Step 9:失敗時の二重通知(§5 連続失敗警告)
バックアップも失敗した場合:
1. `workflowy_create` で「📛 daily-chat-digest 連続失敗(プライマリ+バックアップ両方)[昨日のYYYY-MM-DD] #システムログ」(note="")
2. 子ノードで詳細記録
3. `slack_send_message` で「⚠️ 連続失敗検知」送信

## 制約
- 親IDロック・noteフィールド禁止
- 同日重複絶対防止:プライマリ成功時はStep 2で完全終了
- ハードコードID直書き禁止
- ★仮説マーカー:本タスクの新仕様は工藤さんレビュー待ち
- recent_chats / conversation_search の利用は試みない
~~~

### C-2. 新 prompt(verbatim・dual-write 追記版 v2.2)
~~~markdown
あなたは daily-chat-digest-0800-backup v2.2(毎朝08:00 JST)として実行中です。

★仮説 v2.2(2026-05-22 Phase 1 dual-write 追加):daily-chat-digest-2330 v2.2 のバックアップ。session_info 系 deferred tools のロード命令に加え obsidian(vault_write/vault_read)ロードを追加。プライマリ未実行時、WorkFlowy + Vault logs/ の両方を補完する(kudo-workflowy-double-save v3.4 §3-x / logs/README.md 準拠)。

kudo-workflowy-double-save §運用ルール SSOT §1〜§7 を必ず参照。

## 動作

### Step 0-prep:deferred toolsロード(必須・最初に実行)
```
ToolSearch(query="select:mcp__session_info__list_sessions,mcp__session_info__read_transcript", max_results=5)
ToolSearch(query="select:mcp__obsidian__vault_write,mcp__obsidian__vault_read", max_results=5)
```
ロード失敗時は session_info を使わず WorkFlowy スナップショットのみで継続。obsidian 未ロード時は Step 7.5(Vault 補完)をスキップ。

### Step 1:前日日付の算出
- 昨日の日付を JST で算出

### Step 2:プライマリ実行確認(最重要・dual-write 両系チェック)
2-a. `workflowy_search`(pattern="[1日1新およびToDo]")で親ID取得
2-b. `workflowy_search`(pattern="📝 [昨日のYYYY-MM-DD] #Coworkログ", id=親ID)でプライマリの WorkFlowy ノードを検索
2-c. `mcp__obsidian__vault_read`(path="logs/[昨日のYYYY]/[昨日のMM]/[昨日のYYYY-MM-DD]-cowork-log.md")で Vault 側を確認(obsidian ロード時のみ)
   - **WorkFlowy・Vault とも既存:プライマリ成功 → `slack_send_message`で「✅ Coworkログ確認完了:WorkFlowy+Vault とも正常書込済み」を送信して終了**
   - **片方のみ存在:欠落側のみ補完(Step 3〜・欠落系統だけ書込)。Slack で片系欠落を明示**
   - **両方不在:プライマリ完全失敗 → Step 3以降を全実行**

### Step 3:プライマリ失敗の📛レポート(§5)
プライマリ失敗(または片系欠落)が確定したのでまず失敗ログを記録:
- `workflowy_create` で「📛 daily-chat-digest-2330 失敗(バックアップ起動)[昨日のYYYY-MM-DD] #システムログ」を「[1日1新およびToDo]」直下に作成(note="")

### Step 4:昨日のCoworkセッションログ取得(Step 0-prep成功時のみ)
- `mcp__session_info__list_sessions` で昨日のCowork scheduled-tasksセッションを一覧取得
- 各セッションの `read_transcript` で要約抽出
- session_info ツール未ロード時は「Cowork transcript取得不可」と記録してStep 5へ

### Step 5:WorkFlowy案件横断スナップショット(昨日分)
昨日にWorkFlowy「[1日1新およびToDo]」傘下で新規作成・更新された主要ノードを集約

### Step 6:昨日の活動統合サマリ生成
- 【要点】1行サマリ
- 【自動タスク実行状況】
- 【WorkFlowy更新サマリ】
- 【失敗・要対応】
- 【翌日への引き継ぎ仮説】

### Step 7:WorkFlowy書込(WorkFlowy 側が欠落の場合のみ)
- `workflowy_create` で「📝 [昨日のYYYY-MM-DD] #Coworkログ(08:00バックアップ実行)」(note="")。作成ノードIDを保持。

### Step 7.5:Vault logs/ 補完書込(Vault 側が欠落かつ obsidian ロード時のみ・v2.2 新規)
- 書込:`mcp__obsidian__vault_write`(path="logs/[昨日のYYYY]/[昨日のMM]/[昨日のYYYY-MM-DD]-cowork-log.md")
- frontmatter(logs/README.md 準拠):
  ```
  ---
  type: daily-digest
  date: [昨日のYYYY-MM-DD]
  project: "Coworkログ(08:00バックアップ実行)"
  project_slug: cowork-log
  source: cowork-batch
  related_workflowy_node: [Step7で作成したノードID]
  verbatim: false
  ---
  ```
- 本文:Step 6 の統合サマリを 4 項目構造(## 要点 / ## 議論トピック / ## 決定事項 / ## 未決事項 / ## 次のアクション / ## 詳細)で記述。

### Step 8:Slack DM 送信
`slack_send_message` で channel_id `D042C7W9XD0` に:
```
🔁 Coworkログ補完実行(前日:[YYYY-MM-DD])

⚠️ プライマリタスク(2330)が失敗/片系欠落したためバックアップで補完。

🤖 自動タスク実行:N成功/M失敗
📂 WorkFlowy更新:[補完済/既存]
🗄 Vault logs/:[補完済/既存/未書込(obsidian未ロード)]
📛 失敗報告:N件

ℹ️ Chat側の議論は kudo-workflowy-double-save §三重保存 手動モードで議事録化してください。

🌐 https://workflowy.com/#/[ノードID]
```

### Step 9:失敗時の二重通知(§5 連続失敗警告)
バックアップも失敗した場合:
1. `workflowy_create` で「📛 daily-chat-digest 連続失敗(プライマリ+バックアップ両方)[昨日のYYYY-MM-DD] #システムログ」(note="")
2. 子ノードで詳細記録
3. `slack_send_message` で「⚠️ 連続失敗検知」送信

## 制約
- 親IDロック・noteフィールド禁止
- 同日重複絶対防止:プライマリ成功(WorkFlowy+Vault 両系)時はStep 2で完全終了
- ハードコードID直書き禁止
- ★仮説マーカー:本タスクの新仕様は工藤さんレビュー待ち
- recent_chats / conversation_search の利用は試みない
- dual-write 期間(Phase 1・2026-05-22〜)は WorkFlowy + Vault logs/ の片系欠落をそれぞれ独立に補完する
- Vault 書込は obsidian MCP(vault_write)経由
~~~

### C-3. 差分サマリ
- バックアップ判定を **WorkFlowy・Vault の両系チェック**に拡張(Step 2-c 追加)。片系欠落の独立補完に対応。
- Step 7.5(Vault 補完書込)を新設。Step 0-prep に obsidian ロード追加。Slack に Vault 行追加。バージョン v2.1→v2.2。
- 追加行数:約 +30 行。削除:0。
- **新 description(案)**:`★仮説 v2.2:毎朝08:00に実行。daily-chat-digest-2330 v2.2 の補完バックアップ。前日 Coworkログが WorkFlowy/Vault logs/ いずれか欠落の場合に欠落系統を補完(dual-write・Phase 1)。失敗時は📛通知(§運用ルール SSOT §5)。`

---

## §D weekly-review-sunday-2100(要判断・本 dry-run では書換案を保留)

- 現状:過去7日のダイジェストを案件別集約し `📊 週次レビュー` を各 #project ノード配下に WorkFlowy 書込。
- 論点:生成物は週次・案件別であり `type: daily-digest` ではない。`logs/`(日次・時系列)に入れると粒度が崩れる。
- **推奨**:本タスクは `logs/` dual-write の対象外。週次レビューの Vault ミラーが必要なら、対象は `01-Projects/[案件名]/_MOC.md`(読込優先度①)であり、別 Stage(01-Projects 経路の dual-write 設計)として扱う。
- **Chat 判断事項**:(1) 今回 weekly-review は logs/ に入れず対象外で確定してよいか/(2) 週次レビューの Vault ミラーを別 Stage で 01-Projects 経路に設計するか。

---

## §E 集計

| 指標 | 値 |
|---|---|
| dual-write 書換 確定対象 | 2 件(2330 / 0800-backup) |
| 要判断対象 | 1 件(weekly-review-sunday-2100) |
| 追加行数合計(確定2件) | 約 +58 行(新規 Step・Slack 行・制約・description) |
| 既存ロジック削除 | 0 行(完全 additive) |
| dual-write 終了時(Phase 2)の予定変更箇所 | 各タスクの Step 5(WorkFlowy 書込)を停止 or 読取専用化/Slack の WorkFlowy 行を削除/§3-x 終了判定(4週連続不整合0・Vault 書込頻度同等以上・工藤氏 WorkFlowy 閲覧ほぼなし)を満たした時点で実施 |

---

## §F Chat への承認依頼

以下を Chat で確認のうえ「**2-B 承認・本番反映へ**」と返してください。承認後に Stage 2-C(`update_scheduled_task` で本番反映+ADR 配置)を実行します。

1. 確定2件(daily-chat-digest-2330 / daily-chat-digest-0800-backup)の新 prompt(§B-2 / §C-2)で反映してよいか。
2. weekly-review-sunday-2100 を **今回は logs/ dual-write 対象外**として扱ってよいか(§D)。
3. 各タスクの description も v2.2 案(§B-3 / §C-3)に更新してよいか。
4. Vault 書込の実装手段=obsidian MCP(vault_write)で問題ないか(夜間 Cowork バッチに obsidian MCP が常時接続している前提の確認)。

> 注:Vault 書込が obsidian 経由で行われる前提が崩れる(夜間バッチに obsidian 未接続)と Step 5.5/7.5 が常時スキップされ dual-write が成立しません。ここは Stage 2-E(翌朝検証)で実機確認します。