claude-code-conductor 2.17.0__tar.gz → 2.19.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. claude_code_conductor-2.19.0/.claude/breaking-changes.txt +7 -0
  2. claude_code_conductor-2.19.0/.claude/deletions.txt +39 -0
  3. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/docs/config-policy.md +43 -21
  4. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/docs/settings.json.md +3 -2
  5. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/CHANGELOG.md +137 -0
  6. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/PKG-INFO +1 -1
  7. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/hatch_build.py +2 -0
  8. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/__init__.py +1 -1
  9. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/_excludes.py +2 -0
  10. claude_code_conductor-2.19.0/src/c3/cli_update.py +944 -0
  11. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_init.py +2 -2
  12. claude_code_conductor-2.19.0/tests/test_cli_update_breaking_changes.py +531 -0
  13. claude_code_conductor-2.19.0/tests/test_cli_update_deletions.py +538 -0
  14. claude_code_conductor-2.19.0/tests/test_extract_breaking_changes.py +190 -0
  15. claude_code_conductor-2.17.0/src/c3/cli_update.py +0 -159
  16. claude_code_conductor-2.17.0/tests/test_cli_update.py +0 -41
  17. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/CLAUDE.md +0 -0
  18. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/architect.md +0 -0
  19. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/code-reviewer.md +0 -0
  20. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/developer.md +0 -0
  21. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/doc-writer.md +0 -0
  22. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/interviewer.md +0 -0
  23. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/planner.md +0 -0
  24. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/project-setup.md +0 -0
  25. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/security-reviewer.md +0 -0
  26. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/systematic-debugger.md +0 -0
  27. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/tester.md +0 -0
  28. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/wt_developer.md +0 -0
  29. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/wt_systematic-debugger.md +0 -0
  30. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/agents/wt_tester.md +0 -0
  31. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/docs/parallel-agents-setup.md +0 -0
  32. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/docs/platform-adapters.md +0 -0
  33. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/_hook_utils.py +0 -0
  34. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/check_agent_invocation.py +0 -0
  35. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/consolidate_memory.py +0 -0
  36. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/permission_handler.py +0 -0
  37. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/permission_handler_toast.py +0 -0
  38. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/planner_check.py +0 -0
  39. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/post_tool.py +0 -0
  40. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/pre_compact.py +0 -0
  41. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/pre_tool.py +0 -0
  42. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/recall_inject.py +0 -0
  43. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/restore_session.py +0 -0
  44. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/schema.sql +0 -0
  45. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/select_tier.py +0 -0
  46. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/session_start.py +0 -0
  47. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/session_stop.py +0 -0
  48. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/session_utils.py +0 -0
  49. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/statusline.py +0 -0
  50. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/stop.py +0 -0
  51. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/hooks/worktree_guard.py +0 -0
  52. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/memory/.gitkeep +0 -0
  53. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/permission_rules.json +0 -0
  54. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/rules/promoted/index.md +0 -0
  55. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/settings.json +0 -0
  56. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/codex-review/SKILL.md +0 -0
  57. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
  58. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
  59. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +0 -0
  60. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
  61. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
  62. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/scripts/record_tier_outcome.py +0 -0
  63. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
  64. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/develop/SKILL.md +0 -0
  65. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/doc/SKILL.md +0 -0
  66. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  67. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/init-session/SKILL.md +0 -0
  68. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  69. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/parallel-agents/SKILL.md +0 -0
  70. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  71. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  72. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/recall/SKILL.md +0 -0
  73. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  74. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  75. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/review-phase/SKILL.md +0 -0
  76. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/setup/SKILL.md +0 -0
  77. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/setup/reference.md +0 -0
  78. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
  79. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
  80. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/skills/start/SKILL.md +0 -0
  81. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.claude/state/.gitkeep +0 -0
  82. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/.gitignore +0 -0
  83. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSE +0 -0
  84. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/chroma-hnswlib-LICENSE +0 -0
  85. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/chroma-hnswlib-NOTICE +0 -0
  86. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/fastembed-LICENSE +0 -0
  87. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/fastembed-NOTICE +0 -0
  88. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/onnxruntime-LICENSE +0 -0
  89. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
  90. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/README.md +0 -0
  91. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/pyproject.toml +0 -0
  92. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/__main__.py +0 -0
  93. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/_terminal.py +0 -0
  94. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/adapters.py +0 -0
  95. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli.py +0 -0
  96. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_ask.py +0 -0
  97. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_doctor.py +0 -0
  98. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_init.py +0 -0
  99. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_list.py +0 -0
  100. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_plan.py +0 -0
  101. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_recall.py +0 -0
  102. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/cli_tier.py +0 -0
  103. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/db.py +0 -0
  104. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/embedding.py +0 -0
  105. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/mcp_server.py +0 -0
  106. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/paths.py +0 -0
  107. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/plan_validator.py +0 -0
  108. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/platforms.py +0 -0
  109. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/question.py +0 -0
  110. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/recall_chunker.py +0 -0
  111. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/src/c3/recall_index.py +0 -0
  112. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/__init__.py +0 -0
  113. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/conftest.py +0 -0
  114. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/__init__.py +0 -0
  115. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_check_agent_invocation.py +0 -0
  116. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_consolidate_memory.py +0 -0
  117. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_hook_utils.py +0 -0
  118. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_permission_handler.py +0 -0
  119. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_permission_handler_toast.py +0 -0
  120. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  121. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_planner_check.py +0 -0
  122. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_planner_check_dev.py +0 -0
  123. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_post_tool.py +0 -0
  124. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_pre_tool.py +0 -0
  125. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_recall_inject.py +0 -0
  126. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_record_review_decision.py +0 -0
  127. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_record_tier_outcome.py +0 -0
  128. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_restore_session.py +0 -0
  129. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_review_hint_inject.py +0 -0
  130. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_select_tier.py +0 -0
  131. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_select_tier_escalation.py +0 -0
  132. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_session_start.py +0 -0
  133. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_session_stop.py +0 -0
  134. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_session_utils.py +0 -0
  135. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  136. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_similarity_boost.py +0 -0
  137. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_statusline.py +0 -0
  138. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  139. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_sync_check.py +0 -0
  140. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/hooks/test_template_guard.py +0 -0
  141. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/__init__.py +0 -0
  142. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/_skill_helpers.py +0 -0
  143. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
  144. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_init_session_no_task_type.py +0 -0
  145. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_planner_lightweight.py +0 -0
  146. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_recall_skill.py +0 -0
  147. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
  148. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_setup_templates.py +0 -0
  149. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
  150. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_start_skill_new_flow.py +0 -0
  151. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
  152. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_adapters.py +0 -0
  153. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_ask.py +0 -0
  154. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_entry.py +0 -0
  155. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_list.py +0 -0
  156. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_plan.py +0 -0
  157. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_recall.py +0 -0
  158. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_cli_tier.py +0 -0
  159. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_db.py +0 -0
  160. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_docstring_consistency.py +0 -0
  161. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_embedding.py +0 -0
  162. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_excludes.py +0 -0
  163. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_mcp_server_elicit.py +0 -0
  164. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_paths.py +0 -0
  165. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_plan_validator.py +0 -0
  166. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_pre_compact.py +0 -0
  167. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_pre_tool_hook.py +0 -0
  168. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_precompact_additional.py +0 -0
  169. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_precompact_toctou_fixes.py +0 -0
  170. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_recall_chunker.py +0 -0
  171. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_recall_index.py +0 -0
  172. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_references_migration.py +0 -0
  173. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_session_utils_additional.py +0 -0
  174. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_skill_no_builtin_conflict.py +0 -0
  175. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_statusline.py +0 -0
  176. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_stop_additional.py +0 -0
  177. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_stop_hook.py +0 -0
  178. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_stop_precompact_fixes.py +0 -0
  179. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_sync_template_stop.py +0 -0
  180. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_template_pre_tool_hook.py +0 -0
  181. {claude_code_conductor-2.17.0 → claude_code_conductor-2.19.0}/tests/test_worktree_guard.py +0 -0
@@ -0,0 +1,7 @@
1
+ # C3 breaking changes log
2
+ # Format: vX.Y.Z|<English summary>|<Japanese summary>
3
+ # Note: extra '|' characters in the Japanese field are allowed (parser uses maxsplit=2).
4
+ # Note: English field must not contain '|' (validated by scripts/extract_breaking_changes.py).
5
+ # Lines starting with '#' are comments. Blank lines ignored.
6
+
7
+ v2.11.0|summarize-memory agent + skill removed; replaced by `c3 recall`|summarize-memory エージェント / skill を完全廃止。代替は `c3 recall` の意味検索。
@@ -0,0 +1,39 @@
1
+ # C3 c3 update 削除リスト
2
+ # このファイルに記載されたパスは `c3 update` 実行時に
3
+ # 利用先の .claude/ から削除候補として扱われる。
4
+ #
5
+ # 仕様:
6
+ # - 1 行 1 パス、.claude/ 相対表記
7
+ # - # で始まる行はコメント、空行はスキップ
8
+ # - 絶対パス / ../ を含むパス / シンボリックリンク は無視
9
+ # - ディレクトリは削除しない(ファイルのみ)
10
+ #
11
+ # 詳細は .claude/docs/config-policy.md §3 #13 と §7 落とし穴 5 を参照。
12
+
13
+ # ---- v2.1.0: tdd-develop / worktree-tdd-workflow 廃止 ----
14
+ agents/tdd-develop.md
15
+ skills/worktree-tdd-workflow/SKILL.md
16
+
17
+ # ---- v2.11.0: summarize-memory 廃止 ----
18
+ agents/summarize-memory.md
19
+ skills/summarize-memory/SKILL.md
20
+
21
+ # ---- v2.12.0: タクソノミー棚卸(hooks/ → skills/dev-workflow/scripts/ へ移動) ----
22
+ hooks/record_review_decision.py
23
+ hooks/record_tier_outcome.py
24
+ hooks/review_hint_inject.py
25
+ hooks/subagent_log.py
26
+
27
+ # ---- (v2.x): task-routing skill 廃止 ----
28
+ skills/task-routing/SKILL.md
29
+
30
+ # ---- v2.15.1: /code-review skill を /review-phase にリネーム ----
31
+ skills/code-review/SKILL.md
32
+
33
+ # ---- 短期 revert(一時配布された可能性あり) ----
34
+ skills/phase-a-requirements/SKILL.md
35
+ skills/phase-b-architecture/SKILL.md
36
+ skills/phase-c-plan/SKILL.md
37
+ skills/phase-d-implement/SKILL.md
38
+ skills/phase-debug/SKILL.md
39
+ skills/phase-e-review/SKILL.md
@@ -64,8 +64,8 @@ hatch_build.py _excludes.py の重複定義(ビルド
64
64
  2. `.claude/settings.json` — プロジェクト共通設定(git 管理)
65
65
  3. `~/.claude/settings.json` — グローバル個人設定(マシンローカル)
66
66
 
67
- > **重要**: `hooks` セクションのみ「マージしない・完全上書き」挙動。
68
- > `settings.local.json` `hooks` を書くと `settings.json` の `hooks` が **すべて無効化** される。
67
+ > **補足**: `hooks` は両ファイルの内容がマージされる(本配布元リポで `settings.json` の lifecycle hooks と `settings.local.json` の `.dev/hooks/*` が並走している実機事実)。
68
+ > ただし Claude Code 公式 docs では hooks のマージ挙動が明記されていないため、チーム全体で必要な hook は `settings.json` 側に集約するのが安全。
69
69
  > 詳細は §7「既知の落とし穴」を参照。
70
70
  > キー仕様の詳細は `.claude/docs/settings.json.md` を参照。
71
71
 
@@ -84,7 +84,7 @@ hatch_build.py _excludes.py の重複定義(ビルド
84
84
  ### レイヤー C: LLM 指示・知識(CLAUDE.md / rules)
85
85
 
86
86
  - `.claude/CLAUDE.md` — 常時注入されるプロジェクト指示
87
- - `.claude/rules/*.md` — `paths:` フロントマターがあればパスマッチ時のみ、なければ常時注入
87
+ - `.claude/rules/*.md` — 常時全文注入(`paths:` フロントマターは「適用範囲のドキュメント」であり、注入タイミングは変わらない)
88
88
  - `.claude/rules/promoted/index.md` — `@rules/promoted/index.md` で CLAUDE.md から include される
89
89
  (`/promote-pattern` skill が追記する **ユーザー所有領域**)
90
90
 
@@ -104,7 +104,7 @@ hatch_build.py _excludes.py の重複定義(ビルド
104
104
 
105
105
  ---
106
106
 
107
- ## 3. 配布判断マトリクス(12 カテゴリ)
107
+ ## 3. 配布判断マトリクス(14 カテゴリ)
108
108
 
109
109
  `_excludes.py` の `EXCLUDE_PATTERNS` / `KEEP_PATTERNS` を実装照合した結果。
110
110
  各カテゴリに配布有無・c3 update の更新有無・理由を明示する。
@@ -121,8 +121,10 @@ hatch_build.py _excludes.py の重複定義(ビルド
121
121
  | 8 | `.claude/settings.json` | ○ | ○ | プロジェクト共通設定(hooks 登録・permissions など) |
122
122
  | 9 | `.claude/permission_rules.json` | ○ | ○ | C3 独自の自動承認パターン(PermissionRequest hook が参照) |
123
123
  | 10 | `.claude/settings.local.json` | × | — | 個人 override・秘匿情報。`_excludes.py` でも除外、`.gitignore` でも除外、c3 update も触らない |
124
- | 11 | `.claude/reports/*` / `memory/*` / `agent-memory/*` / `state/*` / `tmp/*` / `worktrees/*` / `logs/*` | × (`.gitkeep` のみ ○) | — | 実行時生成領域。空ディレクトリのみ `KEEP_PATTERNS` の `.gitkeep` で配布。データ本体は除外 |
124
+ | 11 | `.claude/reports/*` / `memory/*` / `agent-memory/*` / `state/*` / `tmp/*` / `worktrees/*` / `logs/*` | × (`.gitkeep` のみ ○) | — | 実行時生成領域。空ディレクトリのみ `KEEP_PATTERNS` の `.gitkeep` で配布。データ本体は除外。v2.19.0 で `.claude/state/c3_version.txt`(バージョン checkpoint)を追加(`state/*` 一括除外により自動非配布) |
125
125
  | 12 | `.dev/*` / `/CLAUDE.md` / `/AGENTS.md` / `/.codex/` / `/.cursor/` / `/.agents/` | × | — | 配布元専用または adapter 生成物。wheel には構造的に含まれない(`src/c3/_template/.claude/` 配下のみ同梱)が、配布元 `.gitignore` で commit 混入も防ぐ |
126
+ | 13 | `.claude/deletions.txt` | ○ | ○ | `c3 update` が読み込み、利用先 `.claude/` から該当ファイルを削除候補として扱う。配布元の `.claude/deletions.txt` に追記したエントリは次回 pip install → `c3 update` で利用先に伝播。`KEEP_PATTERNS` で明示配布。`c3 update` 自体は本ファイルを削除しない(§7 落とし穴 5 参照) |
127
+ | 14 | `.claude/breaking-changes.txt` | ○ | ○ | `c3 update` が読み込み、利用先の `.claude/state/c3_version.txt`(バージョン checkpoint)と diff を計算して破壊的変更を表示する。MAJOR bump 時は y/N 承認プロンプトを発火。`KEEP_PATTERNS` で明示配布。配布元 `.claude/breaking-changes.txt` を更新すれば次回 pip install → `c3 update` で利用先に伝播。利用先 git 管理は tracked(上書きされる) |
126
128
 
127
129
  > **注意 (カテゴリ #6)**: `taxonomy.md` は `_excludes.py` の EXCLUDE 対象だが、`.gitignore` では tracked 状態(GitHub に公開済み)。
128
130
  > **wheel には含まれない**点に注意。gitignore と wheel 配布は別レイヤーであり、
@@ -151,13 +153,13 @@ hatch_build.py _excludes.py の重複定義(ビルド
151
153
  `settings.local.json` は `c3 init` も `c3 update` も作成・上書きしない。
152
154
  個人設定を安全に保ちつつ、C3 のアップデートを受け取れる設計。
153
155
 
154
- ### 原則 3: `hooks` セクションは書かない
156
+ ### 原則 3: `hooks` は「個人専用・配布元専用」のみに留める
155
157
 
156
- **最重要の落とし穴**。`settings.local.json` `hooks` セクションを追記すると、
157
- `settings.json` の `hooks` エントリが **すべて無効化** される(マージではなく完全上書き)。
158
+ `settings.local.json` `hooks` は `settings.json` の `hooks` とマージされる(本配布元リポで `.dev/hooks/*` を `settings.local.json` に登録して `.claude/hooks/*` と並走させている実例あり)。
158
159
 
159
- C3 lifecycle hook(`permission_handler.py` 等)が動かなくなるため、
160
- `hooks` のカスタマイズは必ず `settings.json` 側に行う(チーム合意を経て)。
160
+ ただし以下の理由から、`settings.local.json` には「個人 / 配布元専用 hook」のみを書く:
161
+ - Claude Code 公式 docs では hooks のマージ挙動が明記されておらず、将来仕様が変わるリスクがある
162
+ - チーム全体で必要な hook は `settings.json` 側に置いてチーム合意を経るべき
161
163
 
162
164
  詳細は §7「既知の落とし穴」の項目 1 を参照。
163
165
 
@@ -203,6 +205,8 @@ C3 の wheel 配布除外パターンは **3 つのファイルに分散して
203
205
  | `src/c3/_excludes.py` | `c3 init` / `c3 update` 時の除外判断(Python 実装) | 配布先への配布/非配布を変更する時 |
204
206
  | `hatch_build.py` | wheel ビルド時の除外判断(`_excludes.py` の重複定義) | `_excludes.py` を変更した時(必ず同期) |
205
207
 
208
+ **`breaking-changes.txt` の同期義務(v2.19.0 追加)**: 新たな破壊的変更をリリースする際は、必ず `_excludes.py` / `hatch_build.py` の `KEEP_PATTERNS` に `"breaking-changes.txt"` が含まれていることを確認した上で、配布元 `.claude/breaking-changes.txt` にエントリを追記する。`scripts/extract_breaking_changes.py --check` で CHANGELOG との整合性を確認し、未記載があれば追記してから wheel を再ビルドする(詳細は配布元 `/CLAUDE.md` §6 参照)。
209
+
206
210
  `hatch_build.py` の重複が必要な理由: hatch build hook はパッケージ import 前に走るため、
207
211
  `_excludes.py` を import できない。2 ファイルの完全一致が必須。
208
212
 
@@ -233,17 +237,13 @@ C3 の wheel 配布除外パターンは **3 つのファイルに分散して
233
237
 
234
238
  **ここを読まないと事故る**ポイントを集約。症状が出たらまず確認すること。
235
239
 
236
- ### 落とし穴 1: `hooks` セクションが `settings.local.json` で完全上書きされる
237
-
238
- **症状**: `permission_handler.py` 等の C3 hook が突然動かなくなる。
240
+ ### 落とし穴 1: `hooks` のマージ挙動は公式 docs 未明記
239
241
 
240
- **原因**: Claude Code の `settings.json` 系では、`hooks` セクションのみマージではなく
241
- **完全上書き**の挙動を取る(`permissions.allow` 等他のキーはマージ)。
242
- `settings.local.json` に `hooks: []` や任意の hook 定義を書くと、
243
- `settings.json` の `hooks` エントリが全て無効化される。
242
+ **現状**: 実機では `settings.local.json` の `hooks` と `settings.json` の `hooks` はマージされる(本配布元リポの `.dev/hooks/*` 登録が実例)。
243
+ ただし Claude Code 公式 docs では hooks のマージ挙動が明記されていないため、将来の Claude Code バージョンで挙動が変わるリスクがある。
244
244
 
245
- **対処**: `settings.local.json` `hooks` セクションを削除し、`settings.json` 側に移す。
246
- カスタム hook を追加したい場合はチームで `settings.json` を編集する(git 管理)。
245
+ **対処**: チーム全体で必要な hook は `settings.json` 側に置く(git 管理 / チーム合意)。`settings.local.json` には個人 / 配布元専用 hook のみを書く(本リポでは `.dev/hooks/*` 配下のみ)。
246
+ 万が一 lifecycle hook が動かなくなった場合は、`settings.local.json` を一時退避して `settings.json` 単独で動作するか切り分ける。
247
247
 
248
248
  ### 落とし穴 2: `taxonomy.md` は tracked だが wheel 配布されない
249
249
 
@@ -268,7 +268,29 @@ c3 update が上書きすると利用先で `/promote-pattern` が追記した
268
268
  **対処**: `promoted/` への変更は `c3 update` に委ねず、手動または `/promote-pattern` skill で管理する。
269
269
  C3 side で `promoted/` の雛形を更新した場合は、リリースノートで手動マージ手順を案内する。
270
270
 
271
- ### 落とし穴 4: `permission_rules.json` は `settings.json.permissions.deny` を覆せない(要検証)
271
+ ### 落とし穴 4: `deletions.txt` 自身は削除されない・絶対パスは無視される
272
+
273
+ **症状**: `deletions.txt` が利用先に残り続ける / 絶対パスを書いたのに削除されない / `..` 含みパスが効かない。
274
+
275
+ **原因**:
276
+ - `deletions.txt` は **`c3 update` が読み取るための指示書** であり、削除対象として
277
+ `deletions.txt` 自身を含めても無視される(自分自身を削除すると次回 update で
278
+ ブートストラップが効かなくなるため)
279
+ - セーフガードにより以下は **silent ではなく warning を出して無視** される:
280
+ - 絶対パス(先頭 `/`、`~`、Windows ドライブレター `C:`)
281
+ - `..` または `.` を含むパス
282
+ - `.claude/` プレフィックス(`.claude/agents/x.md` は不可、`agents/x.md` と書く)
283
+ - シンボリックリンク経由のパス
284
+ - ディレクトリ(ファイルのみサポート)
285
+ - `\` (バックスラッシュ)を含むパス
286
+
287
+ **対処**:
288
+ - 削除候補に書くパスは「.claude/ からの相対 POSIX パス」のみ(例: `agents/foo.md`)
289
+ - ディレクトリを丸ごと削除したい場合は、配下のファイルを 1 つずつ列挙
290
+ - `c3 update --dry-run` で warning が出ていないか確認
291
+ - `deletions.txt` 自身を更新したい場合は通常の `c3 update` の add/update ロジックが処理する
292
+
293
+ ### 落とし穴 5: `permission_rules.json` は `settings.json.permissions.deny` を覆せない(要検証)
272
294
 
273
295
  **現状**: `permission_handler.py` の実装を読む限り、`PermissionRequest` hook は
274
296
  Claude Code 側で `deny` 判定が出た後に発火するため、`permission_rules.json` の `auto_allow` で
@@ -304,5 +326,5 @@ Claude Code 側で `deny` 判定が出た後に発火するため、`permission_
304
326
 
305
327
  - `permission_rules.json` の `auto_allow` が `settings.json.permissions.deny` を覆せるか検証
306
328
  - `~/.claude/settings.json` のグローバル設定と `.claude/settings.json` の同キー競合時のマージ範囲確認
307
- - `c3 update` の削除検出(`deletions.txt` 方式、v2.18.0 予定)
329
+ - ~~`c3 update` の削除検出(`deletions.txt` 方式、v2.18.0 予定)~~ → v2.18.0 で実装
308
330
  - `c3 update` 時の Breaking changes 警告(v2.19.0 予定)
@@ -4,7 +4,8 @@ Claude Code の設定ファイル。プロジェクトルートの `.claude/sett
4
4
  ユーザーローカルの上書きは `.claude/settings.local.json`(`.gitignore` 推奨)。
5
5
 
6
6
  > 設定の優先順位: `settings.local.json` > `settings.json` > グローバル設定(`~/.claude/settings.json`)
7
- > ただし `hooks` セクションは `settings.local.json` `settings.json` を**完全に上書き**する(マージしない)。
7
+ > `hooks` セクションは両ファイルの内容がマージされる(本配布元リポで `.dev/hooks/*` を `settings.local.json` に登録して `.claude/hooks/*` と並走させている実機事実)。
8
+ > ただし Claude Code 公式 docs では hooks のマージ挙動が明記されていないため、チーム全体で必要な hook は `settings.json` 側に集約するのが安全。
8
9
 
9
10
  ---
10
11
 
@@ -508,4 +509,4 @@ MCP(Model Context Protocol)サーバーを登録する。登録されたサ
508
509
  | `.claude/settings.json` | プロジェクト共通設定。git 管理する |
509
510
  | `.claude/settings.local.json` | 開発者個人の設定(追加 `allow` 等)。`.gitignore` に追加して git 管理しない |
510
511
 
511
- > `hooks` `settings.local.json` に書くと `settings.json` `hooks` が**完全に無効化**される。フックは `settings.json` のみに書くこと。
512
+ > `hooks` `settings.local.json` `settings.json` の内容がマージされる(実機検証済み)。ただし Claude Code 公式 docs ではこの挙動が明記されていないため、チーム全体で必要なフックは `settings.json` 側に集約する。`settings.local.json` は個人・配布元専用フック(例: 本リポの `.dev/hooks/*`)に留める。
@@ -1,5 +1,142 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.19.0] - 2026-05-24
4
+
5
+ **基盤整備リリース第 3 弾**: `c3 update` 実行時に breaking changes 表示 + MAJOR 承認プロンプトを導入する。
6
+ v2.11.0 の `summarize-memory` 廃止のように利用先設定の手動修正が必要なケースで、
7
+ 利用者が破壊的変更を見逃すリスクを構造的に防ぐ。
8
+
9
+ ### 機能追加
10
+
11
+ - **`c3 update` 実行時の breaking changes 表示 + MAJOR 承認プロンプト**:
12
+ 利用先 `.claude/state/c3_version.txt`(バージョン checkpoint)と配布元バージョン
13
+ (`c3.__version__`) を比較し、その区間にある breaking changes を
14
+ `.claude/breaking-changes.txt` から抽出して表示する。
15
+ - **initial(初回)**: 全件表示。プロンプト非発火。
16
+ - **minor / patch**: 区間内 breaking changes を表示。プロンプト非発火。
17
+ - **MAJOR**: 区間内 breaking changes を表示後、`Proceed with major version update? [y/N]:` プロンプトを発火。
18
+ N または非対話環境(EOF)で `exit 0`(add/update / deletions / checkpoint 更新のいずれも実行されない)。
19
+ - **downgrade**: stderr に 1 行 warning のみ。checkpoint 不変。プロンプト非発火。
20
+ - `--yes` フラグで MAJOR プロンプトをスキップ可(CI / 自動化用)。
21
+ - `--dry-run` では MAJOR プロンプト非発火(`(dry-run: confirmation would be required)` 表示)。
22
+ - `--platform codex` 等 claude 以外単独実行時は発火しない。
23
+
24
+ - **`.claude/breaking-changes.txt`(新規)**: breaking changes ログファイル。
25
+ フォーマット: `vX.Y.Z|<English summary>|<Japanese summary>` の pipe 区切り 1 行 1 エントリ。
26
+ v2.11.0(`summarize-memory` 廃止)を初期エントリとして同梱。
27
+ `KEEP_PATTERNS` で明示配布。`c3 update` で利用先に伝播。
28
+
29
+ - **`.claude/state/c3_version.txt`(新規、利用先生成)**: バージョン checkpoint ファイル。
30
+ `c3 update` の claude block 成功時(non-dry-run / non-downgrade)に自動更新。
31
+ `state/*` 一括除外により配布対象外(利用先で生成、git 管理は推奨しない)。
32
+
33
+ - **`scripts/extract_breaking_changes.py`(新規)**: CHANGELOG.md の `### 破壊的変更` セクションを抽出し、
34
+ `.claude/breaking-changes.txt` に未記載のエントリを追記するリリースワークフロースクリプト。
35
+ - `--check`: 未記載があれば `exit 1` + stderr に未記載 version 列挙(CI 用)
36
+ - `--dry-run`: 候補表示のみ、書き込まない
37
+ - 対話モード: en サマリ必須入力(空入力はエラー)
38
+ - atomic write (tmp + `os.replace`) で安全に追記
39
+
40
+ - **`KEEP_PATTERNS` への `breaking-changes.txt` 追加**: `src/c3/_excludes.py` / `hatch_build.py` の
41
+ `KEEP_PATTERNS` に `"breaking-changes.txt"` を追加(3 ファイル同期ルール準拠)。
42
+
43
+ ### 変更
44
+
45
+ - **`src/c3/__init__.py`**: `__version__` を `"2.18.0"` から `"2.19.0"` に更新。
46
+
47
+ ### ドキュメント
48
+
49
+ - **`.claude/docs/config-policy.md`**:
50
+ - §3 配布判断マトリクス 13 → 14 カテゴリ(`breaking-changes.txt` 追加)
51
+ - §11(`state/*`)に「v2.19.0 で `c3_version.txt` を追加」と注記
52
+ - §6 3 ファイル同期ルールに `breaking-changes.txt` のメンテ責任を追記
53
+ - **`/CLAUDE.md`**(配布元 gitignored):
54
+ - §6「リリース前 breaking changes チェック」を新規追加
55
+ - `scripts/extract_breaking_changes.py --check` 手順 / wheel 検証コマンドを含む
56
+
57
+ ### ドキュメント訂正(v2.17.0 / v2.18.0 で配布した記述の誤りを訂正)
58
+
59
+ - **`hooks` のマージ挙動**: v2.17.0 / v2.18.0 で配布した `.claude/docs/config-policy.md` §2 / §4 / §7 と
60
+ `.claude/docs/settings.json.md` 冒頭・末尾の「`settings.local.json` の hooks が `settings.json` の
61
+ hooks を完全上書きする」記述は **誤り**。実機検証で両ファイルの hooks は **マージされる** ことを確認
62
+ (本配布元リポでも `settings.json` の lifecycle hooks と `settings.local.json` の `.dev/hooks/*` が並走)。
63
+ Claude Code 公式 docs では hooks のマージ挙動が明記されていないため、チーム全体で必要な hook は
64
+ `settings.json` 側に集約するのが安全、という方針に変更。
65
+ - **`.claude/rules/*.md` の注入挙動**: v2.17.0 で配布した `.claude/docs/config-policy.md` §2 の
66
+ 「`paths:` フロントマターがあればパスマッチ時のみ、なければ常時注入」記述は誤り。実機では `rules/*.md`
67
+ は常時全文注入され、`paths:` は「適用範囲のドキュメント」であって注入タイミングは変わらない。
68
+
69
+ ### 影響
70
+
71
+ - **既存利用先**: `c3 update` 実行時に「初回 checkpoint 作成」ヘッダ + v2.11.0 の breaking change が表示される。
72
+ MAJOR バンプ確認プロンプトは発火しない(v2.11.0 → v2.19.0 は minor bump)。
73
+ `.claude/state/c3_version.txt` が自動生成されるが、`state/*` は gitignore 推奨。
74
+
75
+ ---
76
+
77
+ ## v2.18.0 (2026-05-24)
78
+
79
+ **基盤整備リリース第 2 弾**: `c3 update` の削除検出を `deletions.txt` 方式で導入する。
80
+ v2.0.0 以来の `c3_update_no_delete_detection` defect(リリースで廃止した
81
+ skill / hook / agent が利用先に残り続ける問題)を構造的に解消する。
82
+
83
+ ### 追加
84
+
85
+ - **`.claude/deletions.txt`**(新規): 利用先で削除すべきファイルパス一覧。
86
+ 1 行 1 パス、`#` でコメント、`.claude/` 相対 POSIX パス。v2.1.0 / v2.11.0 /
87
+ v2.12.0 / v2.15.1 までの過去廃止 16 ファイルを初期エントリとして同梱。
88
+ - **`c3 update` の自動削除機能**: `_template/.claude/deletions.txt` を読み、
89
+ 利用先の該当ファイルを削除候補として扱う。`--dry-run` で予告のみ、通常実行は
90
+ 確認プロンプト `y/N`、`--yes` / `-y` フラグでプロンプトスキップ可。
91
+ - **`--yes` / `-y` フラグ**(新規): 削除確認プロンプトをスキップする。
92
+ **CI / 自動化ワークフロー専用**。対話環境での常用は推奨しない。
93
+ `--dry-run` と同時指定しても効果なし。
94
+ - **13 段セーフガード**: 削除対象パスに対する 13 種類の事前検査
95
+ - 文字列レベル: 空パス / 絶対パス / `~` / バックスラッシュ / Windows ドライブレター /
96
+ `.claude/` プレフィックス禁止 / ANSI エスケープシーケンス検出(ECMA-48 §5.4 全網羅)
97
+ - 構造レベル: `..` `.` 含み / null byte / `Path.is_symlink()` でシンボリックリンク拒否 /
98
+ `Path.resolve()` で `.claude/` 配下確認 / `Path.is_dir()` でディレクトリ拒否 /
99
+ `deletions.txt` 自身の自己削除拒否(Windows NTFS case-insensitive 対応)
100
+ - **新規テスト 35 件**: `tests/test_cli_update_deletions.py` に A: ユニット 14 件 /
101
+ B: 結合 8 件 / C: 攻撃 10 件 / D: CLI 4 件 = 計 36 件(既存 DEPRECATED_PATHS
102
+ テスト 3 件削除 → 純増 32 件)
103
+
104
+ ### 撤去
105
+
106
+ - **`cli_update.py` の `DEPRECATED_PATHS` 定数 + `_warn_deprecated_paths()`
107
+ 関数**: v2.15.1 で導入した「stderr 警告のみ・削除しない」方式を完全撤去し、
108
+ `deletions.txt` 方式に一元化。
109
+
110
+ ### ドキュメント
111
+
112
+ - **`.claude/docs/config-policy.md`**:
113
+ - §3 配布判断マトリクス 12 → 13 カテゴリ(`deletions.txt` 追加)
114
+ - §7「既知の落とし穴」5 項目目「`deletions.txt` 自身は削除されない・
115
+ 絶対パスは無視される」追加
116
+ - §8 残課題から「v2.18.0 予定」を完了化
117
+
118
+ ### セキュリティ
119
+
120
+ - パストラバーサル / 絶対パス / Home (`~`) / Windows ドライブレター /
121
+ バックスラッシュ / `.claude/` プレフィックス / 親遡り / シンボリックリンク経由 /
122
+ ディレクトリ削除 / Windows case-insensitive バイパス / ANSI CSI シーケンス /
123
+ null byte / `deletions.txt` 自身 — 計 12 種の攻撃面を構造的に防御
124
+ - Round 1 + Round 2 + Round 3 で計 17 件のレビュー指摘(CR 10 + SR 7)全件対応
125
+
126
+ ### 次リリース予告
127
+
128
+ - **v2.19.0**(予定): Breaking changes 警告 + バージョン checkpoint。
129
+ `c3 update` 実行時に前回バージョンとの diff から breaking changes 一覧を表示する。
130
+
131
+ ### 影響
132
+
133
+ - **既存利用先**: `c3 update` 実行時に過去廃止 16 ファイルの削除候補が表示される。
134
+ デフォルトは確認プロンプト(`N`)のため、誤削除事故は発生しない。
135
+ - **CI / 自動化環境**: `--yes` フラグを明示しない限り従来通り(プロンプトで止まる)。
136
+ - **既存テスト**: 944 → 979 PASS(純増 35 件)、API 互換性完全維持。
137
+
138
+ ---
139
+
3
140
  ## v2.17.0 (2026-05-24)
4
141
 
5
142
  **基盤整備リリース第 1 弾**: 設定階層と配布判断ルールを canonical 化する。
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-conductor
3
- Version: 2.17.0
3
+ Version: 2.19.0
4
4
  Summary: Multi-agent orchestration framework for Claude Code with Codex/Cursor adapters (C3)
5
5
  Project-URL: Homepage, https://github.com/satoh-y-0323/claude-code-conductor
6
6
  Project-URL: Repository, https://github.com/satoh-y-0323/claude-code-conductor
@@ -68,6 +68,8 @@ KEEP_PATTERNS: tuple[str, ...] = (
68
68
  "memory/archive/.gitkeep",
69
69
  "tmp/.gitkeep",
70
70
  "state/.gitkeep",
71
+ "deletions.txt", # 新規: c3 update が読む削除指示書
72
+ "breaking-changes.txt", # v2.19.0: c3 update が読む破壊的変更ログ
71
73
  )
72
74
 
73
75
 
@@ -1,3 +1,3 @@
1
1
  """Claude Code Conductor (C3) - multi-agent orchestration framework for Claude Code."""
2
2
 
3
- __version__ = "2.17.0"
3
+ __version__ = "2.19.0"
@@ -65,6 +65,8 @@ KEEP_PATTERNS: tuple[str, ...] = (
65
65
  "memory/archive/.gitkeep",
66
66
  "tmp/.gitkeep",
67
67
  "state/.gitkeep",
68
+ "deletions.txt", # 新規: c3 update が読む削除指示書
69
+ "breaking-changes.txt", # v2.19.0: c3 update が読む破壊的変更ログ
68
70
  )
69
71
 
70
72