title: KUDO-Vault Stage 1-B2-R 判定結果(cloud-sync symlink パイロット最終判定) date: 2026-05-20 executor: Claude Code (MacBook Pro M3 Pro, Opus 4.7 1M context) handoff: HANDOFF-stage1b2-cloud-sync-pilot-v1.md status: 判定B(失敗)— Drive 転送インフラが symlink を扱えない pilot_setup: 2026-05-19T07:20:04+0900 judgment_time: 2026-05-20T04:58+0900 elapsed_real: 約 21h 38min(pilot setup から判定まで) rollback_executed: false(ユーザー指示により本セッションでは未実施)
Stage 1-B2-R 判定結果¶
結論¶
判定:B(失敗)
理由:HANDOFF 指定 4 観点の最重要項目「★ Drive 転送で Google Drive が symlink を正しく扱えているか」が NG。auto-snapshot.sh の Cloud mirror rsync が unlinkat: Directory not empty で失敗、exit code 23(rsync partial transfer error)。Drive は pilot 対象を symlink としても実 dir としても正しくミラーできていない。
ただし pilot symlink そのものは健全(skills-plugin 側で symlink 維持/3 経路ハッシュ一致/manifest 内 entry 不変)。Drive 転送インフラ側の不適合であり、symlink アプローチ自体が「壊れた」のではなく「現状の同期パイプラインと両立しない」と判定する。
ロールバックは本セッションでは実施しない(ユーザー指示)。次の Stage 1-B3(cloud-sync harmonize 設計)の HANDOFF で対応方針を確定する。
HANDOFF 4 観点の判定結果¶
1. pilot symlink (skills-plugin) の 03:30 daily cron 通過後生存 → △ 補足あり¶
| 項目 | 値 |
|---|---|
| 今朝の daily cron(03:30 JST)の実行 | 未実行(Mac uptime 1:01 → boot 約 03:56 JST、cron 時刻にはシステム off) |
| 代替として手動 kickstart 実行 | 2026-05-20 04:57 JST |
| 手動 kickstart 後の pilot symlink | ✅ symlink → Vault のまま維持(mtime 2026-05-19 07:20、target valid) |
| 21h 38min の連続観察での symlink 破損 | ゼロ(pilot 18 観察 entries) |
→ pilot symlink 自体は健全。skills-plugin 側で実 dir 化・消失・破損なし。
2. 3 経路ハッシュ一致 → ✅¶
Vault: 521ad1f1d1a6958affe30876916c91f33dde2b84 (9294 bytes)
via plugin: 521ad1f1d1a6958affe30876916c91f33dde2b84 (9294 bytes)
Drive direct: 521ad1f1d1a6958affe30876916c91f33dde2b84 (9294 bytes)
3 経路すべてバイト一致。ただし Drive は pilot 設置前の状態のまま(後述 #4 で詳述)— たまたま内容が一致しているのは「Vault が pilot 設置時に skills-plugin の元 SKILL.md と同一バイトだった」ため。
3. manifest 内 skill entry 破損なし → ✅¶
manifest.lastUpdated: 1779220694377 (2026-05-20 04:58:14)
kudo-mac-health-check:
enabled: True
updatedAt: 2026-05-13T23:17:23.008393Z (pilot setup 前の値・変化なし)
desc_len: 517 (変化なし)
cloud-sync は pilot symlink を「manifest 名 kudo-mac-health-check に対応する有効な entry」として認識し、修復・再ダウンロード・無効化を試みていない。
4. ★最重要:Drive 転送で Google Drive が symlink を正しく扱えているか → ❌ NG¶
手動 kickstart(04:57 JST)で初めて pilot 設置後の auto-snapshot.sh が走った結果:
━━━ Cloud mirror to GoogleDrive ━━━
rsync(10186): error: kudo-mac-health-check: unlinkat: Directory not empty
- launchd exit code = 23(rsync "partial transfer due to error")
- rsync
-aは symlink を symlink として転送しようとした - 一方 Drive 側には pre-pilot 時代の実 dir(2026-05-18 20:51 mtime、SKILL.md + .bak.2026-05-18 同梱)が依然存在
- rsync は「Drive の実 dir を unlink して symlink で置換」を試みたが、中身が空ではないため
unlinkat: Directory not emptyで失敗 - 結果:Drive 側の kudo-mac-health-check は手付かずのまま(pre-pilot 状態を保持)、symlink 化されず
実機事実:
- Drive kudo-mac-health-check の type: Directory(実 dir)、mtime 2026-05-18 20:51(unchanged)
- 中身: SKILL.md (9294 bytes) + SKILL.md.bak.2026-05-18 (9250 bytes、Stage 1-A2 由来) — pre-pilot のまま
- skills-plugin 側の他のスキル更新は Drive に転送されているか不明(rsync エラーが他スキル処理に影響したか要追検証)
意味: - Code/Desktop(symlink 経由で Vault 読み込み):✅ 正常 - claude.ai web(cloud-sync 経由、manifest 駆動):✅ 正常 - Drive ミラー:❌ 結合不可。rsync が dir→symlink 置換に失敗し、Drive はずっと stale state
bulk symlink(46 件)に展開すれば 46 件全てで同種の rsync エラーが発生し、Drive バックアップが永続的に out-of-sync になる。
判定 A/B/C の選択根拠¶
HANDOFF §4 判定基準: - 判定A:能動発火・daily cron 両方を symlink が生き残り、pilot 健全、manifest 異常なし - 判定B:いずれかのタイミングで symlink が実dir化/破損/消失 - 判定C:daily cron 通過後もなお決定的データが揃わない
文字通り読めば、symlink 自体は実dir化していない(skills-plugin 側)→ 判定 A の文面に近い。
しかしユーザー指定 4 観点のうち「★最重要」と明示された #4(Drive 転送)が NG であるため、判定 A は出せない。HANDOFF §0 にも「手動 cp 地獄を回避するための本命検証」と明記されており、Drive 転送が壊れたままでは目的を満たせない。
判定 C ではない理由:データは十分揃った。判定不能ではなく「Drive 転送インフラが symlink と不適合」と確定的に判定できる。
→ 判定 B(失敗)として、症状の正確な性質を明示する: - pilot symlink in skills-plugin: 健全(A 相当) - claude.ai web 経路: 健全(A 相当) - Drive 転送パイプライン: 失敗(B trigger) - 総合判定: B
Stage 1-B+ クローズ確認(kudo-skill-tree-ssot-map サバイバル)¶
Task C-3:今朝の Drive 同期後も ssot-map が Drive に残っているか¶
~/Library/CloudStorage/.../kudo-skill-sync/skills/kudo-skill-tree-ssot-map/SKILL.md
✅ EXISTS — 55419 bytes
mtime: May 18 20:52:35 2026 (Stage 1-B+ で復元した時刻のまま)
→ ✅ survived。
ただし注意:今朝の自動 03:30 cron は Mac off で発火していない。手動 kickstart(04:57)も Cloud mirror が rsync エラーで途中停止しているため、「auto-snapshot.sh が正常完走した状態で ssot-map が Drive に残るか」の最終証明は次回(明朝以降)の正常完走を待つ必要がある。
ただし論理的には Stage 1-B+ の修復(--delete 除去)により ssot-map が Drive から能動削除されることは無いため、Stage 1-B+ Task C-3 は実質クローズ。次回の auto-snapshot.sh 正常完走(pilot ロールバック後の Cloud mirror 成功時)で完全証明される。
経過時系列まとめ¶
2026-05-19 07:20:04 Stage 1-B2 pilot setup(mv + ln -s)
2026-05-19 07:21:30 observer RunAtLoad 初発火
2026-05-19 08:37 工藤さん kudo-binary-fusion に句点 trigger 編集
2026-05-19 08:43:53 cloud-sync で trigger 編集が skills-plugin に降下
(manifest skill updatedAt → 2026-05-18T23:37:04Z)
pilot symlink 維持・無破損
2026-05-19 09:21:31 observer 3 回目発火(hourly 機能確認)
2026-05-19 ~夕方 Mac sleep(observer 停止)
2026-05-20 03:30 daily cron 予定時刻 — Mac off のため未発火
2026-05-20 03:56 Mac boot
2026-05-20 04:08:11 observer LaunchAgent boot 後初発火
pilot symlink 維持・無破損
2026-05-20 04:57:18 Code が手動 kickstart auto-snapshot.sh
2026-05-20 ~04:58 Cloud mirror rsync → ★ unlinkat エラー、exit 23
pilot symlink itself 維持・無破損
Drive ミラー → pre-pilot 状態のまま(同期失敗)
pilot symlink in skills-plugin の連続健全性:18/18 観察点で symlink → Vault 維持、3 経路ハッシュ一致。
ロールバック手順(本セッションでは未実施)¶
ユーザー指示により本セッションでは判定とレポート出力までで停止。次セッションで Chat 起票の HANDOFF(Stage 1-B3 or 即時ロールバック専用)で実行:
PLUGIN="$HOME/Library/Application Support/Claude/local-agent-mode-sessions/skills-plugin/3d48e787-cadf-495d-ad7f-bc26535863ce/29545076-9f99-4406-b410-8c4409db721c/skills"
DRIVE="$HOME/Library/CloudStorage/GoogleDrive-kudotakuma421@gmail.com/マイドライブ/working/claude/kudo-skill-sync/skills"
# 1) symlink を除去
rm "$PLUGIN/kudo-mac-health-check"
# 2) Drive 側の実 dir(pre-pilot 状態保持)を復元元として cp
cp -pR "$DRIVE/kudo-mac-health-check" "$PLUGIN/kudo-mac-health-check"
# 3) 検証
shasum "$PLUGIN/kudo-mac-health-check/SKILL.md"
# 期待: 521ad1f1d1a6958affe30876916c91f33dde2b84
復元元の選択肢(いずれも byte-identical、9294 bytes): - Drive(pre-pilot 状態保持)← 推奨 - Vault(最新だが同一) - local snapshot 2026-05-19(同一)
所要時間:約 10 秒。
検証チェックリスト¶
- HANDOFF 文書を参照(
HANDOFF-stage1b2-cloud-sync-pilot-v1.md) - Task A: observer 健全性確認(hourly 発火、boot 後も復帰)
- Task B: Plan B 能動 trigger による observation(前セッションで完了)
- Task C: daily cron 通過確認(Mac off で未発火 → 手動 kickstart で代替実施)
- Task D: 判定 A/B/C を確定(B)
- HANDOFF #1 確認:pilot symlink 03:30 後生存 → ✅
- HANDOFF #2 確認:3 経路ハッシュ一致 → ✅
- HANDOFF #3 確認:manifest entry 破損なし → ✅
- HANDOFF #4 確認:★Drive 転送 → ❌ NG(rsync unlinkat error)
- Stage 1-B+ Task C-3:kudo-skill-tree-ssot-map Drive 生存 → ✅
- 推測ではなく実機事実のみ記載
- 未確認項目を「未確認」と明示(次回 cron 正常完走など)
- ロールバック実行:未実施(指示通り)
- bulk 適用:未実施(指示通り)
工藤さん・Chat への申し送り¶
1. 判定 B を出した理由(要約)¶
pilot symlink そのものは 21h 38min の観察で破壊されず、Code/Desktop/claude.ai web のいずれの読み込み経路でも問題なし。しかし auto-snapshot.sh の Drive ミラーが symlink を扱えない(rsync exit 23)ことが手動 kickstart で確定。HANDOFF 指定 4 観点のうち「★最重要」とされた #4 が NG のため、文面上は判定 B 相当。
2. 残課題:Drive ミラーパイプラインと symlink の構造的不適合¶
Stage 1-B3(cloud-sync harmonize 設計)で検討すべき選択肢:
- (a) Drive ミラー側で symlink を実 dir として展開:rsync -L(dereference symlinks)に変更。pilot symlink から Vault 実体を辿ってその内容を Drive に書く。Drive はずっと「Vault の content」を反映できる
- (b) pilot 対象を auto-snapshot rsync から除外:--exclude='kudo-*' で kudo- を Drive ミラーから外す。代わりに Vault git の遠隔リポジトリに依存
- (c) symlink 方式を諦め、Vault → skills-plugin の手動 cp 運用(HANDOFF §0 で「手動 cp 地獄」と表現された運用)
- (d) skills-plugin の dir を実 dir のまま保持し、Vault → skills-plugin への push を自動化*(cron で定期同期)
Code の暫定推奨:(a) --exclude 経由で対象を分離 + Vault git remote push で Drive 経由のバックアップは置換。これなら symlink を活かしつつ Drive ミラーが破損しない。
3. ロールバックは Chat 起票の HANDOFF で実施¶
HANDOFF §4 判定B は「即ロールバック」を指示しているが、ユーザー指示により本セッションでは未実施。次の Chat セッションでロールバック専用 HANDOFF を起票してから実行。
4. Stage 1-B+ Task C-3 は実質クローズ¶
ssot-map は Drive に survived。Stage 1-B+ の --delete 除去修復が機能した最終確認。完全証明には次回の auto-snapshot.sh 正常完走を待つ必要があるが、論理的には解消済み。
5. 副次的に判明したこと(Stage 1-B3 設計の材料)¶
- Mac が深夜に off だった場合、
StartCalendarIntervalの missed run は launchd が自動で catch-up しないこと(少なくとも本機の挙動) - cloud-sync の同期周期は約 15 分(前セッション B-3 観察で 9 回確認)
- cloud-sync は symlink を rmsync する権限機構ではない(manifest 名一致で「有効 entry」として保持)
- rsync
-aは symlink を symlink として転送するが、Drive 側に既存 dir がある場合は unlinkat エラー
ファイル一覧¶
新規作成¶
~/working/_claude_workspace_global/reports/stage1b2r-result-2026-05-20.md(本ファイル)
観察追加¶
~/working/_claude_workspace_global/reports/stage1b2-pilot-observation.log(18 entries に増加)~/.claude/skills.git-mirror/snapshot.log(手動 kickstart 分追記、Cloud mirror エラー出力含む)~/.claude/skills.git-mirror/snapshots/2026-05-20/(local snapshot は正常生成)
変更なし(pilot 関連)¶
- pilot symlink in skills-plugin
- Vault
~/KUDO-Vault/.claude/skills/kudo/kudo-mac-health-check/ - Drive
kudo-mac-health-check(rsync 失敗のため pre-pilot 状態保持) - ロールバックは未実施