claude-code-conductor 2.78.0__tar.gz → 2.79.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 (278) hide show
  1. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/CLAUDE.md +14 -0
  2. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/planner.md +2 -2
  3. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +13 -1
  4. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/CHANGELOG.md +41 -0
  5. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/PKG-INFO +1 -1
  6. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/__init__.py +1 -1
  7. claude_code_conductor-2.79.0/tests/skills/test_existing_test_policy.py +606 -0
  8. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/.gitignore +0 -0
  9. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/architect.md +0 -0
  10. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/code-reviewer.md +0 -0
  11. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/design-critic.md +0 -0
  12. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/developer.md +0 -0
  13. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/doc-writer.md +0 -0
  14. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/interviewer.md +0 -0
  15. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/project-setup.md +0 -0
  16. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/security-reviewer.md +0 -0
  17. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/systematic-debugger.md +0 -0
  18. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/tester.md +0 -0
  19. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/wt_developer.md +0 -0
  20. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/wt_systematic-debugger.md +0 -0
  21. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/agents/wt_tester.md +0 -0
  22. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/breaking-changes.txt +0 -0
  23. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/deletions.txt +0 -0
  24. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/autonomous-mode-onboarding.md +0 -0
  25. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/config-policy.md +0 -0
  26. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/nul-boundary.md +0 -0
  27. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/parallel-agents-setup.md +0 -0
  28. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/platform-adapters.md +0 -0
  29. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/docs/settings.json.md +0 -0
  30. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/_hook_utils.py +0 -0
  31. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/check_agent_invocation.py +0 -0
  32. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/consolidate_memory.py +0 -0
  33. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/patterns_guard.py +0 -0
  34. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/planner_check.py +0 -0
  35. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/post_tool.py +0 -0
  36. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/pre_compact.py +0 -0
  37. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/pre_tool.py +0 -0
  38. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/recall_autorebuild.py +0 -0
  39. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/recall_inject.py +0 -0
  40. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/report_contract_check.py +0 -0
  41. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/report_path_guard.py +0 -0
  42. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/restore_session.py +0 -0
  43. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/select_tier.py +0 -0
  44. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/session_mode_watch.py +0 -0
  45. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/session_start.py +0 -0
  46. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/session_stop.py +0 -0
  47. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/session_utils.py +0 -0
  48. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/statusline.py +0 -0
  49. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/stop.py +0 -0
  50. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/tier_autoapply.py +0 -0
  51. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/tier_gap_check.py +0 -0
  52. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/hooks/worktree_guard.py +0 -0
  53. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/memory/.gitkeep +0 -0
  54. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/memory/archive/.gitkeep +0 -0
  55. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/memory/sessions/.gitkeep +0 -0
  56. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/reports/.gitkeep +0 -0
  57. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/rules/judgment-principles.md +0 -0
  58. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/rules/promoted/index.md +0 -0
  59. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/settings.json +0 -0
  60. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/autonomous-mode/SKILL.md +0 -0
  61. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/autonomous-mode/scripts/mode_line.py +0 -0
  62. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/brainstorm/SKILL.md +0 -0
  63. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/codex-review/SKILL.md +0 -0
  64. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
  65. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/c3-omission-declaration.md +0 -0
  66. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
  67. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/design-critic-rubric.md +0 -0
  68. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/design-rubric.md +0 -0
  69. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/interview-rubric.md +0 -0
  70. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/reachability-map.md +0 -0
  71. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/record-protocol.md +0 -0
  72. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
  73. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/scripts/detect_execution_verification.py +0 -0
  74. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/scripts/record_agent_outcome.py +0 -0
  75. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
  76. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
  77. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/develop/SKILL.md +0 -0
  78. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/doc/SKILL.md +0 -0
  79. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  80. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/init-session/SKILL.md +0 -0
  81. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/init-session/scripts/session_guard.py +0 -0
  82. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  83. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/parallel-agents/SKILL.md +0 -0
  84. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  85. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  86. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/recall/SKILL.md +0 -0
  87. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  88. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  89. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/review-phase/SKILL.md +0 -0
  90. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/setup/SKILL.md +0 -0
  91. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/setup/reference.md +0 -0
  92. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
  93. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
  94. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/start/SKILL.md +0 -0
  95. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/skills/start/scripts/archive_reports.py +0 -0
  96. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/state/.gitkeep +0 -0
  97. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/state/setup_done.flag +0 -0
  98. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.claude/tmp/.gitkeep +0 -0
  99. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/.gitignore +0 -0
  100. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/ARCHITECTURE.md +0 -0
  101. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSE +0 -0
  102. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSES/fastembed-LICENSE +0 -0
  103. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSES/fastembed-NOTICE +0 -0
  104. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSES/numpy-LICENSE +0 -0
  105. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSES/onnxruntime-LICENSE +0 -0
  106. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
  107. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/README.md +0 -0
  108. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/hatch_build.py +0 -0
  109. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/pyproject.toml +0 -0
  110. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/__main__.py +0 -0
  111. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/_db_params.py +0 -0
  112. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/_excludes.py +0 -0
  113. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/_terminal.py +0 -0
  114. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/adapters.py +0 -0
  115. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli.py +0 -0
  116. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_ask.py +0 -0
  117. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_doctor.py +0 -0
  118. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_init.py +0 -0
  119. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_list.py +0 -0
  120. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_metrics.py +0 -0
  121. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_plan.py +0 -0
  122. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_recall.py +0 -0
  123. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_run.py +0 -0
  124. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_tier.py +0 -0
  125. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/cli_update.py +0 -0
  126. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/db.py +0 -0
  127. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/embedding.py +0 -0
  128. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/gitutil.py +0 -0
  129. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/mcp_server.py +0 -0
  130. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrate.py +0 -0
  131. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/001_initial.sql +0 -0
  132. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/002_agent_cost_runs.sql +0 -0
  133. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/003_tier_cost.sql +0 -0
  134. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/004_agent_outcomes.sql +0 -0
  135. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/005_drop_agent_tier_bandit.sql +0 -0
  136. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/006_review_decisions_severity.sql +0 -0
  137. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/007_review_decisions_resolution.sql +0 -0
  138. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/008_drop_agent_runs.sql +0 -0
  139. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/README.md +0 -0
  140. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/migrations/__init__.py +0 -0
  141. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/paths.py +0 -0
  142. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/plan_validator.py +0 -0
  143. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/platforms.py +0 -0
  144. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/pricing.py +0 -0
  145. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/question.py +0 -0
  146. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/recall_chunker.py +0 -0
  147. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/recall_index.py +0 -0
  148. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/refgraph.py +0 -0
  149. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/src/c3/usage_ingester.py +0 -0
  150. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/__init__.py +0 -0
  151. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/_pre_compact_helpers.py +0 -0
  152. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/_sync_semantics.py +0 -0
  153. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/conftest.py +0 -0
  154. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/fixtures/usage/README.md +0 -0
  155. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/fixtures/usage/mainline.jsonl +0 -0
  156. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/fixtures/usage/subagents/agent-deadbeef.jsonl +0 -0
  157. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/fixtures/usage/subagents/agent-deadbeef.meta.json +0 -0
  158. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/__init__.py +0 -0
  159. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_check_agent_invocation.py +0 -0
  160. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_consolidate_memory.py +0 -0
  161. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_detect_execution_verification.py +0 -0
  162. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_hook_utils.py +0 -0
  163. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  164. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_planner_check.py +0 -0
  165. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_planner_check_dev.py +0 -0
  166. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_post_tool.py +0 -0
  167. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_pre_tool.py +0 -0
  168. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_recall_autorebuild.py +0 -0
  169. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_recall_inject.py +0 -0
  170. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_record_agent_outcome.py +0 -0
  171. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_record_review_decision.py +0 -0
  172. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_report_path_guard.py +0 -0
  173. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_restore_session.py +0 -0
  174. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_review_hint_inject.py +0 -0
  175. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_select_tier.py +0 -0
  176. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_select_tier_escalation.py +0 -0
  177. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_session_start.py +0 -0
  178. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_session_stop.py +0 -0
  179. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_session_utils.py +0 -0
  180. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  181. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_settings_tier_autoapply_registration.py +0 -0
  182. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_similarity_boost.py +0 -0
  183. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_statusline.py +0 -0
  184. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_statusline_reconfigure_guard.py +0 -0
  185. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  186. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_sync_check.py +0 -0
  187. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_template_guard.py +0 -0
  188. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_tier_autoapply.py +0 -0
  189. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_tier_gap_check.py +0 -0
  190. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/hooks/test_tier_security_fixes.py +0 -0
  191. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/__init__.py +0 -0
  192. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/_skill_helpers.py +0 -0
  193. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_c3_omission_declaration.py +0 -0
  194. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_design_inventory_step.py +0 -0
  195. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
  196. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_e0_verification_exit.py +0 -0
  197. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_init_session_no_task_type.py +0 -0
  198. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_marker_compliance.py +0 -0
  199. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_parallel_agents_skill_tier.py +0 -0
  200. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_planner_lightweight.py +0 -0
  201. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_reachability_map.py +0 -0
  202. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_recall_skill.py +0 -0
  203. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
  204. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_session_guard.py +0 -0
  205. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_setup_templates.py +0 -0
  206. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
  207. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_start_skill_new_flow.py +0 -0
  208. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
  209. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_adapters.py +0 -0
  210. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_archive_reports.py +0 -0
  211. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_audit_review_decisions.py +0 -0
  212. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_check_deletions.py +0 -0
  213. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_ci_workflows.py +0 -0
  214. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_claude_gitignore.py +0 -0
  215. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_ask.py +0 -0
  216. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_doctor.py +0 -0
  217. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_doctor_launcher.py +0 -0
  218. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_entry.py +0 -0
  219. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_init.py +0 -0
  220. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_init_symlink_guard.py +0 -0
  221. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_list.py +0 -0
  222. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_metrics.py +0 -0
  223. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_plan.py +0 -0
  224. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_recall.py +0 -0
  225. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_run.py +0 -0
  226. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_tier.py +0 -0
  227. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_update_breaking_changes.py +0 -0
  228. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_cli_update_deletions.py +0 -0
  229. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_db.py +0 -0
  230. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_db_connect_lint.py +0 -0
  231. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_docstring_consistency.py +0 -0
  232. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_embedding.py +0 -0
  233. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_excludes.py +0 -0
  234. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_extract_breaking_changes.py +0 -0
  235. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_gitutil.py +0 -0
  236. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_hooks_stdin_idiom.py +0 -0
  237. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_init_only_patterns.py +0 -0
  238. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_mcp_server_elicit.py +0 -0
  239. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_migrate.py +0 -0
  240. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_mode_line.py +0 -0
  241. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_no_bare_python_launcher.py +0 -0
  242. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_no_passonly_tests.py +0 -0
  243. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_nul_boundary_lint.py +0 -0
  244. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_paths.py +0 -0
  245. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_patterns_guard.py +0 -0
  246. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_permission_handler_removal.py +0 -0
  247. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_plan_validator.py +0 -0
  248. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_pre_compact.py +0 -0
  249. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_pre_tool_hook.py +0 -0
  250. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_precompact_additional.py +0 -0
  251. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_precompact_toctou_fixes.py +0 -0
  252. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_pricing.py +0 -0
  253. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_recall_chunker.py +0 -0
  254. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_recall_index.py +0 -0
  255. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_references_migration.py +0 -0
  256. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_refgraph.py +0 -0
  257. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_refgraph_query.py +0 -0
  258. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_refgraph_structural.py +0 -0
  259. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_report_contract_check.py +0 -0
  260. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_scripts_src_bootstrap.py +0 -0
  261. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_scripts_stdout_encoding.py +0 -0
  262. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_session_mode_watch.py +0 -0
  263. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_session_utils_additional.py +0 -0
  264. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_settings_hooks_registration.py +0 -0
  265. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_skill_no_builtin_conflict.py +0 -0
  266. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_start_skill_archive_contract.py +0 -0
  267. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_statusline.py +0 -0
  268. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_stop_additional.py +0 -0
  269. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_stop_agent_memory_warn.py +0 -0
  270. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_stop_hook.py +0 -0
  271. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_stop_precompact_fixes.py +0 -0
  272. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_sync_template_stop.py +0 -0
  273. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_template_pre_tool_hook.py +0 -0
  274. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_three_file_sync.py +0 -0
  275. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_usage_ingester.py +0 -0
  276. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_verify_wheel.py +0 -0
  277. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_worktree_guard.py +0 -0
  278. {claude_code_conductor-2.78.0 → claude_code_conductor-2.79.0}/tests/test_wt_agent_sync.py +0 -0
@@ -30,6 +30,20 @@ C3 は、業務アプリケーション開発で製品としての品質を保
30
30
  4. 実装前に一次資料と再現実験で仮説を裏取りする。仮説が反証されたら実装せず再調査する
31
31
  5. 是正後は「指摘が消えたか」ではなく「根本問題が解けたか」を実測で示す(Red → Green の反転・本番経路での再現条件の消失)
32
32
 
33
+ ## テストとプロダクトの関係
34
+
35
+ プロダクトコードが正であり、テストコードはその変更に合わせて作成・変更・削除するものである。既存テストを不可侵として設計を歪めない。
36
+
37
+ 守る対象は次の 3 段に分かれる。段が違えば扱いも違う。
38
+
39
+ 1. **直前の Red が書いたテストは実装タスクが変更しない。** 崩すと「実装が通るようにテストを書き換える」経路が開き、TDD の検査そのものが消える。変更が要ると判断したら実装を止めて親へ申告する
40
+ 2. **assert が測っている性質(期待値)は変えない。** 削除・恒真化・比較の緩和を行わない。変える必要があると判断したら、それはプロダクトの振る舞いを変える判断であって実装タスクの裁量ではないので、止めて親へ申告する(親がユーザーの裁定を仰ぐ)
41
+ 3. **呼び出しの形(署名・引数の数・タプルの形・ヘルパ名・型注釈・インポート)は必要なら機械的に直してよい。** これは契約ではなく結合である。直したファイルと件数、変更箇所の diff、および「assert が測っている性質を 1 件も変えていない」ことを report に申告する
42
+
43
+ `writes` に無いファイルの形を直す必要が出たら止めて親へ申告する(親が `writes` を見直す)。「`writes` に無いから設計を曲げる」判断をタスク側で行わない。
44
+
45
+ 段 3 の申告を受け取った側(親、および確認を担うタスク)は、申告と実 diff を突合し、申告外の変更が無いことを確認する。
46
+
33
47
  ## 設計思想
34
48
 
35
49
  - 対策・規約は「書きやすい場所」ではなく「効く場所」に置く。読み手(agent / skill)の Read 経路に届いていない規約は存在しないのと同じ
@@ -41,7 +41,7 @@ requirements-report・architecture-report・各種レビューレポートを統
41
41
  **During:**
42
42
  - レビュー指摘がある場合は優先度を付けて反映する
43
43
  - タスクは「1タスク = 1コミット」の粒度を意識して分解する
44
- - `.claude/skills/dev-workflow/references/plan-design-guidelines.md` のルール 1〜20 と R2〜R6 を遵守する(適用射程は同ファイル冒頭の分類表に従う。`"sequential"` プランでは並列前提ルールを適用しない)
44
+ - `.claude/skills/dev-workflow/references/plan-design-guidelines.md` の全ルールと R2〜R6 を遵守する(適用射程は同ファイル冒頭の分類表に従う。`"sequential"` プランでは並列前提ルールを適用しない)
45
45
 
46
46
  **After:**
47
47
  - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/plan-report-{timestamp}.md` に出力する
@@ -58,7 +58,7 @@ requirements-report・architecture-report・各種レビューレポートを統
58
58
  制限:
59
59
  - ソースファイルの編集・書き込みは行わない
60
60
  - plan-report の YAML フロントマター内で `tasks[].id` の重複・未定義の `depends_on` 参照・エージェント名の typo を出力しない(`c3 plan validate` で検証可能)
61
- - `.claude/skills/dev-workflow/references/plan-design-guidelines.md` のルール 1〜20 と自己チェックリストに違反した plan-report を出力しない(適用射程は分類表に従う)
61
+ - `.claude/skills/dev-workflow/references/plan-design-guidelines.md` の全ルールと自己チェックリストに違反した plan-report を出力しない(適用射程は分類表に従う)
62
62
  - 自動検査対象に違反する plan-report を出力しない:
63
63
  - R2/R4/R6(配布対象): `.claude/hooks/planner_check.py` が PostToolUse で WARN を出す
64
64
  - R3(C3 固有): `.dev/hooks/_planner_check.py` が PostToolUse で exit 2 ブロック
@@ -5,7 +5,7 @@
5
5
  | 分類 | ルール番号 | R 番号 | 自己チェックリスト項目 |
6
6
  |---|---|---|---|
7
7
  | `"0.1"`(並列実行)限定 | ルール 1・2・10・11・14/ルール 3・9(※直後の注記により sequential でも成果物宣言・レビュー配置の規律は満たすこと) | R5(isolation 指定が発生しない逐次では非該当) | チェーン長/同一ファイル衝突/R5/ルール 14 |
8
- | 両モード共通 | ルール 4・5・7・8・12・13・15・16・17・18・19・20 | R2・R3・R4・R6(planner_check hook 群は po_plan_version の値を読まないため sequential プランでも発火する) | id 一意・depends_on 参照先実在/空配列禁止/TDD 3 タスク分解/15 分粒度/R6/writes が空のタスク/レビュータスクの depends_on/ルール 15 方向検算/テスト凍結の実装責任/手順過多の契約化/一時改変の後始末方法/検知力検証の双方向/gitignored 検証パス |
8
+ | 両モード共通 | ルール 4・5・7・8・12・13・15・16・17・18・19・20・21 | R2・R3・R4・R6(planner_check hook 群は po_plan_version の値を読まないため sequential プランでも発火する) | id 一意・depends_on 参照先実在/空配列禁止/TDD 3 タスク分解/15 分粒度/R6/writes が空のタスク/レビュータスクの depends_on/ルール 15 方向検算/テスト凍結の実装責任/手順過多の契約化/一時改変の後始末方法/検知力検証の双方向/gitignored 検証パス/既存テストの扱いの指示 |
9
9
  | 逐次では読み替え | ルール 6(Stuck Signal の契約自体は共通。wave 失敗時の 2-E 吸収は並列限定の運用であり、逐次は dev-workflow SKILL.md の D-2.5〈Stuck チェック〉で吸収する) | - | - |
10
10
 
11
11
  **注記**: 両モード共通に分類されたルール(5・R2・R4・R6 等)が `writes` や reviewer タスクの存在を前提とする場合、**その前提を作るルール(9・3)も sequential プランで満たすこと**。`"0.1"` 限定の趣旨は『並列度・worktree 取り込み衝突に関する制約』に限られ、成果物宣言・レビュー配置の規律はモードを問わない。
@@ -151,6 +151,17 @@ Stage 1: dev_a, dev_b, dev_c (並列)
151
151
 
152
152
  20. **直接 Read・状態外の指示分離** — gitignored ファイル(`.claude/reports/` 等)の検証は `git status --short` ではなく **直接 Read で行うこと**。git 管理下で成果物を検証する必要があれば、明示的に commit → 確認 → cleanup の流れを指示する。worktree で起動される worker(developer / tester)の prompt には gitignored 文書の Read を指示しないこと(届く経路が無い。親か plan-report 経由で指す)。reviewer 向けの prompt には「当該ファイルは gitignored である」と明記し、reviewer に直接 Read させることを指示する。
153
153
 
154
+ ## 既存テストの扱いの指示(ルール 21)
155
+
156
+ 21. **3 段を指し、不可侵と読ませない** — `tasks[].prompt` に「既存テストを変えない」「既存テストの期待を変えない」「既存の行に触れない」と書かない。呼び出しの形まで不可侵と読まれ、プロダクト側の設計が歪む。代わりに次の各点を満たす:
157
+ - **TDD の各タスクすべて**(Red / Green / 確認、および D-4 / D-5 に対応する Refactor / 最終確認を置く場合はそれらも)の `prompt` に「`.claude/CLAUDE.md`「テストとプロダクトの関係」の 3 段に従う」を 1 行書く。3 段の本文は `.claude/CLAUDE.md` が唯一の所在であり、`prompt` および本ファイルへ転記しない
158
+ - 実装タスクの `prompt` に「段 3 に該当する修正をした場合は `.claude/CLAUDE.md` 段 3 が要求する申告を返却報告に含める」を書く(申告項目は `.claude/CLAUDE.md` 段 3 が正であり本ファイルへ列挙しない。実装タスクは `.claude/reports/` に成果物を書かないため、申告先を返却報告に確定する)
159
+ - 凍結対象を挙げる必要がある場合は assert が測っている性質を挙げ、呼び出しの形(署名・引数の数・タプルの形・ヘルパ名・型注釈・インポート)を挙げない
160
+
161
+ 射程を「既存テストに触れるタスク」で切らないのは、`writes` に `tests/` を含むかで同定すると、段 1 を守るべき実装タスク自身が射程外になるためである。`writes` の外の形を直す必要が出た場合もタスク側で設計を曲げさせない(`writes` の見直しは親が行う)。本ルールはルール 16(凍結仕様の実装責任)と対になる。
162
+
163
+ **なぜ必要か**: 別リポジトリの実運用で、prompt の「既存テストの期待を変えない」が「既存の行に触れない」と読まれ、既存メソッドへの引数追加を断念して別名メソッドを 2 本並べる形が Red に固定された。呼び出し 30 箇所は引数 1 つの追加で済み、当該ファイルは Red を書くタスクの `writes` に入っていた(制約は実在しなかった・2026-09-16 / Issue #6)。
164
+
154
165
  ---
155
166
 
156
167
  ## 出力直前の自己チェックリスト
@@ -174,6 +185,7 @@ plan-report を Write する前に以下を必ず確認する:
174
185
  - [ ] ルール 18: 一時改変指示は後始末手段を逐語で指定し、git checkout/restore/reset を明示的に禁止しているか
175
186
  - [ ] ルール 19: 検証系 task の contract に do-nothing スタブ 2 種の赤緑反転実証が含まれているか(適用困難なら代替宣言)
176
187
  - [ ] ルール 20: gitignored 成果物検証は直接 Read 指示で行い、worker prompt には Read を指示していないか
188
+ - [ ] ルール 21: prompt に「既存テストを変えない」類の文言が無く、TDD の各タスクに 3 段への参照 1 行と、実装タスクに段 3 の申告要求があるか
177
189
 
178
190
  ---
179
191
 
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.79.0] - 2026-09-18
4
+
5
+ ### 追加
6
+
7
+ - **既存テストの扱いを 3 段に分ける規約を追加した**(GitHub Issue #6 を起点とする)。`.claude/CLAUDE.md` に
8
+ 「テストとプロダクトの関係」節を新設し、プロダクトコードが正でありテストコードはその変更に合わせて
9
+ 作成・変更・削除するものであることを明記した。既存テストへの向き合い方を 3 段に分け、(1) 直前の Red が
10
+ 書いたテストは実装タスクが変更しない (2) assert が測っている性質(期待値)は変えない (3) 呼び出しの形
11
+ (署名・引数の数・タプルの形・ヘルパ名・型注釈・インポート)は機械的に直してよく report に申告する、とした。
12
+ `plan-design-guidelines.md` にルール 21(既存テストの扱いの指示)を追加し、`tasks[].prompt` に
13
+ 「既存テストを変えない」「既存の行に触れない」といった不可侵と読める文言を書かないことを求め、代わりに
14
+ TDD の各タスクへ 3 段への参照 1 行と、実装タスクへ段 3 の申告要求を書くことを規定した
15
+ - `tests/skills/test_existing_test_policy.py` を新規追加し、(a) `.claude/CLAUDE.md` に「テストとプロダクトの
16
+ 関係」の見出しが存在すること (b) `plan-design-guidelines.md` にルール 21 の見出しが存在すること
17
+ (c) `.claude/agents/planner.md` にルール番号範囲のハードコードが存在しないこと、を機械検証する
18
+ - ルール 21 の段 3(呼び出しの形の機械修正)の申告要求を強化した。実装タスクの返却報告に「変更箇所の diff」を
19
+ 含めることを求め、さらに実装タスクの `writes` に既存テストファイルを含む計画(=段 3 が発火しうる計画)に限り、
20
+ 確認タスクの `prompt` に段 3 の申告と実 diff の突合を書くよう求めた。段 3 の許可は自己申告であり、申告の
21
+ 妥当性を見る主体が無いと段 2 の禁止が実効しないため
22
+ - `tests/skills/test_existing_test_policy.py` の判定を 2 点狭めた。(a) ルール 21 のキーワード判定に右側の数値境界を
23
+ 加え、「ルール 210」「ルール 219」のように右に数字が続く文字列に当たらないようにした(`(ルール 210)` の見出し
24
+ だけを置いた偽ルートで不充足になる負の対照を常設した)(b) リポジトリルートの解決で環境変数の値を realpath で
25
+ 正規化(シンボリックリンク解決後)してから使い、解決後が実在するディレクトリでない場合は明示的に失敗する
26
+ ようにした。いずれも判定が狭くなる方向のみで、既存の検査を緩めていない
27
+
28
+ ### 変更
29
+
30
+ - `.claude/agents/planner.md` のルール番号範囲のハードコード(「ルール 1〜20」)を撤去し「全ルール」という
31
+ 番号非依存の表現に変えた。ルール追加のたびに番号を追随させる運用を無くし、陳腐化する形そのものを消した
32
+ - 段 3 の申告項目(変更箇所の diff)を `.claude/CLAUDE.md` の段 3 本体に配置し、planner 経由ではない
33
+ 全エージェントが参照できる形にした。これにより plan-report の prompt 経由でなく CLAUDE.md 自動注入経由で
34
+ 申告要求に到達する
35
+ - 段 3 の申告と実 diff の突合を `.claude/skills/dev-workflow/SKILL.md` の D-3 にも配置し、
36
+ plan-design-guidelines.md のルール 21 に加えて dev-workflow フェーズの直接起動経路(plan-report 非経由)にも
37
+ 届く形にした。段 3 の許可が自己申告のみでは実効しない問題を両経路で対策
38
+ - 段 3 の統制の前提を転換した。経路ごとに手順書へ 1 文ずつ配線する方式は、周回のたびに新しい経路(plan 経路 →
39
+ 直接起動経路 → bug-fix モードの D-3)が見つかり配線漏れを生んだため、受け取り側の突合義務を
40
+ `.claude/CLAUDE.md` 段 3 の 1 箇所へ集約した。同ファイルは全 role へ自動注入されるため経路の数え上げが不要になる。
41
+ あわせて経路ごとの個別配線 2 箇所(`dev-workflow/SKILL.md` 通常 D-3 の 1 文、`plan-design-guidelines.md`
42
+ ルール 21 の突合箇条)を撤去し、同じ義務が複数箇所に存在してドリフト源になる状態を解消した
43
+
3
44
  ## [2.78.0] - 2026-09-13
4
45
 
5
46
  ### 追加
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: claude-code-conductor
3
- Version: 2.78.0
3
+ Version: 2.79.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
@@ -1,3 +1,3 @@
1
1
  """Claude Code Conductor (C3) - multi-agent orchestration framework for Claude Code."""
2
2
 
3
- __version__ = "2.78.0"
3
+ __version__ = "2.79.0"