wade-cli 0.35.3__tar.gz → 0.48.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. wade_cli-0.48.1/.gitattributes +4 -0
  2. {wade_cli-0.35.3 → wade_cli-0.48.1}/.github/workflows/ci.yml +2 -0
  3. {wade_cli-0.35.3 → wade_cli-0.48.1}/.gitignore +2 -0
  4. {wade_cli-0.35.3 → wade_cli-0.48.1}/.wade.yml +5 -2
  5. {wade_cli-0.35.3 → wade_cli-0.48.1}/AGENTS.md +32 -4
  6. {wade_cli-0.35.3 → wade_cli-0.48.1}/CHANGELOG.md +259 -0
  7. wade_cli-0.48.1/KNOWLEDGE.md +658 -0
  8. wade_cli-0.48.1/KNOWLEDGE.ratings.jsonl +119 -0
  9. wade_cli-0.48.1/PKG-INFO +670 -0
  10. wade_cli-0.48.1/README.md +634 -0
  11. wade_cli-0.48.1/docs/dev/architecture.md +895 -0
  12. {wade_cli-0.35.3 → wade_cli-0.48.1}/docs/dev/documentation-policies.md +3 -1
  13. wade_cli-0.48.1/docs/dev/skills-system.md +231 -0
  14. {wade_cli-0.35.3 → wade_cli-0.48.1}/pyproject.toml +4 -3
  15. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/check.sh +2 -2
  16. wade_cli-0.48.1/scripts/test-concurrency.sh +8 -0
  17. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/__init__.py +1 -1
  18. wade_cli-0.48.1/src/wade/cli/hook.py +45 -0
  19. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/implementation_session.py +18 -22
  20. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/knowledge.py +69 -1
  21. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/main.py +52 -3
  22. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/plan_session.py +6 -4
  23. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/review.py +56 -0
  24. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/review_pr_comments_session.py +23 -13
  25. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/session_shared.py +13 -3
  26. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/task.py +23 -1
  27. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/worktree.py +9 -2
  28. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/config/loader.py +157 -2
  29. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/config/migrations.py +48 -0
  30. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/git/__init__.py +6 -0
  31. wade_cli-0.48.1/src/wade/git/branch.py +339 -0
  32. wade_cli-0.48.1/src/wade/git/hooks.py +359 -0
  33. wade_cli-0.48.1/src/wade/git/pr.py +805 -0
  34. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/git/repo.py +290 -22
  35. wade_cli-0.48.1/src/wade/git/stash.py +213 -0
  36. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/git/sync.py +29 -16
  37. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/git/worktree.py +22 -17
  38. wade_cli-0.48.1/src/wade/hooks/__init__.py +14 -0
  39. wade_cli-0.48.1/src/wade/hooks/cli.py +875 -0
  40. wade_cli-0.48.1/src/wade/hooks/policies.py +1453 -0
  41. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/__init__.py +4 -0
  42. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/batch.py +1 -0
  43. wade_cli-0.48.1/src/wade/models/config.py +475 -0
  44. wade_cli-0.48.1/src/wade/models/delegation.py +61 -0
  45. wade_cli-0.48.1/src/wade/models/hooks.py +63 -0
  46. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/permission.py +23 -0
  47. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/review.py +228 -15
  48. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/session.py +5 -2
  49. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/task.py +43 -0
  50. wade_cli-0.48.1/src/wade/models/worktree.py +23 -0
  51. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/github.py +96 -19
  52. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/markdown.py +4 -38
  53. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/ai_resolution.py +153 -43
  54. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/batch_review_service.py +48 -11
  55. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/check_service.py +385 -34
  56. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/delegation_service.py +172 -31
  57. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/deps_service.py +146 -30
  58. wade_cli-0.48.1/src/wade/services/implementation_service/_shared.py +193 -0
  59. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/implementation_service/batch.py +230 -73
  60. wade_cli-0.48.1/src/wade/services/implementation_service/bootstrap.py +1075 -0
  61. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/implementation_service/cleanup.py +164 -50
  62. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/implementation_service/core.py +473 -66
  63. wade_cli-0.48.1/src/wade/services/implementation_service/done.py +1261 -0
  64. wade_cli-0.48.1/src/wade/services/implementation_service/draft_pr.py +495 -0
  65. wade_cli-0.48.1/src/wade/services/implementation_service/lifecycle.py +764 -0
  66. wade_cli-0.48.1/src/wade/services/implementation_service/sync.py +1151 -0
  67. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/commands.py +24 -21
  68. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/config_io.py +91 -23
  69. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/manifest.py +13 -5
  70. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/prompts_ai.py +9 -6
  71. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/prompts_setup.py +54 -34
  72. wade_cli-0.48.1/src/wade/services/knowledge_service.py +918 -0
  73. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/plan_service.py +571 -189
  74. wade_cli-0.48.1/src/wade/services/review_delegation_service.py +449 -0
  75. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/review_service.py +422 -69
  76. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/review_settle.py +6 -24
  77. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/smart_start.py +66 -25
  78. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/task_service.py +30 -1
  79. wade_cli-0.48.1/src/wade/skills/doc_targets.py +77 -0
  80. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/skills/installer.py +146 -62
  81. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/ui/console.py +65 -15
  82. wade_cli-0.48.1/src/wade/utils/body_markers.py +173 -0
  83. wade_cli-0.48.1/src/wade/utils/conventional.py +86 -0
  84. wade_cli-0.48.1/src/wade/utils/filelock.py +85 -0
  85. wade_cli-0.48.1/src/wade/utils/gitref.py +49 -0
  86. wade_cli-0.48.1/src/wade/utils/knowledge_file.py +212 -0
  87. wade_cli-0.48.1/src/wade/utils/markers.py +305 -0
  88. wade_cli-0.48.1/src/wade/utils/paths.py +27 -0
  89. wade_cli-0.48.1/src/wade/utils/plan_validation.py +217 -0
  90. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/process.py +43 -3
  91. wade_cli-0.48.1/src/wade/utils/stale_base.py +114 -0
  92. wade_cli-0.48.1/src/wade/utils/templates.py +73 -0
  93. wade_cli-0.48.1/templates/hooks/commit-msg +54 -0
  94. wade_cli-0.48.1/templates/hooks/pre-commit +48 -0
  95. wade_cli-0.48.1/templates/hooks/pre-push +91 -0
  96. wade_cli-0.48.1/templates/prompts/implement-context.md +10 -0
  97. wade_cli-0.48.1/templates/prompts/plan-session.md +9 -0
  98. wade_cli-0.48.1/templates/prompts/review-pr-comments.md +15 -0
  99. wade_cli-0.48.1/templates/prompts/session-start-implement.md +3 -0
  100. wade_cli-0.48.1/templates/prompts/session-start-plan.md +2 -0
  101. wade_cli-0.48.1/templates/prompts/session-start-review.md +2 -0
  102. wade_cli-0.48.1/templates/skills/_partials/doc-update-step.md +6 -0
  103. wade_cli-0.48.1/templates/skills/_partials/knowledge-step.md +8 -0
  104. wade_cli-0.48.1/templates/skills/_partials/review-implementation-closing-step.md +34 -0
  105. wade_cli-0.48.1/templates/skills/_partials/user-interaction.md +33 -0
  106. wade_cli-0.48.1/templates/skills/implementation-session/SKILL.md +132 -0
  107. wade_cli-0.48.1/templates/skills/implementation-session/reference/doc-update.md +38 -0
  108. wade_cli-0.48.1/templates/skills/implementation-session/reference/new-plan.md +11 -0
  109. wade_cli-0.48.1/templates/skills/implementation-session/reference/pr-summary-format.md +41 -0
  110. wade_cli-0.48.1/templates/skills/implementation-session/reference/recovery.md +129 -0
  111. wade_cli-0.48.1/templates/skills/implementation-session/reference/tracking-issues.md +28 -0
  112. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/knowledge/SKILL.md +4 -0
  113. wade_cli-0.48.1/templates/skills/plan-session/SKILL.md +88 -0
  114. wade_cli-0.48.1/templates/skills/plan-session/reference/plan-format.md +82 -0
  115. wade_cli-0.48.1/templates/skills/review-pr-comments-session/SKILL.md +178 -0
  116. wade_cli-0.48.1/templates/skills/review-pr-comments-session/reference/doc-update.md +38 -0
  117. wade_cli-0.48.1/templates/skills/review-pr-comments-session/reference/recovery.md +66 -0
  118. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/task/SKILL.md +14 -5
  119. wade_cli-0.48.1/tests/concurrency/test_batch_multi_pr.py +84 -0
  120. wade_cli-0.48.1/tests/concurrency/test_knowledge_merge.py +195 -0
  121. wade_cli-0.48.1/tests/concurrency/test_lock_retry.py +205 -0
  122. wade_cli-0.48.1/tests/concurrency/test_stash_race.py +90 -0
  123. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/mock_gh_script.py +21 -0
  124. wade_cli-0.48.1/tests/e2e/test_implement_work_done_contract.py +713 -0
  125. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_knowledge_contract.py +4 -3
  126. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_plan_contract.py +3 -3
  127. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_review_contract.py +64 -3
  128. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_task_contract.py +1 -1
  129. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_autostash.py +6 -3
  130. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_git.py +5 -5
  131. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_knowledge.py +4 -2
  132. wade_cli-0.48.1/tests/integration/test_skill_context_budget.py +102 -0
  133. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_skill_install.py +142 -5
  134. wade_cli-0.48.1/tests/unit/test_cli/test_done_doc_pass_advisory.py +88 -0
  135. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_done_review_hint.py +14 -54
  136. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_knowledge_cli.py +147 -22
  137. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_review_cli.py +84 -23
  138. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_work_cli.py +3 -1
  139. wade_cli-0.48.1/tests/unit/test_config/test_bot_review_config.py +222 -0
  140. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_config/test_loader.py +204 -0
  141. wade_cli-0.48.1/tests/unit/test_config/test_merge_strategy_migration.py +69 -0
  142. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_config/test_migrations.py +64 -0
  143. wade_cli-0.48.1/tests/unit/test_console.py +91 -0
  144. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_effort.py +31 -0
  145. wade_cli-0.48.1/tests/unit/test_git/test_all_patches_present.py +49 -0
  146. wade_cli-0.48.1/tests/unit/test_git/test_branch_list.py +40 -0
  147. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_detached_worktree.py +3 -3
  148. wade_cli-0.48.1/tests/unit/test_git/test_is_merged_into.py +38 -0
  149. wade_cli-0.48.1/tests/unit/test_git/test_main_checkout_root.py +33 -0
  150. wade_cli-0.48.1/tests/unit/test_git/test_merge_count.py +42 -0
  151. wade_cli-0.48.1/tests/unit/test_git/test_pr_lookup.py +153 -0
  152. wade_cli-0.48.1/tests/unit/test_git/test_pr_retry.py +373 -0
  153. wade_cli-0.48.1/tests/unit/test_git/test_pr_title.py +38 -0
  154. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_repo.py +31 -1
  155. wade_cli-0.48.1/tests/unit/test_git/test_reset_branch.py +67 -0
  156. wade_cli-0.48.1/tests/unit/test_git/test_stash_drop.py +53 -0
  157. wade_cli-0.48.1/tests/unit/test_git/test_tip_commit_is_empty.py +88 -0
  158. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_worktree_remove.py +9 -9
  159. wade_cli-0.48.1/tests/unit/test_hooks/test_hook_cli.py +885 -0
  160. wade_cli-0.48.1/tests/unit/test_hooks/test_policies.py +1150 -0
  161. wade_cli-0.48.1/tests/unit/test_hooks/test_post_tool_use.py +282 -0
  162. wade_cli-0.48.1/tests/unit/test_hooks/test_session_start.py +524 -0
  163. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_config_models.py +54 -0
  164. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_delegation.py +23 -1
  165. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_review.py +265 -8
  166. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_task_models.py +61 -0
  167. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_permission_mode.py +140 -0
  168. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_providers/test_github.py +87 -0
  169. wade_cli-0.48.1/tests/unit/test_providers/test_github_pr.py +321 -0
  170. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_ai_resolution.py +271 -2
  171. wade_cli-0.48.1/tests/unit/test_services/test_batch_build_cmd.py +161 -0
  172. wade_cli-0.48.1/tests/unit/test_services/test_batch_pr_index.py +94 -0
  173. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_batch_review_service.py +4 -3
  174. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_bootstrap_allowlist.py +203 -61
  175. wade_cli-0.48.1/tests/unit/test_services/test_bootstrap_post_tool_use.py +195 -0
  176. wade_cli-0.48.1/tests/unit/test_services/test_bootstrap_pre_push.py +130 -0
  177. wade_cli-0.48.1/tests/unit/test_services/test_bootstrap_session_start.py +296 -0
  178. wade_cli-0.48.1/tests/unit/test_services/test_bot_trigger.py +384 -0
  179. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_catchup.py +52 -0
  180. wade_cli-0.48.1/tests/unit/test_services/test_catchup_reconcile.py +544 -0
  181. wade_cli-0.48.1/tests/unit/test_services/test_check.py +796 -0
  182. wade_cli-0.48.1/tests/unit/test_services/test_cleanup_loss_guard.py +275 -0
  183. wade_cli-0.48.1/tests/unit/test_services/test_codex_worktree_launch_context.py +144 -0
  184. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_delegation_service.py +184 -3
  185. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_deps_service.py +414 -8
  186. wade_cli-0.48.1/tests/unit/test_services/test_done_gates.py +574 -0
  187. wade_cli-0.48.1/tests/unit/test_services/test_done_idempotent.py +97 -0
  188. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_done_plan_flag.py +36 -1
  189. wade_cli-0.48.1/tests/unit/test_services/test_done_pr_title_sync.py +223 -0
  190. wade_cli-0.48.1/tests/unit/test_services/test_draft_pr_base_fetch.py +148 -0
  191. wade_cli-0.48.1/tests/unit/test_services/test_draft_pr_retarget.py +479 -0
  192. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_implementation_done_sync.py +144 -13
  193. wade_cli-0.48.1/tests/unit/test_services/test_implementation_launch_context.py +166 -0
  194. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_implementation_service.py +1176 -89
  195. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_init.py +229 -55
  196. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_knowledge_service.py +217 -19
  197. wade_cli-0.48.1/tests/unit/test_services/test_managed_git_hooks.py +343 -0
  198. wade_cli-0.48.1/tests/unit/test_services/test_no_direct_git.py +174 -0
  199. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_plan_service.py +944 -3
  200. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_poll_for_reviews.py +99 -23
  201. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_post_implementation_lifecycle.py +94 -104
  202. wade_cli-0.48.1/tests/unit/test_services/test_pr_lookup_guards.py +52 -0
  203. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_pr_summary_path.py +17 -4
  204. wade_cli-0.48.1/tests/unit/test_services/test_pre_push_backstop.py +274 -0
  205. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_preserve_session_data.py +37 -98
  206. wade_cli-0.48.1/tests/unit/test_services/test_push_recovery.py +159 -0
  207. wade_cli-0.48.1/tests/unit/test_services/test_resolve_task_branch.py +240 -0
  208. wade_cli-0.48.1/tests/unit/test_services/test_resume_autonomy.py +38 -0
  209. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_review_delegation_service.py +592 -42
  210. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_review_service.py +696 -35
  211. wade_cli-0.48.1/tests/unit/test_services/test_review_status_block.py +406 -0
  212. wade_cli-0.48.1/tests/unit/test_services/test_reviewed_marker.py +222 -0
  213. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_smart_start.py +178 -34
  214. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_smart_start_resume.py +21 -11
  215. wade_cli-0.48.1/tests/unit/test_services/test_stale_base_surface.py +274 -0
  216. wade_cli-0.48.1/tests/unit/test_services/test_sync_base_branch.py +229 -0
  217. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_task_service.py +83 -10
  218. wade_cli-0.48.1/tests/unit/test_skills/test_doc_targets.py +119 -0
  219. wade_cli-0.48.1/tests/unit/test_skills/test_knowledge_attributes.py +89 -0
  220. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_skills/test_managed_gitignore.py +2 -0
  221. wade_cli-0.48.1/tests/unit/test_utils/test_body_markers.py +120 -0
  222. wade_cli-0.48.1/tests/unit/test_utils/test_conventional.py +99 -0
  223. wade_cli-0.48.1/tests/unit/test_utils/test_filelock.py +52 -0
  224. wade_cli-0.48.1/tests/unit/test_utils/test_gitref.py +66 -0
  225. wade_cli-0.48.1/tests/unit/test_utils/test_markers.py +153 -0
  226. wade_cli-0.48.1/tests/unit/test_utils/test_plan_validation.py +155 -0
  227. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_process.py +87 -0
  228. wade_cli-0.48.1/tests/unit/test_utils/test_stale_base.py +80 -0
  229. wade_cli-0.35.3/KNOWLEDGE.md +0 -239
  230. wade_cli-0.35.3/KNOWLEDGE.ratings.yml +0 -98
  231. wade_cli-0.35.3/PKG-INFO +0 -353
  232. wade_cli-0.35.3/README.md +0 -316
  233. wade_cli-0.35.3/docs/dev/architecture.md +0 -333
  234. wade_cli-0.35.3/docs/dev/skills-system.md +0 -135
  235. wade_cli-0.35.3/src/wade/db/__init__.py +0 -34
  236. wade_cli-0.35.3/src/wade/db/engine.py +0 -85
  237. wade_cli-0.35.3/src/wade/db/repositories.py +0 -266
  238. wade_cli-0.35.3/src/wade/db/tables.py +0 -131
  239. wade_cli-0.35.3/src/wade/git/branch.py +0 -140
  240. wade_cli-0.35.3/src/wade/git/pr.py +0 -427
  241. wade_cli-0.35.3/src/wade/git/stash.py +0 -122
  242. wade_cli-0.35.3/src/wade/hooks/__init__.py +0 -19
  243. wade_cli-0.35.3/src/wade/hooks/plan_write_guard.py +0 -199
  244. wade_cli-0.35.3/src/wade/hooks/worktree_guard.py +0 -185
  245. wade_cli-0.35.3/src/wade/models/config.py +0 -260
  246. wade_cli-0.35.3/src/wade/models/delegation.py +0 -44
  247. wade_cli-0.35.3/src/wade/services/implementation_service/_shared.py +0 -55
  248. wade_cli-0.35.3/src/wade/services/implementation_service/bootstrap.py +0 -529
  249. wade_cli-0.35.3/src/wade/services/implementation_service/done.py +0 -488
  250. wade_cli-0.35.3/src/wade/services/implementation_service/draft_pr.py +0 -191
  251. wade_cli-0.35.3/src/wade/services/implementation_service/lifecycle.py +0 -500
  252. wade_cli-0.35.3/src/wade/services/implementation_service/sync.py +0 -722
  253. wade_cli-0.35.3/src/wade/services/knowledge_service.py +0 -807
  254. wade_cli-0.35.3/src/wade/services/review_delegation_service.py +0 -262
  255. wade_cli-0.35.3/templates/prompts/implement-context.md +0 -19
  256. wade_cli-0.35.3/templates/prompts/plan-session.md +0 -58
  257. wade_cli-0.35.3/templates/prompts/review-pr-comments.md +0 -23
  258. wade_cli-0.35.3/templates/skills/_partials/review-implementation-closing-step.md +0 -24
  259. wade_cli-0.35.3/templates/skills/_partials/user-interaction.md +0 -5
  260. wade_cli-0.35.3/templates/skills/implementation-session/SKILL.md +0 -341
  261. wade_cli-0.35.3/templates/skills/plan-session/SKILL.md +0 -176
  262. wade_cli-0.35.3/templates/skills/review-pr-comments-session/SKILL.md +0 -247
  263. wade_cli-0.35.3/tests/e2e/test_implement_work_done_contract.py +0 -360
  264. wade_cli-0.35.3/tests/unit/test_console.py +0 -29
  265. wade_cli-0.35.3/tests/unit/test_db/test_repository_transactions.py +0 -114
  266. wade_cli-0.35.3/tests/unit/test_hooks/test_plan_write_guard.py +0 -276
  267. wade_cli-0.35.3/tests/unit/test_hooks/test_worktree_guard.py +0 -250
  268. wade_cli-0.35.3/tests/unit/test_models/test_db.py +0 -200
  269. wade_cli-0.35.3/tests/unit/test_providers/test_github_pr.py +0 -94
  270. wade_cli-0.35.3/tests/unit/test_services/test_check.py +0 -395
  271. wade_cli-0.35.3/tests/unit/test_services/test_done_via_direct_cleanup.py +0 -279
  272. wade_cli-0.35.3/tests/unit/test_services/test_sync_base_branch.py +0 -115
  273. {wade_cli-0.35.3 → wade_cli-0.48.1}/.github/workflows/auto-version.yml +0 -0
  274. {wade_cli-0.35.3 → wade_cli-0.48.1}/.github/workflows/pr-title-lint.yml +0 -0
  275. {wade_cli-0.35.3 → wade_cli-0.48.1}/.github/workflows/publish.yml +0 -0
  276. {wade_cli-0.35.3 → wade_cli-0.48.1}/.github/workflows/release.yml +0 -0
  277. {wade_cli-0.35.3 → wade_cli-0.48.1}/.pre-commit-config.yaml +0 -0
  278. {wade_cli-0.35.3 → wade_cli-0.48.1}/CONTRIBUTING.md +0 -0
  279. {wade_cli-0.35.3 → wade_cli-0.48.1}/assets/wade.png +0 -0
  280. {wade_cli-0.35.3 → wade_cli-0.48.1}/docker-compose.e2e.yml +0 -0
  281. {wade_cli-0.35.3 → wade_cli-0.48.1}/docs/dev/extending.md +0 -0
  282. {wade_cli-0.35.3 → wade_cli-0.48.1}/docs/dev/testing.md +0 -0
  283. {wade_cli-0.35.3 → wade_cli-0.48.1}/install.sh +0 -0
  284. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/auto_version.py +0 -0
  285. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/changelog.py +0 -0
  286. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/check-all.sh +0 -0
  287. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/fmt.sh +0 -0
  288. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/hooks/pre-push +0 -0
  289. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/install-hooks.sh +0 -0
  290. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/release.sh +0 -0
  291. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/setup-worktree.sh +0 -0
  292. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test-e2e-docker.sh +0 -0
  293. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test-e2e.sh +0 -0
  294. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test-live-ai-taskr.sh +0 -0
  295. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test-live-ai.sh +0 -0
  296. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test-live-gh.sh +0 -0
  297. {wade_cli-0.35.3 → wade_cli-0.48.1}/scripts/test.sh +0 -0
  298. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/__main__.py +0 -0
  299. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/__init__.py +0 -0
  300. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/admin.py +0 -0
  301. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/cli/autocomplete.py +0 -0
  302. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/config/__init__.py +0 -0
  303. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/config/schema.py +0 -0
  304. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/logging/__init__.py +0 -0
  305. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/logging/context.py +0 -0
  306. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/logging/setup.py +0 -0
  307. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/deps.py +0 -0
  308. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/models/events.py +0 -0
  309. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/__init__.py +0 -0
  310. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/_pr_delegate.py +0 -0
  311. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/base.py +0 -0
  312. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/clickup.py +0 -0
  313. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/providers/registry.py +0 -0
  314. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/__init__.py +0 -0
  315. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/implementation_service/__init__.py +0 -0
  316. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/implementation_service/usage_tracking.py +0 -0
  317. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/__init__.py +0 -0
  318. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/auth.py +0 -0
  319. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/migrations.py +0 -0
  320. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/init_service/shell.py +0 -0
  321. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/knowledge_search.py +0 -0
  322. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/services/prompt_delivery.py +0 -0
  323. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/skills/__init__.py +0 -0
  324. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/skills/pointer.py +0 -0
  325. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/ui/__init__.py +0 -0
  326. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/ui/prompts.py +0 -0
  327. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/__init__.py +0 -0
  328. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/clipboard.py +0 -0
  329. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/http.py +0 -0
  330. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/install.py +0 -0
  331. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/markdown.py +0 -0
  332. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/slug.py +0 -0
  333. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/terminal.py +0 -0
  334. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/token_usage_markdown.py +0 -0
  335. {wade_cli-0.35.3 → wade_cli-0.48.1}/src/wade/utils/update_check.py +0 -0
  336. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/agents-pointer.md +0 -0
  337. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/prompts/deps-analysis.md +0 -0
  338. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/prompts/review-batch.md +0 -0
  339. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/prompts/review-code.md +0 -0
  340. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/prompts/review-plan.md +0 -0
  341. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/setup-worktree.sh.example +0 -0
  342. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/_partials/review-enforcement-rule.md +0 -0
  343. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/_partials/review-plan-step.md +0 -0
  344. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/deps/SKILL.md +0 -0
  345. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/task/examples.md +0 -0
  346. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/skills/task/plan-format.md +0 -0
  347. {wade_cli-0.35.3 → wade_cli-0.48.1}/templates/statusline-command.sh +0 -0
  348. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/__init__.py +0 -0
  349. {wade_cli-0.35.3/tests/unit/test_db → wade_cli-0.48.1/tests/concurrency}/__init__.py +0 -0
  350. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/conftest.py +0 -0
  351. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/__init__.py +0 -0
  352. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/_support.py +0 -0
  353. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/conftest.py +0 -0
  354. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_admin_contract.py +0 -0
  355. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_check_contract.py +0 -0
  356. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_mock_gh_contract.py +0 -0
  357. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_smart_start_contract.py +0 -0
  358. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/e2e/test_work_sync_list_contract.py +0 -0
  359. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/live/taskr_header_hi_body.md +0 -0
  360. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/live/taskr_header_howdy_body.md +0 -0
  361. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/transcripts/claude_session.txt +0 -0
  362. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/transcripts/codex_session.txt +0 -0
  363. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/transcripts/copilot_session.txt +0 -0
  364. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/fixtures/transcripts/generic_session.txt +0 -0
  365. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/__init__.py +0 -0
  366. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_check.py +0 -0
  367. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_implementation_lifecycle.py +0 -0
  368. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_init.py +0 -0
  369. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/integration/test_markdown_provider.py +0 -0
  370. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/live/__init__.py +0 -0
  371. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/live/test_wade_live_ai.py +0 -0
  372. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/live/test_wade_live_ai_taskr.py +0 -0
  373. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/live/test_wade_live_gh.py +0 -0
  374. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/test_cli_basics.py +0 -0
  375. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/__init__.py +0 -0
  376. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/conftest.py +0 -0
  377. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/__init__.py +0 -0
  378. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_session_subapps.py +0 -0
  379. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_shell_init.py +0 -0
  380. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_task_cli.py +0 -0
  381. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_cli/test_work_ai_flags.py +0 -0
  382. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_config/__init__.py +0 -0
  383. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_config/test_migrations_atomic.py +0 -0
  384. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/__init__.py +0 -0
  385. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_branch_slugify.py +0 -0
  386. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_pr_base.py +0 -0
  387. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_scaffold_commit.py +0 -0
  388. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_git/test_sync_conflicted_files.py +0 -0
  389. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_hooks/__init__.py +0 -0
  390. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/__init__.py +0 -0
  391. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_batch.py +0 -0
  392. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_deps_models.py +0 -0
  393. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_models/test_deps_partition.py +0 -0
  394. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_providers/__init__.py +0 -0
  395. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_providers/test_clickup.py +0 -0
  396. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_providers/test_markdown.py +0 -0
  397. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/__init__.py +0 -0
  398. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_bootstrap_hook_timeout.py +0 -0
  399. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_implementation_service_resume.py +0 -0
  400. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_init_shell_integration.py +0 -0
  401. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_knowledge_search.py +0 -0
  402. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_prompt_delivery.py +0 -0
  403. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_tracked_managed_files.py +0 -0
  404. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_services/test_worktree_gitignore.py +0 -0
  405. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/__init__.py +0 -0
  406. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_http.py +0 -0
  407. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_install.py +0 -0
  408. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_markdown.py +0 -0
  409. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_prompts.py +0 -0
  410. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_slug.py +0 -0
  411. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_terminal.py +0 -0
  412. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_terminal_launch.py +0 -0
  413. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_utils/test_update_check.py +0 -0
  414. {wade_cli-0.35.3 → wade_cli-0.48.1}/tests/unit/test_yolo.py +0 -0
@@ -0,0 +1,4 @@
1
+ # wade:knowledge:start
2
+ KNOWLEDGE.md merge=union
3
+ KNOWLEDGE.ratings.jsonl merge=union
4
+ # wade:knowledge:end
@@ -60,6 +60,8 @@ jobs:
60
60
  run: ./scripts/test.sh tests/unit/
61
61
  - name: Run integration tests
62
62
  run: ./scripts/test.sh tests/integration/
63
+ - name: Run concurrency lane (shared git/remote state)
64
+ run: ./scripts/test-concurrency.sh
63
65
  - name: Run top-level CLI contract smoke
64
66
  run: ./scripts/test.sh tests/test_cli_basics.py
65
67
 
@@ -28,11 +28,13 @@ htmlcov/
28
28
  # AI tool directories (wade-managed — never committed in this repo)
29
29
  .agents/
30
30
  .claude/
31
+ .codex/
31
32
  .copilot/
32
33
  .cursor/
33
34
  .gemini/
34
35
  .github/hooks/
35
36
  .github/skills
37
+ .wade/
36
38
  CLAUDE.md
37
39
  PLAN.md
38
40
  PR-SUMMARY.md
@@ -12,23 +12,28 @@ ai:
12
12
  plan:
13
13
  effort: xhigh
14
14
  yolo: true
15
+ implement:
16
+ yolo: true
15
17
  deps:
16
18
  tool: claude
17
19
  model: claude-sonnet-5
18
20
  mode: headless
19
21
  effort: high
22
+ timeout: 900
20
23
  review_plan:
21
24
  tool: claude
22
25
  model: claude-sonnet-5
23
26
  mode: headless
24
27
  effort: high
25
28
  enabled: true
29
+ timeout: 900
26
30
  review_implementation:
27
31
  tool: claude
28
32
  model: claude-sonnet-5
29
33
  mode: headless
30
34
  effort: high
31
35
  enabled: true
36
+ timeout: 900
32
37
  review_batch:
33
38
  tool: claude
34
39
  model: claude-sonnet-5
@@ -61,5 +66,3 @@ hooks:
61
66
  copy_to_worktree:
62
67
  - .env
63
68
  - .wade.yml
64
- - KNOWLEDGE.md
65
- - KNOWLEDGE.ratings.yml
@@ -16,8 +16,8 @@ Two distinct worlds interact in this codebase. Always be clear which one you are
16
16
  | **the WADE repo** / **this project** | This source repository — `src/wade/`, `templates/`, `tests/`, `scripts/` |
17
17
  | **inited project** / **target project** | Any third-party repo that has run `wade init` to adopt the workflow |
18
18
  | **skill templates** | Markdown files in `templates/skills/` — the source of truth, part of the WADE repo |
19
- | **installed skills** | Copies (or symlinks) of skill templates placed in a project's `.claude/skills/` by `wade init` |
20
- | **AGENTS.md pointer** | A short `## Git Workflow` block that `wade init` injects into an inited project's `AGENTS.md` |
19
+ | **installed skills** | Copies (or symlinks) of skill templates placed in a project's `.claude/skills/` **per session by worktree bootstrap** (`bootstrap_worktree`), not by `wade init` |
20
+ | **AGENTS.md pointer** | A short `## Git Workflow` block that **worktree bootstrap** injects into an inited project's `AGENTS.md` per session, not by `wade init` |
21
21
 
22
22
  **This `AGENTS.md` governs development of WADE itself.** Skills, the pointer, and the progressive disclosure architecture are all *outputs* of WADE — artifacts installed into inited projects, not rules for developing WADE.
23
23
 
@@ -53,15 +53,34 @@ uv run python scripts/auto_version.py patch # Version bump (patch/minor/major)
53
53
 
54
54
  ```
55
55
  CLI Layer -> can import: services, models, config, logging, ui
56
- Service Layer -> can import: providers, crossby (AI tool adapters), git, db, models, config, logging
56
+ Service Layer -> can import: providers, crossby (AI tool adapters), git, models, config, logging
57
57
  Provider Layer -> can import: models, config, logging (NO service imports)
58
58
  Git Layer -> can import: models, config, logging (NO service imports)
59
- DB Layer -> can import: models, logging (NO config imports)
60
59
  Models Layer -> can import: nothing (leaf dependency)
61
60
  ```
62
61
 
63
62
  No circular dependencies. Models are pure data. Services orchestrate. **Never import a higher layer from a lower layer.**
64
63
 
64
+ > **The `db/` package is unused scaffolding** — intentionally left out of the
65
+ > layering rules above. No code path under `services/` or `cli/` writes
66
+ > session/worktree/PR rows, so its sole reader
67
+ > (`implementation_service/cleanup._preserve_session_data`, a single
68
+ > `SessionRepository.get_by_worktree_path` call) always gets an empty result and
69
+ > falls back to directory-presence detection. Real persisted state lives in
70
+ > GitHub (PR/issue body markers, labels) and worktree files, **not** SQLite. The
71
+ > code still exists but is inert; removal is tracked as #357 C5.
72
+
73
+ > **Deterministic git-hook install/reconcile/build logic lives in `git/hooks.py`**
74
+ > (git layer), not `skills/installer.py`. Packaged template-asset loaders
75
+ > (prompt/skill/hook templates) live in `utils/templates.py`, a leaf module.
76
+ > Leaf `utils/` modules import nothing from wade, so any layer — including the
77
+ > git layer — may import them without breaking the rules above.
78
+ > `skills` itself is a lower utility/template layer — services may import it for
79
+ > **skill-file management** (`install_skills`, the `*_SKILLS` registries,
80
+ > `ensure_knowledge_merge_attributes`, gitignore/cross-tool constants), never the
81
+ > reverse. Those residual `service -> skills` imports are sanctioned, not
82
+ > layering violations.
83
+
65
84
  AI tool adapters are not part of this repo — they live in the external [`crossby`](https://github.com/ivanviragine/crossby) package (`pyproject.toml`). See `docs/dev/architecture.md` for what moved there.
66
85
 
67
86
  CLI modules are thin dispatch — they parse flags via Typer, then call service methods. Business logic lives in `services/`, not in `cli/`.
@@ -100,6 +119,8 @@ Everything in this repo exists in one of two worlds:
100
119
 
101
120
  When developing WADE, **only touch the left column**. Always edit `templates/skills/<name>/SKILL.md` directly — never edit files inside `.claude/skills/` (those are symlinks in this repo, copies in inited projects).
102
121
 
122
+ The right-column artifacts (installed skills, the `## Git Workflow` pointer, and the Claude/Cursor allowlists) are produced **per session by worktree bootstrap** (`bootstrap_worktree` in `implementation_service/bootstrap.py`, invoked by `wade implement`/`wade plan`/`wade review` and by a standalone `wade task deps`), *not* by `wade init`. `wade init` writes only `.wade.yml`, optional provider/knowledge files, and the `.wade/` manifest.
123
+
103
124
  > Skills system deep dive (symlinks, pointer markers, installation lifecycle): see `docs/dev/skills-system.md`
104
125
 
105
126
  ## Conventions
@@ -130,6 +151,13 @@ Before considering any work complete:
130
151
  - [ ] **`templates/skills/`** — updated if agent-facing rules changed (plan-session for planning, implementation-session for implementation, review-pr-comments-session for reviews)
131
152
  - [ ] **Commit** — uses conventional-commit prefix
132
153
 
154
+ Note: for inited projects, the doc update pass is now an explicit, mandatory
155
+ closing step in the installed `implementation-session` and
156
+ `review-pr-comments-session` skills (`{doc_update_step}` /
157
+ `templates/skills/_partials/doc-update-step.md`) — not something an agent has
158
+ to remember on its own. This repo's own checklist above is unaffected; it
159
+ still governs what WADE-repo changes require here.
160
+
133
161
  > Full 10-item checklist, documentation rules, feedback loop, and correction-driven docs: see `docs/dev/documentation-policies.md`
134
162
 
135
163
  ## Detailed Reference
@@ -4,6 +4,265 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Conventional Commits](https://conventionalcommits.org/).
6
6
 
7
+ ## [v0.48.1] — 2026-08-17
8
+
9
+ ### Documentation
10
+
11
+ - tighten session-skill communication — terse reporting and unambiguous exit/complete signaling (#436) (0384f72)
12
+
13
+ ## [v0.48.0] — 2026-08-17
14
+
15
+ ### Features
16
+
17
+ - add config-driven bot-review trigger command with optional auto-trigger (#432) (fc2ff0d)
18
+
19
+ ## [v0.47.0] — 2026-08-17
20
+
21
+ ### Features
22
+
23
+ - adopt crossby 0.24.0 refreshed AI-tool model catalogs (#434) (3842332)
24
+
25
+ ## [v0.46.1] — 2026-08-16
26
+
27
+ ### Bug Fixes
28
+
29
+ - propagate Codex worktree launch context through sessions (#429) (032daa2)
30
+
31
+ ## [v0.45.10] — 2026-08-16
32
+
33
+ ### Bug Fixes
34
+
35
+ - resolve branch by issue number so retitled issues resume their PR/plan (#428) (c840b5e)
36
+
37
+ ## [v0.45.9] — 2026-08-16
38
+
39
+ ### Bug Fixes
40
+
41
+ - apply resolved autonomy mode to resumed implementation sessions (#427) (30cc8c9)
42
+
43
+ ## [v0.45.8] — 2026-08-16
44
+
45
+ ### Chores
46
+
47
+ - default implementation sessions to yolo, matching plan/review_batch (#424) (43054af)
48
+
49
+ ## [v0.45.7] — 2026-08-16
50
+
51
+ ### Bug Fixes
52
+
53
+ - preserve user-set ai.implement keys on re-init (#425) (71a25db)
54
+
55
+ ## [v0.45.6] — 2026-08-16
56
+
57
+ ### Bug Fixes
58
+
59
+ - forward resolved permission mode to child sessions when explicit (#426) (fbdd9c9)
60
+
61
+ ## [v0.45.5] — 2026-08-16
62
+
63
+ ### Bug Fixes
64
+
65
+ - drop done.require_review: false bypass hint from done review-refusal output (#422) (5424a00)
66
+
67
+ ## [v0.45.4] — 2026-08-15
68
+
69
+ ### Bug Fixes
70
+
71
+ - _pull_main_after_merge untracked-collision backup is never restored on retry failure (#420) (de59eb7)
72
+
73
+ ## [v0.45.3] — 2026-08-14
74
+
75
+ ### Bug Fixes
76
+
77
+ - resolve worktree/branch by issue number + project-scope UX (#417) (6158a41)
78
+
79
+ ## [v0.45.2] — 2026-08-13
80
+
81
+ ### Refactoring
82
+
83
+ - shared typed worktree model for list_worktrees() consumers (#416) (69931c7)
84
+
85
+ ## [v0.45.1] — 2026-08-13
86
+
87
+ ### Bug Fixes
88
+
89
+ - merge_pr hard-fails on recoverable "Head branch is out of date" (stale PR head sync) (#415) (d81a658)
90
+
91
+ ## [v0.45.0] — 2026-08-13
92
+
93
+ ### Features
94
+
95
+ - support a configurable base branch for plans and implementation (#377) (7bbde95)
96
+
97
+ ## [v0.44.3] — 2026-08-12
98
+
99
+ ### Refactoring
100
+
101
+ - move deterministic git-hook logic out of skills.installer (service-layer boundary) (#412) (d93468d)
102
+
103
+ ## [v0.44.2] — 2026-08-12
104
+
105
+ ### Bug Fixes
106
+
107
+ - allow writes to system temp dirs through worktree/plan write-guards (#410) (81fcf74)
108
+
109
+ ## [v0.44.1] — 2026-08-12
110
+
111
+ ### Bug Fixes
112
+
113
+ - wade implement startup catchup silently aborts on knowledge-store-migration untracked_conflict, leaving the session on a stale base (#408) (9968583)
114
+
115
+ ## [v0.44.0] — 2026-08-12
116
+
117
+ ### Features
118
+
119
+ - make WADE session output report-by-exception (terse on success) (#402) (9f96c94)
120
+
121
+ ## [v0.43.0] — 2026-08-11
122
+
123
+ ### Features
124
+
125
+ - allow AI-tool memory writes through worktree/plan write-guards (#388) (338a31c)
126
+
127
+ ## [v0.42.6] — 2026-08-11
128
+
129
+ ### Bug Fixes
130
+
131
+ - always surface the resolved permission mode and honor it in review sessions (#380) (01beb8a)
132
+
133
+ ## [v0.42.5] — 2026-08-11
134
+
135
+ ### Bug Fixes
136
+
137
+ - a timed-out headless review loses everything and is likely to time out again (#406) (1050ff9)
138
+
139
+ ## [v0.42.4] — 2026-08-10
140
+
141
+ ### Bug Fixes
142
+
143
+ - restore nested-session guard for Antigravity CLI in wade implement (#405) (8d16c06)
144
+
145
+ ## [v0.42.3] — 2026-08-10
146
+
147
+ ### Bug Fixes
148
+
149
+ - don't declare review complete when bot hasn't reviewed the latest commit (#404) (f36ed80)
150
+
151
+ ## [v0.42.2] — 2026-08-10
152
+
153
+ ### Bug Fixes
154
+
155
+ - `done` cannot tell a clean review from one that never ran (#400) (8788d52)
156
+
157
+ ## [v0.42.1] — 2026-08-10
158
+
159
+ ### Chores
160
+
161
+ - remove dead pre-push install wrappers superseded by the batch git-hook API (#399) (e39517a)
162
+
163
+ ## [v0.42.0] — 2026-08-09
164
+
165
+ ### Features
166
+
167
+ - enforce conventional-commit PR & issue titles across creation and done (#393) (c3f13d5)
168
+
169
+ ## [v0.41.1] — 2026-08-09
170
+
171
+ ### Bug Fixes
172
+
173
+ - allow /dev/ device writes in plan-mode write guard (#398) (adc6c61)
174
+
175
+ ### Other Changes
176
+
177
+ - Lock-retry for `git stash push` is git-version-dependent (follow-up to #357 C3) (#396) (27e0eb9)
178
+
179
+ ## [v0.41.0] — 2026-08-08
180
+
181
+ ### Features
182
+
183
+ - re-inject session context on start/resume/compaction (#351) (#391) (8a9c0ed)
184
+
185
+ ### Other Changes
186
+
187
+ - wade review crashes with Rich MarkupError when reviewer feedback contains bracket markup (#395) (2a224a6)
188
+
189
+ ## [v0.40.0] — 2026-08-08
190
+
191
+ ### Features
192
+
193
+ - honor a dedicated ai.review_pr_comments config for the auto-launched review session (#390) (d6b920e)
194
+
195
+ ### Other Changes
196
+
197
+ - H3: Knowledge lifecycle — worktree-local, reviewed and merged through the PR (#386) (26af39f)
198
+
199
+ ## [v0.39.3] — 2026-08-07
200
+
201
+ ### Bug Fixes
202
+
203
+ - bound implementation-session review loop with a code-enforced 2-pass cap (#385) (3ed4f04)
204
+
205
+ ### Other Changes
206
+
207
+ - E4: Repo-quality gates — pre-commit + commit-msg git hooks, and PostToolUse feedback (#381) (123727a)
208
+ - E2: Plan-phase enforcement (auto-validate + plan Stop guard) (#378) (92e6b43)
209
+ - E1: Make `done` the authoritative completion gate (+ pre-push backstop, + realign Stop) (#375) (2445c55)
210
+
211
+ ## [v0.39.2] — 2026-08-05
212
+
213
+ ### Chores
214
+
215
+ - stop tracking KNOWLEDGE.md/KNOWLEDGE.ratings.yml in git (c6a78b1)
216
+
217
+ ### Other Changes
218
+
219
+ - H4: Drift &amp; layering — AGENTS.md, architecture.md, crossby hook comments, raw subprocess in services (#365) (3ae0ff3)
220
+
221
+ ## [v0.39.1] — 2026-08-05
222
+
223
+ ### Bug Fixes
224
+
225
+ - allow shell reads outside the worktree, block only writes (#373) (d9dc842)
226
+
227
+ ## [v0.39.0] — 2026-08-05
228
+
229
+ ### Features
230
+
231
+ - offer only tool-valid reasoning-effort levels in wade init (#371) (cb6458a)
232
+
233
+ ## [v0.38.1] — 2026-08-04
234
+
235
+ ### Bug Fixes
236
+
237
+ - accept permission_mode key in config validation (#369) (cdeb48e)
238
+
239
+ ### Other Changes
240
+
241
+ - H2: Git &amp; remote-state hygiene — never lose work, never act on a stale read (+ retire `merge_strategy: direct`) (#362) (6e55893)
242
+ - H1: Hook-layer correctness — capability matrix + fail-closed containment (crossby 0.13) (#363) (623805f)
243
+
244
+ ## [v0.38.0] — 2026-08-03
245
+
246
+ ### Features
247
+
248
+ - add a documentation update pass to the implementation and pr-comments sessions (#361) (96b6b6d)
249
+
250
+ ### Other Changes
251
+
252
+ - E: Context budget — slim the skills, say each rule once, load reference just-in-time (#364) (670cc29)
253
+
254
+ ## [v0.37.0] — 2026-08-01
255
+
256
+ ### Features
257
+
258
+ - modernize AI-tool hook integration via crossby runtime contract (#320) (76e8ca2)
259
+
260
+ ## [v0.36.0] — 2026-07-25
261
+
262
+ ### Features
263
+
264
+ - announce headless review timeout so orchestrators don't kill it early (#347) (1af5754)
265
+
7
266
  ## [v0.35.3] — 2026-07-25
8
267
 
9
268
  ### Chores