diff --git a/.claude/hooks/tests/test_hooks.py b/.claude/hooks/tests/test_hooks.py index d61d686..ebec9f6 100644 --- a/.claude/hooks/tests/test_hooks.py +++ b/.claude/hooks/tests/test_hooks.py @@ -713,6 +713,9 @@ # --------------------------------------------------------------------------- # check_sync.sh: python3 決め打ちではなくラッパー経由 # --------------------------------------------------------------------------- +# check_sync.sh は team 層のファイルで,solo モードのプロジェクトには配置されない. +# 一方このテスト自体は共通層として全プロジェクトに同期されるため,存在ガードで skip する. +@unittest.skipUnless(os.path.exists(CHECK_SYNC), "check_sync.sh は team 層のため solo には無い") class TestCheckSync(TempDirMixin, unittest.TestCase): def test_no_hardcoded_python3(self): with open(CHECK_SYNC, encoding="utf-8") as f: diff --git a/.claude/skills/sync-template/SKILL.md b/.claude/skills/sync-template/SKILL.md index 74358ee..d2a3d0d 100644 --- a/.claude/skills/sync-template/SKILL.md +++ b/.claude/skills/sync-template/SKILL.md @@ -76,6 +76,8 @@ ※ `task-create`・`task-start`(+ `reference.md`)・`task-handoff` の各 skill は**共通層**(solo でも Issue ベースのタスク管理に使う)であり,モードに関わらず通常どおり同期する. +※ **共通層のファイルはチーム層ファイルの存在を前提にしてはならない**.前提にする場合は存在ガードを付け,solo では失敗ではなく skip・無効化になるようにする(例: `.claude/hooks/tests/test_hooks.py` の `TestCheckSync` は `check_sync.sh` が無ければ skip する).この不変条件はメタテスト `.claude/tests/test_mode_layers.py` が検査する. + 判定はプロジェクトの `.claude/project-mode`(`solo` または `team`.`/setup` が作成)で行う: - **`team`**: チーム層ファイルを通常どおり同期(A/M/D すべて反映). diff --git a/.claude/template-sync-sha b/.claude/template-sync-sha index 02d7b25..b1b49c2 100644 --- a/.claude/template-sync-sha +++ b/.claude/template-sync-sha @@ -1 +1 @@ -60ab68c40d9f96d071fb9ecfecc9f2adb925a411 +3db9db52a691c16e9bdcd56ce10afb15f70ff4f9 diff --git a/CLAUDE.md b/CLAUDE.md index cd7b24a..f9424ab 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -4,7 +4,7 @@ ## 開発進捗 -最新: テンプレートを `60ab68c` に同期(検証エージェント `verifier`/Phase 1b・フック起動ラッパー・ntfy 通知フック).本プロジェクトは実機依存のため検証プロファイルは作らず Phase 1b はスキップ運用.#31(ArUco API 移行)は実機確認待ちの PR #36 として引き続き保留中 +最新: テンプレートを `3db9db5` に同期(検証エージェント `verifier`/Phase 1b・フック起動ラッパー・ntfy 通知フック.上流に差し戻した共通層テストの不具合も解消済み).本プロジェクトは実機依存のため検証プロファイルは作らず Phase 1b はスキップ運用.#31(ArUco API 移行)は実機確認待ちの PR #36 として引き続き保留中 ※ 本欄は**最新ステップ 1 行のみ上書き更新**.詳細な進捗履歴(動機・設計判断・失敗パターン)は [docs/PROGRESS.md](docs/PROGRESS.md) に追記する.運用ルールは `.claude/rules/progress-log.md` を参照(該当ファイル編集時に自動ロードされる). ## 必須ルール(コード実装時) diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index ecce916..3e2ba90 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -141,3 +141,6 @@ - 上流に差し戻した不具合: 同期で入った `test_hooks.py` は 52 件中 3 件が必ず落ちる.`TestCheckSync` が team 層の `check_sync.sh` の存在をガードしておらず,solo プロジェクト全てで失敗する(programming-template#43 として起票).プロジェクト固有の都合ではなくテンプレート側の欠陥なので,ローカル改変(台帳登録)ではなく上流修正に倒した. - フックの前提ツール(Python 3.7 以上と bash)を ENV_02 に追記した.Python が見つからないとアクセス制限フックが Read・Write・Edit・Glob・Grep・Bash を**全てブロックする**ため,環境再構築時に踏むと原因が分かりにくい. - 後段: #31(ArUco API 移行.PR #36)の実機確認待ちは変わらず継続. + +- [x] **上流の修正を取り込み,共通層テストのチーム層依存を解消** (2026-09-18): 前エントリで programming-template#43 として差し戻した不具合が上流で修正されたため,テンプレートを `60ab68c` → `3db9db5` に同期した.`TestCheckSync` に存在ガードが入り,solo でも失敗せず skip される(52 件中 3 件 skip で全緑). + - 上流は個別のガード追加に留めず,「共通層のファイルはチーム層ファイルの存在を前提にしてはならない」を `/sync-template` の不変条件として明文化し,AST で共通層テストを検査するメタテストを追加した(メタテストは `.claude/tests/` 配下のため本プロジェクトには配布されない).同種の退行は今後テンプレート側で止まる.