claude-code-conductor 0.6.2__tar.gz → 0.6.3__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 (121) hide show
  1. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/wave-execution/SKILL.md +1 -1
  2. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/CHANGELOG.md +11 -0
  3. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/PKG-INFO +1 -1
  4. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/__init__.py +1 -1
  5. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/runner.py +3 -4
  6. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_review_fixes.py +12 -10
  7. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/CLAUDE.md +0 -0
  8. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/architect.md +0 -0
  9. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/code-reviewer.md +0 -0
  10. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/developer.md +0 -0
  11. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/doc-writer.md +0 -0
  12. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/interviewer.md +0 -0
  13. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/planner.md +0 -0
  14. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/project-setup.md +0 -0
  15. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/security-reviewer.md +0 -0
  16. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/systematic-debugger.md +0 -0
  17. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/tdd-develop.md +0 -0
  18. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/agents/tester.md +0 -0
  19. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/docs/parallel-orchestra-manifest.md +0 -0
  20. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/clear_file_history.py +0 -0
  21. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/enable_sandbox.py +0 -0
  22. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/pre_compact.py +0 -0
  23. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/pre_tool.py +0 -0
  24. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/session_utils.py +0 -0
  25. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/statusline.py +0 -0
  26. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/stop.py +0 -0
  27. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/validate_skill_change.py +0 -0
  28. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/hooks/worktree_guard.py +0 -0
  29. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/memory/.gitkeep +0 -0
  30. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/rules/code-review-checklist.md +0 -0
  31. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/rules/promoted/index.md +0 -0
  32. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/rules/security-review-checklist.md +0 -0
  33. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/settings.json +0 -0
  34. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/settings.local.json +0 -0
  35. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/code-review/SKILL.md +0 -0
  36. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/dev-workflow/SKILL.md +0 -0
  37. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/develop/SKILL.md +0 -0
  38. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/doc/SKILL.md +0 -0
  39. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/extract-lib/SKILL.md +0 -0
  40. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/init-session/SKILL.md +0 -0
  41. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/mcp-config/SKILL.md +0 -0
  42. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/pattern-status/SKILL.md +0 -0
  43. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/promote-pattern/SKILL.md +0 -0
  44. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/report-timestamp/SKILL.md +0 -0
  45. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  46. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/setup/SKILL.md +0 -0
  47. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/start/SKILL.md +0 -0
  48. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.claude/skills/worktree-tdd-workflow/SKILL.md +0 -0
  49. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/.gitignore +0 -0
  50. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/LICENSE +0 -0
  51. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/README.md +0 -0
  52. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/hatch_build.py +0 -0
  53. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/pyproject.toml +0 -0
  54. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/__main__.py +0 -0
  55. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/_excludes.py +0 -0
  56. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli.py +0 -0
  57. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli_doctor.py +0 -0
  58. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli_init.py +0 -0
  59. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli_list.py +0 -0
  60. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli_po.py +0 -0
  61. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/cli_update.py +0 -0
  62. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/paths.py +0 -0
  63. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/po/__init__.py +0 -0
  64. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/po/manifest.py +0 -0
  65. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/c3/po/run.py +0 -0
  66. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/__init__.py +0 -0
  67. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/_exceptions.py +0 -0
  68. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/cli.py +0 -0
  69. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/manifest.py +0 -0
  70. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/src/parallel_orchestra/report.py +0 -0
  71. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/__init__.py +0 -0
  72. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/conftest.py +0 -0
  73. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/__init__.py +0 -0
  74. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/test_clear_file_history.py +0 -0
  75. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/test_enable_sandbox.py +0 -0
  76. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/test_session_utils.py +0 -0
  77. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/test_statusline.py +0 -0
  78. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/hooks/test_statusline_template_sync.py +0 -0
  79. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/__init__.py +0 -0
  80. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/conftest.py +0 -0
  81. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_cli.py +0 -0
  82. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_manifest.py +0 -0
  83. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_report.py +0 -0
  84. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_retry_backoff.py +0 -0
  85. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_review_fixes2.py +0 -0
  86. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_review_fixes3.py +0 -0
  87. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_review_fixes4.py +0 -0
  88. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_review_fixes5.py +0 -0
  89. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_runner_t7.py +0 -0
  90. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_runner_v04_fix.py +0 -0
  91. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_runner_v04_m1.py +0 -0
  92. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/parallel_orchestra/test_runner_v04_m2.py +0 -0
  93. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_clear_file_history.py +0 -0
  94. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_cli_init.py +0 -0
  95. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_cli_list.py +0 -0
  96. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_cli_po.py +0 -0
  97. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_cli_po_tempfile.py +0 -0
  98. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_docstring_consistency.py +0 -0
  99. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_enable_sandbox.py +0 -0
  100. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_excludes.py +0 -0
  101. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_manifest_fixes.py +0 -0
  102. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_manifest_yaml_escape.py +0 -0
  103. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_paths.py +0 -0
  104. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_po_manifest.py +0 -0
  105. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_po_run.py +0 -0
  106. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_po_waves.py +0 -0
  107. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_pre_compact.py +0 -0
  108. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_pre_tool_hook.py +0 -0
  109. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_precompact_additional.py +0 -0
  110. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_precompact_toctou_fixes.py +0 -0
  111. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_session_utils_additional.py +0 -0
  112. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_statusline.py +0 -0
  113. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_stop_additional.py +0 -0
  114. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_stop_hook.py +0 -0
  115. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_stop_precompact_fixes.py +0 -0
  116. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_sync_template_clear_file_history.py +0 -0
  117. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_sync_template_stop.py +0 -0
  118. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_sync_validate_skill.py +0 -0
  119. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_template_pre_tool_hook.py +0 -0
  120. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_validate_skill_change.py +0 -0
  121. {claude_code_conductor-0.6.2 → claude_code_conductor-0.6.3}/tests/test_worktree_guard.py +0 -0
@@ -196,7 +196,7 @@ c3 po run-wave <plan-report-path> --wave-index {N} --report .claude/reports/po-r
196
196
  | exit code | 意味 | 次のアクション |
197
197
  |---|---|---|
198
198
  | `0` | wave 内全タスク成功 | 2-D へ |
199
- | `1` | 1件以上のタスクが失敗 | 2-D へ(失敗一覧を含めて提示)。**注:** PO は 1 タスクあたり 15 分(`_INTERNAL_TIMEOUT_SEC = 900`、ハードコード上書き不可)でタイムアウトする。15 分超で failure 扱いになっていれば planner の粒度を見直す |
199
+ | `1` | 1件以上のタスクが失敗 | 2-D へ(失敗一覧を含めて提示)。**注:** PO は 1 タスクあたり 20 分(`_INTERNAL_TIMEOUT_SEC = 1200`)でタイムアウトする。20 分超で failure 扱いになっていれば planner の粒度を見直す |
200
200
  | `2` | マニフェストエラー(Step 0 をすり抜けた)| エラー内容を提示しスキル終了 |
201
201
  | `3` | auto-merge 衝突(worktree → main の取り込みに失敗)| 下記「auto-merge が衝突した場合」のリカバリ手順へ |
202
202
 
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.3] - 2026-05-07
4
+
5
+ ### Fixed
6
+ - `read_only=true` tasks (e.g. `code-reviewer`, `security-reviewer`) were
7
+ launched with `--read-only`, a flag that does not exist in Claude Code CLI,
8
+ causing immediate failure. All tasks now use `--dangerously-skip-permissions`
9
+ regardless of `read_only`. `read_only` controls worktree creation only and
10
+ is never passed to the `claude` binary.
11
+ - `wave-execution/SKILL.md`: update timeout note from 900 s (15 min) to
12
+ 1200 s (20 min) to reflect the v0.6.1 change.
13
+
3
14
  ## [0.6.2] - 2026-05-07
4
15
 
5
16
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: claude-code-conductor
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Multi-agent orchestration framework for Claude Code (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__ = "0.6.2"
3
+ __version__ = "0.6.3"
@@ -1129,10 +1129,9 @@ def _execute_task(
1129
1129
  PO_WORKTREE_GUARD=1 is set in the environment automatically.
1130
1130
  For read_only=True tasks, effective_cwd (passed by the caller) is used.
1131
1131
  """
1132
- if task.read_only:
1133
- cmd = [claude_exe, "--read-only"]
1134
- else:
1135
- cmd = [claude_exe, "--dangerously-skip-permissions"]
1132
+ # read_only controls worktree creation only — never passed to claude as a flag.
1133
+ # Both task types need --dangerously-skip-permissions for headless execution.
1134
+ cmd = [claude_exe, "--dangerously-skip-permissions"]
1136
1135
  if task.agent:
1137
1136
  cmd.extend(["--agent", task.agent])
1138
1137
  cmd.extend([_CLAUDE_PROMPT_FLAG, task.prompt])
@@ -164,16 +164,19 @@ def test_log_masks_api_key(tmp_path, monkeypatch):
164
164
 
165
165
 
166
166
  # ---------------------------------------------------------------------------
167
- # Task 16 / S-1 — read_only tasks use --read-only, not --dangerously-skip-permissions
167
+ # Task 16 / S-1 — read_only tasks use --dangerously-skip-permissions (not --read-only)
168
+ # read_only controls worktree creation only; it must never be passed to claude as a flag.
168
169
  # ---------------------------------------------------------------------------
169
170
 
170
171
 
171
- def test_readonly_task_gets_read_only_flag(tmp_path, monkeypatch):
172
- """A task with read_only=true must use --read-only flag, not --dangerously-skip-permissions."""
172
+ def test_readonly_task_uses_dangerously_skip_permissions(tmp_path, monkeypatch):
173
+ """A task with read_only=true must use --dangerously-skip-permissions, not --read-only.
174
+
175
+ read_only is an internal PO control field (worktree vs no-worktree).
176
+ Claude Code CLI has no --read-only flag, so passing it would break execution.
177
+ """
173
178
  from parallel_orchestra import load_manifest, run_manifest
174
179
 
175
- # Set up a git repo in tmp_path so run_manifest can resolve git_root for write tasks.
176
- # We only have a read_only task, so git_root is not required.
177
180
  manifest_text = (
178
181
  "---\n"
179
182
  "po_plan_version: \"0.1\"\n"
@@ -206,7 +209,6 @@ def test_readonly_task_gets_read_only_flag(tmp_path, monkeypatch):
206
209
 
207
210
  monkeypatch.setattr(subprocess, "Popen", FakePopen)
208
211
 
209
- # Disable the dashboard to avoid TTY issues in CI
210
212
  fake_stderr = io.StringIO()
211
213
  fake_stderr.isatty = lambda: False # type: ignore[attr-defined]
212
214
  monkeypatch.setattr(sys, "stderr", fake_stderr)
@@ -217,11 +219,11 @@ def test_readonly_task_gets_read_only_flag(tmp_path, monkeypatch):
217
219
  assert captured_commands, "No subprocess.Popen calls were recorded"
218
220
 
219
221
  task_cmd = captured_commands[0]
220
- assert "--read-only" in task_cmd, (
221
- f"--read-only was not found in command: {task_cmd}"
222
+ assert "--dangerously-skip-permissions" in task_cmd, (
223
+ f"--dangerously-skip-permissions was not found in read_only=true command: {task_cmd}"
222
224
  )
223
- assert "--dangerously-skip-permissions" not in task_cmd, (
224
- f"--dangerously-skip-permissions was found in read_only=true command: {task_cmd}"
225
+ assert "--read-only" not in task_cmd, (
226
+ f"--read-only (non-existent Claude flag) was found in command: {task_cmd}"
225
227
  )
226
228
 
227
229