claude-code-conductor 2.78.0__tar.gz → 2.80.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.
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/CLAUDE.md +16 -2
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/developer.md +5 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/interviewer.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/planner.md +2 -3
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/systematic-debugger.md +6 -29
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/tester.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/wt_developer.md +5 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/wt_systematic-debugger.md +6 -29
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/wt_tester.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/breaking-changes.txt +1 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/deletions.txt +4 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/rules/judgment-principles.md +2 -6
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/autonomous-mode/SKILL.md +29 -41
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/brainstorm/SKILL.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/SKILL.md +27 -27
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/design-rubric.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/interview-rubric.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +25 -12
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/record-protocol.md +2 -2
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/extract-lib/SKILL.md +8 -36
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/init-session/SKILL.md +9 -9
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/parallel-agents/SKILL.md +20 -18
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/pattern-status/SKILL.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/setup/SKILL.md +6 -13
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/start/SKILL.md +1 -1
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/CHANGELOG.md +82 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/PKG-INFO +3 -5
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/README.md +2 -4
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/__init__.py +1 -1
- claude_code_conductor-2.80.0/tests/skills/test_existing_test_policy.py +606 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_no_bare_python_launcher.py +12 -14
- claude_code_conductor-2.78.0/.claude/skills/codex-review/SKILL.md +0 -211
- claude_code_conductor-2.78.0/.claude/skills/mcp-config/SKILL.md +0 -332
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/.gitignore +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/design-critic.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/autonomous-mode-onboarding.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/config-policy.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/nul-boundary.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/parallel-agents-setup.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/docs/settings.json.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/_hook_utils.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/check_agent_invocation.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/patterns_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/planner_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/recall_autorebuild.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/recall_inject.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/report_contract_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/report_path_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/select_tier.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/session_mode_watch.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/session_stop.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/tier_autoapply.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/tier_gap_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/memory/archive/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/memory/sessions/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/reports/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/settings.json +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/autonomous-mode/scripts/mode_line.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/c3-omission-declaration.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/design-critic-rubric.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/reachability-map.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/scripts/detect_execution_verification.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/scripts/record_agent_outcome.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/init-session/scripts/session_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/recall/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/review-phase/SKILL.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/setup/reference.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/skills/start/scripts/archive_reports.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/state/setup_done.flag +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/tmp/.gitkeep +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.gitignore +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/ARCHITECTURE.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSES/fastembed-LICENSE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSES/fastembed-NOTICE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSES/numpy-LICENSE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSES/onnxruntime-LICENSE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/hatch_build.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/pyproject.toml +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/_db_params.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/_excludes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_metrics.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_recall.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_run.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_tier.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/cli_update.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/db.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/embedding.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/gitutil.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrate.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/001_initial.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/002_agent_cost_runs.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/003_tier_cost.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/004_agent_outcomes.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/005_drop_agent_tier_bandit.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/006_review_decisions_severity.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/007_review_decisions_resolution.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/008_drop_agent_runs.sql +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/README.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/migrations/__init__.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/pricing.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/question.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/recall_chunker.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/recall_index.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/refgraph.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/src/c3/usage_ingester.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/__init__.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/_pre_compact_helpers.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/_sync_semantics.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/conftest.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/fixtures/usage/README.md +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/fixtures/usage/mainline.jsonl +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/fixtures/usage/subagents/agent-deadbeef.jsonl +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/fixtures/usage/subagents/agent-deadbeef.meta.json +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_check_agent_invocation.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_detect_execution_verification.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_hook_utils.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_planner_check_dev.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_recall_autorebuild.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_recall_inject.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_record_agent_outcome.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_record_review_decision.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_report_path_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_select_tier.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_select_tier_escalation.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_session_start.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_session_stop.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_settings_tier_autoapply_registration.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_statusline_reconfigure_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_tier_autoapply.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_tier_gap_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/hooks/test_tier_security_fixes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/_skill_helpers.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_c3_omission_declaration.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_design_inventory_step.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_e0_verification_exit.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_init_session_no_task_type.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_marker_compliance.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_parallel_agents_skill_tier.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_planner_lightweight.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_reachability_map.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_recall_skill.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_session_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_setup_templates.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_start_skill_new_flow.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_archive_reports.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_audit_review_decisions.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_check_deletions.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_ci_workflows.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_claude_gitignore.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_doctor.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_doctor_launcher.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_entry.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_init.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_init_symlink_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_metrics.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_recall.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_run.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_tier.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_update_breaking_changes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_cli_update_deletions.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_db.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_db_connect_lint.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_embedding.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_extract_breaking_changes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_gitutil.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_hooks_stdin_idiom.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_init_only_patterns.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_mcp_server_elicit.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_migrate.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_mode_line.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_no_passonly_tests.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_nul_boundary_lint.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_patterns_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_permission_handler_removal.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_pricing.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_recall_chunker.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_recall_index.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_references_migration.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_refgraph.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_refgraph_query.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_refgraph_structural.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_report_contract_check.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_scripts_src_bootstrap.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_scripts_stdout_encoding.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_session_mode_watch.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_settings_hooks_registration.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_skill_no_builtin_conflict.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_start_skill_archive_contract.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_stop_agent_memory_warn.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_template_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_three_file_sync.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_usage_ingester.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_verify_wheel.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/tests/test_worktree_guard.py +0 -0
- {claude_code_conductor-2.78.0 → claude_code_conductor-2.80.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 経路に届いていない規約は存在しないのと同じ
|
|
@@ -43,14 +57,14 @@ C3 は、業務アプリケーション開発で製品としての品質を保
|
|
|
43
57
|
|
|
44
58
|
## Communication Style
|
|
45
59
|
|
|
46
|
-
-
|
|
60
|
+
- 応答は本題から始める
|
|
47
61
|
- 推測で話さない。事実・根拠のある内容のみ答える
|
|
48
62
|
- 不確かな場合は「確認が必要です」と明示する
|
|
49
63
|
- ルールを変更・省略する方が合理的だと判断した場合は、実行前にユーザーに確認する
|
|
50
64
|
|
|
51
65
|
## User Interaction Rules
|
|
52
66
|
|
|
53
|
-
-
|
|
67
|
+
- 長い出力・実装・設計を始める前に、計画を短く提示してユーザーの確認を取る
|
|
54
68
|
- 質問は1回に1つ。複数の質問を一度に投げない
|
|
55
69
|
- 選択肢を提示してユーザーが選びやすい形にする(AskUserQuestion を使う)
|
|
56
70
|
- 推測で進めない。不明点は確認してから動く
|
|
@@ -11,6 +11,10 @@ tools:
|
|
|
11
11
|
- Glob
|
|
12
12
|
- Grep
|
|
13
13
|
- TodoWrite
|
|
14
|
+
- TaskCreate
|
|
15
|
+
- TaskUpdate
|
|
16
|
+
- TaskList
|
|
17
|
+
- TaskGet
|
|
14
18
|
- Skill
|
|
15
19
|
---
|
|
16
20
|
|
|
@@ -48,7 +52,7 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
|
|
|
48
52
|
- 1タスク = 1コミットの粒度を保つ
|
|
49
53
|
- Green フェーズでは test-report の不合格テストを通す最小限のコードのみ書く(テストが要求しない機能追加・将来の拡張・ついでの改善は禁止)
|
|
50
54
|
- 最小限であっても**汎用解**を書く。テスト入力に hard-code して通すこと・特定テストケースだけに効く workaround は禁止。テストは正しさの検証であって解の定義ではないため、全ての valid input に対し正しい一般ロジックを実装する(「最小限」と「汎用解」は両立する: スコープを足さず・しかし test 入力に過適合しない)
|
|
51
|
-
-
|
|
55
|
+
- 設計上の不明点は、合理的な判断で進め、その判断を黙って埋めずにコードコメントに残す(例: `# 設計書に記載なし: ○○と判断して実装`)
|
|
52
56
|
- 実装完了後に判断した内容を報告してユーザーが確認できるようにする
|
|
53
57
|
- 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
|
|
54
58
|
- 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
|
|
@@ -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`
|
|
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,10 +58,9 @@ 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 を出力しない(適用射程は分類表に従う)
|
|
62
61
|
- 自動検査対象に違反する plan-report を出力しない:
|
|
63
62
|
- R2/R4/R6(配布対象): `.claude/hooks/planner_check.py` が PostToolUse で WARN を出す
|
|
64
|
-
- R3(C3 固有): `.dev/hooks/_planner_check.py` が PostToolUse で exit 2
|
|
63
|
+
- R3(C3 固有): `.dev/hooks/_planner_check.py` が PostToolUse で exit 2 ブロック(配布元のみ。利用先には存在しない)
|
|
65
64
|
- R5(worktree 違反): `.claude/hooks/check_agent_invocation.py` が Agent ツール呼び出し時に exit 2 ブロック
|
|
66
65
|
|
|
67
66
|
## Related Agents
|
{claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/systematic-debugger.md
RENAMED
|
@@ -29,8 +29,7 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
|
|
|
29
29
|
|
|
30
30
|
✅ 担当すること:
|
|
31
31
|
- debug-needed-report の読み込みと状況把握
|
|
32
|
-
-
|
|
33
|
-
- Phase 2: 動いている類似コードとの差分分析
|
|
32
|
+
- エラーの再現と、最近の変更・動いている類似コードとの差分からの原因調査
|
|
34
33
|
- 根本原因の特定と仮説の提示
|
|
35
34
|
- debug-analysis-report の出力
|
|
36
35
|
|
|
@@ -48,33 +47,11 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
|
|
|
48
47
|
- 試みたアプローチと失敗の内容
|
|
49
48
|
- エラーメッセージ・スタックトレース
|
|
50
49
|
|
|
51
|
-
### Step 2:
|
|
50
|
+
### Step 2: 根本原因の特定
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
- エラーメッセージ・スタックトレースを詳細に読む
|
|
55
|
-
- ファイルパス・行番号・エラーコードを記録する
|
|
52
|
+
エラーを再現するコマンドを Bash で実行し、その出力を証拠として原因を特定する(推測で書かない)。調査経路(エラーメッセージ・スタックトレース、最近の変更〔`git diff` / `git log`〕、呼び出し元・依存関係、動いている類似コードとの差分など)は状況に応じて選び、レポートの「根本原因」「証拠」「類似コードとの差分」を埋められるだけの証拠を集める。
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
- Bash でエラーを再現するコマンドを実行する(テスト実行・ビルド等)
|
|
59
|
-
- 実際の出力を記録する(推測で書かない。実行証拠を使う)
|
|
60
|
-
|
|
61
|
-
**2-3: 最近の変更確認**
|
|
62
|
-
- `git diff HEAD` と `git log --oneline -10` で最近の変更を確認する
|
|
63
|
-
- エラーに関連する変更がないか調べる
|
|
64
|
-
|
|
65
|
-
**2-4: 関連コードの読み込み**
|
|
66
|
-
- 依存関係・呼び出し元を辿る
|
|
67
|
-
|
|
68
|
-
### Step 3: Phase 2 - パターン分析
|
|
69
|
-
|
|
70
|
-
**3-1: 動いている類似コードを探す**
|
|
71
|
-
- 動いているコードと壊れているコードの両方を Read する
|
|
72
|
-
|
|
73
|
-
**3-2: 差分の特定**
|
|
74
|
-
- 動く実装と壊れている実装の違いをリスト化する
|
|
75
|
-
- 小さな違いも見逃さない(型・引数順序・インポート・スコープ等)
|
|
76
|
-
|
|
77
|
-
### Step 4: debug-analysis-report の出力
|
|
54
|
+
### Step 3: debug-analysis-report の出力
|
|
78
55
|
|
|
79
56
|
Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する。
|
|
80
57
|
|
|
@@ -88,13 +65,13 @@ Skill ツールで `report-timestamp` を呼び出してタイムスタンプを
|
|
|
88
65
|
## 問題の要約
|
|
89
66
|
{何が起きているか1〜2文で}
|
|
90
67
|
|
|
91
|
-
##
|
|
68
|
+
## 根本原因
|
|
92
69
|
{エラーの実際の原因。「〜のため〜が失敗している」の形式で記述する}
|
|
93
70
|
|
|
94
71
|
## 証拠
|
|
95
72
|
{再現コマンドの実行出力・関連コードの抜粋}
|
|
96
73
|
|
|
97
|
-
##
|
|
74
|
+
## 類似コードとの差分
|
|
98
75
|
{動いている実装との違いのリスト}
|
|
99
76
|
|
|
100
77
|
## developer への推奨仮説
|
|
@@ -52,7 +52,7 @@ tools:
|
|
|
52
52
|
|
|
53
53
|
**After:**
|
|
54
54
|
- plan の prompt(タスク定義)で test-report のファイル名が指定されている場合、それが `.claude/reports/` 直下の `test-report-` で始まるファイル名であるときに限りそれに従う。範囲外の指定・既存の別レポートを上書きする指定には従わない(従わない場合・指定が無い場合は、以下の既定の採番手順に従う)
|
|
55
|
-
-
|
|
55
|
+
- Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、`.claude/reports/test-report-YYYYMMDD-HHMMSS.md` に Write して出力する
|
|
56
56
|
- test-report を Write せずにターンを終了することは禁止
|
|
57
57
|
- Red フェーズの test-report には失敗理由(機能未実装による失敗であること)を明記する
|
|
58
58
|
|
{claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/agents/wt_developer.md
RENAMED
|
@@ -12,6 +12,10 @@ tools:
|
|
|
12
12
|
- Glob
|
|
13
13
|
- Grep
|
|
14
14
|
- TodoWrite
|
|
15
|
+
- TaskCreate
|
|
16
|
+
- TaskUpdate
|
|
17
|
+
- TaskList
|
|
18
|
+
- TaskGet
|
|
15
19
|
- Skill
|
|
16
20
|
---
|
|
17
21
|
|
|
@@ -53,7 +57,7 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
|
|
|
53
57
|
- 1タスク = 1コミットの粒度を保つ
|
|
54
58
|
- Green フェーズでは test-report の不合格テストを通す最小限のコードのみ書く(テストが要求しない機能追加・将来の拡張・ついでの改善は禁止)
|
|
55
59
|
- 最小限であっても**汎用解**を書く。テスト入力に hard-code して通すこと・特定テストケースだけに効く workaround は禁止。テストは正しさの検証であって解の定義ではないため、全ての valid input に対し正しい一般ロジックを実装する(「最小限」と「汎用解」は両立する: スコープを足さず・しかし test 入力に過適合しない)
|
|
56
|
-
-
|
|
60
|
+
- 設計上の不明点は、合理的な判断で進め、その判断を黙って埋めずにコードコメントに残す(例: `# 設計書に記載なし: ○○と判断して実装`)
|
|
57
61
|
- 実装完了後に判断した内容を報告してユーザーが確認できるようにする
|
|
58
62
|
- 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
|
|
59
63
|
- 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
|
|
@@ -34,8 +34,7 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
|
|
|
34
34
|
|
|
35
35
|
✅ 担当すること:
|
|
36
36
|
- debug-needed-report の読み込みと状況把握
|
|
37
|
-
-
|
|
38
|
-
- Phase 2: 動いている類似コードとの差分分析
|
|
37
|
+
- エラーの再現と、最近の変更・動いている類似コードとの差分からの原因調査
|
|
39
38
|
- 根本原因の特定と仮説の提示
|
|
40
39
|
- debug-analysis-report の出力
|
|
41
40
|
|
|
@@ -53,33 +52,11 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
|
|
|
53
52
|
- 試みたアプローチと失敗の内容
|
|
54
53
|
- エラーメッセージ・スタックトレース
|
|
55
54
|
|
|
56
|
-
### Step 2:
|
|
55
|
+
### Step 2: 根本原因の特定
|
|
57
56
|
|
|
58
|
-
|
|
59
|
-
- エラーメッセージ・スタックトレースを詳細に読む
|
|
60
|
-
- ファイルパス・行番号・エラーコードを記録する
|
|
57
|
+
エラーを再現するコマンドを Bash で実行し、その出力を証拠として原因を特定する(推測で書かない)。調査経路(エラーメッセージ・スタックトレース、最近の変更〔`git diff` / `git log`〕、呼び出し元・依存関係、動いている類似コードとの差分など)は状況に応じて選び、レポートの「根本原因」「証拠」「類似コードとの差分」を埋められるだけの証拠を集める。
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
- Bash でエラーを再現するコマンドを実行する(テスト実行・ビルド等)
|
|
64
|
-
- 実際の出力を記録する(推測で書かない。実行証拠を使う)
|
|
65
|
-
|
|
66
|
-
**2-3: 最近の変更確認**
|
|
67
|
-
- `git diff HEAD` と `git log --oneline -10` で最近の変更を確認する
|
|
68
|
-
- エラーに関連する変更がないか調べる
|
|
69
|
-
|
|
70
|
-
**2-4: 関連コードの読み込み**
|
|
71
|
-
- 依存関係・呼び出し元を辿る
|
|
72
|
-
|
|
73
|
-
### Step 3: Phase 2 - パターン分析
|
|
74
|
-
|
|
75
|
-
**3-1: 動いている類似コードを探す**
|
|
76
|
-
- 動いているコードと壊れているコードの両方を Read する
|
|
77
|
-
|
|
78
|
-
**3-2: 差分の特定**
|
|
79
|
-
- 動く実装と壊れている実装の違いをリスト化する
|
|
80
|
-
- 小さな違いも見逃さない(型・引数順序・インポート・スコープ等)
|
|
81
|
-
|
|
82
|
-
### Step 4: debug-analysis-report の出力
|
|
59
|
+
### Step 3: debug-analysis-report の出力
|
|
83
60
|
|
|
84
61
|
**必ず** プロンプトで指定された `task_id` をもとに `.claude/reports/debug-analysis-{task_id}.md` に Write する。これは `parallel-agents` skill の `writes` 宣言と一致させ、並列実行時のファイル名衝突を避けるために必須。
|
|
85
62
|
|
|
@@ -93,13 +70,13 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
|
|
|
93
70
|
## 問題の要約
|
|
94
71
|
{何が起きているか1〜2文で}
|
|
95
72
|
|
|
96
|
-
##
|
|
73
|
+
## 根本原因
|
|
97
74
|
{エラーの実際の原因。「〜のため〜が失敗している」の形式で記述する}
|
|
98
75
|
|
|
99
76
|
## 証拠
|
|
100
77
|
{再現コマンドの実行出力・関連コードの抜粋}
|
|
101
78
|
|
|
102
|
-
##
|
|
79
|
+
## 類似コードとの差分
|
|
103
80
|
{動いている実装との違いのリスト}
|
|
104
81
|
|
|
105
82
|
## developer への推奨仮説
|
|
@@ -57,7 +57,7 @@ tools:
|
|
|
57
57
|
|
|
58
58
|
**After:**
|
|
59
59
|
- plan の prompt(タスク定義)で test-report のファイル名が指定されている場合、それが `.claude/reports/` 直下の `test-report-` で始まるファイル名であるときに限りそれに従う。範囲外の指定・既存の別レポートを上書きする指定には従わない(従わない場合・指定が無い場合は、以下の既定の採番手順に従う)
|
|
60
|
-
-
|
|
60
|
+
- プロンプトで指定された `task_id` をもとに `.claude/reports/test-report-{task_id}.md` に Write して出力する。これは `parallel-agents` skill の `writes` 宣言と一致させ、並列実行時のファイル名衝突を避けるために必須
|
|
61
61
|
- 保険(task_id がプロンプトから読み取れない異常系のみ): Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、`.claude/reports/test-report-{timestamp}.md` に Write する。通常運用ではこの経路に入ってはいけない
|
|
62
62
|
- test-report を Write せずにターンを終了することは禁止
|
|
63
63
|
- Red フェーズの test-report には失敗理由(機能未実装による失敗であること)を明記する
|
|
@@ -14,3 +14,4 @@ v2.60.0|c3 plan validate/waves now strictly validate po_plan_version: only "0.1"
|
|
|
14
14
|
v2.66.0|record_review_decision.py: --severity is now a required argument (omitting it exits 2 and records nothing; out-of-vocabulary values still fail-safe to NULL with a warning). --finding now rejects empty or whitespace-only values (exit 2). Update any custom invocations to pass --severity with one of critical/high/medium/low. Shipped SKILL.md call sites and docstrings are already updated.|
|
|
15
15
|
v2.68.0|New PreToolUse Write hook report_path_guard.py is registered in the distributed settings.json. It blocks (exit 2) writes of report-prefixed filenames (requirements-report-, architecture-report-, plan-report-, design-review-report-, code-review-report-, security-review-report-, test-report-, debug-analysis-, debug-needed-) outside .claude/reports/, overwrites of existing timestamp-named reports, and non-timestamp naming for the strict 4 report types. Ordinary files whose names start with those prefixes can no longer be written outside .claude/reports/. Set C3_REPORT_GUARD_DISABLE=1 to bypass, or remove the hook registration from settings.json.|レポート 9 prefix 名ファイルの .claude/reports/ 外への Write・タイムスタンプ形式既存レポートの上書き・strict-4 の非タイムスタンプ命名を exit 2 で block する report_path_guard hook を配布 settings.json に登録。対象 prefix 名の一般ファイルも block されうる。回避は C3_REPORT_GUARD_DISABLE=1 または settings.json から登録を外す。
|
|
16
16
|
v2.72.0|Removed the C3 PermissionRequest hook suite (permission_handler.py, permission_handler_toast.py, permission_rules.json) and the [notify] extra, superseded by upstream auto mode and permissions.allow. If you have not yet copied your auto_allow patterns from .claude/permission_rules.json, answer N (default) at the upcoming deletion prompt, copy them into permissions.allow in .claude/settings.local.json (personal, not the shared settings.json; same syntax; upstream checks each separator-delimited subcommand of compound commands independently, but command substitution handling is unverified -- narrow broad Bash wildcards to the minimum prefix; copying is a must where auto mode is unavailable), then rerun c3 update. windows-toasts can be uninstalled.|C3 の PermissionRequest hook 一式(permission_handler.py・permission_handler_toast.py・permission_rules.json)と [notify] extra を削除しました(上流 auto mode / permissions.allow へ委譲)。auto_allow パターンを未転記の場合は、この後の削除プロンプトで N(既定)を選び、.claude/permission_rules.json の内容を .claude/settings.local.json(個人設定・共有の settings.json ではない)の permissions.allow へ転記してから c3 update を再実行してください(書式は同一。上流は複合コマンドをセパレータ単位で独立照合しますが、コマンド置換〔$() 等〕の扱いは未確認のため、広い Bash ワイルドカードは必要最小のプレフィックスへ狭めること。auto mode が使えない環境では転記必須)。windows-toasts はアンインストール可。
|
|
17
|
+
v2.80.0|Removed the mcp-config and codex-review skills. mcp-config wrote MCP server definitions to mcpServers in .claude/settings.json, which is not a documented location for MCP server definitions (project scope belongs in .mcp.json, local scope in ~/.claude.json), so servers registered with it were likely never loaded; use the built-in /mcp or 'claude mcp add' instead. The Codex adapter output (c3 init --platform codex) is unchanged. c3 update offers the two SKILL.md files for deletion.|mcp-config / codex-review skill を削除しました。mcp-config は MCP サーバー定義を .claude/settings.json の mcpServers に書いていましたが、そこは公式に記載された MCP サーバーの置き場所ではなく(プロジェクトスコープは .mcp.json、ローカルは ~/.claude.json)、登録したサーバーは読み込まれていなかった可能性が高いです。MCP サーバーの追加は標準の /mcp または claude mcp add を使ってください。Codex adapter(c3 init --platform codex)の生成物は変更ありません。c3 update 実行時に両 SKILL.md が削除候補として提示されます。
|
|
@@ -92,3 +92,7 @@ skills/dev-workflow/scripts/record_tier_outcome.py
|
|
|
92
92
|
hooks/permission_handler.py
|
|
93
93
|
hooks/permission_handler_toast.py
|
|
94
94
|
permission_rules.json
|
|
95
|
+
|
|
96
|
+
# ---- v2.80.0: mcp-config / codex-review skill 廃止 ----
|
|
97
|
+
skills/mcp-config/SKILL.md
|
|
98
|
+
skills/codex-review/SKILL.md
|
{claude_code_conductor-2.78.0 → claude_code_conductor-2.80.0}/.claude/rules/judgment-principles.md
RENAMED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
# 判定・検証の判断原則
|
|
2
2
|
|
|
3
|
-
判定・検証を行う際に守る 3
|
|
3
|
+
判定・検証を行う際に守る 3 つの規律。
|
|
4
4
|
|
|
5
5
|
## 1. 安全側に倒す
|
|
6
6
|
|
|
7
7
|
「現状 0 hit だから実装しない」判断はせず、安全側に倒す。
|
|
8
8
|
|
|
9
|
-
実例: 2026-08-06 のユーザー裁定で、根拠不足のまま省略した判断 2 件を是正し、件数を見ずに沈黙していた判断をさらに 2 件検出した。
|
|
10
|
-
|
|
11
9
|
## 2. 到達可能性の判定
|
|
12
10
|
|
|
13
11
|
到達可能性は「参照 0 件」でなく「発火しうる経路が無い」で判定する(削除・影響判定の規約)。当たるべき経路=動的ロード / subprocess / 名前写像 / 設定 JSON 登録・monkeypatch 対象の導出タイミング(呼び出し時か import 時か)・ローカル skip テストは「実行されていない」前提で判定・探索ツールの射程を明示する(gitignored 配下は rg で 0 件・grep -rn でヒットし、真偽が道具で反転する)。
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
誤判定は CI の全構成を赤にしうる。
|
|
16
14
|
|
|
17
15
|
## 3. 機械走査の 3 点申告
|
|
18
16
|
|
|
19
17
|
機械走査を名乗るときは 3 点を申告する: (a) 走査対象の形式を全部数えて申告(表行・引用ブロック・見出し・本文) (b) 版順の根拠を明示(ファイル名順とは限らない) (c) 検証が測っている性質を書く(「バイト一致」は書き写しの正確さであって拾う版の正しさではない)。
|
|
20
|
-
|
|
21
|
-
実例: 2026-08-07 の集約・移設作業で「畳む」工程の取り落としを 3 回連続で実測した。
|
|
@@ -21,13 +21,13 @@ mode-value ::= autonomous-decl | "HITL" ; 行が無い/空/"HITL"
|
|
|
21
21
|
autonomous-decl ::= "自律" SP plan-ref [SP cycle-state]
|
|
22
22
|
plan-ref ::= "plan=" plan-path
|
|
23
23
|
plan-path ::= abs-path | home-plans-path | quoted-path
|
|
24
|
-
;
|
|
24
|
+
; 委任プランの永続先はリポジトリ外・ハーネス管理領域の絶対パス
|
|
25
25
|
abs-path ::= <OS 絶対パス> ; 例: <ホームディレクトリ>\.claude\plans\dazzling-cooking-dusk.md
|
|
26
26
|
home-plans-path ::= "~/.claude/plans/" file ; 上記の ~ 展開形(可搬表記・~ は $HOME/.claude/plans/ へ展開)
|
|
27
27
|
quoted-path ::= DQUOTE 1*pchar DQUOTE ; スペース入りパス対応(例: "<パス>/my plan.md")
|
|
28
28
|
cycle-state ::= "cycles=" gate-count *( "," gate-count ) ; 任意・揮発耐性の補助
|
|
29
29
|
gate-count ::= gate-id "/" 1*DIGIT *("+" 1*DIGIT) ; 例: C-3/2 E/1 C-3/5+2+1
|
|
30
|
-
gate-id ::= "C-3" | "E" ; "E" は E-1+E-2+E-3 を 1 セットとした周回集約 ID。承認ゲート ID の E-3
|
|
30
|
+
gate-id ::= "C-3" | "E" ; "E" は E-1+E-2+E-3 を 1 セットとした周回集約 ID。承認ゲート ID の E-3 とは別語彙
|
|
31
31
|
SP ::= " "
|
|
32
32
|
LF ::= "\n"
|
|
33
33
|
DQUOTE ::= '"'
|
|
@@ -78,16 +78,16 @@ D-0(実行モード自動判別)は AskUserQuestion を持たないステッ
|
|
|
78
78
|
承認ゲート 9 個の集合には含めない。自律モードでも**判別ロジックは不変**(HITL と同じ)で、ゲート付け替えの対象ではない。
|
|
79
79
|
|
|
80
80
|
**E-0(実行検証判定)は承認ゲートではない**(別枠): E-0 は AskUserQuestion を持たない判定ステップであり、
|
|
81
|
-
承認ゲート 9 個の集合には含めない。ただし**自律モードでも UNKNOWN・NEEDS_VERIFY は例外なく tester を起動する**(fail-safe
|
|
82
|
-
E-0 起因の差し戻しは E 周回として 1 消費する(CR/SR
|
|
81
|
+
承認ゲート 9 個の集合には含めない。ただし**自律モードでも UNKNOWN・NEEDS_VERIFY は例外なく tester を起動する**(fail-safe 原則)。
|
|
82
|
+
E-0 起因の差し戻しは E 周回として 1 消費する(CR/SR セットを伴わない周回)。
|
|
83
83
|
|
|
84
84
|
**findings 分岐の固定**(C-3 / E-3 共通): これら 2 ゲートの findings 分岐 AskUserQuestion には HITL で
|
|
85
85
|
「全て対応する/対応する指摘を選ぶ/全て許容して進む/再監査(再レビュー)」の選択肢があるが、
|
|
86
86
|
**自律モードでは原則「全て対応する」を選ぶ**。「全て許容して進む」を選んでよいのは、
|
|
87
87
|
**C-3 において High/Medium が 0 で Low のみが残ったサイクル(=C-3 の収束条件を満たした場合)に限る**。
|
|
88
|
-
**この例外は C-3 に限る**。E-3
|
|
88
|
+
**この例外は C-3 に限る**。E-3 にはこの例外を適用しない(「全て許容」を選ばない)。
|
|
89
89
|
**High/Medium を許容で流すことは引き続き構造的に禁じる**(空収束防止)。
|
|
90
|
-
|
|
90
|
+
許容という価値判断がこの例外に当てはまらない場合は、**人間の関所へエスカレーション**する。
|
|
91
91
|
|
|
92
92
|
**dev-workflow C-3 のステップ 0(転記行の確認)は HITL 専用**: dev-workflow SKILL.md の C-3 ステップ 0 で転記行 2 種(C-3省略宣言 / C-3監査要求)を評価するステップと、これらの転記行を生成する C-2 の C-3省略宣言ブロックは HITL 専用。自律モードでは C-3 全体が本表に従い、差し戻し後も design-critic を必ず起動する(上限 2 サイクルの別枠・本表の C-3 行のとおり)。転記行 2 種の生成・評価も行わない。理由: 自律は人間の承認の目が無いため機械監査を厚く保つ。
|
|
93
93
|
|
|
@@ -95,7 +95,7 @@ E-0 起因の差し戻しは E 周回として 1 消費する(CR/SR セット
|
|
|
95
95
|
|
|
96
96
|
| サイクルの状態 | 分岐 |
|
|
97
97
|
|---|---|
|
|
98
|
-
| High/Medium が 1 件以上 |
|
|
98
|
+
| High/Medium が 1 件以上 | 「全て対応する」を選ぶ(Low も含めて `[対応予定]`)。層別ルーティングで上流へ戻る=未収束 |
|
|
99
99
|
| High/Medium 0・Low が 1 件以上(=収束) | 残る Low を「全て許容して進む」で処理する。許容理由は「C-3 収束条件(High/Medium 0)を満たしたため、残る Low は実装フェーズ以降で扱う」と記録し、`.claude/skills/dev-workflow/scripts/record_review_decision.py --decision accepted --severity low` で残す(`--severity` は必須引数)。フェーズ D へ進む |
|
|
100
100
|
| findings 0 | そのままフェーズ D へ |
|
|
101
101
|
|
|
@@ -111,6 +111,7 @@ E-0 起因の差し戻しは E 周回として 1 消費する(CR/SR セット
|
|
|
111
111
|
|
|
112
112
|
1. **非可逆操作**(git commit/push/tag/release・ファイル削除)は常に人間のまま。
|
|
113
113
|
- **検証用ビルド足場の作成と後始末は含まない**(`git worktree add/remove`・`dist/` 空化・一時ファイル)
|
|
114
|
+
- **parallel-agents 2-F-2 の wave ごとのローカルコミットは含まない**(plan-report の承認で許可済み。push はしない)
|
|
114
115
|
|
|
115
116
|
2. **情報不足の質問**(質問出口に人間が必要な場合・下記「質問プロトコル」参照)は人間のまま
|
|
116
117
|
|
|
@@ -126,7 +127,7 @@ E findings の修正も「C 差し戻し → D-2 developer」の正規ルート
|
|
|
126
127
|
**理由**: 自分のミスの是正であることは、**独立実装レイヤーを外す理由にならない**。
|
|
127
128
|
むしろ直前に判断ミスを示した当人であるほど、独立した実装者を通す価値が高い。
|
|
128
129
|
|
|
129
|
-
**親の職掌(閉じた列挙)**: 以下
|
|
130
|
+
**親の職掌(閉じた列挙)**: 以下 6 種**のみ**が親の直接操作を許される。
|
|
130
131
|
**列挙外のファイル変更**はすべて担当エージェント経由とする(実装・ソースは developer / テストコードと test-report は tester):
|
|
131
132
|
|
|
132
133
|
1. `.claude/reports/` 配下のうち、**親 Claude がペルソナとして執筆するレポート**(requirements-report / architecture-report / plan-report)の Write。
|
|
@@ -139,14 +140,18 @@ E findings の修正も「C 差し戻し → D-2 developer」の正規ルート
|
|
|
139
140
|
4. `.claude/memory/sessions/*.tmp`(セッションファイル)の更新
|
|
140
141
|
5. `.claude/reports/loop-impl-gaps-*.md`(gaps 台帳)への追記
|
|
141
142
|
6. git 操作のうち**非可逆操作**(commit / push / tag / release・ファイル削除)は**人間の関所 1 の下でのみ**。
|
|
142
|
-
ただし**検証用ビルド足場は関所の対象外**であり(`git worktree add/remove`・`dist/`
|
|
143
|
+
ただし**検証用ビルド足場は関所の対象外**であり(`git worktree add/remove`・`dist/` 空化・一時ファイル)、親が実施してよい。
|
|
144
|
+
parallel-agents 2-F-2 の wave ごとのローカルコミットも plan-report の承認で許可済みとして親が実施する(push はしない)
|
|
143
145
|
|
|
144
146
|
**リリース手続きの主体**: CHANGELOG.md の追記は developer 経由
|
|
145
147
|
(`.claude/breaking-changes.txt` / `.claude/deletions.txt` の更新も同じく列挙外=developer 経由)。
|
|
146
148
|
タグ・push・Release は**人間の関所 1**。
|
|
147
149
|
|
|
148
|
-
**逸脱時の処置**:
|
|
149
|
-
|
|
150
|
+
**逸脱時の処置**: まず**親の直接変更を破棄してから再実行する**。
|
|
151
|
+
破棄は親が加えた変更だけを Edit で逆適用して戻すのを既定とする。
|
|
152
|
+
`git checkout -- <path>` はファイル単位で全差分を消すため、`git diff <path>` に親の変更以外の差分が無いと確認できた場合に限る
|
|
153
|
+
(developer の未コミット成果を巻き込まないため)。非追跡ファイルは変更前の退避があれば復元する。
|
|
154
|
+
いずれも判断できなければ関所 2 へ倒して人間の判断を仰ぐ。
|
|
150
155
|
そのうえでフェーズ別に:
|
|
151
156
|
|
|
152
157
|
- **D 中の逸脱** → 当該タスクを developer で再実行
|
|
@@ -186,12 +191,12 @@ E findings の修正も「C 差し戻し → D-2 developer」の正規ルート
|
|
|
186
191
|
|
|
187
192
|
- **理由**: モード行の有効性判定(3 条件)は「plan が構文的に正しく実在するか」しか検証せず、
|
|
188
193
|
**正規のプランモード承認セレモニーを経たかは検証しない**。
|
|
189
|
-
session.tmp へのモード行挿入自体は親の職掌(item
|
|
194
|
+
session.tmp へのモード行挿入自体は親の職掌(item 4)で無条件に許可されているため、
|
|
190
195
|
判定を通る形のモード行が承認なしに書かれると自律運転が成立してしまう。
|
|
191
|
-
|
|
196
|
+
走行中の usage 停止を行わないため、この場合に**コミット直前まで人間が一度も介在しない**状態まで露出が広がった
|
|
192
197
|
- **限界**: これは文書上の不変則であり**機械的強制ではない**。
|
|
193
|
-
有効性判定への組み込みは `.claude/skills/autonomous-mode/scripts/mode_line.py`
|
|
194
|
-
|
|
198
|
+
有効性判定への組み込みは `.claude/skills/autonomous-mode/scripts/mode_line.py` の変更を要するため、現時点では実装していない(未解決の限界)。
|
|
199
|
+
機械的な承認バインドは独立タスクで扱う
|
|
195
200
|
|
|
196
201
|
**設計判断**: 日付跨ぎで自律が自動継続しないのは「揮発耐性」と一見矛盾するが、
|
|
197
202
|
**同一タスクは同日内に完結する運用**であり、かつ「自律の自動継続を跨がせない」ことは
|
|
@@ -233,8 +238,7 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
233
238
|
|
|
234
239
|
**不変則**: 親 Claude は**資源同意節を欠くプランで自律 opt-in を成立させてはならない**。欠落を発見した場合は関所 2 へ倒す。
|
|
235
240
|
|
|
236
|
-
|
|
237
|
-
放置すると「資源同意を一度も取得せず、かつ走行中の停止も廃止された」状態が成立する。したがって
|
|
241
|
+
**復帰時チェック**: 有効性判定は資源同意節の有無を見ないため、資源同意節を持たない委任プランでも判定は通る。したがって
|
|
238
242
|
**復帰のたびに資源同意節の有無を確認する**(init-session 経由でモード行から運転を継続する時)。
|
|
239
243
|
無ければ関所 2 へ倒し、人間の確認を得てから継続する。
|
|
240
244
|
「1 度だけ」を採らないのは、復帰が 1 運転中に何度も起きる(コンパクト・セッション交代)ためであり、
|
|
@@ -248,9 +252,9 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
248
252
|
コンパクト後も復元するためのフィールド。
|
|
249
253
|
|
|
250
254
|
- **更新の不変則**: C-3 の各サイクル完了時・E の各周回完了時に、モード行の cycles= を Edit で更新する
|
|
251
|
-
-
|
|
255
|
+
- **表記**: E→C 差し戻し後の再監査に対応するため、`gate-count` は初回消費を記録し、差し戻しごとに `+<当該ブロックの消費数>` を末尾に追記する形式(例: `C-3/5+2+1` = 初回 5、差し戻し 1 回目で 2、差し戻し 2 回目で 1 を消費)。この表記により、復帰後の残枠が一意に復元可能になる(差し戻し回数と末尾要素から小上限 2 との差で算出)
|
|
252
256
|
- **上限の総量規定**: 初回 C-3 は上限 5 サイクル。E 上限が 5 周のため、E→C 差し戻しは最大 4 回発生可能 → 再監査枠は差し戻しごとに上限 2 サイクルの別枠 → 総量の機械的上界は 5 + (4 × 2) = 13 サイクル(無限ループにならない。資源同意節に反映される)
|
|
253
|
-
- **文法と運用の二層関係**: BNF 上は `[SP cycle-state]`
|
|
257
|
+
- **文法と運用の二層関係**: BNF 上は `[SP cycle-state]` で省略可だが、運用規約上は自律運転中 required とする。スキーマ上 optional・ポリシー上 required という二層関係であり矛盾しない
|
|
254
258
|
- **執行の限界**: ハードリミットの執行点は親 Claude が本 skill の上限(C-3 初回 5 / 差し戻し後 2 / E=5)と突き合わせて判断する。**執行はソフト規約であり機械執行ではない**。cycles= を欠いたまま揮発すると 0 起点で再カウントされる。更新主体と揮発原因がともに親であるため、**更新漏れは構造的に残る**
|
|
255
259
|
- **復帰時チェック(資源同意節と対称)**: **復帰のたびに cycles= の有無を確認する**。欠落していれば関所 2 へ倒す。欠落は検出できるが**値の正しさは検証できない**
|
|
256
260
|
|
|
@@ -280,7 +284,7 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
280
284
|
C-3 でも同じ規律を適用し、収束判定の前に **design-review-report の High/Medium 件数**を本文から数え直してサマリ表の数値と突合する。
|
|
281
285
|
さらに C-3 では、件数の数え直しに加えて **High/Medium 0 と判定したサイクルに限り**、
|
|
282
286
|
**Low に落ちている findings の重要度が妥当か**を親が 1 度確認する。妥当性に疑義があれば**収束させず次サイクルへ回す**。
|
|
283
|
-
|
|
287
|
+
これは収束条件を High/Medium 0 としたことに伴うトレードオフに対する唯一の担保であり、
|
|
284
288
|
design-critic の重要度付与が粗く、本来 High のものが Medium/Low に落ちて収束が早まる事態を防ぐためのもの
|
|
285
289
|
|
|
286
290
|
- **対応案の前提裏取り**: 裏取りの対象は、(a) レビューが提示した対応案の理由文に現れる事実主張、**(b) 親 Claude 自身が新設する是正策・検査・成功条件・テスト仕様が依拠する事実主張(規約・設計文書に書く事実主張を含む)** の両方とする
|
|
@@ -305,8 +309,7 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
305
309
|
|
|
306
310
|
## 実装・レビューの必須チェック
|
|
307
311
|
|
|
308
|
-
|
|
309
|
-
詳細はリンク先を参照:
|
|
312
|
+
以下 3 一般則を実装・レビューで執行する。
|
|
310
313
|
|
|
311
314
|
### (a) NUL 境界
|
|
312
315
|
|
|
@@ -317,14 +320,10 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
317
320
|
- 宣言マーカー: `# nul-boundary: allow(<理由>)` を対象コードの行末に配置
|
|
318
321
|
- ユーザー向け説明: `.claude/docs/nul-boundary.md` — マーカーの書き方・配置規則・既知の限界 L-1〜L-7
|
|
319
322
|
|
|
320
|
-
|
|
321
|
-
- auto-memory `feedback_nul_boundary_for_machine_readable_line_sets` — 一般則の背景と理由(6 例の履歴)
|
|
322
|
-
- architecture-report §2-5 / §5 — 設計詳細・言語学的背景・トレードオフ
|
|
323
|
-
|
|
324
|
-
### (b) パス用 choke point(新規防御)
|
|
323
|
+
### (b) パス用 choke point
|
|
325
324
|
|
|
326
325
|
`plan-path` を `Read` 引数に使う前に、以下の**パス用封じ込め型防御**を実装・適用する
|
|
327
|
-
|
|
326
|
+
(表示用サニタイズとは別の独立した choke point):
|
|
328
327
|
|
|
329
328
|
1. 改行・NUL・制御文字を検出したら無効化する
|
|
330
329
|
2. `plan-path` を絶対パスへ正規化(`realpath` 相当・シンボリックリンク解決・`..` 解決)する
|
|
@@ -341,18 +340,7 @@ opt-in は plan-report 生成前(フェーズ A 以前)に行われるため
|
|
|
341
340
|
→ `VALID<TAB>{正規化済み絶対パス}`(exit 0)/`INVALID<TAB>{理由コード}`(exit 1)の 1 行と exit code で判定する。
|
|
342
341
|
モード行の値をコマンド文字列(here-string・引数・ダブルクォート内展開)に直接埋め込んではならない。
|
|
343
342
|
|
|
344
|
-
### (c) 表示用 choke point
|
|
343
|
+
### (c) 表示用 choke point(init-session と共通の表示用サニタイズ)
|
|
345
344
|
|
|
346
|
-
`モード:`
|
|
345
|
+
`モード:` 行の値をユーザーへ表示する全出口で表示用サニタイズを適用する
|
|
347
346
|
(C0/C1・DEL・改行・`-->`・U+2028/U+2029 除去)。
|
|
348
|
-
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
## 相互参照(配布元限定)
|
|
352
|
-
|
|
353
|
-
`.dev/loop/README.md` と本 skill は、同じ原理(客観収束・二重上限・人間の関所)の 2 実装である:
|
|
354
|
-
|
|
355
|
-
- **ハーネス**(`.dev/loop/`)= 餌駆動の簡易ワークフロー(headless・claude -p・応答者不在前提。**配布元限定のツール・gitignored**)
|
|
356
|
-
- **本 skill**(autonomous-mode)= C3 標準ワークフロー(対話セッション・親 Claude・質問出口は人間)
|
|
357
|
-
|
|
358
|
-
`.dev/loop/README.md` にもこの相互参照を明記すること(両側に記す)。
|