claude-dev-env 2.12.0 → 2.14.0
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.
- package/AGENTS.md +61 -0
- package/CLAUDE.md +1 -57
- package/_shared/AGENTS.md +15 -0
- package/_shared/CLAUDE.md +1 -15
- package/_shared/advisor/AGENTS.md +22 -0
- package/_shared/advisor/CLAUDE.md +1 -22
- package/_shared/pr-loop/AGENTS.md +27 -0
- package/_shared/pr-loop/CLAUDE.md +1 -27
- package/_shared/pr-loop/scripts/AGENTS.md +35 -0
- package/_shared/pr-loop/scripts/CLAUDE.md +1 -35
- package/_shared/pr-loop/scripts/code_rules_gate.py +2 -3
- package/_shared/pr-loop/scripts/code_rules_gate_parts/AGENTS.md +42 -0
- package/_shared/pr-loop/scripts/code_rules_gate_parts/CLAUDE.md +1 -42
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/AGENTS.md +26 -0
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/CLAUDE.md +1 -26
- package/_shared/pr-loop/scripts/test_code_rules_gate.py +0 -26
- package/_shared/pr-loop/scripts/tests/AGENTS.md +44 -0
- package/_shared/pr-loop/scripts/tests/CLAUDE.md +1 -44
- package/_shared/process-tree/AGENTS.md +41 -0
- package/_shared/process-tree/CLAUDE.md +1 -41
- package/agents/AGENTS.md +31 -0
- package/agents/CLAUDE.md +1 -32
- package/agents/clean-coder.md +6 -6
- package/agents/pr-description-writer.md +11 -81
- package/agents/test_agent_frontmatter.py +4 -4
- package/audit-rubrics/AGENTS.md +43 -0
- package/audit-rubrics/CLAUDE.md +1 -43
- package/audit-rubrics/category_rubrics/AGENTS.md +37 -0
- package/audit-rubrics/category_rubrics/CLAUDE.md +1 -37
- package/audit-rubrics/prompts/AGENTS.md +37 -0
- package/audit-rubrics/prompts/CLAUDE.md +1 -37
- package/bin/AGENTS.md +112 -0
- package/bin/CLAUDE.md +1 -112
- package/bin/ever-shipped-skills.mjs +1 -0
- package/bin/install-constants.mjs +6 -7
- package/bin/install.mjs +71 -13
- package/bin/install.prune.test.mjs +26 -0
- package/bin/install.settings-defaults.test.mjs +60 -33
- package/bin/install.test.mjs +36 -4
- package/commands/AGENTS.md +23 -0
- package/commands/CLAUDE.md +1 -23
- package/commands/hook-log-extract.md +3 -3
- package/commands/sr-loop.md +9 -5
- package/docs/AGENTS.md +32 -0
- package/docs/CLAUDE.md +1 -33
- package/docs/CODE_RULES.md +1 -1
- package/docs/imagegen.md +22 -0
- package/docs/references/AGENTS.md +17 -0
- package/docs/references/CLAUDE.md +1 -18
- package/hooks/AGENTS.md +31 -0
- package/hooks/CLAUDE.md +1 -31
- package/hooks/_gh_pr_author_swap_utils.py +14 -0
- package/hooks/advisory/AGENTS.md +16 -0
- package/hooks/advisory/CLAUDE.md +1 -16
- package/hooks/blocking/AGENTS.md +123 -0
- package/hooks/blocking/CLAUDE.md +1 -148
- package/hooks/blocking/claude_md_orphan_file_blocker_parts/AGENTS.md +28 -0
- package/hooks/blocking/claude_md_orphan_file_blocker_parts/CLAUDE.md +1 -28
- package/hooks/blocking/code_rules_banned_identifiers.py +1 -1
- package/hooks/blocking/code_rules_dead_module_constant.py +149 -37
- package/hooks/blocking/code_rules_probe_chains.py +6 -2
- package/hooks/blocking/config/AGENTS.md +10 -0
- package/hooks/blocking/config/CLAUDE.md +1 -22
- package/hooks/blocking/conventional_pr_title_gate.py +1 -2
- package/hooks/blocking/gh_pr_author_restore.py +7 -2
- package/hooks/blocking/intent_only_ending_blocker.py +11 -16
- package/hooks/blocking/inventory_intent_records/AGENTS.md +26 -0
- package/hooks/blocking/inventory_intent_records/CLAUDE.md +1 -26
- package/hooks/blocking/package_inventory_stale_blocker_parts/AGENTS.md +26 -0
- package/hooks/blocking/package_inventory_stale_blocker_parts/CLAUDE.md +1 -26
- package/hooks/blocking/pii_prevention_blocker_parts/AGENTS.md +24 -0
- package/hooks/blocking/pii_prevention_blocker_parts/CLAUDE.md +1 -24
- package/hooks/blocking/send_user_file_open_locally_blocker.py +1 -1
- package/hooks/blocking/stop_dispatcher.py +4 -4
- package/hooks/blocking/tdd_enforcer_parts/AGENTS.md +30 -0
- package/hooks/blocking/tdd_enforcer_parts/CLAUDE.md +1 -30
- package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +0 -3
- package/hooks/blocking/test_code_rules_enforcer_banned_prefixes.py +1 -1
- package/hooks/blocking/test_code_rules_enforcer_dead_module_constant.py +171 -0
- package/hooks/blocking/test_code_rules_enforcer_magic_allowlist.py +1 -1
- package/hooks/blocking/test_gh_pr_author_restore.py +2 -1
- package/hooks/blocking/test_intent_only_ending_blocker.py +4 -0
- package/hooks/blocking/test_pre_tool_use_dispatcher.py +6 -7
- package/hooks/blocking/test_send_user_file_open_locally_blocker.py +4 -3
- package/hooks/blocking/test_shared_stdin_adoption.py +0 -2
- package/hooks/diagnostic/AGENTS.md +43 -0
- package/hooks/diagnostic/CLAUDE.md +1 -43
- package/hooks/diagnostic/hook_log_extractor.py +4 -38
- package/hooks/diagnostic/hook_log_stop_wrapper.py +6 -155
- package/hooks/diagnostic/migrations/AGENTS.md +16 -0
- package/hooks/diagnostic/migrations/CLAUDE.md +1 -16
- package/hooks/diagnostic/queries/AGENTS.md +19 -0
- package/hooks/diagnostic/queries/CLAUDE.md +1 -19
- package/hooks/diagnostic/test_hook_log_extractor.py +10 -23
- package/hooks/diagnostic/test_hook_log_stop_wrapper.py +3 -331
- package/hooks/git-hooks/AGENTS.md +31 -0
- package/hooks/git-hooks/CLAUDE.md +1 -31
- package/hooks/git-hooks/git_hooks_constants/AGENTS.md +21 -0
- package/hooks/git-hooks/git_hooks_constants/CLAUDE.md +1 -21
- package/hooks/git-hooks/git_hooks_constants/__init__.py +4 -12
- package/hooks/git-hooks/pre_push.py +49 -118
- package/hooks/git-hooks/test_pre_push.py +111 -137
- package/hooks/hooks.json +0 -35
- package/hooks/hooks_constants/AGENTS.md +104 -0
- package/hooks/hooks_constants/CLAUDE.md +1 -113
- package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +0 -11
- package/hooks/hooks_constants/convergence_branch_constants.py +0 -1
- package/hooks/hooks_constants/fable_spawn_gate_constants.py +3 -4
- package/hooks/hooks_constants/hook_log_extractor_constants.py +1 -2
- package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +0 -8
- package/hooks/hooks_constants/send_user_file_open_locally_blocker_constants.py +1 -6
- package/hooks/hooks_constants/stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/task_list_loop_starter_constants.py +4 -3
- package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +1 -26
- package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +0 -5
- package/hooks/hooks_constants/test_stop_dispatcher_constants.py +0 -1
- package/hooks/hooks_constants/working_style_prompt_constants.py +29 -20
- package/hooks/lifecycle/AGENTS.md +18 -0
- package/hooks/lifecycle/CLAUDE.md +1 -20
- package/hooks/observability/AGENTS.md +20 -0
- package/hooks/observability/CLAUDE.md +1 -20
- package/hooks/session/AGENTS.md +33 -0
- package/hooks/session/CLAUDE.md +1 -33
- package/hooks/session/gh_pr_author_session_cleanup.py +7 -2
- package/hooks/session/task_list_loop_starter.py +3 -3
- package/hooks/session/test_gh_pr_author_session_cleanup.py +2 -1
- package/hooks/session/test_task_list_loop_starter.py +10 -2
- package/hooks/session/test_working_style_prompt.py +9 -4
- package/hooks/validation/AGENTS.md +20 -0
- package/hooks/validation/CLAUDE.md +1 -20
- package/hooks/validators/AGENTS.md +51 -0
- package/hooks/validators/CLAUDE.md +1 -51
- package/hooks/validators/health_check.py +52 -19
- package/hooks/validators/python_style_checks.py +1 -1
- package/hooks/validators/test_health_check.py +112 -27
- package/hooks/workflow/AGENTS.md +16 -0
- package/hooks/workflow/CLAUDE.md +1 -16
- package/installable-surfaces.manifest.json +1 -0
- package/output-styles/AGENTS.md +15 -0
- package/output-styles/CLAUDE.md +1 -15
- package/package.json +2 -1
- package/rules/AGENTS.md +61 -0
- package/rules/CLAUDE.md +1 -63
- package/rules/code-standards.md +5 -9
- package/rules/doc-prose-cuts.md +1 -1
- package/rules/gh-cli-conventions.md +0 -1
- package/rules/git-workflow.md +1 -3
- package/scripts/AGENTS.md +62 -0
- package/scripts/CLAUDE.md +1 -63
- package/scripts/_code_review_test_support.py +0 -95
- package/scripts/codex_compat_materializer.py +4 -0
- package/scripts/dev_env_scripts_constants/AGENTS.md +21 -0
- package/scripts/dev_env_scripts_constants/CLAUDE.md +1 -21
- package/scripts/dev_env_scripts_constants/code_review_constants.py +9 -98
- package/scripts/dev_env_scripts_constants/test_code_review_constants.py +1 -44
- package/scripts/invoke_code_review.py +8 -451
- package/scripts/sync_to_cursor/AGENTS.md +23 -0
- package/scripts/sync_to_cursor/CLAUDE.md +1 -23
- package/scripts/test_invoke_code_review.py +5 -61
- package/scripts/test_invoke_code_review_cli.py +1 -45
- package/scripts/test_invoke_code_review_contract.py +1 -118
- package/scripts/test_validate_instruction_pairs.py +90 -0
- package/scripts/test_verify_installable_package.py +5 -1
- package/scripts/tests/AGENTS.md +33 -0
- package/scripts/tests/CLAUDE.md +1 -33
- package/scripts/tests/test_codex_compat_materializer.py +36 -1
- package/scripts/validate_instruction_pairs.py +183 -0
- package/settings.json +1 -10
- package/skills/AGENTS.md +72 -0
- package/skills/CLAUDE.md +1 -64
- package/skills/_shared/AGENTS.md +44 -0
- package/skills/_shared/CLAUDE.md +1 -44
- package/skills/_shared/advisor/AGENTS.md +9 -0
- package/skills/_shared/advisor/CLAUDE.md +1 -9
- package/skills/_shared/pr-loop/AGENTS.md +50 -0
- package/skills/_shared/pr-loop/CLAUDE.md +1 -50
- package/skills/_shared/pr-loop/prompts/AGENTS.md +9 -0
- package/skills/_shared/pr-loop/prompts/CLAUDE.md +1 -9
- package/skills/_shared/pr-loop/scripts/AGENTS.md +35 -0
- package/skills/_shared/pr-loop/scripts/CLAUDE.md +1 -35
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +24 -0
- package/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/CLAUDE.md +1 -24
- package/skills/anthropic-plan/AGENTS.md +34 -0
- package/skills/anthropic-plan/CLAUDE.md +1 -34
- package/skills/anthropic-plan/scripts/AGENTS.md +11 -0
- package/skills/anthropic-plan/scripts/CLAUDE.md +1 -11
- package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/AGENTS.md +16 -0
- package/skills/anthropic-plan/scripts/anthropic_plan_scripts_constants/CLAUDE.md +1 -16
- package/skills/anthropic-plan/templates/AGENTS.md +13 -0
- package/skills/anthropic-plan/templates/CLAUDE.md +1 -13
- package/skills/anthropic-plan/workflow/AGENTS.md +14 -0
- package/skills/anthropic-plan/workflow/CLAUDE.md +1 -14
- package/skills/auditing-claude-config/AGENTS.md +21 -0
- package/skills/auditing-claude-config/CLAUDE.md +1 -21
- package/skills/autoconverge/AGENTS.md +36 -0
- package/skills/autoconverge/CLAUDE.md +1 -36
- package/skills/autoconverge/reference/AGENTS.md +16 -0
- package/skills/autoconverge/reference/CLAUDE.md +1 -16
- package/skills/autoconverge/reference/convergence.md +7 -7
- package/skills/autoconverge/reference/gotchas.md +3 -10
- package/skills/autoconverge/workflow/AGENTS.md +26 -0
- package/skills/autoconverge/workflow/CLAUDE.md +1 -26
- package/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +16 -0
- package/skills/autoconverge/workflow/autoconverge_report_constants/CLAUDE.md +1 -16
- package/skills/autoconverge/workflow/converge.contract.test.mjs +53 -1388
- package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +4 -3
- package/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +33 -493
- package/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +15 -97
- package/skills/autoconverge/workflow/converge.mjs +201 -238
- package/skills/autoconverge/workflow/converge.precatch.test.mjs +1 -1
- package/skills/bugteam/AGENTS.md +30 -0
- package/skills/bugteam/CLAUDE.md +1 -30
- package/skills/bugteam/CONSTRAINTS.md +1 -1
- package/skills/bugteam/SKILL.md +9 -0
- package/skills/bugteam/reference/AGENTS.md +20 -0
- package/skills/bugteam/reference/CLAUDE.md +1 -20
- package/skills/bugteam/reference/audit-and-teammates.md +10 -6
- package/skills/bugteam/reference/obstacles/AGENTS.md +24 -0
- package/skills/bugteam/reference/obstacles/CLAUDE.md +1 -24
- package/skills/bugteam/scripts/AGENTS.md +30 -0
- package/skills/bugteam/scripts/CLAUDE.md +1 -30
- package/skills/bugteam/scripts/bugteam_scripts_constants/AGENTS.md +18 -0
- package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +1 -18
- package/skills/bugteam/test_skill_additions.py +9 -0
- package/skills/closeout/reference/handoff-prompt-template.md +1 -1
- package/skills/codex-review/AGENTS.md +46 -0
- package/skills/codex-review/CLAUDE.md +1 -46
- package/skills/codex-review/reference/AGENTS.md +15 -0
- package/skills/codex-review/reference/CLAUDE.md +1 -15
- package/skills/codex-review/scripts/codex_review_scripts_constants/AGENTS.md +18 -0
- package/skills/codex-review/scripts/codex_review_scripts_constants/CLAUDE.md +1 -18
- package/skills/codex-review/test_skill_scaffold.py +3 -3
- package/skills/comments/SKILL.md +65 -0
- package/skills/copilot-review/AGENTS.md +18 -0
- package/skills/copilot-review/CLAUDE.md +1 -18
- package/skills/descriptions/SKILL.md +51 -0
- package/skills/emergencies/SKILL.md +42 -0
- package/skills/everything-search/AGENTS.md +17 -0
- package/skills/everything-search/CLAUDE.md +1 -17
- package/skills/fresh-branch/AGENTS.md +14 -0
- package/skills/fresh-branch/CLAUDE.md +1 -14
- package/skills/grok-spawn/AGENTS.md +28 -0
- package/skills/grok-spawn/CLAUDE.md +1 -28
- package/skills/orchestrator/SKILL.md +2 -4
- package/skills/plan-to-pr/SKILL.md +6 -7
- package/skills/plan-to-pr/reference/final-validation-tasks.md +1 -1
- package/skills/plan-to-pr/reference/process-inventory.md +2 -2
- package/skills/plan-to-pr/reference/review-loop.md +2 -2
- package/skills/plan-to-pr/reference/run-record.schema.json +1 -1
- package/skills/plan-to-pr/reference/task-seeds.md +1 -1
- package/skills/plan-to-pr/reference/task-ticket.md +3 -4
- package/skills/plan-to-pr/scripts/config/constants.py +1 -2
- package/skills/plan-to-pr/scripts/test_validate_protocol.py +1 -1
- package/skills/plan-to-pr/test_skill_contract.py +2 -2
- package/skills/pr-converge/AGENTS.md +32 -0
- package/skills/pr-converge/CLAUDE.md +1 -32
- package/skills/pr-converge/SKILL.md +13 -16
- package/skills/pr-converge/pr_converge_skill_constants/AGENTS.md +26 -0
- package/skills/pr-converge/pr_converge_skill_constants/CLAUDE.md +1 -26
- package/skills/pr-converge/reference/AGENTS.md +28 -0
- package/skills/pr-converge/reference/CLAUDE.md +1 -28
- package/skills/pr-converge/reference/obstacles/AGENTS.md +23 -0
- package/skills/pr-converge/reference/obstacles/CLAUDE.md +1 -23
- package/skills/pr-converge/reference/progress-checklist.md +6 -5
- package/skills/pr-converge/reference/state-schema.md +1 -27
- package/skills/pr-converge/scripts/AGENTS.md +46 -0
- package/skills/pr-converge/scripts/CLAUDE.md +1 -46
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/AGENTS.md +18 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -18
- package/skills/pr-converge/workflows/AGENTS.md +16 -0
- package/skills/pr-converge/workflows/CLAUDE.md +1 -16
- package/skills/pr-loop-cloud-transport/SKILL.md +1 -1
- package/skills/pr-loop-cloud-transport/reference/identity-and-hooks.md +3 -3
- package/skills/pr-loop-lifecycle/SKILL.md +1 -1
- package/skills/pr-loop-lifecycle/reference/teardown-publish-permissions.md +1 -1
- package/skills/prototype/SKILL.md +4 -4
- package/skills/prototype/reference/honest-limitations.md +5 -5
- package/skills/prototype/reference/promotion-tasks.md +2 -2
- package/skills/prototype/workflows/promotion.md +4 -6
- package/skills/rebase/AGENTS.md +32 -0
- package/skills/rebase/CLAUDE.md +1 -32
- package/skills/recall/AGENTS.md +30 -0
- package/skills/recall/CLAUDE.md +1 -30
- package/skills/remember/AGENTS.md +31 -0
- package/skills/remember/CLAUDE.md +1 -31
- package/skills/reviews/SKILL.md +85 -0
- package/skills/session-log/AGENTS.md +32 -0
- package/skills/session-log/CLAUDE.md +1 -32
- package/skills/session-tidy/AGENTS.md +36 -0
- package/skills/session-tidy/CLAUDE.md +1 -36
- package/skills/skill-builder/AGENTS.md +49 -0
- package/skills/skill-builder/CLAUDE.md +1 -49
- package/skills/skill-builder/references/AGENTS.md +25 -0
- package/skills/skill-builder/references/CLAUDE.md +1 -25
- package/skills/skill-builder/references/deterministic-elements.md +1 -1
- package/skills/skill-builder/templates/AGENTS.md +14 -0
- package/skills/skill-builder/templates/CLAUDE.md +1 -14
- package/skills/skill-builder/workflows/AGENTS.md +19 -0
- package/skills/skill-builder/workflows/CLAUDE.md +1 -19
- package/skills/small-cl/SKILL.md +52 -0
- package/skills/task-build/AGENTS.md +29 -0
- package/skills/task-build/CLAUDE.md +1 -29
- package/skills/update/AGENTS.md +38 -0
- package/skills/update/CLAUDE.md +1 -38
- package/system-prompts/AGENTS.md +17 -0
- package/system-prompts/CLAUDE.md +1 -17
- package/system-prompts/software-engineer.xml +3 -3
- package/agents/code-verifier.md +0 -74
- package/docs/PR_DESCRIPTION_GUIDE.md +0 -157
- package/docs/references/code-review-enforcement.md +0 -132
- package/hooks/blocking/code_review_enforcement_config_bootstrap.py +0 -53
- package/hooks/blocking/code_review_gate_deny.py +0 -74
- package/hooks/blocking/code_review_pr_create_gate.py +0 -198
- package/hooks/blocking/code_review_push_gate.py +0 -145
- package/hooks/blocking/code_review_stamp_directory_write_blocker.py +0 -348
- package/hooks/blocking/code_review_stamp_store.py +0 -233
- package/hooks/blocking/code_review_stamp_write_blocker_parts/__init__.py +0 -7
- package/hooks/blocking/code_review_stamp_write_blocker_parts/conftest.py +0 -15
- package/hooks/blocking/code_review_stamp_write_blocker_parts/obfuscated_stamp_path_reference.py +0 -212
- package/hooks/blocking/code_review_stamp_write_blocker_parts/split_directory_change_into_stamp.py +0 -138
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_obfuscated_stamp_path_reference.py +0 -49
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_split_directory_change_into_stamp.py +0 -38
- package/hooks/blocking/code_verifier_spawn_preflight_gate.py +0 -483
- package/hooks/blocking/config/code_review_enforcement_constants.py +0 -143
- package/hooks/blocking/config/test_code_review_enforcement_constants.py +0 -166
- package/hooks/blocking/config/verified_commit_constants.py +0 -160
- package/hooks/blocking/config/verified_commit_context_constants.py +0 -21
- package/hooks/blocking/config/verified_commit_gate_output_constants.py +0 -14
- package/hooks/blocking/conftest.py +0 -123
- package/hooks/blocking/convergence_gate_blocker.py +0 -310
- package/hooks/blocking/pr_converge_bugteam_enforcer.py +0 -170
- package/hooks/blocking/pr_description_body_audit.py +0 -148
- package/hooks/blocking/pr_description_command_parser.py +0 -237
- package/hooks/blocking/pr_description_enforcer.py +0 -227
- package/hooks/blocking/pr_description_pr_number.py +0 -155
- package/hooks/blocking/pr_description_proof_of_work.py +0 -385
- package/hooks/blocking/pr_description_readability.py +0 -364
- package/hooks/blocking/reviewer_spawn_gate.py +0 -182
- package/hooks/blocking/test_code_review_enforcement_config_bootstrap.py +0 -62
- package/hooks/blocking/test_code_review_gate_deny.py +0 -54
- package/hooks/blocking/test_code_review_pr_create_gate.py +0 -199
- package/hooks/blocking/test_code_review_push_gate.py +0 -205
- package/hooks/blocking/test_code_review_stamp_directory_write_blocker.py +0 -199
- package/hooks/blocking/test_code_review_stamp_store.py +0 -205
- package/hooks/blocking/test_code_verifier_spawn_preflight_gate.py +0 -710
- package/hooks/blocking/test_code_verifier_tools_contract.py +0 -28
- package/hooks/blocking/test_convergence_gate_blocker.py +0 -428
- package/hooks/blocking/test_pr_converge_bugteam_enforcer.py +0 -311
- package/hooks/blocking/test_pr_converge_bugteam_enforcer_state_tolerance.py +0 -184
- package/hooks/blocking/test_pr_description_enforcer.py +0 -221
- package/hooks/blocking/test_pr_description_enforcer_body_audit.py +0 -247
- package/hooks/blocking/test_pr_description_enforcer_body_rules.py +0 -493
- package/hooks/blocking/test_pr_description_enforcer_command_parser.py +0 -366
- package/hooks/blocking/test_pr_description_enforcer_pr_number.py +0 -159
- package/hooks/blocking/test_pr_description_enforcer_proof_gate.py +0 -175
- package/hooks/blocking/test_pr_description_enforcer_readability.py +0 -443
- package/hooks/blocking/test_pr_description_proof_of_work.py +0 -313
- package/hooks/blocking/test_reviewer_spawn_gate.py +0 -230
- package/hooks/blocking/test_verdict_directory_write_blocker.py +0 -804
- package/hooks/blocking/test_verification_verdict_store.py +0 -974
- package/hooks/blocking/test_verified_commit_config_bootstrap.py +0 -67
- package/hooks/blocking/test_verified_commit_docs_delta.py +0 -176
- package/hooks/blocking/test_verified_commit_gate.py +0 -581
- package/hooks/blocking/test_verified_commit_gate_additional_context.py +0 -134
- package/hooks/blocking/test_verified_commit_message_accuracy_blocker.py +0 -131
- package/hooks/blocking/test_verifier_verdict_minter.py +0 -299
- package/hooks/blocking/tests/test_verified_commit_gate.py +0 -41
- package/hooks/blocking/verdict_directory_write_blocker.py +0 -687
- package/hooks/blocking/verification_verdict_store.py +0 -1039
- package/hooks/blocking/verified_commit_config_bootstrap.py +0 -63
- package/hooks/blocking/verified_commit_gate.py +0 -113
- package/hooks/blocking/verified_commit_gate_parts/CLAUDE.md +0 -28
- package/hooks/blocking/verified_commit_gate_parts/__init__.py +0 -1
- package/hooks/blocking/verified_commit_gate_parts/command_tokenization.py +0 -174
- package/hooks/blocking/verified_commit_gate_parts/deny_payload.py +0 -53
- package/hooks/blocking/verified_commit_gate_parts/deny_reason.py +0 -80
- package/hooks/blocking/verified_commit_gate_parts/directory_resolution.py +0 -170
- package/hooks/blocking/verified_commit_gate_parts/gated_invocations.py +0 -217
- package/hooks/blocking/verified_commit_gate_parts/tests/conftest.py +0 -10
- package/hooks/blocking/verified_commit_gate_parts/tests/test_command_tokenization.py +0 -94
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_payload.py +0 -17
- package/hooks/blocking/verified_commit_gate_parts/tests/test_deny_reason.py +0 -38
- package/hooks/blocking/verified_commit_gate_parts/tests/test_directory_resolution.py +0 -71
- package/hooks/blocking/verified_commit_gate_parts/tests/test_gated_invocations.py +0 -96
- package/hooks/blocking/verified_commit_message_accuracy_blocker.py +0 -167
- package/hooks/blocking/verifier_verdict_minter.py +0 -280
- package/hooks/hooks_constants/code_verifier_spawn_preflight_gate_constants.py +0 -64
- package/hooks/hooks_constants/convergence_gate_blocker_constants.py +0 -53
- package/hooks/hooks_constants/pr_converge_bugteam_enforcer_constants.py +0 -55
- package/hooks/hooks_constants/pr_converge_bugteam_enforcer_state.py +0 -67
- package/hooks/hooks_constants/pr_description_enforcer_constants.py +0 -167
- package/hooks/hooks_constants/pr_description_proof_of_work_constants.py +0 -107
- package/hooks/hooks_constants/reviewer_spawn_gate_constants.py +0 -41
- package/hooks/hooks_constants/test_pr_description_enforcer_constants.py +0 -292
- package/hooks/lifecycle/pr_converge_bugteam_skill_tracker.py +0 -198
- package/hooks/lifecycle/test_pr_converge_bugteam_skill_tracker.py +0 -283
- package/rules/proof-of-work-pr-comments.md +0 -22
- package/rules/verified-commit-gate-skip.md +0 -4
- package/scripts/Show-Asset.ps1 +0 -106
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# copilot-review
|
|
2
|
+
|
|
3
|
+
Spawns a background subagent that polls the GitHub Copilot reviewer on the current PR, fixes unaddressed findings, and re-requests review each tick until the PR is clean. Triggered by `/copilot-review`, `watch copilot`, `babysit copilot review`, or `keep re-requesting copilot`.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
The main session gathers PR context (number, HEAD SHA, owner/repo, branch), spawns a self-terminating background subagent with a fully filled-in prompt, and returns control at once. The subagent loops on a 6-minute `ScheduleWakeup` cadence: fetch Copilot's latest review, TDD-fix any inline findings, push a commit, reply inline, resolve each addressed thread, re-request review. It stops on convergence, a persistent blocker, `TaskStop`, three consecutive ticks with no Copilot review at the current HEAD, or after 20 ticks.
|
|
8
|
+
|
|
9
|
+
## Key files
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Four-step orchestration (opt-out check, gather PR context, spawn subagent, report to user), fix protocol, stop conditions, and ground rules (one commit per tick, honor hooks, preserve draft state, use `copilot-pull-request-reviewer[bot]` with the `[bot]` suffix). |
|
|
14
|
+
| `templates/subagent-prompt.md` | The background watcher prompt Step 3 passes to the subagent word for word, with placeholders for PR number, owner, repo, branch, and HEAD SHA. |
|
|
15
|
+
|
|
16
|
+
## Environment opt-out
|
|
17
|
+
|
|
18
|
+
Set `CLAUDE_REVIEWS_DISABLED=copilot` to disable. The skill checks this before spawning anything.
|
|
@@ -1,18 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Spawns a background subagent that polls the GitHub Copilot reviewer on the current PR, fixes unaddressed findings, and re-requests review each tick until the PR is clean. Triggered by `/copilot-review`, `watch copilot`, `babysit copilot review`, or `keep re-requesting copilot`.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
The main session gathers PR context (number, HEAD SHA, owner/repo, branch), spawns a self-terminating background subagent with a fully filled-in prompt, and returns control at once. The subagent loops on a 6-minute `ScheduleWakeup` cadence: fetch Copilot's latest review, TDD-fix any inline findings, push a commit, reply inline, resolve each addressed thread, re-request review. It stops on convergence, a persistent blocker, `TaskStop`, three consecutive ticks with no Copilot review at the current HEAD, or after 20 ticks.
|
|
8
|
-
|
|
9
|
-
## Key files
|
|
10
|
-
|
|
11
|
-
| File | Purpose |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `SKILL.md` | Four-step orchestration (opt-out check, gather PR context, spawn subagent, report to user), fix protocol, stop conditions, and ground rules (one commit per tick, honor hooks, preserve draft state, use `copilot-pull-request-reviewer[bot]` with the `[bot]` suffix). |
|
|
14
|
-
| `templates/subagent-prompt.md` | The background watcher prompt Step 3 passes to the subagent word for word, with placeholders for PR number, owner, repo, branch, and HEAD SHA. |
|
|
15
|
-
|
|
16
|
-
## Environment opt-out
|
|
17
|
-
|
|
18
|
-
Set `CLAUDE_REVIEWS_DISABLED=copilot` to disable. The skill checks this before spawning anything.
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: descriptions
|
|
3
|
+
description: >-
|
|
4
|
+
Draft or revise a pull-request description. Use when a user asks for a "PR
|
|
5
|
+
description", "pull request summary", or "change description".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Pull Request Description Guide
|
|
9
|
+
|
|
10
|
+
## When to Use This Guide
|
|
11
|
+
|
|
12
|
+
Use this guide to prepare or revise the written context for a pull request. A
|
|
13
|
+
description explains the change to reviewers and future readers; it records the
|
|
14
|
+
intent and evidence that source code alone cannot express.
|
|
15
|
+
|
|
16
|
+
## Required Content
|
|
17
|
+
|
|
18
|
+
Start with a short, specific summary line. Follow it with the information needed
|
|
19
|
+
to understand the change:
|
|
20
|
+
|
|
21
|
+
- The problem, motivation, and affected users or systems.
|
|
22
|
+
- The implemented approach and meaningful design decisions.
|
|
23
|
+
- Verification performed, including test commands and observed results.
|
|
24
|
+
- Risks, migrations, compatibility effects, and rollback or recovery context.
|
|
25
|
+
- Related issues, design records, and scoped follow-up work.
|
|
26
|
+
|
|
27
|
+
Use durable prose for every essential fact when linked material has restricted
|
|
28
|
+
access or a limited retention period.
|
|
29
|
+
|
|
30
|
+
## Description Shape
|
|
31
|
+
|
|
32
|
+
```text
|
|
33
|
+
Summarize the delivered change.
|
|
34
|
+
|
|
35
|
+
Explain the problem and the approach.
|
|
36
|
+
|
|
37
|
+
Verification: <commands and results>
|
|
38
|
+
Risk: <migration, compatibility, or recovery context>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Keep tags short and use them according to the repository's established format.
|
|
42
|
+
|
|
43
|
+
## Reviewing a Description
|
|
44
|
+
|
|
45
|
+
Compare the description with the changed files and the review findings. Keep the
|
|
46
|
+
summary, scope, verification, and risk information aligned with the pull
|
|
47
|
+
request's current contents.
|
|
48
|
+
|
|
49
|
+
Use [reviews](../reviews/SKILL.md#review-workflow) for substantive code
|
|
50
|
+
assessment and [small-cl](../small-cl/SKILL.md#what-a-focused-pull-request-contains)
|
|
51
|
+
to establish a focused scope.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: emergencies
|
|
3
|
+
description: >-
|
|
4
|
+
Classify an urgent production change and guide its focused emergency review.
|
|
5
|
+
Use when a user asks about an "emergency hotfix", "production incident", or "urgent security fix".
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Emergency Review Guide
|
|
9
|
+
|
|
10
|
+
## Emergency Classification
|
|
11
|
+
|
|
12
|
+
Use emergency handling for a narrow change that mitigates an active, severe
|
|
13
|
+
consequence:
|
|
14
|
+
|
|
15
|
+
- A production failure materially affecting users or a critical service.
|
|
16
|
+
- An active security or legal exposure requiring prompt mitigation.
|
|
17
|
+
- A contractual, hardware, or market deadline where a missed delivery causes a
|
|
18
|
+
severe external consequence.
|
|
19
|
+
|
|
20
|
+
Record the incident, affected system, immediate consequence, and the proposed
|
|
21
|
+
mitigation before assessing the change.
|
|
22
|
+
|
|
23
|
+
## Standard Priority
|
|
24
|
+
|
|
25
|
+
Use the [review guide](../reviews/SKILL.md#review-workflow) for feature
|
|
26
|
+
schedules, end-of-day timing, ordinary delivery targets, and build remediation.
|
|
27
|
+
Use a focused rollback or remediation change when it restores service safely.
|
|
28
|
+
|
|
29
|
+
## While the Incident Is Active
|
|
30
|
+
|
|
31
|
+
Keep the change as small as the mitigation permits. Evaluate whether it resolves
|
|
32
|
+
the incident, introduces a new immediate risk, and has sufficient validation for
|
|
33
|
+
the affected path.
|
|
34
|
+
|
|
35
|
+
State the incident context, verification performed, observed result, and any
|
|
36
|
+
remaining recovery work in the pull request. Use the [comment guide](../comments/SKILL.md#writing-useful-review-comments)
|
|
37
|
+
to communicate required mitigation work clearly.
|
|
38
|
+
|
|
39
|
+
## Follow-up Assessment
|
|
40
|
+
|
|
41
|
+
After service is stable, use the [review guide](../reviews/SKILL.md#evaluation-criteria)
|
|
42
|
+
for the broader maintainability, testing, documentation, and prevention work.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# everything-search
|
|
2
|
+
|
|
3
|
+
Fast file search on Windows using the Everything (voidtools) `es.exe` command-line tool. Triggered by `find files`, `search for files`, `locate files`, or any request to use Everything.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
Searches files by extension, name, date modified, size, or path against Everything's real-time index. Returns results instantly regardless of drive size. The skill covers the correct `es.exe` path, search operator syntax, multi-extension patterns, output options, and the junction/symlink note (Everything indexes real NTFS paths only — not junctions or mapped drives).
|
|
8
|
+
|
|
9
|
+
## Key file
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
|---|---|
|
|
13
|
+
| `SKILL.md` | Command syntax for WSL and Windows paths, all search operators (`ext:`, `dm:`, `size:`, wildcards, OR/AND/NOT), output flags (`-sort`, `-n`, `-size`), worked examples, and a junction/drive-mapping lookup table. |
|
|
14
|
+
|
|
15
|
+
## When to use
|
|
16
|
+
|
|
17
|
+
Use for file-system searches by name, extension, size, or date. For content searches use Grep. If a path is a junction or mapped drive and Everything returns nothing, translate to the real NTFS path or fall back to the Glob tool.
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Fast file search on Windows using the Everything (voidtools) `es.exe` command-line tool. Triggered by `find files`, `search for files`, `locate files`, or any request to use Everything.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
|
|
7
|
-
Searches files by extension, name, date modified, size, or path against Everything's real-time index. Returns results instantly regardless of drive size. The skill covers the correct `es.exe` path, search operator syntax, multi-extension patterns, output options, and the junction/symlink note (Everything indexes real NTFS paths only — not junctions or mapped drives).
|
|
8
|
-
|
|
9
|
-
## Key file
|
|
10
|
-
|
|
11
|
-
| File | Purpose |
|
|
12
|
-
|---|---|
|
|
13
|
-
| `SKILL.md` | Command syntax for WSL and Windows paths, all search operators (`ext:`, `dm:`, `size:`, wildcards, OR/AND/NOT), output flags (`-sort`, `-n`, `-size`), worked examples, and a junction/drive-mapping lookup table. |
|
|
14
|
-
|
|
15
|
-
## When to use
|
|
16
|
-
|
|
17
|
-
Use for file-system searches by name, extension, size, or date. For content searches use Grep. If a path is a junction or mapped drive and Everything returns nothing, translate to the real NTFS path or fall back to the Glob tool.
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# fresh-branch
|
|
2
|
+
|
|
3
|
+
Creates a new branch from fresh-fetched `origin/main` inside an isolated worktree under a configured root. Default: `<repo-root>/.claude/worktrees/<agent>/<branch-name>`. Optional absolute `--worktree-root` relocates the root (agent and branch still nest under it). Relative roots and path escape fail closed. Does not push, open a PR, or run `checkout -b` in the caller tree.
|
|
4
|
+
|
|
5
|
+
## Key files
|
|
6
|
+
|
|
7
|
+
| File | Purpose |
|
|
8
|
+
|---|---|
|
|
9
|
+
| `SKILL.md` | Phases, checklist, configured-root contract, execute-vs-read for the CLI, gotchas |
|
|
10
|
+
| `scripts/create_fresh_branch.py` | Deterministic CLI: resolve configured root (fail closed before fetch), fetch base, `git worktree add -b`, JSON stdout |
|
|
11
|
+
| `scripts/fresh_branch_git_commands.py` | Git command helpers: fetch, ref checks, `git worktree add -b --no-track` |
|
|
12
|
+
| `scripts/test_create_fresh_branch.py` | Behavioral tests with temporary git repos (default root, explicit root, escape, collisions) |
|
|
13
|
+
| `scripts/test_fresh_branch_git_commands.py` | Behavioral tests for the git command helpers |
|
|
14
|
+
| `scripts/fresh_branch_scripts_constants/` | Constants package (`fresh_branch_cli_constants`) for CLI flags and error strings |
|
|
@@ -1,14 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Creates a new branch from fresh-fetched `origin/main` inside an isolated worktree under a configured root. Default: `<repo-root>/.claude/worktrees/<agent>/<branch-name>`. Optional absolute `--worktree-root` relocates the root (agent and branch still nest under it). Relative roots and path escape fail closed. Does not push, open a PR, or run `checkout -b` in the caller tree.
|
|
4
|
-
|
|
5
|
-
## Key files
|
|
6
|
-
|
|
7
|
-
| File | Purpose |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `SKILL.md` | Phases, checklist, configured-root contract, execute-vs-read for the CLI, gotchas |
|
|
10
|
-
| `scripts/create_fresh_branch.py` | Deterministic CLI: resolve configured root (fail closed before fetch), fetch base, `git worktree add -b`, JSON stdout |
|
|
11
|
-
| `scripts/fresh_branch_git_commands.py` | Git command helpers: fetch, ref checks, `git worktree add -b --no-track` |
|
|
12
|
-
| `scripts/test_create_fresh_branch.py` | Behavioral tests with temporary git repos (default root, explicit root, escape, collisions) |
|
|
13
|
-
| `scripts/test_fresh_branch_git_commands.py` | Behavioral tests for the git command helpers |
|
|
14
|
-
| `scripts/fresh_branch_scripts_constants/` | Constants package (`fresh_branch_cli_constants`) for CLI flags and error strings |
|
|
1
|
+
@AGENTS.md
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# grok-spawn
|
|
2
|
+
|
|
3
|
+
**Trigger:** `/grok-spawn`, "spawn grok workers", "grok worker fleet", "run this with grok workers", "headless grok batch".
|
|
4
|
+
|
|
5
|
+
Orchestrator playbook for fleets of headless grok CLI workers. Composes
|
|
6
|
+
`grok_worker_preflight.py` and `spawn_grok_batch.py` by name. Holds no spawn
|
|
7
|
+
logic of its own. The calling session verifies results and owns every commit,
|
|
8
|
+
push, and GitHub post.
|
|
9
|
+
|
|
10
|
+
## Subdirectories
|
|
11
|
+
|
|
12
|
+
| Directory | Role |
|
|
13
|
+
|---|---|
|
|
14
|
+
| `reference/` | Prompt-part templates and tool-profile flag docs the hub cites on demand. |
|
|
15
|
+
|
|
16
|
+
## Key files
|
|
17
|
+
|
|
18
|
+
| File | Role |
|
|
19
|
+
|---|---|
|
|
20
|
+
| `SKILL.md` | Entry protocol: when to use, gotchas, preflight → batch spec → launch → collect → verify. |
|
|
21
|
+
| `reference/worker-briefs.md` | Readonly investigation brief, build brief (edits and tests only), report contract. |
|
|
22
|
+
| `reference/flag-profiles.md` | Readonly vs build flag sets, shared flags, leader-socket and stagger rules, `--agent` note. |
|
|
23
|
+
|
|
24
|
+
## Entry point
|
|
25
|
+
|
|
26
|
+
No skill-local scripts. Runtime lives in `$HOME/.claude/scripts/`
|
|
27
|
+
(`grok_worker_preflight.py`, `spawn_grok_batch.py`, `grok_headless_runner.py`)
|
|
28
|
+
after install. Constants live in `scripts/dev_env_scripts_constants/`.
|
|
@@ -1,28 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
**Trigger:** `/grok-spawn`, "spawn grok workers", "grok worker fleet", "run this with grok workers", "headless grok batch".
|
|
4
|
-
|
|
5
|
-
Orchestrator playbook for fleets of headless grok CLI workers. Composes
|
|
6
|
-
`grok_worker_preflight.py` and `spawn_grok_batch.py` by name. Holds no spawn
|
|
7
|
-
logic of its own. The calling session verifies results and owns every commit,
|
|
8
|
-
push, and GitHub post.
|
|
9
|
-
|
|
10
|
-
## Subdirectories
|
|
11
|
-
|
|
12
|
-
| Directory | Role |
|
|
13
|
-
|---|---|
|
|
14
|
-
| `reference/` | Prompt-part templates and tool-profile flag docs the hub cites on demand. |
|
|
15
|
-
|
|
16
|
-
## Key files
|
|
17
|
-
|
|
18
|
-
| File | Role |
|
|
19
|
-
|---|---|
|
|
20
|
-
| `SKILL.md` | Entry protocol: when to use, gotchas, preflight → batch spec → launch → collect → verify. |
|
|
21
|
-
| `reference/worker-briefs.md` | Readonly investigation brief, build brief (edits and tests only), report contract. |
|
|
22
|
-
| `reference/flag-profiles.md` | Readonly vs build flag sets, shared flags, leader-socket and stagger rules, `--agent` note. |
|
|
23
|
-
|
|
24
|
-
## Entry point
|
|
25
|
-
|
|
26
|
-
No skill-local scripts. Runtime lives in `$HOME/.claude/scripts/`
|
|
27
|
-
(`grok_worker_preflight.py`, `spawn_grok_batch.py`, `grok_headless_runner.py`)
|
|
28
|
-
after install. Constants live in `scripts/dev_env_scripts_constants/`.
|
|
1
|
+
@AGENTS.md
|
|
@@ -232,7 +232,7 @@ workflow resume is available.
|
|
|
232
232
|
| Work | Agent type | Model |
|
|
233
233
|
|---|---|---|
|
|
234
234
|
| Feature, bug, and refactor coding | `clean-coder` | `sonnet` on a Claude host; the sonnet-equivalent id the worker-model resolver prints on a third-party host |
|
|
235
|
-
|
|
|
235
|
+
| Review and verification | `code-quality-agent` | `sonnet` on a Claude host; the sonnet-equivalent id the worker-model resolver prints on a third-party host |
|
|
236
236
|
| Script runs, GitHub posting, and backfill driving | `general-purpose` runner | `sonnet` on a Claude host; the sonnet-equivalent id the worker-model resolver prints on a third-party host |
|
|
237
237
|
| PR descriptions | `pr-description-writer` | `haiku`, with file-list grounding check |
|
|
238
238
|
| Fan-out searches and checklist verification reads | `Explore` | `haiku`; use `sonnet` when judgment-heavy |
|
|
@@ -265,8 +265,7 @@ Routing rules:
|
|
|
265
265
|
system, with no second one.
|
|
266
266
|
- Resume a warm workflow agent before creating a new workflow run when
|
|
267
267
|
the warm agent holds the relevant context.
|
|
268
|
-
-
|
|
269
|
-
same workflow agent never grades work it wrote.
|
|
268
|
+
- Review and verification workflows apply the [review guide](../reviews/SKILL.md#review-workflow).
|
|
270
269
|
- PR-description workflows include the actual changed-file list in the
|
|
271
270
|
prompt and verify the final body against that file list before posting
|
|
272
271
|
or returning it.
|
|
@@ -363,4 +362,3 @@ no open work remains, run `set --status done` before any re-arm attempt.
|
|
|
363
362
|
## File-backed run ledger
|
|
364
363
|
|
|
365
364
|
When host task tools are absent, reconcile delegated work through `scripts/grok_run_ledger.py` under the run-state directory (stable task ids, one live owner, unique advisor sessions, dependency blocking, snapshot-drift reopening).
|
|
366
|
-
|
|
@@ -57,8 +57,7 @@ Refuse the first matching case and stop:
|
|
|
57
57
|
- A requested change spans files outside the packet's allowed file set.
|
|
58
58
|
- A task contains more than one deliverable, acceptance check, or commit.
|
|
59
59
|
- A required task tool, verifier, model tier, advisor, review path, or gate is unavailable.
|
|
60
|
-
- The user asks to bypass verification,
|
|
61
|
-
review, final validation, or a publication gate.
|
|
60
|
+
- The user asks to bypass verification, review under the [review guide](../reviews/SKILL.md#review-workflow), final validation, or a publication gate.
|
|
62
61
|
|
|
63
62
|
Return exactly: `Plan-to-PR blocked: <missing input or capability>.`
|
|
64
63
|
|
|
@@ -105,8 +104,8 @@ For each seeded task:
|
|
|
105
104
|
1. The orchestrator issues the standalone task ticket.
|
|
106
105
|
2. One worker implements one deliverable within the ticket's allowed files.
|
|
107
106
|
3. The worker runs the one acceptance check and reports exact output and blockers.
|
|
108
|
-
4.
|
|
109
|
-
scope
|
|
107
|
+
4. Review and verify the task diff, baseline, named checks, and ticket-to-diff
|
|
108
|
+
scope under the [review guide](../reviews/SKILL.md#review-workflow).
|
|
110
109
|
5. The orchestrator creates exactly one commit and records its hash.
|
|
111
110
|
|
|
112
111
|
No task borrows files, acceptance checks, or commit history from another task.
|
|
@@ -114,7 +113,7 @@ Unrelated changes remain untouched and uncommitted.
|
|
|
114
113
|
|
|
115
114
|
## Review and repair
|
|
116
115
|
|
|
117
|
-
Before every commit,
|
|
116
|
+
Before every commit, record fresh verification and review under the [review guide](../reviews/SKILL.md#review-workflow).
|
|
118
117
|
After the commit, a separate fast low-effort Luna review worker runs native
|
|
119
118
|
findings-only correctness review at `/e-code-review low`. The review returns
|
|
120
119
|
findings only and has no repair flag.
|
|
@@ -128,8 +127,8 @@ gate after cleanup.
|
|
|
128
127
|
## Final validation and publication
|
|
129
128
|
|
|
130
129
|
The Luna max final validator maps every commit to one packet task and checks
|
|
131
|
-
cumulative behavior, the allowed-file ledger, acceptance checks,
|
|
132
|
-
output,
|
|
130
|
+
cumulative behavior, the allowed-file ledger, acceptance checks, verification
|
|
131
|
+
output, and post-commit review records. Any
|
|
133
132
|
unmapped commit, missing record, failed gate, or unresolved finding blocks
|
|
134
133
|
publication.
|
|
135
134
|
|
|
@@ -7,7 +7,7 @@ PASS, FAIL plus file and line evidence, or N/A plus a reason.
|
|
|
7
7
|
2. Confirm every task record has required identity, files, acceptance, and commit fields.
|
|
8
8
|
3. Confirm every committed task has native findings-only review and separate repair records.
|
|
9
9
|
4. Confirm every repair has acceptance output, fresh exact-surface verification, and an amended commit before the next review.
|
|
10
|
-
5. Confirm all review records are clean and all
|
|
10
|
+
5. Confirm all review records are clean and all verification records are present.
|
|
11
11
|
6. Confirm the complete allowed-file ledger contains no extra changed files.
|
|
12
12
|
7. Confirm final validation and workflow self-audit evidence are present before release.
|
|
13
13
|
8. Confirm the finalized PR branch receives Luna max `/e-simplify` cleanup with
|
|
@@ -11,10 +11,10 @@ judgment remains in the hub or companion reference.
|
|
|
11
11
|
| Seed implementation work after packet approval | deterministic | `task-seed:reference/task-seeds.md` | Host task IDs, packet path, and evidence | task-tool |
|
|
12
12
|
| Record task fields | deterministic | `reference/run-record.schema.json` and `scripts/validate_protocol.py` | Validator output and exit code | `scripts/test_validate_protocol.py` |
|
|
13
13
|
| Implement one deliverable | judgment | `SKILL.md` | Worker report and diff | N/A: implementation choice |
|
|
14
|
-
| Verify exact surface | deterministic | `task-seed:reference/task-seeds.md` |
|
|
14
|
+
| Verify exact surface | deterministic | `task-seed:reference/task-seeds.md` | Verification output and [review guide](../../reviews/SKILL.md#review-workflow) | task-tool |
|
|
15
15
|
| Review committed task | deterministic | `reference/review-loop.md` | Findings-only native review record | `test_task_ticket_contract.py` |
|
|
16
16
|
| Repair confirmed findings | deterministic | `reference/review-loop.md` | Separate repair record and confirmed findings | `test_task_ticket_contract.py` |
|
|
17
|
-
| Decide whether a finding is confirmed | judgment |
|
|
17
|
+
| Decide whether a finding is confirmed | judgment | [review guide](../../reviews/SKILL.md#review-judgment) | Repair record names the confirmed finding | N/A: review judgment |
|
|
18
18
|
| Repeat until clean | borderline | `reference/review-loop.md` | Amended commit and clean review record | `test_task_ticket_contract.py` |
|
|
19
19
|
| Validate cumulative release | deterministic | `task-seed:reference/final-validation-tasks.md` | Final validator task evidence | task-tool |
|
|
20
20
|
| Self-audit the workflow | deterministic | `task-seed:reference/self-audit-tasks.md` | Self-audit task evidence | task-tool |
|
|
@@ -6,7 +6,7 @@ Run this loop for every committed task. Store each pass in the task record.
|
|
|
6
6
|
2. It invokes the native findings-only `/e-code-review low` correctness
|
|
7
7
|
capability; the review has no repair flag.
|
|
8
8
|
3. Record resolved model, effort, command, findings, repair status, and surface
|
|
9
|
-
hash.
|
|
9
|
+
hash. Apply the [review guide](../../reviews/SKILL.md#review-workflow) to every finding.
|
|
10
10
|
4. A separate fast low-effort Luna repair worker applies only confirmed findings.
|
|
11
11
|
5. Rerun the task acceptance check and fresh exact-surface verification.
|
|
12
12
|
6. Amend the task commit and repeat the native review until clean.
|
|
@@ -14,7 +14,7 @@ Run this loop for every committed task. Store each pass in the task record.
|
|
|
14
14
|
## Accepted records
|
|
15
15
|
|
|
16
16
|
Clean means the native review reports no findings for the exact committed
|
|
17
|
-
surface. A repaired pass is not accepted until acceptance and fresh
|
|
17
|
+
surface. A repaired pass is not accepted until acceptance and fresh verification
|
|
18
18
|
output are recorded against the amended commit.
|
|
19
19
|
|
|
20
20
|
## Example
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"finding": {"type": "object", "additionalProperties": false, "required": ["finding", "disposition"], "properties": {"finding": {"type": "string", "minLength": 1}, "disposition": {"enum": ["confirmed", "dismissed"]}}},
|
|
23
23
|
"review_record": {"type": "object", "additionalProperties": false, "required": ["resolved_model", "effort", "command", "findings", "repair_status", "surface_hash", "findings_only", "has_repair_flag"], "properties": {"resolved_model": {"type": "string", "minLength": 1}, "effort": {"type": "string", "minLength": 1}, "command": {"type": "string", "minLength": 1}, "findings": {"type": "array", "items": {"$ref": "#/$defs/finding"}}, "repair_status": {"type": "string", "minLength": 1}, "surface_hash": {"type": "string", "minLength": 1}, "findings_only": {"const": true}, "has_repair_flag": {"const": false}}},
|
|
24
24
|
"repair_record": {"type": "object", "additionalProperties": false, "required": ["resolved_model", "effort", "confirmed_findings", "repair_status", "surface_hash"], "properties": {"resolved_model": {"type": "string", "minLength": 1}, "effort": {"type": "string", "minLength": 1}, "confirmed_findings": {"type": "array", "items": {"type": "string", "minLength": 1}}, "repair_status": {"type": "string", "minLength": 1}, "surface_hash": {"type": "string", "minLength": 1}}},
|
|
25
|
-
"verification_record": {"type": "object", "additionalProperties": false, "required": ["acceptance_output", "
|
|
25
|
+
"verification_record": {"type": "object", "additionalProperties": false, "required": ["acceptance_output", "verification_output", "surface_hash"], "properties": {"acceptance_output": {"type": "string", "minLength": 1}, "verification_output": {"type": "string", "minLength": 1}, "surface_hash": {"type": "string", "minLength": 1}}}
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@ equivalent before implementation. Mark it complete only with evidence.
|
|
|
7
7
|
2. Capture the baseline and create one task record from the run-record schema.
|
|
8
8
|
3. Implement the single deliverable within the allowed file set.
|
|
9
9
|
4. Run the acceptance check and record its exact output.
|
|
10
|
-
5. Run fresh exact-surface verification and
|
|
10
|
+
5. Run fresh exact-surface verification and apply the [review guide](../../reviews/SKILL.md#review-workflow).
|
|
11
11
|
6. Create exactly one task commit and record its identity.
|
|
12
12
|
7. Run the separate native review and record findings-only output.
|
|
13
13
|
8. Run separate Luna repair only for confirmed findings; rerun acceptance and
|
|
@@ -17,13 +17,12 @@ commits.
|
|
|
17
17
|
| Worker route | The model role and selected route from `reference/model-routing.md`; planner and final-validator records include Luna max plus Sol xhigh advisor evidence, and orchestrator records the max route |
|
|
18
18
|
| Commit record | Exactly one commit hash for this ticket |
|
|
19
19
|
| Review record | Separate fast low-effort Luna review output that invokes native `/e-code-review low` and returns findings only, followed by separate fast low-effort Luna repair output, including resolved model, effort, command, findings, repair status, and surface hash |
|
|
20
|
-
| Verification record | Fresh
|
|
20
|
+
| Verification record | Fresh verification output for the exact surface and review under the [review guide](../../reviews/SKILL.md#review-workflow) |
|
|
21
21
|
|
|
22
22
|
## Execution contract
|
|
23
23
|
|
|
24
24
|
The worker changes only the allowed files, runs the acceptance check, and reports
|
|
25
|
-
the exact output.
|
|
26
|
-
commit is created. The commit hash is recorded before the separate review pass.
|
|
25
|
+
the exact output. Review and verification follow the [review guide](../../reviews/SKILL.md#review-workflow) before one commit is created. The commit hash is recorded before the separate review pass.
|
|
27
26
|
|
|
28
27
|
## Review and completion contract
|
|
29
28
|
|
|
@@ -33,6 +32,6 @@ repair flag. A separate fast low-effort Luna repair worker applies only confirme
|
|
|
33
32
|
the resolved model, effort, command, findings, repair status, and surface hash.
|
|
34
33
|
Confirmed repairs require the acceptance check and fresh exact-surface verification
|
|
35
34
|
again; amend the task commit and repeat the native review until clean. Missing
|
|
36
|
-
native review
|
|
35
|
+
native review fails closed. The
|
|
37
36
|
final validator maps the commit to this ticket and rejects missing or extra
|
|
38
37
|
records.
|
|
@@ -174,8 +174,7 @@ ALL_REPAIR_FIELDS: tuple[str, ...] = (
|
|
|
174
174
|
)
|
|
175
175
|
ALL_VERIFICATION_FIELDS: tuple[str, ...] = (
|
|
176
176
|
"acceptance_output",
|
|
177
|
-
"
|
|
178
|
-
"verified_commit_gate",
|
|
177
|
+
"verification_output",
|
|
179
178
|
"surface_hash",
|
|
180
179
|
)
|
|
181
180
|
ALL_REVIEW_TEXT_FIELDS: tuple[str, ...] = (
|
|
@@ -20,7 +20,7 @@ validate_record = VALIDATE_PROTOCOL_MODULE.validate_record
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
def valid_record() -> dict[str, object]:
|
|
23
|
-
verification = {"acceptance_output": "passed: pytest", "
|
|
23
|
+
verification = {"acceptance_output": "passed: pytest", "verification_output": "passed: clean", "surface_hash": "a" * 64}
|
|
24
24
|
return {
|
|
25
25
|
"task_identity": "task-3", "deliverable": "validator", "allowed_files": ["validator.py"],
|
|
26
26
|
"acceptance_check": "pytest", "baseline": "clean", "worker_route": "implementation worker; effort=low", "commit": "a1b2c3d",
|
|
@@ -90,7 +90,7 @@ def test_skill_contract_enforces_task_commit_and_review_order() -> None:
|
|
|
90
90
|
skill_text = read_skill_text()
|
|
91
91
|
|
|
92
92
|
assert EXPECTED_TASK_PROTOCOL_HEADING in skill_text
|
|
93
|
-
assert "fresh verification and
|
|
93
|
+
assert "fresh verification and review under the [review guide]" in skill_text
|
|
94
94
|
assert (
|
|
95
95
|
"native\nfindings-only correctness review at `/e-code-review low`" in skill_text
|
|
96
96
|
)
|
|
@@ -163,7 +163,7 @@ def test_skill_contract_references_future_fixed_artifacts_without_copying_tables
|
|
|
163
163
|
|
|
164
164
|
def test_skill_contract_companion_reference_paths_exist() -> None:
|
|
165
165
|
skill_text = read_skill_text()
|
|
166
|
-
local_reference_paths = re.findall(r"\]\(([^)]+)\)", skill_text)
|
|
166
|
+
local_reference_paths = [each_path.split("#", maxsplit=1)[0] for each_path in re.findall(r"\]\(([^)]+)\)", skill_text)]
|
|
167
167
|
repository_paths = [
|
|
168
168
|
each_path
|
|
169
169
|
for each_path in local_reference_paths
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# pr-converge skill
|
|
2
|
+
|
|
3
|
+
Drives a draft PR to convergence by driving the internal passes to clean first — a code-review pass and a bugteam audit — then running Cursor Bugbot and Copilot as terminal confirmation gates, applying TDD fixes, posting inline replies, and re-triggering the external reviewers each tick until all are clean on the same HEAD and the PR is mergeable.
|
|
4
|
+
|
|
5
|
+
**Trigger:** `/pr-converge`, "drive PR to convergence", "loop bugbot and bugteam", "babysit bugbot and bugteam", "until both are clean", "converge this PR".
|
|
6
|
+
|
|
7
|
+
## Key files
|
|
8
|
+
|
|
9
|
+
| File | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| `SKILL.md` | Full tick workflow, pre-flight checks, state schema, budget-aware tick boundaries, stop conditions |
|
|
12
|
+
| `pr_converge_skill_constants/constants.py` | Runtime and API constants (bot logins, review states, GH API path templates, regex patterns) |
|
|
13
|
+
|
|
14
|
+
## Subdirectories
|
|
15
|
+
|
|
16
|
+
| Directory | Role |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `pr_converge_skill_constants/` | Importable constants module shared by skill scripts |
|
|
19
|
+
| `reference/` | Per-tick steps, convergence gates, fix protocol, obstacle runbooks, state schema, stop conditions, examples |
|
|
20
|
+
| `scripts/` | Python helpers (bugbot check, convergence check, Copilot review fetcher, fix-reply poster, reflow tool) and their tests |
|
|
21
|
+
| `workflows/` | ScheduleWakeup loop pacing specification (`pacer=schedule_wakeup`) |
|
|
22
|
+
|
|
23
|
+
## Conventions
|
|
24
|
+
|
|
25
|
+
- Pre-flight selects a pacer via `select_converge_pacer.py`: `schedule_wakeup` or `portable`. Missing `ScheduleWakeup` selects portable — it does not abort the skill.
|
|
26
|
+
- On `pacer=schedule_wakeup`, each invocation runs one tick and the next advances via `ScheduleWakeup`. On `pacer=portable`, the session runs ticks continuously (continue or in-session poll) until convergence, a stop condition, or a budget handoff.
|
|
27
|
+
- Loop state persists to `$CLAUDE_JOB_DIR/pr-converge-state.json` between ticks.
|
|
28
|
+
- Isolation uses `EnterWorktree` when present; otherwise the portable driver git worktree path, then `preflight_worktree.py`.
|
|
29
|
+
- All findings and PR reports state verified facts only — no hedging language.
|
|
30
|
+
- The GitHub MCP (`pull_request_read`, `pull_request_review_write`) is the primary path for PR inspection; `gh api` is the fallback.
|
|
31
|
+
- Three step-scoped agents (`fix_executor`, `thread_sweep`, `copilot_watch`) persist across ticks via the `persistent_agents` map in loop state; each tick resumes them with `SendMessage` and spawns a fresh named agent when a stored id is dead.
|
|
32
|
+
- The tick delegates shared mechanics to three sibling sub-skills: `reviewer-gates` (opt-out, Copilot quota, Bugbot trigger), `pr-fix-protocol` (fix sequence + unresolved-thread sweep), and `pr-loop-lifecycle` (run open/close). Target resolution happens inline in `reference/per-tick.md` Steps 1 and 1.5. Audit posting follows the `_shared/pr-loop/post-audit-thread-contract.md` contract, run through `_shared/pr-loop/scripts/post_audit_thread.py`.
|
|
@@ -1,32 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Drives a draft PR to convergence by driving the internal passes to clean first — a code-review pass and a bugteam audit — then running Cursor Bugbot and Copilot as terminal confirmation gates, applying TDD fixes, posting inline replies, and re-triggering the external reviewers each tick until all are clean on the same HEAD and the PR is mergeable.
|
|
4
|
-
|
|
5
|
-
**Trigger:** `/pr-converge`, "drive PR to convergence", "loop bugbot and bugteam", "babysit bugbot and bugteam", "until both are clean", "converge this PR".
|
|
6
|
-
|
|
7
|
-
## Key files
|
|
8
|
-
|
|
9
|
-
| File | Purpose |
|
|
10
|
-
|---|---|
|
|
11
|
-
| `SKILL.md` | Full tick workflow, pre-flight checks, state schema, budget-aware tick boundaries, stop conditions |
|
|
12
|
-
| `pr_converge_skill_constants/constants.py` | Runtime and API constants (bot logins, review states, GH API path templates, regex patterns) |
|
|
13
|
-
|
|
14
|
-
## Subdirectories
|
|
15
|
-
|
|
16
|
-
| Directory | Role |
|
|
17
|
-
|---|---|
|
|
18
|
-
| `pr_converge_skill_constants/` | Importable constants module shared by skill scripts |
|
|
19
|
-
| `reference/` | Per-tick steps, convergence gates, fix protocol, obstacle runbooks, state schema, stop conditions, examples |
|
|
20
|
-
| `scripts/` | Python helpers (bugbot check, convergence check, Copilot review fetcher, fix-reply poster, reflow tool) and their tests |
|
|
21
|
-
| `workflows/` | ScheduleWakeup loop pacing specification (`pacer=schedule_wakeup`) |
|
|
22
|
-
|
|
23
|
-
## Conventions
|
|
24
|
-
|
|
25
|
-
- Pre-flight selects a pacer via `select_converge_pacer.py`: `schedule_wakeup` or `portable`. Missing `ScheduleWakeup` selects portable — it does not abort the skill.
|
|
26
|
-
- On `pacer=schedule_wakeup`, each invocation runs one tick and the next advances via `ScheduleWakeup`. On `pacer=portable`, the session runs ticks continuously (continue or in-session poll) until convergence, a stop condition, or a budget handoff.
|
|
27
|
-
- Loop state persists to `$CLAUDE_JOB_DIR/pr-converge-state.json` between ticks.
|
|
28
|
-
- Isolation uses `EnterWorktree` when present; otherwise the portable driver git worktree path, then `preflight_worktree.py`.
|
|
29
|
-
- All findings and PR reports state verified facts only — no hedging language.
|
|
30
|
-
- The GitHub MCP (`pull_request_read`, `pull_request_review_write`) is the primary path for PR inspection; `gh api` is the fallback.
|
|
31
|
-
- Three step-scoped agents (`fix_executor`, `thread_sweep`, `copilot_watch`) persist across ticks via the `persistent_agents` map in loop state; each tick resumes them with `SendMessage` and spawns a fresh named agent when a stored id is dead.
|
|
32
|
-
- The tick delegates shared mechanics to three sibling sub-skills: `reviewer-gates` (opt-out, Copilot quota, Bugbot trigger), `pr-fix-protocol` (fix sequence + unresolved-thread sweep), and `pr-loop-lifecycle` (run open/close). Target resolution happens inline in `reference/per-tick.md` Steps 1 and 1.5. Audit posting follows the `_shared/pr-loop/post-audit-thread-contract.md` contract, run through `_shared/pr-loop/scripts/post_audit_thread.py`.
|
|
1
|
+
@AGENTS.md
|
|
@@ -168,9 +168,8 @@ when `$CLAUDE_JOB_DIR` is gone.
|
|
|
168
168
|
|
|
169
169
|
Fields: `phase`, `tick_count`, `bugbot_clean_at`, `code_review_clean_at`,
|
|
170
170
|
`bugteam_clean_at`, `copilot_clean_at`, `merge_state_status`, `current_head`,
|
|
171
|
-
`bugbot_acknowledged_at`, `bugbot_down`, `copilot_down`,
|
|
172
|
-
`
|
|
173
|
-
`agents_session_id`, `persistent_agents`.
|
|
171
|
+
`bugbot_acknowledged_at`, `bugbot_down`, `copilot_down`, `agents_session_id`,
|
|
172
|
+
`persistent_agents`.
|
|
174
173
|
|
|
175
174
|
## Persistent per-step agents
|
|
176
175
|
|
|
@@ -190,19 +189,17 @@ the `persistent_agents` map
|
|
|
190
189
|
resolver-supplied sonnet-equivalent on third-party hosts. The `name`
|
|
191
190
|
makes the agent a persistent teammate
|
|
192
191
|
that idles awaiting messages. Record `{agent_id, created_tick,
|
|
193
|
-
last_used_tick}` under the step key. Keep the spawn prompt
|
|
194
|
-
|
|
195
|
-
|
|
192
|
+
last_used_tick}` under the step key. Keep the spawn prompt focused on the
|
|
193
|
+
current fix. Step 6 sends audit judgment through the
|
|
194
|
+
[review guide](../reviews/SKILL.md#review-workflow).
|
|
196
195
|
- **Stale or dead id:** on a `SendMessage` failure, or no acknowledgment
|
|
197
196
|
within one bounded wait, drop the map entry, spawn a fresh named agent,
|
|
198
197
|
record it, and continue the tick. Never abort a tick on a stale id;
|
|
199
198
|
never retry the same dead id.
|
|
200
199
|
- **Fresh every round (never persisted):** the Step 5 host-aware
|
|
201
200
|
`invoke_code_review.py` / `/code-review ultra --fix` pass and the Step 6
|
|
202
|
-
bugteam audit
|
|
203
|
-
|
|
204
|
-
`SubagentStop`, so no verdict mints (see the named-`code-verifier` entry
|
|
205
|
-
in the Gotchas list below).
|
|
201
|
+
bugteam audit. Apply the [review guide](../reviews/SKILL.md#review-workflow)
|
|
202
|
+
to each review pass.
|
|
206
203
|
- **Shutdown:** at loop end (convergence or a stop condition), send each
|
|
207
204
|
persistent agent a shutdown request and clear `persistent_agents` before
|
|
208
205
|
the `pr-loop-lifecycle` Close.
|
|
@@ -263,7 +260,6 @@ post a fresh PR in a fresh branch based on origin main to the user.
|
|
|
263
260
|
[Step 1.5](reference/per-tick.md). Skipping this reviews and edits the
|
|
264
261
|
wrong repo. The route is routine and automatic — never a material fork
|
|
265
262
|
to pause on.
|
|
266
|
-
- **A named/teammate `code-verifier` never mints a verdict** — In a background-job session, an `Agent`-tool `code-verifier` spawned with a `name` (or otherwise as a persistent teammate) goes idle/"available" awaiting messages rather than terminating, so its `SubagentStop` never fires. `verifier_verdict_minter.py` mints the verdict only on `SubagentStop`, so no verdict file is written and `verified_commit_gate` blocks the `git commit`/`git push` with "no passing verification verdict" even though the verifier emitted `all_pass`. A `shutdown_request` is ignored and `TaskStop` cannot resolve the teammate's id. Spawn the code-verifier as a one-shot agent with NO `name` (a plain async `Agent` call) so it runs to completion and fires `SubagentStop`, minting the verdict bound to the live surface. Keep the work tree frozen between verification and the commit so the minted surface hash still matches.
|
|
267
263
|
|
|
268
264
|
## Progress checklist
|
|
269
265
|
|
|
@@ -333,7 +329,7 @@ round as converged. This rule holds every tick, every loop, every PR.
|
|
|
333
329
|
- [ ] **clean on `current_head`** → zero unresolved threads (else fix + resolve first)
|
|
334
330
|
→ `bugbot_clean_at = current_head` → Step 7
|
|
335
331
|
- [ ] **no review / commit_id mismatch** → `reviewer-gates` Bugbot flow (Gate 3):
|
|
336
|
-
silent pass →
|
|
332
|
+
silent pass → Step 7; queued/triggered → ScheduleWakeup 360s or portable in-session poll → Step 4;
|
|
337
333
|
down → `bugbot_down = true` → Step 7
|
|
338
334
|
|
|
339
335
|
- [ ] **Step 5: CODE-REVIEW — static sweep, review, fix, advance**
|
|
@@ -373,9 +369,10 @@ round as converged. This rule holds every tick, every loop, every PR.
|
|
|
373
369
|
See: [`reference/per-tick.md` § Step 2 BUGTEAM](reference/per-tick.md);
|
|
374
370
|
[`../bugteam/SKILL.md`](../bugteam/SKILL.md).
|
|
375
371
|
Pre-condition: `code_review_clean_at == current_head`.
|
|
376
|
-
Mandatory: `Skill({skill: "bugteam", args: "<PR URL>"})` this tick
|
|
377
|
-
|
|
378
|
-
`origin/main...HEAD`
|
|
372
|
+
Mandatory: `Skill({skill: "bugteam", args: "<PR URL>"})` this tick.
|
|
373
|
+
Use the [review guide](../reviews/SKILL.md#review-workflow) for its
|
|
374
|
+
judgment. `qbug` is not a substitute. Scope: FULL `origin/main...HEAD`
|
|
375
|
+
diff. Re-resolve HEAD after bugteam.
|
|
379
376
|
|
|
380
377
|
- [ ] **bugteam pushed** → verify threads replied + resolved → reset markers
|
|
381
378
|
→ `phase = CODE_REVIEW` → ScheduleWakeup 360s or portable in-session poll → Step 5
|
|
@@ -392,7 +389,7 @@ round as converged. This rule holds every tick, every loop, every PR.
|
|
|
392
389
|
before these gates run. Count unresolved threads before each gate.
|
|
393
390
|
Every gate records evidence; gate (f) cites evidence from (a)–(e).
|
|
394
391
|
|
|
395
|
-
- [ ] **(a) Copilot findings** — fetch Copilot on `current_head`; dirty → fix + return to Step 5; clean →
|
|
392
|
+
- [ ] **(a) Copilot findings** — fetch Copilot on `current_head`; dirty → fix + return to Step 5; clean → record `copilot_clean_at`; absent → continue; when `copilot_down`, skip
|
|
396
393
|
- [ ] **(b) Claude reviewer** — fetch Claude on `current_head`; dirty → fix + return to Step 5; clean or absent → continue
|
|
397
394
|
- [ ] **(c) Mergeability** — `mergeable_state == "clean"` and `mergeable == true`; dirty → rebase + return to Step 1; blocked/behind/unknown/unstable → hard blocker
|
|
398
395
|
- [ ] **(d) Post-convergence Copilot request** — request Copilot when not pending and not `copilot_down`; enter `COPILOT_WAIT` (Step 7a); when `copilot_down`, skip to (e)
|