claude-dev-env 4.2.0 → 7.0.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.
Files changed (350) hide show
  1. package/.agents/agents/pr-description-writer.md +2 -2
  2. package/.agents/agents/test_agent_frontmatter.py +2 -2
  3. package/.agents/agents/test_pr_description_writer_style.py +1 -3
  4. package/.agents/skills/e-code-review/SKILL.md +12 -12
  5. package/.agents/skills/e-code-review/preflight-proposal.contract.test.mjs +20 -0
  6. package/.agents/skills/e-code-review/reference/fix.md +15 -17
  7. package/.agents/skills/e-code-review/reference/loop.md +35 -39
  8. package/.agents/skills/e-code-review/reference/mode-contract.test.mjs +2 -1
  9. package/.agents/skills/e-code-review/reference/preflight-proposal.md +44 -9
  10. package/.agents/skills/e-code-review/reference/runner-selection.md +13 -14
  11. package/.agents/skills/issue-tracker/SKILL.md +7 -0
  12. package/.agents/skills/pull-request/SKILL.md +216 -0
  13. package/.agents/skills/pull-request/reference/publication-tasks.md +18 -0
  14. package/.agents/skills/pull-request/scripts/github_pr_command_constants/__init__.py +1 -0
  15. package/.agents/skills/pull-request/scripts/github_pr_command_constants/config/__init__.py +1 -0
  16. package/.agents/skills/pull-request/scripts/github_pr_command_constants/config/constants.py +69 -0
  17. package/.agents/skills/pull-request/scripts/pull_request.py +265 -0
  18. package/.agents/skills/pull-request/scripts/recover_legacy_author.py +251 -0
  19. package/.agents/skills/pull-request/scripts/test_github_pr_command_constants.py +58 -0
  20. package/.agents/skills/pull-request/scripts/test_pull_request.py +396 -0
  21. package/.agents/skills/pull-request/scripts/test_recover_legacy_author.py +221 -0
  22. package/.agents/skills/skill-builder/SKILL.md +3 -196
  23. package/.agents/skills/test-runner/SKILL.md +69 -0
  24. package/.agents/skills/test-runner/scripts/preflight_checks.py +365 -0
  25. package/.agents/skills/test-runner/scripts/run_tests.py +316 -0
  26. package/.agents/skills/test-runner/scripts/test_preflight_checks.py +185 -0
  27. package/.agents/skills/test-runner/scripts/test_run_tests.py +281 -0
  28. package/.agents/skills/test-runner/scripts/test_runner_constants/__init__.py +1 -0
  29. package/.agents/skills/test-runner/scripts/test_runner_constants/config/__init__.py +1 -0
  30. package/.agents/skills/test-runner/scripts/test_runner_constants/config/constants.py +96 -0
  31. package/.agents/skills-archived/pr-loop-cloud-transport/reference/identity-and-hooks.md +1 -1
  32. package/_shared/pr-loop/scripts/pr_loop_shared_constants/terminology_sweep_constants.py +6 -0
  33. package/_shared/pr-loop/scripts/terminology_sweep.py +64 -19
  34. package/_shared/pr-loop/scripts/tests/test_terminology_sweep.py +59 -0
  35. package/bin/ever-shipped-skills.mjs +2 -0
  36. package/bin/ever-shipped-skills.test.mjs +8 -0
  37. package/bin/install.agents-home.test.mjs +15 -13
  38. package/bin/install.mjs +37 -1
  39. package/bin/install.policy-lint.test.mjs +78 -0
  40. package/bin/install.prune.test.mjs +149 -20
  41. package/bin/install.pstack-plugin.test.mjs +114 -0
  42. package/bin/install.test.mjs +61 -7
  43. package/bin/refresh-pstack-plugin-skills.test.mjs +211 -0
  44. package/hooks/advisory/pr_done_reminder.py +342 -0
  45. package/hooks/advisory/test_pr_done_reminder.py +249 -0
  46. package/hooks/blocking/bash_post_call_dispatcher.py +53 -6
  47. package/hooks/blocking/code_rules_paired_test.py +22 -15
  48. package/hooks/blocking/pii_prevention_blocker.py +32 -51
  49. package/hooks/blocking/test_bash_post_call_dispatcher.py +55 -17
  50. package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +1 -4
  51. package/hooks/blocking/test_code_rules_command_dispatch.py +2 -2
  52. package/hooks/blocking/test_code_rules_enforcer_paired_test.py +36 -29
  53. package/hooks/blocking/test_code_rules_js_resume_task_enumeration.py +4 -4
  54. package/hooks/blocking/test_code_rules_js_returns_object_schemaless.py +5 -5
  55. package/hooks/blocking/test_pii_prevention_blocker.py +37 -89
  56. package/hooks/blocking/test_pre_tool_use_dispatcher.py +68 -133
  57. package/hooks/blocking/test_pre_tool_use_dispatcher_native.py +20 -51
  58. package/hooks/blocking/test_precommit_code_rules_gate_native_owner.py +18 -18
  59. package/hooks/gh_post_body_texts.py +195 -0
  60. package/hooks/git-hooks/git_hooks_constants/staged_policy_lint.py +12 -0
  61. package/hooks/git-hooks/pre_commit.py +52 -11
  62. package/hooks/git-hooks/test_installed_policy_lint.py +159 -0
  63. package/hooks/git-hooks/test_native_policy_commit.py +87 -0
  64. package/hooks/git-hooks/test_pre_commit.py +246 -0
  65. package/hooks/hooks.json +1 -16
  66. package/hooks/hooks_constants/bash_post_call_dispatcher_constants.py +14 -2
  67. package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +0 -8
  68. package/hooks/hooks_constants/gh_post_body_texts_constants.py +12 -0
  69. package/hooks/hooks_constants/pr_done_reminder_constants.py +98 -0
  70. package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +10 -43
  71. package/hooks/hooks_constants/test_bash_post_call_dispatcher_constants.py +17 -7
  72. package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +0 -7
  73. package/hooks/hooks_constants/test_failure_recorder_constants.py +3 -3
  74. package/hooks/hooks_constants/test_gh_post_body_texts_constants.py +19 -0
  75. package/hooks/hooks_constants/test_pr_done_reminder_constants.py +40 -0
  76. package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +20 -32
  77. package/hooks/observability/test_failure_recorder.py +1 -1
  78. package/hooks/pyproject.toml +1 -1
  79. package/hooks/test_gh_post_body_texts.py +79 -0
  80. package/package.json +2 -2
  81. package/rules/durable-post-artifacts.md +32 -20
  82. package/rules/gh-cli-conventions.md +23 -13
  83. package/rules/git-workflow.md +21 -8
  84. package/scripts/check.ps1 +0 -1
  85. package/{.agents/skills/run-claude-dev-env/driver.mjs → scripts/ci/installer-lifecycle.mjs} +3 -28
  86. package/scripts/ci/installer-lifecycle.test.mjs +26 -0
  87. package/scripts/ci/windows-installer-lifecycle.ps1 +1 -11
  88. package/scripts/dev_env_scripts_constants/shared_tree_constants.py +4 -5
  89. package/scripts/durable_post_lint.py +206 -0
  90. package/scripts/durable_post_lint_config/config/constants.py +96 -0
  91. package/scripts/durable_post_lint_config/config/test_constants.py +25 -0
  92. package/scripts/policy_lint/adapter_configuration.py +53 -12
  93. package/scripts/policy_lint/adapter_detectors.py +13 -6
  94. package/scripts/policy_lint/adapters.py +7 -4
  95. package/scripts/policy_lint/config/constants.py +5 -0
  96. package/scripts/policy_lint/engine.py +48 -4
  97. package/scripts/policy_lint/model.py +1 -0
  98. package/scripts/policy_lint/registry.py +1 -1
  99. package/scripts/policy_lint/selection.py +2 -1
  100. package/scripts/policy_lint/selection_git.py +2 -0
  101. package/scripts/refresh_pstack_plugin_skills.mjs +200 -0
  102. package/scripts/repository_checks/config/constants.py +0 -5
  103. package/scripts/shared_tree_paths.py +32 -3
  104. package/scripts/test_durable_post_lint.py +332 -0
  105. package/scripts/test_shared_tree_paths.py +33 -0
  106. package/scripts/tests/test_adapter_configuration.py +54 -0
  107. package/scripts/tests/test_policy_lint_rules_archive.py +120 -0
  108. package/scripts/tests/test_policy_lint_rules_engine.py +25 -4
  109. package/scripts/tests/test_policy_lint_rules_installed_loader.py +29 -0
  110. package/scripts/tests/test_policy_lint_rules_registry.py +227 -13
  111. package/scripts/tests/test_policy_lint_selection.py +25 -2
  112. package/scripts/tests/test_policy_lint_selection_native_index.py +30 -0
  113. package/scripts/tests/test_rules.py +3 -7
  114. package/.agents/skills/_shared/pr-loop/.claude/CLAUDE.md +0 -1
  115. package/.agents/skills/_shared/pr-loop/AGENTS.md +0 -1
  116. package/.agents/skills/_shared/pr-loop/audit-contract.md +0 -5
  117. package/.agents/skills/_shared/pr-loop/audit-reply-template.md +0 -5
  118. package/.agents/skills/_shared/pr-loop/code-rules-gate.md +0 -5
  119. package/.agents/skills/_shared/pr-loop/fix-protocol.md +0 -5
  120. package/.agents/skills/_shared/pr-loop/gh-payloads.md +0 -5
  121. package/.agents/skills/_shared/pr-loop/portable-driver.md +0 -149
  122. package/.agents/skills/_shared/pr-loop/post-audit-thread-contract.md +0 -5
  123. package/.agents/skills/_shared/pr-loop/precatch-rubric.md +0 -5
  124. package/.agents/skills/_shared/pr-loop/preflight-proposal.contract.test.mjs +0 -119
  125. package/.agents/skills/_shared/pr-loop/preflight-proposal.md +0 -5
  126. package/.agents/skills/_shared/pr-loop/prompts/.claude/CLAUDE.md +0 -1
  127. package/.agents/skills/_shared/pr-loop/prompts/AGENTS.md +0 -1
  128. package/.agents/skills/_shared/pr-loop/prompts/pr-consistency-audit.xml +0 -324
  129. package/.agents/skills/_shared/pr-loop/scripts/.claude/CLAUDE.md +0 -1
  130. package/.agents/skills/_shared/pr-loop/scripts/AGENTS.md +0 -1
  131. package/.agents/skills/_shared/pr-loop/scripts/RUNTIME_SCRIPTS.md +0 -29
  132. package/.agents/skills/_shared/pr-loop/scripts/_cli_utils.py +0 -22
  133. package/.agents/skills/_shared/pr-loop/scripts/_path_resolver.py +0 -186
  134. package/.agents/skills/_shared/pr-loop/scripts/_xml_utils.py +0 -20
  135. package/.agents/skills/_shared/pr-loop/scripts/audit_category_schema.py +0 -355
  136. package/.agents/skills/_shared/pr-loop/scripts/build_audit_prompt.py +0 -289
  137. package/.agents/skills/_shared/pr-loop/scripts/build_converge_task_list.py +0 -310
  138. package/.agents/skills/_shared/pr-loop/scripts/build_fix_prompt.py +0 -292
  139. package/.agents/skills/_shared/pr-loop/scripts/init_loop_state.py +0 -134
  140. package/.agents/skills/_shared/pr-loop/scripts/portable_converge_driver.py +0 -1646
  141. package/.agents/skills/_shared/pr-loop/scripts/preflight_worktree.py +0 -392
  142. package/.agents/skills/_shared/pr-loop/scripts/select_converge_pacer.py +0 -215
  143. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/.claude/CLAUDE.md +0 -1
  144. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/AGENTS.md +0 -1
  145. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/__init__.py +0 -0
  146. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/audit_category_schema_constants.py +0 -37
  147. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/converge_task_list_constants.py +0 -56
  148. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/handoff_constants.py +0 -45
  149. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/pacer_constants.py +0 -47
  150. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/path_resolver_constants.py +0 -157
  151. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/portable_driver_constants.py +0 -177
  152. package/.agents/skills/_shared/pr-loop/scripts/skills_pr_loop_constants/preflight_constants.py +0 -70
  153. package/.agents/skills/_shared/pr-loop/scripts/teardown_worktrees.py +0 -172
  154. package/.agents/skills/_shared/pr-loop/scripts/test__path_resolver.py +0 -106
  155. package/.agents/skills/_shared/pr-loop/scripts/test_audit_category_schema.py +0 -94
  156. package/.agents/skills/_shared/pr-loop/scripts/test_build_audit_prompt.py +0 -499
  157. package/.agents/skills/_shared/pr-loop/scripts/test_build_converge_task_list.py +0 -140
  158. package/.agents/skills/_shared/pr-loop/scripts/test_build_fix_prompt.py +0 -262
  159. package/.agents/skills/_shared/pr-loop/scripts/test_init_loop_state.py +0 -71
  160. package/.agents/skills/_shared/pr-loop/scripts/test_portable_converge_driver.py +0 -1119
  161. package/.agents/skills/_shared/pr-loop/scripts/test_preflight_worktree.py +0 -287
  162. package/.agents/skills/_shared/pr-loop/scripts/test_select_converge_pacer.py +0 -207
  163. package/.agents/skills/_shared/pr-loop/scripts/test_teardown_worktrees.py +0 -59
  164. package/.agents/skills/_shared/pr-loop/scripts/test_write_handoff.py +0 -201
  165. package/.agents/skills/_shared/pr-loop/scripts/write_audit_outcomes.py +0 -182
  166. package/.agents/skills/_shared/pr-loop/scripts/write_fix_outcomes.py +0 -206
  167. package/.agents/skills/_shared/pr-loop/scripts/write_handoff.py +0 -309
  168. package/.agents/skills/_shared/pr-loop/state-schema.md +0 -5
  169. package/.agents/skills/_shared/pr-loop/worker-spawn.md +0 -5
  170. package/.agents/skills/autoconverge/.claude/CLAUDE.md +0 -1
  171. package/.agents/skills/autoconverge/AGENTS.md +0 -1
  172. package/.agents/skills/autoconverge/SKILL.md +0 -431
  173. package/.agents/skills/autoconverge/reference/.claude/CLAUDE.md +0 -1
  174. package/.agents/skills/autoconverge/reference/AGENTS.md +0 -1
  175. package/.agents/skills/autoconverge/reference/closing-report.md +0 -93
  176. package/.agents/skills/autoconverge/reference/convergence-gates.md +0 -31
  177. package/.agents/skills/autoconverge/reference/convergence.md +0 -219
  178. package/.agents/skills/autoconverge/reference/copilot-findings.md +0 -51
  179. package/.agents/skills/autoconverge/reference/gotchas.md +0 -66
  180. package/.agents/skills/autoconverge/reference/headless-safety.md +0 -44
  181. package/.agents/skills/autoconverge/reference/multi-pr.md +0 -128
  182. package/.agents/skills/autoconverge/reference/self-closing-loop.md +0 -84
  183. package/.agents/skills/autoconverge/reference/stop-conditions.md +0 -127
  184. package/.agents/skills/autoconverge/test_portable_pacer_gate.py +0 -54
  185. package/.agents/skills/autoconverge/workflow/.claude/CLAUDE.md +0 -1
  186. package/.agents/skills/autoconverge/workflow/AGENTS.md +0 -1
  187. package/.agents/skills/autoconverge/workflow/aggregate_runs.py +0 -371
  188. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/.claude/CLAUDE.md +0 -1
  189. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/AGENTS.md +0 -1
  190. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/__init__.py +0 -0
  191. package/.agents/skills/autoconverge/workflow/autoconverge_report_constants/render_report_constants.py +0 -250
  192. package/.agents/skills/autoconverge/workflow/converge.clean-audit.test.mjs +0 -665
  193. package/.agents/skills/autoconverge/workflow/converge.codex-gate.test.mjs +0 -472
  194. package/.agents/skills/autoconverge/workflow/converge.contract.test.mjs +0 -64
  195. package/.agents/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +0 -1009
  196. package/.agents/skills/autoconverge/workflow/converge.fix-progress.test.mjs +0 -107
  197. package/.agents/skills/autoconverge/workflow/converge.fix-recovery.test.mjs +0 -33
  198. package/.agents/skills/autoconverge/workflow/converge.merge-conflict.test.mjs +0 -15
  199. package/.agents/skills/autoconverge/workflow/converge.mjs +0 -3132
  200. package/.agents/skills/autoconverge/workflow/converge.p2-advance.test.mjs +0 -202
  201. package/.agents/skills/autoconverge/workflow/converge.path-aware.test.mjs +0 -47
  202. package/.agents/skills/autoconverge/workflow/converge.precatch.test.mjs +0 -152
  203. package/.agents/skills/autoconverge/workflow/converge.run-input.test.mjs +0 -116
  204. package/.agents/skills/autoconverge/workflow/converge_multi.mjs +0 -169
  205. package/.agents/skills/autoconverge/workflow/converge_multi.run-input.test.mjs +0 -173
  206. package/.agents/skills/autoconverge/workflow/convergence_summary.py +0 -110
  207. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +0 -2
  208. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +0 -2
  209. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +0 -2
  210. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +0 -2
  211. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +0 -2
  212. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +0 -2
  213. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ab1c2d3e4f5a6b7c8.jsonl +0 -2
  214. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +0 -2
  215. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +0 -2
  216. package/.agents/skills/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +0 -266
  217. package/.agents/skills/autoconverge/workflow/render_report.py +0 -1024
  218. package/.agents/skills/autoconverge/workflow/test_aggregate_runs.py +0 -134
  219. package/.agents/skills/autoconverge/workflow/test_convergence_summary.py +0 -149
  220. package/.agents/skills/autoconverge/workflow/test_render_report.py +0 -812
  221. package/.agents/skills/hitl/SKILL.md +0 -45
  222. package/.agents/skills/pr-cleanup/SKILL.md +0 -140
  223. package/.agents/skills/pr-cleanup/reference/process-inventory.md +0 -17
  224. package/.agents/skills/pr-cleanup/reference/task-seeds.md +0 -22
  225. package/.agents/skills/pr-name-by-capability/SKILL.md +0 -73
  226. package/.agents/skills/pr-name-by-capability/reference/fetch-commands.md +0 -29
  227. package/.agents/skills/pr-name-by-capability/reference/offense-examples.md +0 -32
  228. package/.agents/skills/pr-name-by-capability/reference/report-template.md +0 -29
  229. package/.agents/skills/pr-name-by-capability/reference/rule-checklist.md +0 -38
  230. package/.agents/skills/pr-name-by-capability/reference/task-seeds.md +0 -10
  231. package/.agents/skills/pr-plain-language-cleanup/SKILL.md +0 -93
  232. package/.agents/skills/pr-refinement/SKILL.md +0 -31
  233. package/.agents/skills/pr-shared-extraction/SKILL.md +0 -177
  234. package/.agents/skills/pr-shared-extraction/reference/examples.md +0 -46
  235. package/.agents/skills/pr-shared-extraction/reference/offense-taxonomy.md +0 -100
  236. package/.agents/skills/pr-small-cl/SKILL.md +0 -52
  237. package/.agents/skills/pr-title-description/SKILL.md +0 -96
  238. package/.agents/skills/prototype/SKILL.md +0 -85
  239. package/.agents/skills/prototype/reference/honest-limitations.md +0 -23
  240. package/.agents/skills/prototype/reference/promotion-tasks.md +0 -23
  241. package/.agents/skills/prototype/scripts/build_sandbox_settings.py +0 -249
  242. package/.agents/skills/prototype/scripts/conftest.py +0 -15
  243. package/.agents/skills/prototype/scripts/launch_sandbox.py +0 -205
  244. package/.agents/skills/prototype/scripts/probe_sandbox_safety.py +0 -311
  245. package/.agents/skills/prototype/scripts/prototype_scripts_constants/__init__.py +0 -1
  246. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
  247. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +0 -41
  248. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +0 -23
  249. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +0 -45
  250. package/.agents/skills/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +0 -10
  251. package/.agents/skills/prototype/scripts/test_build_sandbox_settings.py +0 -275
  252. package/.agents/skills/prototype/scripts/test_launch_sandbox.py +0 -303
  253. package/.agents/skills/prototype/scripts/test_probe_sandbox_safety.py +0 -312
  254. package/.agents/skills/prototype/workflows/promotion.md +0 -25
  255. package/.agents/skills/prototype/workflows/sandbox.md +0 -35
  256. package/.agents/skills/rebase/.claude/CLAUDE.md +0 -1
  257. package/.agents/skills/rebase/AGENTS.md +0 -1
  258. package/.agents/skills/rebase/SKILL.md +0 -178
  259. package/.agents/skills/review-router/SKILL.md +0 -51
  260. package/.agents/skills/review-router/reference/route-policy.json +0 -7
  261. package/.agents/skills/review-router/reference/task-seeds.md +0 -1
  262. package/.agents/skills/review-router/scripts/conftest.py +0 -4
  263. package/.agents/skills/review-router/scripts/review_router.py +0 -50
  264. package/.agents/skills/review-router/scripts/review_router_cli.py +0 -211
  265. package/.agents/skills/review-router/scripts/review_router_constants/__init__.py +0 -1
  266. package/.agents/skills/review-router/scripts/review_router_constants/config/__init__.py +0 -0
  267. package/.agents/skills/review-router/scripts/review_router_constants/config/constants.py +0 -13
  268. package/.agents/skills/review-router/scripts/test_review_router.py +0 -23
  269. package/.agents/skills/review-router/scripts/test_review_router_cli.py +0 -47
  270. package/.agents/skills/review-tier/SKILL.md +0 -56
  271. package/.agents/skills/review-tier/reference/task-seeds.md +0 -1
  272. package/.agents/skills/review-tier/reference/tier-policy.json +0 -9
  273. package/.agents/skills/review-tier/scripts/conftest.py +0 -4
  274. package/.agents/skills/review-tier/scripts/review_tier.py +0 -359
  275. package/.agents/skills/review-tier/scripts/review_tier_constants/__init__.py +0 -1
  276. package/.agents/skills/review-tier/scripts/review_tier_constants/config/__init__.py +0 -0
  277. package/.agents/skills/review-tier/scripts/review_tier_constants/config/constants.py +0 -29
  278. package/.agents/skills/review-tier/scripts/test_generation.py +0 -159
  279. package/.agents/skills/review-tier/scripts/test_review_tier.py +0 -33
  280. package/.agents/skills/run-claude-dev-env/SKILL.md +0 -84
  281. package/.agents/skills/session-log/.claude/CLAUDE.md +0 -1
  282. package/.agents/skills/session-log/AGENTS.md +0 -1
  283. package/.agents/skills/session-log/SKILL.md +0 -170
  284. package/.agents/skills/session-log/templates/frontmatter.md +0 -40
  285. package/.agents/skills/session-tidy/.claude/CLAUDE.md +0 -1
  286. package/.agents/skills/session-tidy/AGENTS.md +0 -1
  287. package/.agents/skills/session-tidy/SKILL.md +0 -191
  288. package/.agents/skills/skill-builder/references/.claude/CLAUDE.md +0 -1
  289. package/.agents/skills/skill-builder/references/AGENTS.md +0 -1
  290. package/.agents/skills/skill-builder/references/delegation-map.md +0 -130
  291. package/.agents/skills/skill-builder/references/description-field.md +0 -111
  292. package/.agents/skills/skill-builder/references/deterministic-elements.md +0 -218
  293. package/.agents/skills/skill-builder/references/progressive-disclosure.md +0 -122
  294. package/.agents/skills/skill-builder/references/self-audit-checklist.md +0 -126
  295. package/.agents/skills/skill-builder/references/skill-modularity.md +0 -111
  296. package/.agents/skills/skill-builder/references/skill-types.md +0 -232
  297. package/.agents/skills/skill-builder/references/thariq-x-post-skills.json +0 -33
  298. package/.agents/skills/skill-builder/templates/.claude/CLAUDE.md +0 -1
  299. package/.agents/skills/skill-builder/templates/AGENTS.md +0 -1
  300. package/.agents/skills/skill-builder/templates/gap-analysis.md +0 -87
  301. package/.agents/skills/skill-builder/workflows/.claude/CLAUDE.md +0 -1
  302. package/.agents/skills/skill-builder/workflows/AGENTS.md +0 -1
  303. package/.agents/skills/skill-builder/workflows/improve-skill.md +0 -136
  304. package/.agents/skills/skill-builder/workflows/new-skill.md +0 -179
  305. package/.agents/skills/skill-builder/workflows/polish-skill.md +0 -139
  306. package/.agents/skills/source-command-sr-loop/SKILL.md +0 -82
  307. package/.agents/skills/update/.claude/CLAUDE.md +0 -1
  308. package/.agents/skills/update/AGENTS.md +0 -1
  309. package/.agents/skills/update/SKILL.md +0 -190
  310. package/_shared/pr-loop/AGENTS.md +0 -1
  311. package/_shared/pr-loop/CLAUDE.md +0 -1
  312. package/_shared/pr-loop/audit-contract.md +0 -183
  313. package/_shared/pr-loop/audit-reply-template.md +0 -151
  314. package/_shared/pr-loop/code-rules-gate.md +0 -65
  315. package/_shared/pr-loop/fix-protocol.md +0 -60
  316. package/_shared/pr-loop/gh-payloads.md +0 -75
  317. package/_shared/pr-loop/post-audit-thread-contract.md +0 -51
  318. package/_shared/pr-loop/precatch-rubric.md +0 -66
  319. package/_shared/pr-loop/preflight-proposal.md +0 -56
  320. package/_shared/pr-loop/scripts/post_audit_thread.py +0 -1242
  321. package/_shared/pr-loop/scripts/pr_loop_shared_constants/post_audit_thread_constants.py +0 -199
  322. package/_shared/pr-loop/scripts/tests/test_post_audit_thread.py +0 -1115
  323. package/_shared/pr-loop/scripts/tests/test_post_audit_thread_constants.py +0 -129
  324. package/_shared/pr-loop/state-schema.md +0 -45
  325. package/_shared/pr-loop/worker-spawn.md +0 -189
  326. package/hooks/_gh_pr_author_swap_utils.py +0 -1225
  327. package/hooks/blocking/conventional_pr_title_gate.py +0 -443
  328. package/hooks/blocking/gh_body_arg_blocker.py +0 -176
  329. package/hooks/blocking/gh_pr_author_enforcer.py +0 -487
  330. package/hooks/blocking/gh_pr_author_restore.py +0 -105
  331. package/hooks/blocking/pr_description_writer_gate.py +0 -256
  332. package/hooks/blocking/test_conventional_pr_title_gate.py +0 -640
  333. package/hooks/blocking/test_gh_body_arg_blocker.py +0 -441
  334. package/hooks/blocking/test_gh_pr_author_enforcer.py +0 -1166
  335. package/hooks/blocking/test_gh_pr_author_restore.py +0 -513
  336. package/hooks/blocking/test_gh_pr_author_swap_utils.py +0 -910
  337. package/hooks/blocking/test_pr_description_writer_gate.py +0 -234
  338. package/hooks/blocking/test_preflight_check.py +0 -343
  339. package/hooks/blocking/test_test_preflight_check.py +0 -80
  340. package/hooks/blocking/test_volatile_path_in_post_blocker.py +0 -322
  341. package/hooks/blocking/volatile_path_in_post_blocker.py +0 -461
  342. package/hooks/hooks_constants/conventional_pr_title_gate_constants.py +0 -58
  343. package/hooks/hooks_constants/gh_pr_author_swap_constants.py +0 -76
  344. package/hooks/hooks_constants/pr_description_writer_gate_constants.py +0 -73
  345. package/hooks/hooks_constants/volatile_path_in_post_blocker_constants.py +0 -55
  346. package/hooks/observability/pr_description_writer_spawn_tracker.py +0 -113
  347. package/hooks/observability/test_pr_description_writer_spawn_tracker.py +0 -150
  348. package/hooks/session/gh_pr_author_session_cleanup.py +0 -175
  349. package/hooks/session/test_gh_pr_author_session_cleanup.py +0 -576
  350. package/hooks/test__gh_pr_author_swap_utils.py +0 -333
@@ -96,7 +96,6 @@ def _comment_policy_surfaces(package_root: Path) -> tuple[Path, ...]:
96
96
  package_root / "system-prompts" / "software-engineer.xml",
97
97
  package_root / ".agents" / "agents" / "clean-coder.md",
98
98
  package_root / ".agents" / "agents" / "code-quality-agent.md",
99
- package_root / "_shared" / "pr-loop" / "code-rules-gate.md",
100
99
  package_root / "audit-rubrics" / "category_rubrics" / "category-j-code-rules-compliance.md",
101
100
  package_root / "audit-rubrics" / "prompts" / "category-j-code-rules-compliance.md",
102
101
  package_root / "audit-rubrics" / "category_rubrics" / "category-l-behavior-equivalence.md",
@@ -160,7 +159,7 @@ def _category_l_policy_texts() -> tuple[str, str, str]:
160
159
  )
161
160
 
162
161
 
163
- def _comment_policy_summary_texts() -> tuple[str, str, str, str]:
162
+ def _comment_policy_summary_texts() -> tuple[str, str, str]:
164
163
  clean_coder = _PACKAGE_ROOT / ".agents" / "agents" / "clean-coder.md"
165
164
  category_j = (
166
165
  _PACKAGE_ROOT
@@ -169,24 +168,21 @@ def _comment_policy_summary_texts() -> tuple[str, str, str, str]:
169
168
  / "category-j-code-rules-compliance.md"
170
169
  )
171
170
  code_quality = _PACKAGE_ROOT / ".agents" / "agents" / "code-quality-agent.md"
172
- gate = _PACKAGE_ROOT / "_shared" / "pr-loop" / "code-rules-gate.md"
173
171
  return tuple(
174
172
  each_path.read_text(encoding="utf-8").lower()
175
- for each_path in (clean_coder, category_j, code_quality, gate)
173
+ for each_path in (clean_coder, category_j, code_quality)
176
174
  )
177
175
 
178
176
 
179
177
  def test_comment_policy_uses_changed_comment_names_and_type_directives() -> None:
180
178
  category_l_rubric, category_l_prompt, audit_categories = _category_l_policy_texts()
181
- clean_coder, category_j, code_quality, gate = _comment_policy_summary_texts()
179
+ clean_coder, category_j, code_quality = _comment_policy_summary_texts()
182
180
  assert "| l7 | changed-comment handling" in category_l_rubric
183
181
  assert "**l7. changed-comment handling**" in category_l_prompt
184
182
  assert '"axis_name": "changed-comment handling"' in audit_categories
185
183
  assert "no type-ignore directives" in clean_coder
186
184
  assert "no `# type: ignore` directives" in category_j
187
185
  assert "production and test code" in code_quality
188
- assert "comments tied to touched code are removed" in gate
189
- assert "comments tied to untouched code remain unchanged" in gate
190
186
 
191
187
 
192
188
  def test_comment_policy_removes_directive_justification_guidance() -> None:
@@ -1 +0,0 @@
1
- @../AGENTS.md
@@ -1,5 +0,0 @@
1
- # Audit contract
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/audit-contract.md
@@ -1,5 +0,0 @@
1
- # Audit reply template
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/audit-reply-template.md
@@ -1,5 +0,0 @@
1
- # Code rules gate
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/code-rules-gate.md
@@ -1,5 +0,0 @@
1
- # Fix protocol
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/fix-protocol.md
@@ -1,5 +0,0 @@
1
- # Gh payloads
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/gh-payloads.md
@@ -1,149 +0,0 @@
1
- # Portable converge driver
2
-
3
- **Rule: deterministic control is script-only.** Phase transitions, wait delays,
4
- clean stamps, ready decisions, task lists, and “what next” never live as prose
5
- for the agent to invent. The agent runs scripts, reads JSON, and only performs
6
- judgment steps the JSON names.
7
-
8
- ## Step 1 — task list (every autoconverge portable run)
9
-
10
- ```
11
- python "$HOME/.claude/skills/_shared/pr-loop/scripts/build_converge_task_list.py" \
12
- [--bugbot-down 0|1] [--copilot-down 0|1] \
13
- [--codex-down 0|1] [--codex-required 0|1]
14
- ```
15
-
16
- Register every `tasks[]` entry on the session task list. **Final task id is
17
- always** `all_runnable_reviews_clean_same_head`. The run is complete only when
18
- that final task is completed: every runnable code review is CLEAN on one
19
- shared HEAD. Do not invent tasks in prose.
20
-
21
- `open-run` embeds the same list (`tasks`, `runnable_review_ids`,
22
- `final_task_id`, `done_when`).
23
-
24
- ## Pacer selection
25
-
26
- ```
27
- python "$HOME/.claude/skills/_shared/pr-loop/scripts/select_converge_pacer.py" \
28
- --skill autoconverge \
29
- --has-workflow <0|1> \
30
- --has-schedule-wakeup <0|1>
31
- ```
32
-
33
- When `pacer` is not `portable`, use the skill’s native Workflow or
34
- ScheduleWakeup path. When `pacer=portable`, use the control script below.
35
-
36
- ## Isolation and worktree
37
-
38
- 1. When the tool list includes `EnterWorktree`, call it (same contract as the
39
- Claude-host skills).
40
- 2. When `EnterWorktree` is absent, isolate with git worktree machinery:
41
- - Prefer an existing worktree already on the PR head ref under
42
- `.claude/worktrees/` (or another dedicated worktree path).
43
- - Otherwise `git fetch origin <headRefName>` and
44
- `git worktree add <path> <headRefName>` (or `gh pr checkout <N>` into a
45
- dedicated directory), then `cd` into that checkout.
46
- 3. Confirm the working directory is the PR’s own repo on the PR head SHA:
47
- `python "$HOME/.claude/skills/_shared/pr-loop/scripts/preflight_worktree.py" --owner <O> --repo <R> --mode strict`.
48
- Non-zero exit → report the `ABORT` line and stop.
49
- 4. Cross-repo routing: every local review and edit runs with cwd set to the **PR worktree** (see autoconverge pre-flight and `preflight_worktree.py --mode strict`).
50
-
51
- `open-run` runs the same strict preflight before seeding state.
52
-
53
- ## Control script
54
-
55
- ```
56
- python "$HOME/.claude/skills/_shared/pr-loop/scripts/portable_converge_driver.py" <command> ...
57
- ```
58
-
59
- Stdout JSON: `status`, `next`, `phase`, `state_file`, optional `commands`,
60
- `wait_seconds`, `blocker`, and on `open-run` the task-list fields. Exit `0` =
61
- ok; `1` = contract failure; `2` = usage error.
62
-
63
- | Command | Deterministic effect |
64
- |---|---|
65
- | `open-run` | Require `portable`; preflight; seed state + task list; when `--codex-down` is off, set `codex_required` from CLI force-on or the weekly usage probe (same rule as `check_convergence`); next=`run_code_review` |
66
- | `after-code-review` | From returncode / dirty_tree / served_command |
67
- | `after-bugteam` | From pushed / converged (bug-audit phase on portable pacer) |
68
- | `after-bugbot` | From classification / inline lag |
69
- | `after-codex` | From classification clean / dirty / down |
70
- | `after-copilot-wait` | From review surfaced / wait cap |
71
- | `after-ready-check` | From check_convergence exit |
72
- | `show-state` | Echo state; rehydrate `commands` / `wait_seconds` for pending next |
73
-
74
- ## Continuous tick loop
75
-
76
- After transport check, PR scope, isolation, permission grant, and the once-per-run
77
- Copilot quota pre-check:
78
-
79
- 1. Seed or restore state via `open-run` or `show-state` (and handoff
80
- `state-copy.json` when resuming).
81
- 2. Run the driver command for the current step; read JSON `next` / `commands` /
82
- `wait_seconds`.
83
- 3. On non-terminal `next`:
84
- - Write state and handoff when the after-* payload says so.
85
- - If `next` is `poll_wait`, sleep `wait_seconds` only, then re-poll and call
86
- the matching after-*.
87
- - If `next` is immediate work, continue in the same turn without sleeping.
88
- 4. On `mark_ready` / `stop_blocked` / named stop: run lifecycle Close, print the
89
- entry skill’s exit block, omit further pacing.
90
- 5. External reviewers remain skippable the same way as Claude-host runs when
91
- opted out or down. Push and head-change reset push-invalidated markers
92
- (`*_clean_at`, `merge_state_status`, `bugbot_down`, `codex_down`).
93
-
94
- ## Agent loop (judgment only)
95
-
96
- 1. Run the driver command for the current step.
97
- 2. If JSON `commands` is non-empty, run that argv (scripted helper).
98
- 3. Map JSON `next` to the single judgment action; report back via the matching
99
- `after-*` command.
100
- 4. Mark session tasks complete only when the scripted stamps say so; complete
101
- the final task only when every runnable review is clean on the same HEAD.
102
-
103
- | `next` | Agent does | Report with |
104
- |---|---|---|
105
- | `run_code_review` | Run `commands` | `after-code-review` |
106
- | `apply_fixes_and_push` | Fix protocol; commit; push | re-review then `after-code-review` |
107
- | `run_bugteam` | Bug-audit lens / worker spawn body | `after-bugteam` |
108
- | `run_bugbot_gate` | Bugbot helper scripts | `after-bugbot` |
109
- | `run_codex_review` | Run Codex review step | `after-codex` |
110
- | `request_copilot_review` | Request Copilot | `after-copilot-wait` |
111
- | `poll_wait` | Sleep `wait_seconds` only | re-poll then after-* |
112
- | `check_ready` | Run `commands` (check_convergence) | `after-ready-check` |
113
- | `mark_ready` | Run `commands` (`gh pr ready`) | teardown |
114
- | `stop_blocked` | Teardown; print blocker | stop |
115
-
116
- ## Autoconverge entry on portable pacer
117
-
118
- When `/autoconverge` selects `pacer=portable`:
119
-
120
- - Complete autoconverge pre-flight (scope, draft ownership, strict worktree,
121
- grant, Copilot quota).
122
- - Drive the continuous tick loop above (scripted phase machine) until ready
123
- or a documented blocker.
124
- - Skip `Workflow({ scriptPath: converge.mjs })` — that path requires the
125
- Workflow tool.
126
- - Teardown uses the lifecycle Close path; the Workflow-only closing HTML
127
- journal report is optional and skipped when no workflow run id exists.
128
- - Resume command on handoff: `/autoconverge <PR URL>`.
129
-
130
- When `/autoconverge` selects `pacer=workflow`, follow the skill’s Workflow
131
- sections unchanged.
132
-
133
- ## Helpers (scripted)
134
-
135
- | Concern | Script |
136
- |---|---|
137
- | Task list | `build_converge_task_list.py` |
138
- | Pacer | `select_converge_pacer.py` |
139
- | Worktree | `preflight_worktree.py` |
140
- | Code review | `$HOME/.claude/scripts/invoke_code_review.py` |
141
- | Workers | `$HOME/.claude/scripts/resolve_worker_spawn.py` |
142
- | Ready | `$HOME/.claude/_shared/pr-loop/scripts/check_convergence.py` |
143
- | Handoff | `write_handoff.py` |
144
-
145
- ## Fail closed
146
-
147
- Never abort solely because Workflow or ScheduleWakeup is missing once
148
- pacer=`portable`. Fail closed on contract failures only: auth, worktree,
149
- unresolvable gates, and wait caps.
@@ -1,5 +0,0 @@
1
- # Post-audit thread contract
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/post-audit-thread-contract.md
@@ -1,5 +0,0 @@
1
- # Precatch rubric
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/precatch-rubric.md
@@ -1,119 +0,0 @@
1
- import assert from 'node:assert/strict'
2
- import { readFileSync } from 'node:fs'
3
- import { dirname, resolve } from 'node:path'
4
- import test from 'node:test'
5
- import { fileURLToPath } from 'node:url'
6
-
7
- const THIS_DIRECTORY = dirname(fileURLToPath(import.meta.url))
8
- const canonicalContractSource = readFileSync(
9
- resolve(THIS_DIRECTORY, '../../../../_shared/pr-loop/preflight-proposal.md'),
10
- 'utf8',
11
- )
12
- const sharedSkillSource = readFileSync(
13
- resolve(THIS_DIRECTORY, '../../pr-shared-extraction/SKILL.md'),
14
- 'utf8',
15
- )
16
- const capabilitySkillSource = readFileSync(
17
- resolve(THIS_DIRECTORY, '../../pr-name-by-capability/SKILL.md'),
18
- 'utf8',
19
- )
20
- const capabilityTaskSeedsSource = readFileSync(
21
- resolve(THIS_DIRECTORY, '../../pr-name-by-capability/reference/task-seeds.md'),
22
- 'utf8',
23
- )
24
- const reviewSkillSource = readFileSync(
25
- resolve(THIS_DIRECTORY, '../../e-code-review/SKILL.md'),
26
- 'utf8',
27
- )
28
- const reviewProposalSource = readFileSync(
29
- resolve(THIS_DIRECTORY, '../../e-code-review/reference/preflight-proposal.md'),
30
- 'utf8',
31
- )
32
-
33
- const allSkillContracts = [
34
- {
35
- name: 'shared extraction audit',
36
- skillSource: sharedSkillSource,
37
- invocationPattern: /pr-shared-extraction preflight-proposal/,
38
- classificationPattern: /priority and target/,
39
- expectedDefaultBehavior: 'applies the prioritized fix band by default',
40
- },
41
- {
42
- name: 'name by capability audit',
43
- skillSource: capabilitySkillSource,
44
- invocationPattern: /pr-name-by-capability preflight-proposal/,
45
- classificationPattern: /violation or OK-driver classification/,
46
- expectedDefaultBehavior: 'applies the suggested rename direction by default',
47
- },
48
- ]
49
-
50
- function assertProposalAdapter(skillContract) {
51
- const preflightRoutingOffset = skillContract.skillSource.indexOf('`preflight-proposal`')
52
- const reportOnlyRoutingOffset = skillContract.skillSource.indexOf('`audit-only`')
53
-
54
- assert.ok(preflightRoutingOffset >= 0, `${skillContract.name} selects proposal mode`)
55
- assert.ok(preflightRoutingOffset < reportOnlyRoutingOffset, `${skillContract.name} routes proposal mode first`)
56
- assert.match(skillContract.skillSource, skillContract.invocationPattern)
57
- assert.match(skillContract.skillSource, skillContract.classificationPattern)
58
- assert.match(skillContract.skillSource, new RegExp(skillContract.expectedDefaultBehavior))
59
- }
60
-
61
- function assertTaskRoutingAndNormalMode() {
62
- assert.match(sharedSkillSource, /Register this checklist with `update_plan`/)
63
- assert.match(capabilitySkillSource, /Register every bullet from `reference\/task-seeds\.md` with `update_plan`/)
64
- assert.match(capabilityTaskSeedsSource, /Register each item with `update_plan`/)
65
- assert.doesNotMatch(sharedSkillSource, /TodoWrite|TaskCreate/)
66
- assert.doesNotMatch(capabilitySkillSource, /TodoWrite|TaskCreate/)
67
- assert.doesNotMatch(capabilityTaskSeedsSource, /TodoWrite|TaskCreate/)
68
- assert.match(sharedSkillSource, /audit-only` is report-only/)
69
- assert.match(capabilitySkillSource, /audit-only` is report-only/)
70
- }
71
-
72
- function assertSharedProposalContract(contractSource) {
73
- assert.match(contractSource, /caller-supplied isolated worktree/)
74
- assert.match(contractSource, /resolved PR number/)
75
- assert.match(contractSource, /immutable base SHA/)
76
- assert.match(contractSource, /immutable head SHA/)
77
- assert.match(contractSource, /exact `base_sha\.\.\.head_sha` range/)
78
- assert.match(contractSource, /require exact equality with the head SHA/)
79
- assert.match(contractSource, /immutable proposal identity/)
80
- assert.match(contractSource, /deterministic diff hash/)
81
- assert.match(contractSource, /changed paths/)
82
- assert.match(contractSource, /exact tests and outcomes/)
83
- assert.match(contractSource, /selected-candidate-ready proposal evidence/)
84
- assert.match(contractSource, /selected or dispositioned proposal collection/)
85
- assert.match(contractSource, /Reapplication uses exactly the selected records/)
86
- }
87
-
88
- function assertReviewProposalAdapter() {
89
- const preflightRoutingOffset = reviewSkillSource.indexOf('`preflight-proposal`')
90
- const refusalRoutingOffset = reviewSkillSource.indexOf('**Refusal — first match wins:**')
91
- const allProposalEntryMatches = reviewSkillSource.match(
92
- /Route the selected mode through \[reference\/preflight-proposal.md\]\(reference\/preflight-proposal.md\) to establish proposal context/g,
93
- ) ?? []
94
-
95
- assert.ok(preflightRoutingOffset >= 0)
96
- assert.ok(preflightRoutingOffset < refusalRoutingOffset)
97
- assert.equal(allProposalEntryMatches.length, 1)
98
- assert.match(reviewSkillSource, /e-code-review preflight-proposal/)
99
- assert.match(reviewSkillSource, /`--level <low\|medium\|xhigh>`/)
100
- assert.match(reviewSkillSource, /@~\/.claude\/_shared\/pr-loop\/preflight-proposal.md/)
101
- assert.match(reviewSkillSource, /Normal mode follows the current level/)
102
- assert.match(reviewProposalSource, /Keep Gate 1, Gate 2, the bare code-rules gate, and exact required tests/)
103
- assert.match(reviewProposalSource, /review_level: low \| medium \| xhigh/)
104
- assert.match(reviewProposalSource, /severity: blocker \| high \| medium \| low \| nit/)
105
- assert.match(reviewProposalSource, /verdict: CONFIRMED \| PLAUSIBLE/)
106
- assert.match(reviewProposalSource, /outcome: fixed \| no_change_needed \| skipped/)
107
- }
108
-
109
- test('audit modes retain their normal routing behavior', () => {
110
- assertTaskRoutingAndNormalMode()
111
- })
112
-
113
- test('one shared contract defines proposal evidence for audit and review skills', () => {
114
- for (const eachSkillContract of allSkillContracts) {
115
- assertProposalAdapter(eachSkillContract)
116
- }
117
- assertReviewProposalAdapter()
118
- assertSharedProposalContract(canonicalContractSource)
119
- })
@@ -1,5 +0,0 @@
1
- # Preflight proposal contract
2
-
3
- **Canonical home:**
4
-
5
- @~/.claude/_shared/pr-loop/preflight-proposal.md
@@ -1 +0,0 @@
1
- @../AGENTS.md