wade-cli 0.35.3__tar.gz → 0.50.2__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.
- wade_cli-0.50.2/.gitattributes +4 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.github/workflows/ci.yml +2 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.gitignore +2 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.wade.yml +21 -2
- {wade_cli-0.35.3 → wade_cli-0.50.2}/AGENTS.md +32 -4
- {wade_cli-0.35.3 → wade_cli-0.50.2}/CHANGELOG.md +313 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/CONTRIBUTING.md +4 -3
- wade_cli-0.50.2/KNOWLEDGE.md +679 -0
- wade_cli-0.50.2/KNOWLEDGE.ratings.jsonl +126 -0
- wade_cli-0.50.2/PKG-INFO +825 -0
- wade_cli-0.50.2/README.md +789 -0
- wade_cli-0.50.2/docs/dev/architecture.md +979 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/docs/dev/documentation-policies.md +3 -1
- {wade_cli-0.35.3 → wade_cli-0.50.2}/docs/dev/extending.md +3 -1
- wade_cli-0.50.2/docs/dev/skills-system.md +259 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/docs/dev/testing.md +25 -9
- {wade_cli-0.35.3 → wade_cli-0.50.2}/pyproject.toml +4 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/check.sh +2 -2
- wade_cli-0.50.2/scripts/test-concurrency.sh +8 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/__init__.py +1 -1
- wade_cli-0.50.2/src/wade/cli/hook.py +45 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/implementation_session.py +24 -22
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/knowledge.py +69 -1
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/main.py +52 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/plan_session.py +8 -4
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/review.py +56 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/review_pr_comments_session.py +35 -15
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/session_shared.py +13 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/task.py +23 -1
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/worktree.py +9 -2
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/config/loader.py +165 -2
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/config/migrations.py +48 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/git/__init__.py +6 -0
- wade_cli-0.50.2/src/wade/git/branch.py +339 -0
- wade_cli-0.50.2/src/wade/git/hooks.py +359 -0
- wade_cli-0.50.2/src/wade/git/pr.py +805 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/git/repo.py +303 -25
- wade_cli-0.50.2/src/wade/git/stash.py +213 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/git/sync.py +29 -16
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/git/worktree.py +22 -17
- wade_cli-0.50.2/src/wade/hooks/__init__.py +14 -0
- wade_cli-0.50.2/src/wade/hooks/cli.py +875 -0
- wade_cli-0.50.2/src/wade/hooks/policies.py +1502 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/__init__.py +4 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/batch.py +1 -0
- wade_cli-0.50.2/src/wade/models/config.py +497 -0
- wade_cli-0.50.2/src/wade/models/delegation.py +61 -0
- wade_cli-0.50.2/src/wade/models/hooks.py +63 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/permission.py +23 -0
- wade_cli-0.50.2/src/wade/models/review.py +1034 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/session.py +5 -2
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/task.py +43 -0
- wade_cli-0.50.2/src/wade/models/worktree.py +23 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/_pr_delegate.py +4 -4
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/github.py +155 -25
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/markdown.py +4 -38
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/ai_resolution.py +153 -43
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/batch_review_service.py +51 -13
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/check_service.py +404 -34
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/delegation_service.py +172 -31
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/deps_service.py +146 -30
- wade_cli-0.50.2/src/wade/services/implementation_service/_shared.py +193 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/implementation_service/batch.py +230 -73
- wade_cli-0.50.2/src/wade/services/implementation_service/bootstrap.py +1150 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/implementation_service/cleanup.py +164 -50
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/implementation_service/core.py +473 -66
- wade_cli-0.50.2/src/wade/services/implementation_service/done.py +1261 -0
- wade_cli-0.50.2/src/wade/services/implementation_service/draft_pr.py +495 -0
- wade_cli-0.50.2/src/wade/services/implementation_service/lifecycle.py +802 -0
- wade_cli-0.50.2/src/wade/services/implementation_service/sync.py +1151 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/commands.py +24 -21
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/config_io.py +95 -23
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/manifest.py +13 -5
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/prompts_ai.py +9 -6
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/prompts_setup.py +54 -34
- wade_cli-0.50.2/src/wade/services/knowledge_service.py +918 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/plan_service.py +571 -189
- wade_cli-0.50.2/src/wade/services/review_delegation_service.py +503 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/review_service.py +621 -74
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/review_settle.py +6 -24
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/smart_start.py +66 -25
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/task_service.py +64 -4
- wade_cli-0.50.2/src/wade/skills/doc_targets.py +77 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/skills/installer.py +161 -63
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/skills/pointer.py +61 -34
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/ui/console.py +65 -15
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/ui/prompts.py +51 -4
- wade_cli-0.50.2/src/wade/utils/body_markers.py +173 -0
- wade_cli-0.50.2/src/wade/utils/conventional.py +86 -0
- wade_cli-0.50.2/src/wade/utils/filelock.py +85 -0
- wade_cli-0.50.2/src/wade/utils/gitref.py +49 -0
- wade_cli-0.50.2/src/wade/utils/knowledge_file.py +212 -0
- wade_cli-0.50.2/src/wade/utils/markers.py +305 -0
- wade_cli-0.50.2/src/wade/utils/paths.py +27 -0
- wade_cli-0.50.2/src/wade/utils/plan_validation.py +217 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/process.py +43 -3
- wade_cli-0.50.2/src/wade/utils/stale_base.py +114 -0
- wade_cli-0.50.2/src/wade/utils/templates.py +73 -0
- wade_cli-0.50.2/templates/hooks/commit-msg +54 -0
- wade_cli-0.50.2/templates/hooks/pre-commit +48 -0
- wade_cli-0.50.2/templates/hooks/pre-push +91 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/prompts/deps-analysis.md +1 -1
- wade_cli-0.50.2/templates/prompts/implement-context.md +10 -0
- wade_cli-0.50.2/templates/prompts/plan-session.md +9 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/prompts/review-batch.md +2 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/prompts/review-code.md +2 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/prompts/review-plan.md +2 -0
- wade_cli-0.50.2/templates/prompts/review-pr-comments.md +18 -0
- wade_cli-0.50.2/templates/prompts/session-start-implement.md +4 -0
- wade_cli-0.50.2/templates/prompts/session-start-plan.md +3 -0
- wade_cli-0.50.2/templates/prompts/session-start-review.md +3 -0
- wade_cli-0.50.2/templates/skills/_partials/doc-update-step.md +6 -0
- wade_cli-0.50.2/templates/skills/_partials/knowledge-step.md +8 -0
- wade_cli-0.50.2/templates/skills/_partials/review-budget.md +46 -0
- wade_cli-0.50.2/templates/skills/_partials/review-enforcement-rule.md +12 -0
- wade_cli-0.50.2/templates/skills/_partials/review-implementation-closing-step.md +25 -0
- wade_cli-0.50.2/templates/skills/_partials/review-plan-step.md +18 -0
- wade_cli-0.50.2/templates/skills/_partials/user-interaction.md +33 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/skills/deps/SKILL.md +18 -6
- wade_cli-0.50.2/templates/skills/implementation-session/SKILL.md +134 -0
- wade_cli-0.50.2/templates/skills/implementation-session/reference/doc-update.md +38 -0
- wade_cli-0.50.2/templates/skills/implementation-session/reference/new-plan.md +11 -0
- wade_cli-0.50.2/templates/skills/implementation-session/reference/pr-summary-format.md +41 -0
- wade_cli-0.50.2/templates/skills/implementation-session/reference/recovery.md +129 -0
- wade_cli-0.50.2/templates/skills/implementation-session/reference/tracking-issues.md +28 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/skills/knowledge/SKILL.md +4 -0
- wade_cli-0.50.2/templates/skills/plan-session/SKILL.md +94 -0
- wade_cli-0.50.2/templates/skills/plan-session/reference/plan-format.md +82 -0
- wade_cli-0.50.2/templates/skills/review-pr-comments-session/SKILL.md +185 -0
- wade_cli-0.50.2/templates/skills/review-pr-comments-session/reference/doc-update.md +38 -0
- wade_cli-0.50.2/templates/skills/review-pr-comments-session/reference/recovery.md +66 -0
- wade_cli-0.50.2/templates/skills/task/SKILL.md +262 -0
- wade_cli-0.50.2/templates/skills/task/examples.md +160 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/skills/task/plan-format.md +5 -4
- wade_cli-0.50.2/templates/skills/task/reference/session-summary-format.md +105 -0
- wade_cli-0.50.2/tests/concurrency/test_batch_multi_pr.py +84 -0
- wade_cli-0.50.2/tests/concurrency/test_knowledge_merge.py +195 -0
- wade_cli-0.50.2/tests/concurrency/test_lock_retry.py +205 -0
- wade_cli-0.50.2/tests/concurrency/test_stash_race.py +90 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/_support.py +20 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/mock_gh_script.py +41 -17
- wade_cli-0.50.2/tests/e2e/test_implement_work_done_contract.py +713 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_knowledge_contract.py +4 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_plan_contract.py +3 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_review_contract.py +123 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_task_contract.py +1 -1
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_autostash.py +6 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_git.py +5 -5
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_knowledge.py +4 -2
- wade_cli-0.50.2/tests/integration/test_skill_context_budget.py +134 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_skill_install.py +307 -11
- wade_cli-0.50.2/tests/unit/test_cli/test_done_doc_pass_advisory.py +88 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_done_review_hint.py +14 -54
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_knowledge_cli.py +147 -22
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_review_cli.py +84 -23
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_work_cli.py +3 -1
- wade_cli-0.50.2/tests/unit/test_config/test_bot_review_config.py +289 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_config/test_loader.py +204 -0
- wade_cli-0.50.2/tests/unit/test_config/test_merge_strategy_migration.py +69 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_config/test_migrations.py +64 -0
- wade_cli-0.50.2/tests/unit/test_console.py +91 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_effort.py +31 -0
- wade_cli-0.50.2/tests/unit/test_git/test_all_patches_present.py +49 -0
- wade_cli-0.50.2/tests/unit/test_git/test_branch_list.py +40 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_detached_worktree.py +3 -3
- wade_cli-0.50.2/tests/unit/test_git/test_is_merged_into.py +38 -0
- wade_cli-0.50.2/tests/unit/test_git/test_main_checkout_root.py +33 -0
- wade_cli-0.50.2/tests/unit/test_git/test_merge_count.py +42 -0
- wade_cli-0.50.2/tests/unit/test_git/test_pr_lookup.py +153 -0
- wade_cli-0.50.2/tests/unit/test_git/test_pr_retry.py +373 -0
- wade_cli-0.50.2/tests/unit/test_git/test_pr_title.py +38 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_repo.py +31 -1
- wade_cli-0.50.2/tests/unit/test_git/test_reset_branch.py +67 -0
- wade_cli-0.50.2/tests/unit/test_git/test_stash_drop.py +53 -0
- wade_cli-0.50.2/tests/unit/test_git/test_tip_commit_is_empty.py +88 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_worktree_remove.py +9 -9
- wade_cli-0.50.2/tests/unit/test_hooks/test_hook_cli.py +885 -0
- wade_cli-0.50.2/tests/unit/test_hooks/test_policies.py +1150 -0
- wade_cli-0.50.2/tests/unit/test_hooks/test_post_tool_use.py +282 -0
- wade_cli-0.50.2/tests/unit/test_hooks/test_session_start.py +595 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_config_models.py +54 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_delegation.py +23 -1
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_review.py +265 -8
- wade_cli-0.50.2/tests/unit/test_models/test_review_expectation.py +248 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_task_models.py +61 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_permission_mode.py +140 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_providers/test_github.py +87 -0
- wade_cli-0.50.2/tests/unit/test_providers/test_github_pr.py +403 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_ai_resolution.py +271 -2
- wade_cli-0.50.2/tests/unit/test_services/test_batch_build_cmd.py +161 -0
- wade_cli-0.50.2/tests/unit/test_services/test_batch_pr_index.py +94 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_batch_review_service.py +44 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_allowlist.py +203 -61
- wade_cli-0.50.2/tests/unit/test_services/test_bootstrap_post_tool_use.py +195 -0
- wade_cli-0.50.2/tests/unit/test_services/test_bootstrap_pre_push.py +130 -0
- wade_cli-0.50.2/tests/unit/test_services/test_bootstrap_session_start.py +296 -0
- wade_cli-0.50.2/tests/unit/test_services/test_bot_trigger.py +384 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_catchup.py +52 -0
- wade_cli-0.50.2/tests/unit/test_services/test_catchup_reconcile.py +544 -0
- wade_cli-0.50.2/tests/unit/test_services/test_check.py +796 -0
- wade_cli-0.50.2/tests/unit/test_services/test_cleanup_loss_guard.py +275 -0
- wade_cli-0.50.2/tests/unit/test_services/test_codex_worktree_launch_context.py +144 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_delegation_service.py +184 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_deps_service.py +414 -8
- wade_cli-0.50.2/tests/unit/test_services/test_done_gates.py +574 -0
- wade_cli-0.50.2/tests/unit/test_services/test_done_idempotent.py +97 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_done_plan_flag.py +36 -1
- wade_cli-0.50.2/tests/unit/test_services/test_done_pr_title_sync.py +223 -0
- wade_cli-0.50.2/tests/unit/test_services/test_draft_pr_base_fetch.py +148 -0
- wade_cli-0.50.2/tests/unit/test_services/test_draft_pr_retarget.py +479 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_done_sync.py +144 -13
- wade_cli-0.50.2/tests/unit/test_services/test_implementation_launch_context.py +166 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_service.py +1176 -89
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_init.py +229 -55
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_knowledge_service.py +217 -19
- wade_cli-0.50.2/tests/unit/test_services/test_managed_git_hooks.py +343 -0
- wade_cli-0.50.2/tests/unit/test_services/test_no_direct_git.py +174 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_plan_service.py +944 -3
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_poll_for_reviews.py +227 -23
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_post_implementation_lifecycle.py +266 -104
- wade_cli-0.50.2/tests/unit/test_services/test_pr_lookup_guards.py +52 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_pr_summary_path.py +17 -4
- wade_cli-0.50.2/tests/unit/test_services/test_pre_push_backstop.py +274 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_preserve_session_data.py +37 -98
- wade_cli-0.50.2/tests/unit/test_services/test_push_recovery.py +159 -0
- wade_cli-0.50.2/tests/unit/test_services/test_resolve_task_branch.py +240 -0
- wade_cli-0.50.2/tests/unit/test_services/test_resume_autonomy.py +39 -0
- wade_cli-0.50.2/tests/unit/test_services/test_review_delegation_service.py +1478 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_review_service.py +793 -35
- wade_cli-0.50.2/tests/unit/test_services/test_review_status_block.py +406 -0
- wade_cli-0.50.2/tests/unit/test_services/test_reviewed_marker.py +222 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_smart_start.py +178 -34
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_smart_start_resume.py +21 -11
- wade_cli-0.50.2/tests/unit/test_services/test_stale_base_surface.py +274 -0
- wade_cli-0.50.2/tests/unit/test_services/test_sync_base_branch.py +229 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_task_service.py +126 -10
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_tracked_managed_files.py +186 -14
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_worktree_gitignore.py +17 -2
- wade_cli-0.50.2/tests/unit/test_skills/test_doc_targets.py +119 -0
- wade_cli-0.50.2/tests/unit/test_skills/test_knowledge_attributes.py +89 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_skills/test_managed_gitignore.py +2 -0
- wade_cli-0.50.2/tests/unit/test_skills/test_pointer.py +42 -0
- wade_cli-0.50.2/tests/unit/test_skills/test_review_budget_partial.py +65 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_body_markers.py +120 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_conventional.py +99 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_filelock.py +52 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_gitref.py +66 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_markers.py +153 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_plan_validation.py +155 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_process.py +87 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_prompts.py +92 -0
- wade_cli-0.50.2/tests/unit/test_utils/test_stale_base.py +80 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_yolo.py +6 -3
- wade_cli-0.35.3/KNOWLEDGE.md +0 -239
- wade_cli-0.35.3/KNOWLEDGE.ratings.yml +0 -98
- wade_cli-0.35.3/PKG-INFO +0 -353
- wade_cli-0.35.3/README.md +0 -316
- wade_cli-0.35.3/docs/dev/architecture.md +0 -333
- wade_cli-0.35.3/docs/dev/skills-system.md +0 -135
- wade_cli-0.35.3/src/wade/db/__init__.py +0 -34
- wade_cli-0.35.3/src/wade/db/engine.py +0 -85
- wade_cli-0.35.3/src/wade/db/repositories.py +0 -266
- wade_cli-0.35.3/src/wade/db/tables.py +0 -131
- wade_cli-0.35.3/src/wade/git/branch.py +0 -140
- wade_cli-0.35.3/src/wade/git/pr.py +0 -427
- wade_cli-0.35.3/src/wade/git/stash.py +0 -122
- wade_cli-0.35.3/src/wade/hooks/__init__.py +0 -19
- wade_cli-0.35.3/src/wade/hooks/plan_write_guard.py +0 -199
- wade_cli-0.35.3/src/wade/hooks/worktree_guard.py +0 -185
- wade_cli-0.35.3/src/wade/models/config.py +0 -260
- wade_cli-0.35.3/src/wade/models/delegation.py +0 -44
- wade_cli-0.35.3/src/wade/models/review.py +0 -517
- wade_cli-0.35.3/src/wade/services/implementation_service/_shared.py +0 -55
- wade_cli-0.35.3/src/wade/services/implementation_service/bootstrap.py +0 -529
- wade_cli-0.35.3/src/wade/services/implementation_service/done.py +0 -488
- wade_cli-0.35.3/src/wade/services/implementation_service/draft_pr.py +0 -191
- wade_cli-0.35.3/src/wade/services/implementation_service/lifecycle.py +0 -500
- wade_cli-0.35.3/src/wade/services/implementation_service/sync.py +0 -722
- wade_cli-0.35.3/src/wade/services/knowledge_service.py +0 -807
- wade_cli-0.35.3/src/wade/services/review_delegation_service.py +0 -262
- wade_cli-0.35.3/templates/prompts/implement-context.md +0 -19
- wade_cli-0.35.3/templates/prompts/plan-session.md +0 -58
- wade_cli-0.35.3/templates/prompts/review-pr-comments.md +0 -23
- wade_cli-0.35.3/templates/skills/_partials/review-enforcement-rule.md +0 -8
- wade_cli-0.35.3/templates/skills/_partials/review-implementation-closing-step.md +0 -24
- wade_cli-0.35.3/templates/skills/_partials/review-plan-step.md +0 -17
- wade_cli-0.35.3/templates/skills/_partials/user-interaction.md +0 -5
- wade_cli-0.35.3/templates/skills/implementation-session/SKILL.md +0 -341
- wade_cli-0.35.3/templates/skills/plan-session/SKILL.md +0 -176
- wade_cli-0.35.3/templates/skills/review-pr-comments-session/SKILL.md +0 -247
- wade_cli-0.35.3/templates/skills/task/SKILL.md +0 -187
- wade_cli-0.35.3/templates/skills/task/examples.md +0 -132
- wade_cli-0.35.3/tests/e2e/test_implement_work_done_contract.py +0 -360
- wade_cli-0.35.3/tests/unit/test_console.py +0 -29
- wade_cli-0.35.3/tests/unit/test_db/test_repository_transactions.py +0 -114
- wade_cli-0.35.3/tests/unit/test_hooks/test_plan_write_guard.py +0 -276
- wade_cli-0.35.3/tests/unit/test_hooks/test_worktree_guard.py +0 -250
- wade_cli-0.35.3/tests/unit/test_models/test_db.py +0 -200
- wade_cli-0.35.3/tests/unit/test_providers/test_github_pr.py +0 -94
- wade_cli-0.35.3/tests/unit/test_services/test_check.py +0 -395
- wade_cli-0.35.3/tests/unit/test_services/test_done_via_direct_cleanup.py +0 -279
- wade_cli-0.35.3/tests/unit/test_services/test_review_delegation_service.py +0 -717
- wade_cli-0.35.3/tests/unit/test_services/test_sync_base_branch.py +0 -115
- wade_cli-0.35.3/tests/unit/test_utils/test_prompts.py +0 -48
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.github/workflows/auto-version.yml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.github/workflows/pr-title-lint.yml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.github/workflows/publish.yml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.github/workflows/release.yml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/.pre-commit-config.yaml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/assets/wade.png +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/docker-compose.e2e.yml +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/install.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/auto_version.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/changelog.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/check-all.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/fmt.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/hooks/pre-push +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/install-hooks.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/release.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/setup-worktree.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test-e2e-docker.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test-e2e.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test-live-ai-taskr.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test-live-ai.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test-live-gh.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/scripts/test.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/__main__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/admin.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/cli/autocomplete.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/config/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/config/schema.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/logging/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/logging/context.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/logging/setup.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/deps.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/models/events.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/base.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/clickup.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/providers/registry.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/implementation_service/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/implementation_service/usage_tracking.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/auth.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/migrations.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/init_service/shell.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/knowledge_search.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/services/prompt_delivery.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/skills/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/ui/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/clipboard.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/http.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/install.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/markdown.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/slug.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/terminal.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/token_usage_markdown.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/src/wade/utils/update_check.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/agents-pointer.md +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/setup-worktree.sh.example +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/templates/statusline-command.sh +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/__init__.py +0 -0
- {wade_cli-0.35.3/tests/unit/test_db → wade_cli-0.50.2/tests/concurrency}/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/conftest.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/conftest.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_admin_contract.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_check_contract.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_mock_gh_contract.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_smart_start_contract.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/e2e/test_work_sync_list_contract.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/live/taskr_header_hi_body.md +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/live/taskr_header_howdy_body.md +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/transcripts/claude_session.txt +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/transcripts/codex_session.txt +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/transcripts/copilot_session.txt +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/fixtures/transcripts/generic_session.txt +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_check.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_implementation_lifecycle.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_init.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/integration/test_markdown_provider.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/live/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/live/test_wade_live_ai.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/live/test_wade_live_ai_taskr.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/live/test_wade_live_gh.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/test_cli_basics.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/conftest.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_session_subapps.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_shell_init.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_task_cli.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_cli/test_work_ai_flags.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_config/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_config/test_migrations_atomic.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_branch_slugify.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_pr_base.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_scaffold_commit.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_git/test_sync_conflicted_files.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_hooks/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_batch.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_deps_models.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_models/test_deps_partition.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_providers/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_providers/test_clickup.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_providers/test_markdown.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_bootstrap_hook_timeout.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_implementation_service_resume.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_init_shell_integration.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_knowledge_search.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_services/test_prompt_delivery.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/__init__.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_http.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_install.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_markdown.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_slug.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_terminal.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_terminal_launch.py +0 -0
- {wade_cli-0.35.3 → wade_cli-0.50.2}/tests/unit/test_utils/test_update_check.py +0 -0
|
@@ -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
|
|
|
@@ -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
|
|
@@ -53,6 +58,22 @@ models:
|
|
|
53
58
|
effort: xhigh
|
|
54
59
|
provider:
|
|
55
60
|
name: github
|
|
61
|
+
bot_review:
|
|
62
|
+
# This repo runs CodeRabbit + Codex, not Cursor Bugbot. Bugbot is disabled so
|
|
63
|
+
# expectation-verified completion (#448) doesn't wait arrival_timeout for a
|
|
64
|
+
# review that never arrives on every review check. arrival_timeout/ack_timeout
|
|
65
|
+
# keep their defaults (300s / 900s).
|
|
66
|
+
auto_trigger: false
|
|
67
|
+
bots:
|
|
68
|
+
- name: coderabbit
|
|
69
|
+
trigger: '@coderabbitai review'
|
|
70
|
+
enabled: true
|
|
71
|
+
- name: codex
|
|
72
|
+
trigger: '@codex review'
|
|
73
|
+
enabled: true
|
|
74
|
+
- name: bugbot
|
|
75
|
+
trigger: bugbot run
|
|
76
|
+
enabled: false
|
|
56
77
|
knowledge:
|
|
57
78
|
enabled: true
|
|
58
79
|
path: KNOWLEDGE.md
|
|
@@ -61,5 +82,3 @@ hooks:
|
|
|
61
82
|
copy_to_worktree:
|
|
62
83
|
- .env
|
|
63
84
|
- .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
|
|
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,
|
|
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,319 @@ 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.50.2] — 2026-08-19
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- list uncommitted files before the PR-merge "work will be lost" prompt (#454) (932c645)
|
|
12
|
+
|
|
13
|
+
## [v0.50.1] — 2026-08-18
|
|
14
|
+
|
|
15
|
+
### Chores
|
|
16
|
+
|
|
17
|
+
- bump crossby to v0.24.3 (#452) (403daa8)
|
|
18
|
+
|
|
19
|
+
## [v0.50.0] — 2026-08-18
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- harden and align review-pass budget and skip guidance across workflows (#451) (cef9d99)
|
|
24
|
+
|
|
25
|
+
## [v0.49.1] — 2026-08-18
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
- don't report review bots done until they've actually reviewed (#449) (01a3192)
|
|
30
|
+
|
|
31
|
+
## [v0.49.0] — 2026-08-18
|
|
32
|
+
|
|
33
|
+
### Features
|
|
34
|
+
|
|
35
|
+
- standardize WADE session summaries with emoji status and decisive dialog prompts (#444) (4c4d730)
|
|
36
|
+
|
|
37
|
+
## [v0.48.5] — 2026-08-18
|
|
38
|
+
|
|
39
|
+
### Documentation
|
|
40
|
+
|
|
41
|
+
- align installed agent guidance with the plan-driven lifecycle (#442) (d5dbcfc)
|
|
42
|
+
|
|
43
|
+
## [v0.48.4] — 2026-08-18
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
- wrap long choices in interactive pickers instead of cropping (#446) (6b162b6)
|
|
48
|
+
|
|
49
|
+
## [v0.48.3] — 2026-08-18
|
|
50
|
+
|
|
51
|
+
### Documentation
|
|
52
|
+
|
|
53
|
+
- reconcile developer references with the current codebase (#440) (c20a564)
|
|
54
|
+
|
|
55
|
+
## [v0.48.2] — 2026-08-17
|
|
56
|
+
|
|
57
|
+
### Documentation
|
|
58
|
+
|
|
59
|
+
- refresh public onboarding and product positioning (#438) (3f822e2)
|
|
60
|
+
|
|
61
|
+
## [v0.48.1] — 2026-08-17
|
|
62
|
+
|
|
63
|
+
### Documentation
|
|
64
|
+
|
|
65
|
+
- tighten session-skill communication — terse reporting and unambiguous exit/complete signaling (#436) (0384f72)
|
|
66
|
+
|
|
67
|
+
## [v0.48.0] — 2026-08-17
|
|
68
|
+
|
|
69
|
+
### Features
|
|
70
|
+
|
|
71
|
+
- add config-driven bot-review trigger command with optional auto-trigger (#432) (fc2ff0d)
|
|
72
|
+
|
|
73
|
+
## [v0.47.0] — 2026-08-17
|
|
74
|
+
|
|
75
|
+
### Features
|
|
76
|
+
|
|
77
|
+
- adopt crossby 0.24.0 refreshed AI-tool model catalogs (#434) (3842332)
|
|
78
|
+
|
|
79
|
+
## [v0.46.1] — 2026-08-16
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
- propagate Codex worktree launch context through sessions (#429) (032daa2)
|
|
84
|
+
|
|
85
|
+
## [v0.45.10] — 2026-08-16
|
|
86
|
+
|
|
87
|
+
### Bug Fixes
|
|
88
|
+
|
|
89
|
+
- resolve branch by issue number so retitled issues resume their PR/plan (#428) (c840b5e)
|
|
90
|
+
|
|
91
|
+
## [v0.45.9] — 2026-08-16
|
|
92
|
+
|
|
93
|
+
### Bug Fixes
|
|
94
|
+
|
|
95
|
+
- apply resolved autonomy mode to resumed implementation sessions (#427) (30cc8c9)
|
|
96
|
+
|
|
97
|
+
## [v0.45.8] — 2026-08-16
|
|
98
|
+
|
|
99
|
+
### Chores
|
|
100
|
+
|
|
101
|
+
- default implementation sessions to yolo, matching plan/review_batch (#424) (43054af)
|
|
102
|
+
|
|
103
|
+
## [v0.45.7] — 2026-08-16
|
|
104
|
+
|
|
105
|
+
### Bug Fixes
|
|
106
|
+
|
|
107
|
+
- preserve user-set ai.implement keys on re-init (#425) (71a25db)
|
|
108
|
+
|
|
109
|
+
## [v0.45.6] — 2026-08-16
|
|
110
|
+
|
|
111
|
+
### Bug Fixes
|
|
112
|
+
|
|
113
|
+
- forward resolved permission mode to child sessions when explicit (#426) (fbdd9c9)
|
|
114
|
+
|
|
115
|
+
## [v0.45.5] — 2026-08-16
|
|
116
|
+
|
|
117
|
+
### Bug Fixes
|
|
118
|
+
|
|
119
|
+
- drop done.require_review: false bypass hint from done review-refusal output (#422) (5424a00)
|
|
120
|
+
|
|
121
|
+
## [v0.45.4] — 2026-08-15
|
|
122
|
+
|
|
123
|
+
### Bug Fixes
|
|
124
|
+
|
|
125
|
+
- _pull_main_after_merge untracked-collision backup is never restored on retry failure (#420) (de59eb7)
|
|
126
|
+
|
|
127
|
+
## [v0.45.3] — 2026-08-14
|
|
128
|
+
|
|
129
|
+
### Bug Fixes
|
|
130
|
+
|
|
131
|
+
- resolve worktree/branch by issue number + project-scope UX (#417) (6158a41)
|
|
132
|
+
|
|
133
|
+
## [v0.45.2] — 2026-08-13
|
|
134
|
+
|
|
135
|
+
### Refactoring
|
|
136
|
+
|
|
137
|
+
- shared typed worktree model for list_worktrees() consumers (#416) (69931c7)
|
|
138
|
+
|
|
139
|
+
## [v0.45.1] — 2026-08-13
|
|
140
|
+
|
|
141
|
+
### Bug Fixes
|
|
142
|
+
|
|
143
|
+
- merge_pr hard-fails on recoverable "Head branch is out of date" (stale PR head sync) (#415) (d81a658)
|
|
144
|
+
|
|
145
|
+
## [v0.45.0] — 2026-08-13
|
|
146
|
+
|
|
147
|
+
### Features
|
|
148
|
+
|
|
149
|
+
- support a configurable base branch for plans and implementation (#377) (7bbde95)
|
|
150
|
+
|
|
151
|
+
## [v0.44.3] — 2026-08-12
|
|
152
|
+
|
|
153
|
+
### Refactoring
|
|
154
|
+
|
|
155
|
+
- move deterministic git-hook logic out of skills.installer (service-layer boundary) (#412) (d93468d)
|
|
156
|
+
|
|
157
|
+
## [v0.44.2] — 2026-08-12
|
|
158
|
+
|
|
159
|
+
### Bug Fixes
|
|
160
|
+
|
|
161
|
+
- allow writes to system temp dirs through worktree/plan write-guards (#410) (81fcf74)
|
|
162
|
+
|
|
163
|
+
## [v0.44.1] — 2026-08-12
|
|
164
|
+
|
|
165
|
+
### Bug Fixes
|
|
166
|
+
|
|
167
|
+
- wade implement startup catchup silently aborts on knowledge-store-migration untracked_conflict, leaving the session on a stale base (#408) (9968583)
|
|
168
|
+
|
|
169
|
+
## [v0.44.0] — 2026-08-12
|
|
170
|
+
|
|
171
|
+
### Features
|
|
172
|
+
|
|
173
|
+
- make WADE session output report-by-exception (terse on success) (#402) (9f96c94)
|
|
174
|
+
|
|
175
|
+
## [v0.43.0] — 2026-08-11
|
|
176
|
+
|
|
177
|
+
### Features
|
|
178
|
+
|
|
179
|
+
- allow AI-tool memory writes through worktree/plan write-guards (#388) (338a31c)
|
|
180
|
+
|
|
181
|
+
## [v0.42.6] — 2026-08-11
|
|
182
|
+
|
|
183
|
+
### Bug Fixes
|
|
184
|
+
|
|
185
|
+
- always surface the resolved permission mode and honor it in review sessions (#380) (01beb8a)
|
|
186
|
+
|
|
187
|
+
## [v0.42.5] — 2026-08-11
|
|
188
|
+
|
|
189
|
+
### Bug Fixes
|
|
190
|
+
|
|
191
|
+
- a timed-out headless review loses everything and is likely to time out again (#406) (1050ff9)
|
|
192
|
+
|
|
193
|
+
## [v0.42.4] — 2026-08-10
|
|
194
|
+
|
|
195
|
+
### Bug Fixes
|
|
196
|
+
|
|
197
|
+
- restore nested-session guard for Antigravity CLI in wade implement (#405) (8d16c06)
|
|
198
|
+
|
|
199
|
+
## [v0.42.3] — 2026-08-10
|
|
200
|
+
|
|
201
|
+
### Bug Fixes
|
|
202
|
+
|
|
203
|
+
- don't declare review complete when bot hasn't reviewed the latest commit (#404) (f36ed80)
|
|
204
|
+
|
|
205
|
+
## [v0.42.2] — 2026-08-10
|
|
206
|
+
|
|
207
|
+
### Bug Fixes
|
|
208
|
+
|
|
209
|
+
- `done` cannot tell a clean review from one that never ran (#400) (8788d52)
|
|
210
|
+
|
|
211
|
+
## [v0.42.1] — 2026-08-10
|
|
212
|
+
|
|
213
|
+
### Chores
|
|
214
|
+
|
|
215
|
+
- remove dead pre-push install wrappers superseded by the batch git-hook API (#399) (e39517a)
|
|
216
|
+
|
|
217
|
+
## [v0.42.0] — 2026-08-09
|
|
218
|
+
|
|
219
|
+
### Features
|
|
220
|
+
|
|
221
|
+
- enforce conventional-commit PR & issue titles across creation and done (#393) (c3f13d5)
|
|
222
|
+
|
|
223
|
+
## [v0.41.1] — 2026-08-09
|
|
224
|
+
|
|
225
|
+
### Bug Fixes
|
|
226
|
+
|
|
227
|
+
- allow /dev/ device writes in plan-mode write guard (#398) (adc6c61)
|
|
228
|
+
|
|
229
|
+
### Other Changes
|
|
230
|
+
|
|
231
|
+
- Lock-retry for `git stash push` is git-version-dependent (follow-up to #357 C3) (#396) (27e0eb9)
|
|
232
|
+
|
|
233
|
+
## [v0.41.0] — 2026-08-08
|
|
234
|
+
|
|
235
|
+
### Features
|
|
236
|
+
|
|
237
|
+
- re-inject session context on start/resume/compaction (#351) (#391) (8a9c0ed)
|
|
238
|
+
|
|
239
|
+
### Other Changes
|
|
240
|
+
|
|
241
|
+
- wade review crashes with Rich MarkupError when reviewer feedback contains bracket markup (#395) (2a224a6)
|
|
242
|
+
|
|
243
|
+
## [v0.40.0] — 2026-08-08
|
|
244
|
+
|
|
245
|
+
### Features
|
|
246
|
+
|
|
247
|
+
- honor a dedicated ai.review_pr_comments config for the auto-launched review session (#390) (d6b920e)
|
|
248
|
+
|
|
249
|
+
### Other Changes
|
|
250
|
+
|
|
251
|
+
- H3: Knowledge lifecycle — worktree-local, reviewed and merged through the PR (#386) (26af39f)
|
|
252
|
+
|
|
253
|
+
## [v0.39.3] — 2026-08-07
|
|
254
|
+
|
|
255
|
+
### Bug Fixes
|
|
256
|
+
|
|
257
|
+
- bound implementation-session review loop with a code-enforced 2-pass cap (#385) (3ed4f04)
|
|
258
|
+
|
|
259
|
+
### Other Changes
|
|
260
|
+
|
|
261
|
+
- E4: Repo-quality gates — pre-commit + commit-msg git hooks, and PostToolUse feedback (#381) (123727a)
|
|
262
|
+
- E2: Plan-phase enforcement (auto-validate + plan Stop guard) (#378) (92e6b43)
|
|
263
|
+
- E1: Make `done` the authoritative completion gate (+ pre-push backstop, + realign Stop) (#375) (2445c55)
|
|
264
|
+
|
|
265
|
+
## [v0.39.2] — 2026-08-05
|
|
266
|
+
|
|
267
|
+
### Chores
|
|
268
|
+
|
|
269
|
+
- stop tracking KNOWLEDGE.md/KNOWLEDGE.ratings.yml in git (c6a78b1)
|
|
270
|
+
|
|
271
|
+
### Other Changes
|
|
272
|
+
|
|
273
|
+
- H4: Drift & layering — AGENTS.md, architecture.md, crossby hook comments, raw subprocess in services (#365) (3ae0ff3)
|
|
274
|
+
|
|
275
|
+
## [v0.39.1] — 2026-08-05
|
|
276
|
+
|
|
277
|
+
### Bug Fixes
|
|
278
|
+
|
|
279
|
+
- allow shell reads outside the worktree, block only writes (#373) (d9dc842)
|
|
280
|
+
|
|
281
|
+
## [v0.39.0] — 2026-08-05
|
|
282
|
+
|
|
283
|
+
### Features
|
|
284
|
+
|
|
285
|
+
- offer only tool-valid reasoning-effort levels in wade init (#371) (cb6458a)
|
|
286
|
+
|
|
287
|
+
## [v0.38.1] — 2026-08-04
|
|
288
|
+
|
|
289
|
+
### Bug Fixes
|
|
290
|
+
|
|
291
|
+
- accept permission_mode key in config validation (#369) (cdeb48e)
|
|
292
|
+
|
|
293
|
+
### Other Changes
|
|
294
|
+
|
|
295
|
+
- H2: Git & remote-state hygiene — never lose work, never act on a stale read (+ retire `merge_strategy: direct`) (#362) (6e55893)
|
|
296
|
+
- H1: Hook-layer correctness — capability matrix + fail-closed containment (crossby 0.13) (#363) (623805f)
|
|
297
|
+
|
|
298
|
+
## [v0.38.0] — 2026-08-03
|
|
299
|
+
|
|
300
|
+
### Features
|
|
301
|
+
|
|
302
|
+
- add a documentation update pass to the implementation and pr-comments sessions (#361) (96b6b6d)
|
|
303
|
+
|
|
304
|
+
### Other Changes
|
|
305
|
+
|
|
306
|
+
- E: Context budget — slim the skills, say each rule once, load reference just-in-time (#364) (670cc29)
|
|
307
|
+
|
|
308
|
+
## [v0.37.0] — 2026-08-01
|
|
309
|
+
|
|
310
|
+
### Features
|
|
311
|
+
|
|
312
|
+
- modernize AI-tool hook integration via crossby runtime contract (#320) (76e8ca2)
|
|
313
|
+
|
|
314
|
+
## [v0.36.0] — 2026-07-25
|
|
315
|
+
|
|
316
|
+
### Features
|
|
317
|
+
|
|
318
|
+
- announce headless review timeout so orchestrators don't kill it early (#347) (1af5754)
|
|
319
|
+
|
|
7
320
|
## [v0.35.3] — 2026-07-25
|
|
8
321
|
|
|
9
322
|
### Chores
|
|
@@ -35,14 +35,15 @@ uv pip install -e ".[dev]"
|
|
|
35
35
|
|
|
36
36
|
```
|
|
37
37
|
CLI Layer → services, models, config, logging, ui
|
|
38
|
-
Service Layer → providers, crossby (AI tool adapters), git,
|
|
38
|
+
Service Layer → providers, crossby (AI tool adapters), git, models, config, logging
|
|
39
39
|
Provider Layer → models, config, logging (no service imports)
|
|
40
40
|
Git Layer → models, config, logging (no service imports)
|
|
41
|
-
DB Layer → models, logging (no config imports)
|
|
42
41
|
Models Layer → nothing (leaf)
|
|
43
42
|
```
|
|
44
43
|
|
|
45
|
-
|
|
44
|
+
Never import a higher layer from a lower one, and keep business logic out of `cli/`. One sanctioned exception runs the other way: services may import the lower `skills/` utility layer for skill-file management (`install_skills`, the `*_SKILLS` registries, gitignore/cross-tool constants), never the reverse.
|
|
45
|
+
|
|
46
|
+
AI tool adapters live in the external [`crossby`](https://github.com/ivanviragine/crossby) package, not this repo — wade's services import `crossby.ai_tools` and `crossby.models.ai` directly. See `docs/dev/architecture.md`.
|
|
46
47
|
|
|
47
48
|
CLI modules are thin dispatch — parse flags with Typer, call service methods. Business logic lives in `services/`, not `cli/`.
|
|
48
49
|
|