agentic-devtools 0.2.265__tar.gz → 0.2.267__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.
- agentic_devtools-0.2.267/.github/scripts/speckit-trigger/generate-spec-from-issue.sh +4375 -0
- agentic_devtools-0.2.267/.github/scripts/speckit-trigger/lib/spec-validation.sh +871 -0
- agentic_devtools-0.2.267/.github/scripts/speckit-trigger/templates/specify-skeleton-epic.md +33 -0
- agentic_devtools-0.2.267/.github/workflows/audit-review-feedback-apply.yml +164 -0
- agentic_devtools-0.2.267/.github/workflows/audit-takeover-eval-prs.yml +64 -0
- agentic_devtools-0.2.267/.github/workflows/speckit-issue-trigger.yml +207 -0
- agentic_devtools-0.2.267/.github/workflows/speckit-phase-progression.yml +1132 -0
- agentic_devtools-0.2.267/.gitignore +185 -0
- agentic_devtools-0.2.267/PKG-INFO +971 -0
- agentic_devtools-0.2.267/agentic_devtools/_version.py +24 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/audit/__init__.py +9 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/audit/apply.py +663 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/audit/commands.py +266 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/audit/dispatch.py +159 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/audit/takeover.py +152 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/ci/github_provider.py +4741 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/ci/provider.py +915 -0
- agentic_devtools-0.2.267/agentic_devtools/cli/git/remote_push.py +144 -0
- agentic_devtools-0.2.267/docs/audit-pr-label-lifecycle.md +114 -0
- agentic_devtools-0.2.267/docs/ci-secrets.md +101 -0
- agentic_devtools-0.2.267/pyproject.toml +314 -0
- agentic_devtools-0.2.267/specs/1774-subtask-implement-normalize-githubissuesadapter/spec.md +205 -0
- agentic_devtools-0.2.267/specs/1775-subtask-implement-normalize-jiraadapter/checklists/requirements.md +51 -0
- agentic_devtools-0.2.267/specs/1775-subtask-implement-normalize-jiraadapter/spec.md +242 -0
- agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter/checklists/requirements.md +47 -0
- agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter/plan.md +112 -0
- agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter/spec.md +248 -0
- agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter/tasks.md +101 -0
- agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter/test-coverage.json +178 -0
- agentic_devtools-0.2.267/specs/1778-subtask-implement-schema-discovery/spec.md +199 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/analysis-report.md +55 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/checklists/requirements.md +43 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/plan.md +124 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/spec.md +249 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/tasks.md +85 -0
- agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section/test-coverage.json +194 -0
- agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact/analysis-report.md +89 -0
- agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact/tasks.md +127 -0
- agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact/test-coverage.json +239 -0
- agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy/checklists/requirements.md +47 -0
- agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy/plan.md +346 -0
- agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy/spec.md +421 -0
- agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy/tasks.md +149 -0
- agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy/test-coverage.json +148 -0
- agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy/checklists/requirements.md +49 -0
- agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy/plan.md +242 -0
- agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy/spec.md +383 -0
- agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy/tasks.md +116 -0
- agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy/test-coverage.json +161 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/checklists/requirements.md +55 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/data-model.md +78 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/plan.md +290 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/quickstart.md +80 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/research.md +44 -0
- agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph/spec.md +408 -0
- agentic_devtools-0.2.267/specs/1915-review-scaffolding-403-cross/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2029-agent-batch-audit-reviews/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature/checklists/requirements.md +49 -0
- agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature/plan.md +254 -0
- agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature/spec.md +344 -0
- agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature/tasks.md +180 -0
- agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature/test-coverage.json +189 -0
- agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default/checklists/requirements.md +47 -0
- agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default/plan.md +130 -0
- agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default/spec.md +257 -0
- agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default/tasks.md +86 -0
- agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default/test-coverage.json +167 -0
- agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking/checklists/requirements.md +42 -0
- agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking/plan.md +211 -0
- agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking/spec.md +254 -0
- agentic_devtools-0.2.267/specs/2106-load-config-driven-validation/checklists/requirements.md +48 -0
- agentic_devtools-0.2.267/specs/2106-load-config-driven-validation/plan.md +208 -0
- agentic_devtools-0.2.267/specs/2106-load-config-driven-validation/spec.md +305 -0
- agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github/checklists/requirements.md +48 -0
- agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github/plan.md +338 -0
- agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github/spec.md +368 -0
- agentic_devtools-0.2.267/specs/2292-epic-agdt-setup-autonomous/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2293-feature-autonomous-agdt-run/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/checklists/requirements.md +49 -0
- agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/plan.md +119 -0
- agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/spec.md +259 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/checklists/requirements.md +47 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/data-model.md +81 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/plan.md +196 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/quickstart.md +82 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/research.md +85 -0
- agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/spec.md +279 -0
- agentic_devtools-0.2.267/specs/2301-feature-context-aware-conditional/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2301-feature-context-aware-conditional/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/checklists/requirements.md +46 -0
- agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/plan.md +160 -0
- agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/spec.md +286 -0
- agentic_devtools-0.2.267/specs/2307-feature-setup-observability-substrate/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2307-feature-setup-observability-substrate/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/checklists/requirements.md +50 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/plan.md +171 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/spec.md +252 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/tasks.md +102 -0
- agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/test-coverage.json +163 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/checklists/requirements.md +48 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/data-model.md +74 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/plan.md +195 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/quickstart.md +66 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/research.md +104 -0
- agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/spec.md +206 -0
- agentic_devtools-0.2.267/specs/2313-feature-one-command-agdt/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2313-feature-one-command-agdt/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2319-feature-setup-robustness-conditional/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2319-feature-setup-robustness-conditional/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/checklists/requirements.md +49 -0
- agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/plan.md +255 -0
- agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/spec.md +258 -0
- agentic_devtools-0.2.267/specs/2326-subtask-adopt-backing-jira/.markdownlint.json +5 -0
- agentic_devtools-0.2.267/specs/2326-subtask-adopt-backing-jira/fr-coverage.json +1 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/apply/test_audit_apply.py +1690 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/commands/test_audit_apply_command.py +228 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/commands/test_audit_review_feedback_workflows.py +92 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/commands/test_audit_takeover_eval_prs_command.py +53 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/dispatch/test_dispatch_audit_evaluation.py +368 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/takeover/test_reclaim_one_eval_pr.py +52 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/takeover/test_takeover_eval_prs.py +121 -0
- agentic_devtools-0.2.267/tests/unit/cli/audit/takeover/test_touches_agent_output.py +25 -0
- agentic_devtools-0.2.267/tests/unit/cli/ci/github_provider/test_delete_branch.py +68 -0
- agentic_devtools-0.2.267/tests/unit/cli/ci/github_provider/test_list_open_copilot_pr_briefs.py +107 -0
- agentic_devtools-0.2.267/tests/unit/cli/ci/provider/test_list_open_copilot_pr_briefs.py +14 -0
- agentic_devtools-0.2.267/tests/unit/cli/git/remote_push/test_commit_and_push_branch.py +361 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/audit/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/builtins/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/decorators/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/definition/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/executor/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/langchain_adapter/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/registry/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/result/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/review_bindings/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/orchestration/tools/validation/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/prompts/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/prompts/loader/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/cleanup/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/errors/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/manager/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/models/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/segments/reconciler/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/skill_injector/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/state/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/submission_manager/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/submission_processor/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/task_state/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/tools/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/tools/azure_devops/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/tools/git/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/unit/tools/jira/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/workflows/__init__.py +0 -0
- agentic_devtools-0.2.267/tests/workflows/test_minimized_ci_workflows.py +139 -0
- agentic_devtools-0.2.265/.github/scripts/speckit-trigger/generate-spec-from-issue.sh +0 -4079
- agentic_devtools-0.2.265/.github/scripts/speckit-trigger/lib/spec-validation.sh +0 -861
- agentic_devtools-0.2.265/.github/workflows/audit-label-eval-pr.yml +0 -36
- agentic_devtools-0.2.265/.github/workflows/audit-review-feedback-apply.yml +0 -79
- agentic_devtools-0.2.265/.github/workflows/speckit-issue-trigger.yml +0 -189
- agentic_devtools-0.2.265/.github/workflows/speckit-phase-progression.yml +0 -1047
- agentic_devtools-0.2.265/.gitignore +0 -176
- agentic_devtools-0.2.265/PKG-INFO +0 -971
- agentic_devtools-0.2.265/agentic_devtools/_version.py +0 -24
- agentic_devtools-0.2.265/agentic_devtools/cli/audit/__init__.py +0 -9
- agentic_devtools-0.2.265/agentic_devtools/cli/audit/apply.py +0 -543
- agentic_devtools-0.2.265/agentic_devtools/cli/audit/commands.py +0 -270
- agentic_devtools-0.2.265/agentic_devtools/cli/audit/dispatch.py +0 -143
- agentic_devtools-0.2.265/agentic_devtools/cli/ci/github_provider.py +0 -4691
- agentic_devtools-0.2.265/agentic_devtools/cli/ci/provider.py +0 -897
- agentic_devtools-0.2.265/docs/audit-pr-label-lifecycle.md +0 -90
- agentic_devtools-0.2.265/docs/ci-secrets.md +0 -88
- agentic_devtools-0.2.265/pyproject.toml +0 -314
- agentic_devtools-0.2.265/specs/1775-subtask-implement-normalize-jiraadapter/spec.md +0 -205
- agentic_devtools-0.2.265/specs/1776-subtask-implement-normalize-markdownadapter/spec.md +0 -182
- agentic_devtools-0.2.265/specs/1796-subtask-phase-configuration-section/spec.md +0 -176
- agentic_devtools-0.2.265/specs/1881-implement-execution-safety-policy/spec.md +0 -317
- agentic_devtools-0.2.265/specs/1882-implement-autonomous-decision-policy/spec.md +0 -331
- agentic_devtools-0.2.265/specs/2104-resolve-execution-order-default/spec.md +0 -208
- agentic_devtools-0.2.265/tests/unit/cli/audit/apply/test_audit_apply.py +0 -1236
- agentic_devtools-0.2.265/tests/unit/cli/audit/commands/test_audit_apply_command.py +0 -222
- agentic_devtools-0.2.265/tests/unit/cli/audit/commands/test_audit_label_eval_pr_command.py +0 -93
- agentic_devtools-0.2.265/tests/unit/cli/audit/commands/test_audit_review_feedback_workflows.py +0 -76
- agentic_devtools-0.2.265/tests/unit/cli/audit/dispatch/test_dispatch_audit_evaluation.py +0 -342
- agentic_devtools-0.2.265/tests/unit/cli/ci/github_provider/test_delete_branch.py +0 -40
- agentic_devtools-0.2.265/tests/workflows/test_minimized_ci_workflows.py +0 -117
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/.gitignore +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/agentic-devtools-complete-setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/agentic-devtools-configured-setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/agentic-devtools-required-setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/config/commit-template.j2 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/config/pr-title-template.j2 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/config/project.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.agdt/config/pull-request-template.j2 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.devcontainer/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.devcontainer/devcontainer.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.githooks/pre-push +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/CODEOWNERS +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/ISSUE_TEMPLATE/speckit-test.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/MARKDOWN_LINTING.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agdt-config.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.add-jira-comment.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.add-pull-request-comment.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.add-users-to-project-role-batch.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.add-users-to-project-role.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.address-copilot-review.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.address-copilot-review.ci-repair.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.address-copilot-review.evaluate-and-respond.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.address-own-review-feedback.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.address-pr-review-comments.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.advance-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.analyze-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.apply-pr-suggestions.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.approve-pull-request.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.autonomous-issue-refinement.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.azure-context-current.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.azure-context-ensure-login.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.azure-context-status.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.azure-context-use.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.break-down-issue-into-subtasks.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.check-user-exists.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.check-users-exist.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.clear-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.clear.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.confirm-suggestion-addressed.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.copilot-auto-start.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-agdt-bug-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-agdt-documentation-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-agdt-feature-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-agdt-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-agdt-task-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-checklist.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-epic.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-issues-from-analysis.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-jira-epic.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-jira-issue.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-jira-subtask.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-pipeline.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-pull-request.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.create-subtask.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.delete.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.find-role-id-by-name.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.fix-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-jira-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-next-workflow-prompt.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-pipeline-id.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-project-role-details.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-pull-request-details.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-pull-request-threads.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-run-details.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.get.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-force-push.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-publish.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-push.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-save-work.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-stage.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.git-sync.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.list-pipelines.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.list-project-roles.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.mark-pull-request-draft.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.network-status.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.optimize-issue-for-ai-agent.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.parse-jira-error-report.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pr-merge-execute.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pr-merge-manager.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.publish-pull-request.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.completion.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.decision.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.file-reviewer.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.orchestrator.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.rubber-duck.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.pull-request-review.triage.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.query-app-insights.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.query-fabric-dap-errors.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.query-fabric-dap-provisioning.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.query-fabric-dap-timeline.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.reject-suggestion-resolution.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.release-pypi.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.reply-to-pull-request-thread.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.resolve-merge-conflicts.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.resolve-thread.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.review-feedback-audit.evaluate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.run-e2e-tests-fabric.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.run-e2e-tests-synapse.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.run-wb-patch.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.set.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup-certs.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup-check.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup-copilot-cli.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup-gh-cli.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup-worktree-background.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.setup.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.show-checklist.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.show-other-incomplete-tasks.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.show.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.squash-commits.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.task-log.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.task-status.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.task-wait.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.tasks-clean.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.tasks.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.test-file.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.test-pattern.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.test-quick.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.test-workflow.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.test.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.update-checklist.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.update-jira-issue.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.update-jira-issue.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.update-pipeline.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.vpn-off.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.vpn-on.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.vpn-run.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.vpn-status.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.wait-for-run.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.checklist-creation.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.commit.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.completion.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.implementation-review.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.implementation.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.initiate.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.planning.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.pull-request.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.retrieve.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.setup.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/agdt.work-on-jira-issue.verification.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/copilot-instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/security-scan.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/senior-python-developer.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.analyze.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.checklist.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.clarify.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.constitution.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.implement.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.plan.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.specify.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.tasks.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/agents/speckit.taskstoissues.agent.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/copilot-instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/copilot-setup-steps.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/instructions/code-review.instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/instructions/pre-push-hook.instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/instructions/workflow-development.instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/instructions/workflow-expectations.instructions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.add-jira-comment.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.add-pull-request-comment.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.add-users-to-project-role-batch.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.add-users-to-project-role.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.address-copilot-review.ci-repair.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.address-copilot-review.evaluate-and-respond.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.address-copilot-review.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.address-own-review-feedback.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.address-pr-review-comments.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.advance-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.analyze-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.apply-pr-suggestions.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.approve-pull-request.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.autonomous-issue-refinement.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.azure-context-current.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.azure-context-ensure-login.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.azure-context-status.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.azure-context-use.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.break-down-issue-into-subtasks.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.check-user-exists.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.check-users-exist.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.clear-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.clear.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.confirm-suggestion-addressed.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.copilot-auto-start.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-agdt-bug-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-agdt-documentation-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-agdt-feature-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-agdt-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-agdt-task-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-checklist.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-epic.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-issues-from-analysis.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-jira-epic.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-jira-issue.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-jira-subtask.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-pipeline.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-pull-request.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.create-subtask.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.delete.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.find-role-id-by-name.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.fix-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-jira-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-next-workflow-prompt.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-pipeline-id.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-project-role-details.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-pull-request-details.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-pull-request-threads.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-run-details.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.get.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-force-push.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-publish.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-push.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-save-work.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-stage.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.git-sync.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.list-pipelines.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.list-project-roles.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.mark-pull-request-draft.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.network-status.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.optimize-issue-for-ai-agent.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.parse-jira-error-report.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.pr-merge-manager.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.publish-pull-request.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.pull-request-review.completion.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.pull-request-review.decision.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.pull-request-review.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.query-app-insights.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.query-fabric-dap-errors.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.query-fabric-dap-provisioning.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.query-fabric-dap-timeline.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.reject-suggestion-resolution.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.release-pypi.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.reply-to-pull-request-thread.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.resolve-merge-conflicts.cloud-agent.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.resolve-merge-conflicts.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.resolve-thread.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.run-e2e-tests-fabric.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.run-e2e-tests-synapse.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.run-wb-patch.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.set.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup-certs.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup-check.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup-copilot-cli.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup-gh-cli.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup-worktree-background.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.setup.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.show-checklist.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.show-other-incomplete-tasks.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.show.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.squash-commits.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.task-log.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.task-status.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.task-wait.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.tasks-clean.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.tasks.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.test-file.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.test-pattern.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.test-quick.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.test-workflow.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.test.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.update-checklist.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.update-jira-issue.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.update-jira-issue.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.update-pipeline.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.vpn-off.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.vpn-on.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.vpn-run.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.vpn-status.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.wait-for-run.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.checklist-creation.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.commit.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.completion.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.implementation-review.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.implementation.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.initiate.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.planning.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.pull-request.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.retrieve.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.setup.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/agdt.work-on-jira-issue.verification.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.analyze.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.checklist.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.clarify.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.constitution.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.implement.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.plan.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.specify.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.tasks.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/prompts/speckit.taskstoissues.prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/agent-fallback.js +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/check-analysis-gate-cli.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/check-analysis-gate.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/check-idempotency.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/copilot_generate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/create-spec-pr.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/enforce_budget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fix_markdown_deterministic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-dynamic-header.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-empty.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-formatting-variants.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-malformed-no-table.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-metrics-zero-but-table-critical.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-mixed-resolved-unresolved.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-no-criticals.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-remediated.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-strikethrough-no-resolved.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-with-criticals.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/analysis-report-with-resolved-criticals.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/content-preservation/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/content-preservation/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/long-line.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/missing-heading.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/fixtures/trailing-whitespace.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/lib/clarify-retry.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/lib/critical-gate-remediation.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/lib/retry.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/post-issue-comment.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/sanitize-branch-name.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/already-processed.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/completed.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/example-valid-spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/failed.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/spec-markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/specify-skeleton.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/templates/started.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_check_analysis_gate.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_clarify_retry.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_content_preservation.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_critical_gate_remediation.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_markdownlint_validation.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_sc004_regression.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_spec_validation.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/test_specify_retry.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/tests/test_agent_fallback.js +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/tests/test_retry_lib.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/validate-label.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/scripts/speckit-trigger/wrap_markdown_lines.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/test-fixtures/seen-events-sample.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/ai-pr-loop-dispatcher.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/ai-pr-loop-redispatch.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/ai-pr-loop-throttler.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/ai-pr-loop.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/apply-autofix-suggestions.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/audit-reap-stale.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/audit-review-feedback.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/copilot-setup-steps.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/post-merge-full-suite.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/pr-smart-module-tests.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/pr-targeted-checks.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/publish.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/release.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/scripts/check-release-exists.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/scripts/get-next-version.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/security-scan-on-merge.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/speckit-agent-fallback-cleanup.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/speckit-implement-trigger.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/speckit-packages.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/synthetic-copilot-review.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.github/workflows/workflow-tests.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.markdownlint-cli2.jsonc +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.push-trigger +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/SDD_QUICK_REFERENCE.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/config.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/analyze.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/checklist.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/clarify.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/constitution.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/implement.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/specify.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/commands/taskstoissues.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/extension.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/bash/check-prerequisites.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/bash/common.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/bash/create-new-feature.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/bash/setup-plan.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/bash/update-agent-context.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/powershell/check-prerequisites.ps1 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/powershell/common.ps1 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/powershell/create-new-feature.ps1 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/powershell/setup-plan.ps1 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/extensions/agdt-workflows/scripts/powershell/update-agent-context.ps1 +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/memory/constitution.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/memory/markdown-rules.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/preset.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/agent-file-template.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/checklist-template.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/plan-template.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/spec-template.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/tasks-template.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.specify/presets/agdt-templates/templates/vscode-settings.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/.work-folder-info +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/AUDIT-LOG.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/CHANGELOG.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/COMMIT_CONVENTION.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/CONTRIBUTING.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/LICENSE +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/PR_DESCRIPTION.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/PR_INSTRUCTIONS.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/PR_MERGE_INSTRUCTIONS_PYTHON.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/RELEASING.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/SECURITY_SCANNING.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/SOLUTION_SUMMARY.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/SPEC_DRIVEN_DEVELOPMENT.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/_bundled_skills/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/_bundled_skills/agents/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/_bundled_skills/prompts/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/_bundled_skills/workflow-analysis/SKILL.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/base.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/exceptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/github_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/jira_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/markdown_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/adapters/types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/agdt_gitignore.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/background_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/activity_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/analysis/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/analysis/context_resolver.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/analysis/external_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/analysis/identity_scanner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/apply_thread_autofix_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/instruction_resolver.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/labeling.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/on_pr_close.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/output_format.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/prepare.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/reap.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/audit/staleness.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure/app_insights_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure/auth.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_context/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_context/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_context/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_context/management.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/async_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/auth.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/consolidated_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/consolidated_scaffold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/classification.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/convergence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/identity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/orchestrator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/repair.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/reporting.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/finalization/verification.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/mark_reviewed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pipeline_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_accept.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_answers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_artifacts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_ducks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_filekey.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_ledger.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_manifest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_pipeline_lock.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_progress.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_refresh.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_submit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_submit_mapper.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_triage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_review_write.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pr_summary_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/pull_request_details_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_attribution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_jira.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_reviewer_models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_scaffold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/review_templates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/run_details_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/status_cascade.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/suggestion_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/suggestion_verification.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/azure_devops/vpn_toggle.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/cert_utils.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/__main__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/changed_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/lint.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/structure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/checks/tests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/actionable_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/ado_provider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/agent_assignment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/delete_review_comments_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/actions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/classifier.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/diff_heuristic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/lock.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/evaluator/snapshot.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/exceptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/guards.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/job_logs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/logging_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/apply_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/approve.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/dispatch_repair.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/guards.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/merge.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/publish.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/rebase.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/request_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/resolve_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/squash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/actions/takeover.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/base.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/deferral.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/browser_strategy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/graphql_strategy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/html_strategy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/orchestrator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/discovery/rest_strategy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/exceptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/exclusion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/gate_verdict.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/runner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/session_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/snapshot.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/pipeline/summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/context_mapper.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/engine.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/exceptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/reconciliation/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/engine.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/github_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/protocols.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/reply_formatter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/state_persistence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/automation_markers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/diff_heuristic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/outdated.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/sdk_evaluation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/swe_agent_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/resolution/tiers/thread_evaluated.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/scheduler.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/scheduler_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/speckit_trigger.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/tracker/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/tracker/merger.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/tracker/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/tracker/parser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/ci/tracker/renderer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/commit_type_resolution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/opt_in_mode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/project_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/pull_request_review_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/config/sync_back.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/copilot/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/copilot/auto_start.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/copilot/session.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/copilot/trust.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/agdt_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/async_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/commit_body.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/commit_intent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/commit_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/core.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/operations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/git/transparency.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/apply_thread_autofix.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/async_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/browser_apply_autofix.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/copilot_review_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/issue_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_approve.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_checks_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_create.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_merge.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_poll_ready.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/pr_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/repo_resolution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/request_copilot_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/rerun_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/resolve_review_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/review_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/state_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/github/user_credentials.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/hierarchy/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/hierarchy/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/hierarchy/helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/adf.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/async_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/async_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/comment_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/create_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/formatting.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/get_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/parse_error_report.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/role_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/state_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/update_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/jira/vpn_wrapper.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/network/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/network/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/network/detection.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/pr_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/release/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/release/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/release/helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/runner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/segments/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/segments/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/commit_template_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/copilot_cli_installer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/dependency_checker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/exit_codes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/expectations_validator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/gh_cli_installer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/gitignore_negations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/phases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/platform_detection.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/pr_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/report.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/atomic_write.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/complete_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/configured_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/constants.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/gitignore_updater.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/legacy_migration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/repo_specific.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/required_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/script_generators/root_entry_point.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/shell_profile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/templates/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/templates/review-pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/templates/work-on-issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/version_guard.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/setup/workflow_templates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/cross_ref.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/detect_parent_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/hierarchy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/hierarchy_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/constants.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/coverage_mapper.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/reporter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/spec_parser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/task_classifier.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_e2/validator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/classifier.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/constants.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/extractors/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/extractors/base.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/extractors/python_extractor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/intent_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/inventory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/matcher.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/reference_extractor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/pass_g/reporter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/validate_checklists.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/speckit/validate_frs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/subprocess_utils.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/tasks/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/tasks/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/testing.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/vpn/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/vpn/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/vpn/runner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/vscode_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/advancement.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/applied_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/base.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/manager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/preflight.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/cli/workflows/worktree_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/context/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/context/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/context/nodes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/context/retriever.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/context_budget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/dependencies.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/loader.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/normalizer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/ordering.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/epic_tree/validator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/file_locking.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/artifact_profiles.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/cascade.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/enforcement.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/github_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/jira_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/metadata_io.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/hierarchy/path_resolver.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/mcp/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/mcp/server.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/checkpointing.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/adr_validation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/context_factory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/decision_gate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/decision_policy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/event_edge_mapping.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/exceptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/idempotency.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/poc_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/protocols.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/run_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/trace_persistence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/tracing.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/execution/types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/graph_builder.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/base_provider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/call_logger.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/config_schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/cost_estimator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/examples/llm-providers.example.yml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/factory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/mock_provider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/provider_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/providers/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/providers/azure_openai.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/providers/local_model.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/providers/openai_direct.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/testing/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/testing/canonical_hash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/testing/deterministic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/testing/fixture_store.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/token_counter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/llm/usage_tracker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/node_factory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/pilot_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/review/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/review/nodes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/runner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/_confidence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/_enums.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/_export.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/_validation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/examples/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/examples/review_examples.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/examples/shared_examples.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/examples/work_examples.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/decision.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/finding.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/result.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/review/verdict.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/shared/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/shared/confidence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/shared/escalation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/shared/stop_condition.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/diagnosis.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/plan.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/quality.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/schemas/work_on_issue/summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/state_schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/audit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/builtins.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/decorators.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/definition.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/executor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/langchain_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/registry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/result.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/review_bindings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/orchestration/tools/validation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/apply-pull-request-review-suggestions/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/break-down-issue-into-subtasks/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/ci/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/ci/exhausted-comment.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/ci/merge-failed-comment.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/ci/ready-no-merge-comment.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/ci/timeout-comment.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/create-jira-epic/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/create-jira-issue/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/create-jira-subtask/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/default-thread-resolution-fallback-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/loader.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/optimize-issue-for-ai-agent/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pr-merge-orchestrator/default-init-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-completion-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-consolidate-and-submit-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-decision-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-delegate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/pull-request-review/default-pr-synthesis-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/update-jira-issue/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/update-jira-issue/default-make-updates-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-checklist-creation-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-commit-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-completion-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-implementation-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-implementation-review-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-initiate-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-planning-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-pull-request-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-retrieve-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-setup-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/prompts/work-on-jira-issue/default-verification-prompt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/schemas/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/schemas/epic-tree.schema.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/cleanup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/manager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/segments/reconciler.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/skill_injector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/submission_manager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/submission_processor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/task_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/tools/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/tools/azure_devops.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/tools/git.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/agentic_devtools/tools/jira.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/01-introduction-and-goals.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/02-architecture-constraints.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/03-system-context.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/04-solution-strategy.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/05-building-blocks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/06-runtime-view.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/07-deployment-view.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/08-cross-cutting-concepts.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/09-architecture-decisions.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/10-quality-requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/11-risks-and-technical-debt.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/12-glossary.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/analysis/001-orchestration-framework-evaluation.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-001-state-management-single-json-file.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-002-parameterless-command-pattern.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-003-background-task-execution.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-004-multi-worktree-support.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-005-workflow-state-machine-pattern.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-006-mermaid-diagrams.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-007-argparse-cli.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-008-pyproject-toml.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-009-dynamic-versioning-git-tags.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-010-azure-devops-primary.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-011-test-coverage-requirement.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-012-cross-platform-file-locking.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-013-orchestration-framework-selection.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/architecture-decisions/ADR-014-autonomous-execution-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/audit-batch-output-format.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/copilot-commands.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/mcp-server.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/orchestration/workflow-event-mapping.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/setup-expectations/agdt-setup.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/speckit-migration-inventory.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/state-keys.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-apply-pr-suggestions-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-break-down-issue-into-subtasks-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-create-jira-epic-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-create-jira-issue-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-create-jira-subtask-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-optimize-issue-for-ai-agent-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-pull-request-review-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-update-jira-issue-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-expectations/agdt-initiate-work-on-jira-issue-workflow.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/docs/workflow-prompts.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/check-pr-test-coverage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/check-pr-test-coverage.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/check_no_interrupt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/run-pr-checks.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/scaffold_tests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/targeted-checks.sh +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/validate_event_mapping.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/validate_setup_expectations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/validate_test_structure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/scripts/verify-agent-coverage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/setup-dev-tools.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/setup-repo-specific-dev-tools.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-add-workflow-step-agents/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-add-workflow-step-agents/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-add-workflow-step-agents/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-add-workflow-step-agents/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-pypi-wheel-release/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-pypi-wheel-release/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-pypi-wheel-release/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-pypi-wheel-release/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-separate-docs/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-separate-docs/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-separate-docs/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-separate-docs/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-workflow-step-skills/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/001-workflow-step-skills/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/002-github-action-speckit-trigger/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/002-github-action-speckit-trigger/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/002-github-action-speckit-trigger/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/002-github-action-speckit-trigger/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/002-github-action-speckit-trigger/workflow-sequence-diagram.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/003-comprehensive-e2e-smoke-tests/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/003-comprehensive-e2e-smoke-tests/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/003-e2e-smoke-tests-cli/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/005-resolve-test-suite-warnings/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/005-resolve-test-suite-warnings/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/005-resolve-test-suite-warnings/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/005-resolve-test-suite-warnings/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/005-resolve-test-suite-warnings/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/checklists/checklist.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1175-plan-phase-fails-large/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1176-use-issue-number-speckit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1176-use-issue-number-speckit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1176-use-issue-number-speckit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1176-use-issue-number-speckit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1176-use-issue-number-speckit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1179-enhance-agdt-analyze-workflow/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1179-enhance-agdt-analyze-workflow/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1179-enhance-agdt-analyze-workflow/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1179-enhance-agdt-analyze-workflow/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1179-enhance-agdt-analyze-workflow/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/checklists/checklist.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1180-split-state-directory-during/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1191-speckit-pipeline-markdownlint-validation/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1191-speckit-pipeline-markdownlint-validation/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1191-speckit-pipeline-markdownlint-validation/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1191-speckit-pipeline-markdownlint-validation/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1191-speckit-pipeline-markdownlint-validation/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1193-speckit-pipeline-enforce-line/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1193-speckit-pipeline-enforce-line/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1193-speckit-pipeline-enforce-line/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1193-speckit-pipeline-enforce-line/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1193-speckit-pipeline-enforce-line/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1194-speckit-prompts-require-language/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/checklists/checklist.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1195-speckit-clarification-step-overwrites/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1196-speckit-pipeline-auto-request/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1197-speckit-pipeline-gate-creation/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1198-speckit-prompts-require-phase/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1199-speckit-pipeline-validate-all/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1200-speckit-prompts-use-anchor/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1201-speckit-pipeline-task-deduplication/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/fixtures/sc-001/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/fixtures/sc-001/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1202-speckit-pipeline-validate-each/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1203-speckit-pipeline-validate-checklist/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1204-speckit-pipeline-cross-reference/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1215-fix-remove-invalid-yes/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1258-use-pat-copilot-review/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1270-finalize-review-workflow-automatic/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1283-update-workflow-use-github/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1300-bug-agdt-copilot-auto/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1322-restructure-setup-dev-tools/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1324-pin-agentic-devtools-version/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1326-improve-error-handling-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1359-loop-automated-agentic-handling/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1364-fix-speckit-label-operations/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1391-fix-request-copilot-review/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1393-blocker-workflow-approval-required/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1400-extract-workflow-logic-yaml/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1408-migrate-native-spec-kit/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1428-implement-langchain-based-pull/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1430-langchain-based-work-issue/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1432-standardize-copilot-review-response/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1435-second-pat-agdt-approver/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1444-monorepo-spec-kit-strategy/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1444-monorepo-spec-kit-strategy/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1444-monorepo-spec-kit-strategy/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1444-monorepo-spec-kit-strategy/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1486-post-agent-copilot-review/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1503-improve-copilot-review-finalization/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1505-structural-validation-and-retry/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1509-spec-loop-complete-state/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1515-agdt-setup-generates-corrupted/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1517-shared-review-threads-across/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1518-thread-title-formatting-subsequent/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1519-auto-push-force-lease/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1523-review-all-files-every/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1525-parallel-safe-state-isolated/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1527-consolidate-speckit-issue-trigger/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1559-refactor-loop-into-idempotent/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1566-loop-requests-review-before/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1568-copilot-session-detection-false-positives/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1569-remove-active-session-precondition/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1571-improve-speckit-generation-resilience/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1575-copilot-agent-fallback-speckit/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1577-logs-not-visible-loop/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1580-update-constitution-align-new/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1587-feature-webhook-event-driven/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1594-feature-abstract-title-body/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1617-loop-review-request-logic/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1620-runner-not-detect-human/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1642-robust-multi-tiered-thread/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1643-remove-active-session-gate/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1653-dispatch-repair-suppressed-copilot/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1657-update-internal-contribution-docs/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1659-rfc-replace-agent-session/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1740-initiate-create-jira-issue/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1741-create-jira-issue-workflow/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1746-fix-stale-prompt-file/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1749-auto-apply-code-review/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1750-regression-loop-resolution-comment/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1754-adopt-pip-replacement-faster/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1755-upgrade-github-copilot-sdk/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1756-remove-deps-installs-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1759-bug-automatic-assignment-issues/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1767-rename-workflow-files-clarity/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1768-handle-proper-rebasing-loop/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1769-epic-implement-phase-issue/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1770-feature-provider-adapter-framework/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1771-subtask-fix-github-adapter/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1772-subtask-extend-issuedetail-typeddict/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1773-subtask-normalizedissue-model-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1775-subtask-implement-normalize-jiraadapter → agentic_devtools-0.2.267/specs/1774-subtask-implement-normalize-githubissuesadapter}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1775-subtask-implement-normalize-jiraadapter → agentic_devtools-0.2.267/specs/1774-subtask-implement-normalize-githubissuesadapter}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1775-subtask-implement-normalize-jiraadapter → agentic_devtools-0.2.267/specs/1774-subtask-implement-normalize-githubissuesadapter}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1776-subtask-implement-normalize-markdownadapter → agentic_devtools-0.2.267/specs/1775-subtask-implement-normalize-jiraadapter}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1776-subtask-implement-normalize-markdownadapter → agentic_devtools-0.2.267/specs/1775-subtask-implement-normalize-jiraadapter}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1776-subtask-implement-normalize-markdownadapter → agentic_devtools-0.2.267/specs/1775-subtask-implement-normalize-jiraadapter}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1777-subtask-issue-types-and → agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1777-subtask-issue-types-and → agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1777-subtask-issue-types-and → agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1833-issue-type-config-project → agentic_devtools-0.2.267/specs/1776-subtask-implement-normalize-markdownadapter}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1782-feature-agdt-setup-enhancements → agentic_devtools-0.2.267/specs/1777-subtask-issue-types-and}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1782-feature-agdt-setup-enhancements → agentic_devtools-0.2.267/specs/1777-subtask-issue-types-and}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1782-feature-agdt-setup-enhancements → agentic_devtools-0.2.267/specs/1777-subtask-issue-types-and}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1777-subtask-issue-types-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1795-feature-project-json-configuration → agentic_devtools-0.2.267/specs/1778-subtask-implement-schema-discovery}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1795-feature-project-json-configuration → agentic_devtools-0.2.267/specs/1778-subtask-implement-schema-discovery}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1795-feature-project-json-configuration → agentic_devtools-0.2.267/specs/1778-subtask-implement-schema-discovery}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1796-subtask-phase-configuration-section → agentic_devtools-0.2.267/specs/1782-feature-agdt-setup-enhancements}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1796-subtask-phase-configuration-section → agentic_devtools-0.2.267/specs/1782-feature-agdt-setup-enhancements}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1796-subtask-phase-configuration-section → agentic_devtools-0.2.267/specs/1782-feature-agdt-setup-enhancements}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1782-feature-agdt-setup-enhancements/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1828-pull-request-body-template → agentic_devtools-0.2.267/specs/1795-feature-project-json-configuration}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1828-pull-request-body-template → agentic_devtools-0.2.267/specs/1795-feature-project-json-configuration}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1828-pull-request-body-template → agentic_devtools-0.2.267/specs/1795-feature-project-json-configuration}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1795-feature-project-json-configuration/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1829-jinja2-commit-message-template → agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1829-jinja2-commit-message-template → agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1829-jinja2-commit-message-template → agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1860-parent-first-enforcement-speckit → agentic_devtools-0.2.267/specs/1796-subtask-phase-configuration-section}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1830-split-create-amend-commit → agentic_devtools-0.2.267/specs/1828-pull-request-body-template}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1830-split-create-amend-commit → agentic_devtools-0.2.267/specs/1828-pull-request-body-template}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1830-split-create-amend-commit → agentic_devtools-0.2.267/specs/1828-pull-request-body-template}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1828-pull-request-body-template/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1831-dedicated-commit-body-commit → agentic_devtools-0.2.267/specs/1829-jinja2-commit-message-template}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1831-dedicated-commit-body-commit → agentic_devtools-0.2.267/specs/1829-jinja2-commit-message-template}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1831-dedicated-commit-body-commit → agentic_devtools-0.2.267/specs/1829-jinja2-commit-message-template}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1829-jinja2-commit-message-template/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1832-persist-commit-params-and → agentic_devtools-0.2.267/specs/1830-split-create-amend-commit}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1832-persist-commit-params-and → agentic_devtools-0.2.267/specs/1830-split-create-amend-commit}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1832-persist-commit-params-and → agentic_devtools-0.2.267/specs/1830-split-create-amend-commit}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1830-split-create-amend-commit/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1833-issue-type-config-project → agentic_devtools-0.2.267/specs/1831-dedicated-commit-body-commit}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1833-issue-type-config-project → agentic_devtools-0.2.267/specs/1831-dedicated-commit-body-commit}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1833-issue-type-config-project → agentic_devtools-0.2.267/specs/1831-dedicated-commit-body-commit}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1831-dedicated-commit-body-commit/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1853-hierarchical-spec-management → agentic_devtools-0.2.267/specs/1832-persist-commit-params-and}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1853-hierarchical-spec-management → agentic_devtools-0.2.267/specs/1832-persist-commit-params-and}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1853-hierarchical-spec-management → agentic_devtools-0.2.267/specs/1832-persist-commit-params-and}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1832-persist-commit-params-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1854-spec-nesting-infrastructure → agentic_devtools-0.2.267/specs/1833-issue-type-config-project}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1854-spec-nesting-infrastructure → agentic_devtools-0.2.267/specs/1833-issue-type-config-project}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1854-spec-nesting-infrastructure → agentic_devtools-0.2.267/specs/1833-issue-type-config-project}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1857-implement-jira-hierarchy-detector → agentic_devtools-0.2.267/specs/1833-issue-type-config-project}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1833-issue-type-config-project/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1835-decouple-squash-review/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1835-decouple-squash-review/spec.md +0 -0
- {agentic_devtools-0.2.265/specs/1855-define-hierarchy-yml-schema → agentic_devtools-0.2.267/specs/1853-hierarchical-spec-management}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1855-define-hierarchy-yml-schema → agentic_devtools-0.2.267/specs/1853-hierarchical-spec-management}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1855-define-hierarchy-yml-schema → agentic_devtools-0.2.267/specs/1853-hierarchical-spec-management}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1853-hierarchical-spec-management/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1856-implement-github-sub-issues → agentic_devtools-0.2.267/specs/1854-spec-nesting-infrastructure}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1856-implement-github-sub-issues → agentic_devtools-0.2.267/specs/1854-spec-nesting-infrastructure}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1856-implement-github-sub-issues → agentic_devtools-0.2.267/specs/1854-spec-nesting-infrastructure}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1854-spec-nesting-infrastructure/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1857-implement-jira-hierarchy-detector → agentic_devtools-0.2.267/specs/1855-define-hierarchy-yml-schema}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1857-implement-jira-hierarchy-detector → agentic_devtools-0.2.267/specs/1855-define-hierarchy-yml-schema}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1857-implement-jira-hierarchy-detector → agentic_devtools-0.2.267/specs/1855-define-hierarchy-yml-schema}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1855-define-hierarchy-yml-schema/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1858-update-create-new-feature → agentic_devtools-0.2.267/specs/1856-implement-github-sub-issues}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1858-update-create-new-feature → agentic_devtools-0.2.267/specs/1856-implement-github-sub-issues}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1858-update-create-new-feature → agentic_devtools-0.2.267/specs/1856-implement-github-sub-issues}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1856-implement-github-sub-issues/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1859-implement-level-aware-artifact → agentic_devtools-0.2.267/specs/1857-implement-jira-hierarchy-detector}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1859-implement-level-aware-artifact → agentic_devtools-0.2.267/specs/1857-implement-jira-hierarchy-detector}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1859-implement-level-aware-artifact → agentic_devtools-0.2.267/specs/1857-implement-jira-hierarchy-detector}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1914-bug-agdt-advance-workflow → agentic_devtools-0.2.267/specs/1857-implement-jira-hierarchy-detector}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1857-implement-jira-hierarchy-detector/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1860-parent-first-enforcement-speckit → agentic_devtools-0.2.267/specs/1858-update-create-new-feature}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1860-parent-first-enforcement-speckit → agentic_devtools-0.2.267/specs/1858-update-create-new-feature}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1860-parent-first-enforcement-speckit → agentic_devtools-0.2.267/specs/1858-update-create-new-feature}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1858-update-create-new-feature/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1862-ordering-determinism-via-hierarchy → agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1862-ordering-determinism-via-hierarchy → agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1859-implement-level-aware-artifact/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1862-ordering-determinism-via-hierarchy → agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2029-agent-batch-audit-reviews → agentic_devtools-0.2.267/specs/1859-implement-level-aware-artifact}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1859-implement-level-aware-artifact/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1859-implement-level-aware-artifact/spec.md +0 -0
- {agentic_devtools-0.2.265/specs/1875-fully-autonomous-langchain-workflow → agentic_devtools-0.2.267/specs/1860-parent-first-enforcement-speckit}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1875-fully-autonomous-langchain-workflow → agentic_devtools-0.2.267/specs/1860-parent-first-enforcement-speckit}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1875-fully-autonomous-langchain-workflow → agentic_devtools-0.2.267/specs/1860-parent-first-enforcement-speckit}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1879-implement-tool-binding-layer → agentic_devtools-0.2.267/specs/1860-parent-first-enforcement-speckit}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1860-parent-first-enforcement-speckit/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1876-langchain-orchestration-foundation → agentic_devtools-0.2.267/specs/1862-ordering-determinism-via-hierarchy}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1876-langchain-orchestration-foundation → agentic_devtools-0.2.267/specs/1862-ordering-determinism-via-hierarchy}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1876-langchain-orchestration-foundation → agentic_devtools-0.2.267/specs/1862-ordering-determinism-via-hierarchy}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1862-ordering-determinism-via-hierarchy/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1877-define-autonomous-execution-model → agentic_devtools-0.2.267/specs/1875-fully-autonomous-langchain-workflow}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1877-define-autonomous-execution-model → agentic_devtools-0.2.267/specs/1875-fully-autonomous-langchain-workflow}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1877-define-autonomous-execution-model → agentic_devtools-0.2.267/specs/1875-fully-autonomous-langchain-workflow}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1875-fully-autonomous-langchain-workflow/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1878-implement-llm-provider-and → agentic_devtools-0.2.267/specs/1876-langchain-orchestration-foundation}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1878-implement-llm-provider-and → agentic_devtools-0.2.267/specs/1876-langchain-orchestration-foundation}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1878-implement-llm-provider-and → agentic_devtools-0.2.267/specs/1876-langchain-orchestration-foundation}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1876-langchain-orchestration-foundation/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1879-implement-tool-binding-layer → agentic_devtools-0.2.267/specs/1877-define-autonomous-execution-model}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1879-implement-tool-binding-layer → agentic_devtools-0.2.267/specs/1877-define-autonomous-execution-model}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1879-implement-tool-binding-layer → agentic_devtools-0.2.267/specs/1877-define-autonomous-execution-model}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1877-define-autonomous-execution-model/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1880-implement-structured-llm-output → agentic_devtools-0.2.267/specs/1878-implement-llm-provider-and}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1880-implement-structured-llm-output → agentic_devtools-0.2.267/specs/1878-implement-llm-provider-and}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1880-implement-structured-llm-output → agentic_devtools-0.2.267/specs/1878-implement-llm-provider-and}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1878-implement-llm-provider-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1881-implement-execution-safety-policy → agentic_devtools-0.2.267/specs/1879-implement-tool-binding-layer}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1881-implement-execution-safety-policy → agentic_devtools-0.2.267/specs/1879-implement-tool-binding-layer}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1881-implement-execution-safety-policy → agentic_devtools-0.2.267/specs/1879-implement-tool-binding-layer}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2068-apply-suggestions-misses-committable → agentic_devtools-0.2.267/specs/1879-implement-tool-binding-layer}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1879-implement-tool-binding-layer/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1882-implement-autonomous-decision-policy → agentic_devtools-0.2.267/specs/1880-implement-structured-llm-output}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1882-implement-autonomous-decision-policy → agentic_devtools-0.2.267/specs/1880-implement-structured-llm-output}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1882-implement-autonomous-decision-policy → agentic_devtools-0.2.267/specs/1880-implement-structured-llm-output}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1880-implement-structured-llm-output/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1885-map-event-driven-workflow → agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1885-map-event-driven-workflow → agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1885-map-event-driven-workflow → agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2102-implement-pydantic-models-and → agentic_devtools-0.2.267/specs/1881-implement-execution-safety-policy}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1912-bug-duplicate-copilot-sessions → agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1912-bug-duplicate-copilot-sessions → agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1912-bug-duplicate-copilot-sessions → agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2031-document-structured-preparation-abstraction → agentic_devtools-0.2.267/specs/1882-implement-autonomous-decision-policy}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1913-bug-review-workflow-state → agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/1913-bug-review-workflow-state → agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1913-bug-review-workflow-state → agentic_devtools-0.2.267/specs/1884-implement-minimal-observability-langgraph}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1914-bug-agdt-advance-workflow → agentic_devtools-0.2.267/specs/1885-map-event-driven-workflow}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1914-bug-agdt-advance-workflow → agentic_devtools-0.2.267/specs/1885-map-event-driven-workflow}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1914-bug-agdt-advance-workflow → agentic_devtools-0.2.267/specs/1885-map-event-driven-workflow}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1885-map-event-driven-workflow/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1915-review-scaffolding-403-cross → agentic_devtools-0.2.267/specs/1912-bug-duplicate-copilot-sessions}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1915-review-scaffolding-403-cross → agentic_devtools-0.2.267/specs/1912-bug-duplicate-copilot-sessions}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1915-review-scaffolding-403-cross → agentic_devtools-0.2.267/specs/1912-bug-duplicate-copilot-sessions}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1912-bug-duplicate-copilot-sessions/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1916-loop-handle-commit-needed → agentic_devtools-0.2.267/specs/1913-bug-review-workflow-state}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1916-loop-handle-commit-needed → agentic_devtools-0.2.267/specs/1913-bug-review-workflow-state}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1916-loop-handle-commit-needed → agentic_devtools-0.2.267/specs/1913-bug-review-workflow-state}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1913-bug-review-workflow-state/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/1938-implement-reusable-provider-abstracted → agentic_devtools-0.2.267/specs/1914-bug-agdt-advance-workflow}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/1938-implement-reusable-provider-abstracted → agentic_devtools-0.2.267/specs/1914-bug-agdt-advance-workflow}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/1938-implement-reusable-provider-abstracted → agentic_devtools-0.2.267/specs/1914-bug-agdt-advance-workflow}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/1915-review-scaffolding-403-cross → agentic_devtools-0.2.267/specs/1914-bug-agdt-advance-workflow}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1914-bug-agdt-advance-workflow/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2029-agent-batch-audit-reviews → agentic_devtools-0.2.267/specs/1915-review-scaffolding-403-cross}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2029-agent-batch-audit-reviews → agentic_devtools-0.2.267/specs/1915-review-scaffolding-403-cross}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2029-agent-batch-audit-reviews → agentic_devtools-0.2.267/specs/1915-review-scaffolding-403-cross}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1915-review-scaffolding-403-cross/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2031-document-structured-preparation-abstraction → agentic_devtools-0.2.267/specs/1916-loop-handle-commit-needed}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2031-document-structured-preparation-abstraction → agentic_devtools-0.2.267/specs/1916-loop-handle-commit-needed}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2031-document-structured-preparation-abstraction → agentic_devtools-0.2.267/specs/1916-loop-handle-commit-needed}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1916-loop-handle-commit-needed/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2033-feat-round-robin-scheduling → agentic_devtools-0.2.267/specs/1938-implement-reusable-provider-abstracted}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2033-feat-round-robin-scheduling → agentic_devtools-0.2.267/specs/1938-implement-reusable-provider-abstracted}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2033-feat-round-robin-scheduling → agentic_devtools-0.2.267/specs/1938-implement-reusable-provider-abstracted}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/1938-implement-reusable-provider-abstracted/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2068-apply-suggestions-misses-committable → agentic_devtools-0.2.267/specs/2029-agent-batch-audit-reviews}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2068-apply-suggestions-misses-committable → agentic_devtools-0.2.267/specs/2029-agent-batch-audit-reviews}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2068-apply-suggestions-misses-committable → agentic_devtools-0.2.267/specs/2029-agent-batch-audit-reviews}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2029-agent-batch-audit-reviews/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2099-standardize-and-automate-epic → agentic_devtools-0.2.267/specs/2031-document-structured-preparation-abstraction}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2099-standardize-and-automate-epic → agentic_devtools-0.2.267/specs/2031-document-structured-preparation-abstraction}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2099-standardize-and-automate-epic → agentic_devtools-0.2.267/specs/2031-document-structured-preparation-abstraction}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2100-epic-tree-schema-validation → agentic_devtools-0.2.267/specs/2031-document-structured-preparation-abstraction}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2031-document-structured-preparation-abstraction/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2100-epic-tree-schema-validation → agentic_devtools-0.2.267/specs/2033-feat-round-robin-scheduling}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2100-epic-tree-schema-validation → agentic_devtools-0.2.267/specs/2033-feat-round-robin-scheduling}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2100-epic-tree-schema-validation → agentic_devtools-0.2.267/specs/2033-feat-round-robin-scheduling}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2033-feat-round-robin-scheduling/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2101-define-epic-tree-json → agentic_devtools-0.2.267/specs/2068-apply-suggestions-misses-committable}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2101-define-epic-tree-json → agentic_devtools-0.2.267/specs/2068-apply-suggestions-misses-committable}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2101-define-epic-tree-json → agentic_devtools-0.2.267/specs/2068-apply-suggestions-misses-committable}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2301-feature-context-aware-conditional → agentic_devtools-0.2.267/specs/2068-apply-suggestions-misses-committable}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2068-apply-suggestions-misses-committable/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2102-implement-pydantic-models-and → agentic_devtools-0.2.267/specs/2099-standardize-and-automate-epic}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2102-implement-pydantic-models-and → agentic_devtools-0.2.267/specs/2099-standardize-and-automate-epic}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2102-implement-pydantic-models-and → agentic_devtools-0.2.267/specs/2099-standardize-and-automate-epic}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2099-standardize-and-automate-epic/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2104-resolve-execution-order-default → agentic_devtools-0.2.267/specs/2100-epic-tree-schema-validation}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2104-resolve-execution-order-default → agentic_devtools-0.2.267/specs/2100-epic-tree-schema-validation}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2104-resolve-execution-order-default → agentic_devtools-0.2.267/specs/2100-epic-tree-schema-validation}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2313-feature-one-command-agdt → agentic_devtools-0.2.267/specs/2100-epic-tree-schema-validation}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2100-epic-tree-schema-validation/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2292-epic-agdt-setup-autonomous → agentic_devtools-0.2.267/specs/2101-define-epic-tree-json}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2292-epic-agdt-setup-autonomous → agentic_devtools-0.2.267/specs/2101-define-epic-tree-json}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2292-epic-agdt-setup-autonomous → agentic_devtools-0.2.267/specs/2101-define-epic-tree-json}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/data-model.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/quickstart.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2101-define-epic-tree-json/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2293-feature-autonomous-agdt-run → agentic_devtools-0.2.267/specs/2102-implement-pydantic-models-and}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/analysis-report.md +0 -0
- {agentic_devtools-0.2.265/specs/2293-feature-autonomous-agdt-run → agentic_devtools-0.2.267/specs/2102-implement-pydantic-models-and}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/checklists/requirements.md +0 -0
- {agentic_devtools-0.2.265/specs/2293-feature-autonomous-agdt-run → agentic_devtools-0.2.267/specs/2102-implement-pydantic-models-and}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2326-subtask-adopt-backing-jira → agentic_devtools-0.2.267/specs/2102-implement-pydantic-models-and}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2102-implement-pydantic-models-and/test-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2301-feature-context-aware-conditional → agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/2301-feature-context-aware-conditional → agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2301-feature-context-aware-conditional → agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2319-feature-setup-robustness-conditional → agentic_devtools-0.2.267/specs/2103-auto-derive-epic-feature}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2307-feature-setup-observability-substrate → agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/2307-feature-setup-observability-substrate → agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2307-feature-setup-observability-substrate → agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2307-feature-setup-observability-substrate → agentic_devtools-0.2.267/specs/2104-resolve-execution-order-default}/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265/specs/2313-feature-one-command-agdt → agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/2313-feature-one-command-agdt → agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2313-feature-one-command-agdt → agentic_devtools-0.2.267/specs/2105-resolve-and-validate-blocking}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2319-feature-setup-robustness-conditional → agentic_devtools-0.2.267/specs/2106-load-config-driven-validation}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/2319-feature-setup-robustness-conditional → agentic_devtools-0.2.267/specs/2106-load-config-driven-validation}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2319-feature-setup-robustness-conditional → agentic_devtools-0.2.267/specs/2106-load-config-driven-validation}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2326-subtask-adopt-backing-jira → agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github}/.markdownlint.json +0 -0
- {agentic_devtools-0.2.265/specs/2326-subtask-adopt-backing-jira → agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github}/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265/specs/2326-subtask-adopt-backing-jira → agentic_devtools-0.2.267/specs/2108-provider-adapter-layer-github}/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/__init__.py → /agentic_devtools-0.2.267/specs/2292-epic-agdt-setup-autonomous/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/__init__.py → /agentic_devtools-0.2.267/specs/2292-epic-agdt-setup-autonomous/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2292-epic-agdt-setup-autonomous/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/__init__/__init__.py → /agentic_devtools-0.2.267/specs/2293-feature-autonomous-agdt-run/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/base/__init__.py → /agentic_devtools-0.2.267/specs/2293-feature-autonomous-agdt-run/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/fr-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2293-feature-autonomous-agdt-run/test-coverage.json +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/exceptions/__init__.py → /agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/github_adapter/__init__.py → /agentic_devtools-0.2.267/specs/2294-subtask-output-sanitizer-setup/contracts/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/jira_adapter/__init__.py → /agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/markdown_adapter/__init__.py → /agentic_devtools-0.2.267/specs/2295-subtask-deterministic-error-signature/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/adapters/types/__init__.py → /agentic_devtools-0.2.267/specs/2301-feature-context-aware-conditional/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/agdt_gitignore/__init__.py → /agentic_devtools-0.2.267/specs/2301-feature-context-aware-conditional/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2301-feature-context-aware-conditional/test-coverage.json +0 -0
- /agentic_devtools-0.2.265/tests/unit/background_tasks/__init__.py → /agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/__init__.py → /agentic_devtools-0.2.267/specs/2302-subtask-classification-reader-pure/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/activity_log/__init__.py → /agentic_devtools-0.2.267/specs/2307-feature-setup-observability-substrate/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/analysis/__init__.py → /agentic_devtools-0.2.267/specs/2307-feature-setup-observability-substrate/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2307-feature-setup-observability-substrate/test-coverage.json +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/analysis/context_resolver/__init__.py → /agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/analysis/external_context/__init__.py → /agentic_devtools-0.2.267/specs/2308-subtask-setup-exit-code/contracts/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/analysis/identity_scanner/__init__.py → /agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/apply_thread_autofix_suggestions/__init__.py → /agentic_devtools-0.2.267/specs/2309-subtask-collector-atomic-write/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/__init__.py → /agentic_devtools-0.2.267/specs/2313-feature-one-command-agdt/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/apply/__init__.py → /agentic_devtools-0.2.267/specs/2313-feature-one-command-agdt/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2313-feature-one-command-agdt/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/commands/__init__.py → /agentic_devtools-0.2.267/specs/2319-feature-setup-robustness-conditional/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/config/__init__.py → /agentic_devtools-0.2.267/specs/2319-feature-setup-robustness-conditional/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/research.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2319-feature-setup-robustness-conditional/test-coverage.json +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/instruction_resolver/__init__.py → /agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/checklists/.gitkeep +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/labeling/__init__.py → /agentic_devtools-0.2.267/specs/2320-subtask-conditional-npm-cert/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/analysis-report.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/models/__init__.py → /agentic_devtools-0.2.267/specs/2326-subtask-adopt-backing-jira/checklists/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/checklists/requirements.md +0 -0
- /agentic_devtools-0.2.265/tests/unit/cli/audit/on_pr_close/__init__.py → /agentic_devtools-0.2.267/specs/2326-subtask-adopt-backing-jira/contracts/.gitkeep +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/plan.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/spec.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/tasks.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/2326-subtask-adopt-backing-jira/test-coverage.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/specs/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_context/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_context/test_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_context/test_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_context/test_management.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_auth.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_commands_api.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_commands_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_pipeline_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_pr_summary_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_pull_request_details_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_review_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_run_details_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/azure_devops/test_vpn_toggle.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/cli/test_azure_app_insights_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/cli/test_azure_auth.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/cli/test_azure_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/fixtures/cassettes/azure_devops_create_pr.yaml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/fixtures/cassettes/jira_add_comment.yaml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/fixtures/cassettes/jira_get_issue.yaml +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/test_azure_devops_commands_e2e.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/test_git_commands_e2e.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/test_jira_commands_e2e.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/e2e_smoke/test_speckit_packages_e2e.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/README.md +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/golden_issues_labeled.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/golden_pull_request.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/golden_pull_request_review.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/golden_workflow_run.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/issue_comment_created.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/issues_labeled.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/pull_request_opened.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/pull_request_review_submitted.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/pull_request_synchronize.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/ci_events/workflow_run_completed.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/duplicate-refs.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/empty-arrays.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/future-version.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/invalid-blocks-type.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/missing-ref-feature.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/missing-schema-version.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/subtask-with-nested-subtasks.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/unknown-property-subtask.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/fixtures/epic-tree/valid-epic.json +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/network/test_detection.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/network/test_network_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_check_no_interrupt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_core.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_operations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_git_utilities.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_no_scripts_temp_references.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_release_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_release_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_release_integration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_scaffold_tests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_validate_event_mapping.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_validate_test_structure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/test_version.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/audit/output_format → agentic_devtools-0.2.267/tests/unit}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/audit/reap → agentic_devtools-0.2.267/tests/unit/adapters/__init__}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/__init__/test__build_github_adapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/__init__/test_get_adapter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/audit/prepare → agentic_devtools-0.2.267/tests/unit/adapters}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/audit/staleness → agentic_devtools-0.2.267/tests/unit/adapters/base}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/base/test_issueadapter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/base/test_issuedetail.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure → agentic_devtools-0.2.267/tests/unit/adapters/exceptions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/exceptions/test_adaptererror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/exceptions/test_adaptervalidationerror.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure/app_insights_commands → agentic_devtools-0.2.267/tests/unit/adapters/github_adapter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/github_adapter/test_githubissuesadapter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure/auth → agentic_devtools-0.2.267/tests/unit/adapters/jira_adapter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/jira_adapter/test_jiraadapter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure/config → agentic_devtools-0.2.267/tests/unit/adapters/markdown_adapter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/markdown_adapter/test_markdownadapter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_context → agentic_devtools-0.2.267/tests/unit/adapters/types}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/types/test_issuedetailwithraw.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/types/test_issuetypeinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/types/test_normalizedissue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/adapters/types/test_propertyschema.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_context/commands → agentic_devtools-0.2.267/tests/unit/agdt_gitignore}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/agdt_gitignore/test_ensure_agdt_gitignore.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_context/config → agentic_devtools-0.2.267/tests/unit/background_tasks}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_cleanup_old_logs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_create_log_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_get_task_log_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_run_function_in_background.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_run_in_background.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/background_tasks/test_wait_for_task.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_context/management → agentic_devtools-0.2.267/tests/unit/cli}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops → agentic_devtools-0.2.267/tests/unit/cli/activity_log}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_activity_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_activity_log_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_get_activity_log_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_load_activity_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_load_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/activity_log/test_save_activity_log.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/async_commands → agentic_devtools-0.2.267/tests/unit/cli/analysis}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/auth → agentic_devtools-0.2.267/tests/unit/cli/analysis/context_resolver}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/context_resolver/test_list_worktree_state_dirs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/context_resolver/test_resolve_analysis_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/context_resolver/test_resolve_analysis_context_edge_cases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/context_resolver/test_resolve_analysis_context_errors.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/commands → agentic_devtools-0.2.267/tests/unit/cli/analysis/external_context}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/external_context/test__discover_worktrees.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/external_context/test__read_log_excerpt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/external_context/test_build_external_context_field.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/external_context/test_collect_external_context.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/config → agentic_devtools-0.2.267/tests/unit/cli/analysis/identity_scanner}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/identity_scanner/test_format_evidence_prefix.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/identity_scanner/test_list_identity_directories.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/identity_scanner/test_scan_identity_logs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/identity_scanner/test_scan_identity_logs_determinism.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/analysis/identity_scanner/test_scan_identity_logs_performance.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/consolidated_review → agentic_devtools-0.2.267/tests/unit/cli/apply_thread_autofix_suggestions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/apply_thread_autofix_suggestions/test_apply_azure_devops.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/apply_thread_autofix_suggestions/test_apply_github.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/apply_thread_autofix_suggestions/test_apply_github_browser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/apply_thread_autofix_suggestions/test_apply_pr_autofix_suggestions_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/apply_thread_autofix_suggestions/test_detect_platform.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/consolidated_scaffold → agentic_devtools-0.2.267/tests/unit/cli/audit}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization → agentic_devtools-0.2.267/tests/unit/cli/audit/apply}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/apply/test_apply_result_is_failure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/apply/test_render_apply_summary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/classification → agentic_devtools-0.2.267/tests/unit/cli/audit/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/commands/test_audit_dispatch_evaluation_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/commands/test_audit_prepare_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/commands/test_audit_reap_stale_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/convergence → agentic_devtools-0.2.267/tests/unit/cli/audit/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/config/test_batch_branch_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/config/test_resolve_batch_size.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/dispatch/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/identity → agentic_devtools-0.2.267/tests/unit/cli/audit/instruction_resolver}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/instruction_resolver/test_resolve_instruction_files.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/models → agentic_devtools-0.2.267/tests/unit/cli/audit/labeling}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/labeling/test_finalize_batch_labels.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/orchestrator → agentic_devtools-0.2.267/tests/unit/cli/audit/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/models/test_models.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/repair → agentic_devtools-0.2.267/tests/unit/cli/audit/on_pr_close}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/on_pr_close/test_on_pr_close.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/on_pr_close/test_on_pr_close_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/reporting → agentic_devtools-0.2.267/tests/unit/cli/audit/output_format}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/output_format/test_assign_category.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/output_format/test_choose_fence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/output_format/test_write_batch_output.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/finalization/verification → agentic_devtools-0.2.267/tests/unit/cli/audit/prepare}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/prepare/test__collect_pr_data.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/prepare/test_prepare_audit_batch.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/helpers → agentic_devtools-0.2.267/tests/unit/cli/audit/reap}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/reap/test_reap_stale_in_progress.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/mark_reviewed → agentic_devtools-0.2.267/tests/unit/cli/audit/staleness}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/audit/staleness/test_check_file_exists_at_head.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/marker → agentic_devtools-0.2.267/tests/unit/cli/audit/takeover}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pipeline_commands → agentic_devtools-0.2.267/tests/unit/cli/azure}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_accept → agentic_devtools-0.2.267/tests/unit/cli/azure/app_insights_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_app_insights.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_app_insights_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_errors_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_provisioning.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_provisioning_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_timeline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/app_insights_commands/test_query_fabric_dap_timeline_async.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_answers → agentic_devtools-0.2.267/tests/unit/cli/azure/auth}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_detect_account_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_ensure_azure_account.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_get_current_azure_account.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_is_aza_account.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_switch_azure_account.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/auth/test_verify_azure_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_artifacts → agentic_devtools-0.2.267/tests/unit/cli/azure/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/config/test_get_account_for_environment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure/config/test_get_app_insights_config.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_ducks → agentic_devtools-0.2.267/tests/unit/cli/azure_context}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_filekey → agentic_devtools-0.2.267/tests/unit/cli/azure_context/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/commands/test_azure_context_current_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/commands/test_azure_context_ensure_login_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/commands/test_azure_context_status_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/commands/test_azure_context_use_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_ledger → agentic_devtools-0.2.267/tests/unit/cli/azure_context/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/config/test_get_context_config.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_manifest → agentic_devtools-0.2.267/tests/unit/cli/azure_context/management}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_check_login_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_ensure_logged_in.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_get_context_env.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_get_current_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_run_with_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_show_all_contexts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_context/management/test_switch_context.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_pipeline_lock → agentic_devtools-0.2.267/tests/unit/cli/azure_devops}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_progress → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/async_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test__require_int_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_add_pull_request_comment_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_add_pull_request_comment_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_approve_pull_request_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_approve_pull_request_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_checkout_and_sync_branch_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_confirm_suggestion_addressed_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_create_pipeline_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_create_pull_request_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_create_pull_request_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_generate_review_prompts_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_get_pipeline_id_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_get_pull_request_details_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_get_pull_request_threads_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_get_pull_request_threads_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_get_run_details_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_list_pipelines_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_lookup_jira_issue_from_pr_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_lookup_pr_from_jira_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_mark_pull_request_draft_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_publish_pull_request_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_reject_suggestion_resolution_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_reply_to_pull_request_thread_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_reply_to_pull_request_thread_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_resolve_thread_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_resolve_thread_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_run_e2e_tests_fabric_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_run_e2e_tests_synapse_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_run_wb_patch_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_setup_pull_request_review_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_update_pipeline_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/async_commands/test_wait_for_run_async.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_refresh → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/auth}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/auth/test_get_auth_headers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/auth/test_get_pat.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_submit → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test__escape_for_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test__extract_issue_key_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_add_pull_request_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_approve_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_create_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_get_pull_request_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_mark_pull_request_draft.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_parse_bool_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_publish_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_reply_to_pull_request_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_require_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_resolve_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/commands/test_update_review_narrative.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_submit_mapper → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/config/test__parse_azure_devops_context_from_remote_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/config/test_azure_devops_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/config/test_constants.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/config/test_get_azure_devops_context_from_git_remote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/config/test_get_repository_name_from_git_remote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/conftest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_triage → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/consolidated_review}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test__normalized_severity_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test__render_file_block.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test__severity_counts_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test__split_into_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_build_consolidated_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_build_continuation_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_build_model_reply_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_extract_commit_hash_from_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_extract_continuation_seq_from_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_is_consolidated_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_is_continuation_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_render_consolidated_review_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_review/test_render_model_review_reply.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_review_write → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/consolidated_scaffold}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_coerce_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_find_consolidated_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_find_continuation_comment_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_reconcile_continuations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_sync_commit_registry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/consolidated_scaffold/test_upsert_consolidated_comment.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pr_summary_commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/pull_request_details_commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/classification}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/classification/test__extract_first_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/classification/test__get_author_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/classification/test__process_thread_first_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/classification/test__scan_activity_log_replies.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/classification/test_classify_eligible_comments.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_attribution → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/convergence}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test__compute_activity_log_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test__compute_file_summary_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test__compute_overall_summary_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test_check_convergence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test_compute_expected_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/convergence/test_normalize_for_comparison.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/identity}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/identity/test_identity_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/identity/test_resolve_pat_identity.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_helpers → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/models/test_comment_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/models/test_finalizationreport.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_jira → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/orchestrator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test__build_report.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test__check_timeout.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test__collect_all_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test__count_eligible.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test__fetch_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/orchestrator/test_run_finalization_pass.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_reviewer_models → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/repair}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test__cascade_overall_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test__complete_activity_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test__patch_file_thread_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test__targeted_repair_activity_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test_batch_repair_pass.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/repair/test_targeted_repair.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_scaffold → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/reporting}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/reporting/test_build_finalization_report.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_state → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/finalization/verification}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/verification/test__collect_all_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/verification/test__fetch_comment_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/finalization/verification/test_verify_convergence.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/review_templates → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test__get_repository_id_via_rest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_build_pr_base_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_build_thread_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_convert_to_pull_request_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_cross_identity_forbidden_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_find_jira_issue_from_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_find_pr_from_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_find_pull_request_by_issue_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_get_pull_request_changed_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_get_pull_request_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_get_pull_request_source_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_get_repository_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_parse_bool_from_state_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_parse_json_response.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_patch_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_patch_thread_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_post_pr_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_print_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_require_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_require_requests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_resolve_review_artifact_dir_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_resolve_thread_by_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/helpers/test_verify_az_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/run_details_commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/mark_reviewed}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_cachedreviewercontext.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_fetch_reviewer_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_connection_data.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_existing_viewed_state_tokens.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_graph_api_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_iteration_change_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_organization_account_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_project_id_via_api.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_get_reviewer_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_mark_file_reviewed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_normalize_repo_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_resolve_storage_key_via_graph.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_set_batch_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_sync_viewed_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/mark_reviewed/test_update_reviewer_entry.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/status_cascade → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/marker}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test__get_first_comment_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_build_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_classify_agdt_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_filter_agdt_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_has_agdt_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_parse_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/marker/test_strip_marker_line.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/suggestion_commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pipeline_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_create_pipeline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_get_pipeline_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_list_pipelines.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_run_e2e_tests_fabric.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_run_e2e_tests_synapse.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_run_wb_patch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pipeline_commands/test_update_pipeline.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/suggestion_verification → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_accept}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_accept/test__resolve_pull_request_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_accept/test_accept_answer_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/azure_devops/vpn_toggle → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_answers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_answers/test_build_answer_skeleton.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_answers/test_compute_prompt_hash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_answers/test_derive_attempt_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_answers/test_scaffold_answer_files.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/cert_utils → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_artifacts}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_artifacts/test__generate_v2_review_artifacts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_artifacts/test_generate_v2_review_artifacts.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_ducks}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ducks/test_build_critique_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ducks/test_resolve_ducks_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/__main__ → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_filekey}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_filekey/test_build_file_key.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/changed_files → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_ledger}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_append_ledger_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_build_ledger_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_latest_accepted_by_file_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_ledger_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_read_ledger_entries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_resolve_answers_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_ledger/test_summarize_accepted.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_manifest}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_build_manifest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_build_manifest_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_derive_clusters.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_derive_review_mode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_extract_commit_hash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_load_queue_entries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_normalize_change_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_purpose_hint.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_render_pr_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_resolve_pr_context_budget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_resolve_repo_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_manifest/test_risk_flag.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/lint → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_pipeline_lock}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_pipeline_lock/test_pipeline_lock.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_pipeline_lock/test_pipeline_lock_path.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/structure → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_progress}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_progress/test_compute_review_progress.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_progress/test_count_in_scope_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_progress/test_ledger_reviewed_count.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_progress/test_resolve_manifest_path.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/checks/tests → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_refresh}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_refresh/test_overlay_ledger_onto_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_refresh/test_refresh_comment_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_refresh/test_refresh_core.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_refresh/test_should_refresh.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_submit}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test__build_submission_manager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test__finalize_consolidated_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test__load_scaffold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test__run_submissions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test_build_submit_result.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test_classify_accepted_answers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test_pr_review_submit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test_pr_review_submit_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit/test_write_submit_result.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/actionable_checks → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_submit_mapper}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit_mapper/test_map_answer_to_submission_item.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit_mapper/test_map_suggestion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit_mapper/test_mappererror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_submit_mapper/test_transform_replacement_code.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/ado_provider → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_triage}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_triage/test_apply_cost_caps.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_triage/test_classify_file_depth.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_triage/test_load_triage_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_triage/test_triage_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_triage/test_triage_manifest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/commands → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_review_write}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_check_answer_freshness.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_check_answer_scope.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_file_review_write_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_validate_answer_schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_validate_answer_write.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_validate_line_anchoring.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_validate_reviewer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_validate_suggestion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_review_write/test_write_answer_atomic.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/delete_review_comments_command → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pr_summary_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_summary_commands/test_generate_overarching_pr_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pr_summary_commands/test_generate_overarching_pr_comments_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/pull_request_details_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_change_tracking_id_for_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_current_user_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_iteration_change_tracking_map.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_iteration_changes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_pull_request_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_pull_request_iterations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_pull_request_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_reviewer_payload.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_get_viewed_files_via_contribution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_invoke_ado_rest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/pull_request_details_commands/test_invoke_ado_rest_post.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/actions → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_attribution}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_build_commit_file_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_build_commit_folder_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_build_commit_pr_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_format_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_get_model_family.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_get_model_icon.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_render_attribution_line.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_attribution/test_should_use_emoji.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/classifier → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test__detect_unchanged_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test__normalize_path_for_comparison.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test__persist_processing_paths_to_review_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test__write_unchanged_file_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_build_reviewed_paths_set.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_checkout_and_sync_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_checkout_and_sync_branch_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_convert_to_prompt_filename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_extract_jira_issue_key_from_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_fetch_and_display_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_fetch_pull_request_basic_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_filter_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_generate_review_prompts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_generate_review_prompts_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_get_jira_issue_key_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_get_linked_pull_request_from_jira.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_get_pull_request_id_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_get_root_folder.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_get_threads_for_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_normalize_repo_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_print_review_instructions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_scaffold_threads_for_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_setup_pull_request_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_commands/test_write_file_prompt.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/command → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_build_full_file_content_section.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_build_reviewed_paths_set.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_convert_to_prompt_filename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_extract_jira_issue_key_from_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_filter_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_get_agdt_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_get_language_from_extension.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_get_root_folder.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_get_threads_for_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_is_binary_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_normalize_repo_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_helpers/test_resolve_repository_root.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/diff_heuristic → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_jira}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test__get_jira_ssl_verify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_display_jira_issue_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_extract_linked_pr_from_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_extract_pr_id_from_development_panel.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_fetch_and_display_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_fetch_development_panel_prs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_fetch_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_get_jira_credentials.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_get_linked_pull_request_from_jira.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_jira/test_get_pr_from_development_panel.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/lock → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_reviewer_models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_reviewer_models/test_agentpicks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_reviewer_models/test_model_family.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_reviewer_models/test_resolve_rubber_duck_models.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/models → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_scaffold}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__append_path_to_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__archive_commit_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__build_pr_base_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__build_rereview_skip_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__check_session_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__create_session.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__demote_main_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__format_activity_log_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__fresh_scaffold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__get_file_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__get_folder_for_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__get_thread_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__incremental_rescaffold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__mark_stale_sessions_failed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__patch_comment_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__post_activity_log_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__post_or_update_model_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__post_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__print_dry_run_plan.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__reset_files_for_rereview.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__resolve_commit_thread_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__resolve_scaffold_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__try_recover_state_from_pr_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__update_activity_log_comment_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test__validate_with_git_diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test_detect_file_changes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test_filechangeresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test_patch_content_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test_scaffold_idempotency_scenarios.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_scaffold/test_scaffold_review_threads.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/evaluator/snapshot → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_state}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test__atomic_write_json.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test__get_lock_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_add_suggestion_to_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_can_inherit_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_clear_suggestions_for_re_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_commitcomment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_compute_aggregate_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_determine_processing_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_fileentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_fileentry_cross_identity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_folderentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_foldergroup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_get_file_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_get_folder_entry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_get_review_state_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_is_valid_prior_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_load_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_load_review_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_locking_behavior.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_modelcommentref.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_normalize_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_overallsummary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_processing_path_inherited.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_processing_path_reviewed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_processing_path_reviewed_no_prior.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_read_modify_write_review_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_reviewsession.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_reviewstate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_reviewstatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_save_review_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_skippedfile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_suggestionentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_sync_review_state_from_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_update_file_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_state/test_validate_and_deserialize.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/exceptions → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/review_templates}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_build_discussion_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_render_file_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_render_overall_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_repair_subsequent_header.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_rewrite_header_for_subsequent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/review_templates/test_validate_comment_header.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/github_provider → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/run_details_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_fetch_build_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_fetch_build_timeline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_fetch_failed_job_logs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_fetch_pipeline_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_fetch_task_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_get_failed_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_get_run_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_get_run_details_impl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_is_run_finished.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_print_failed_logs_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_print_parameters.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_print_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_save_json.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_save_log_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_wait_for_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/run_details_commands/test_wait_for_run_impl.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/guards → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/status_cascade}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test__record_cross_identity_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_cascade_isolation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_cascade_overall_summary_update.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_cascade_status_update.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_derive_overall_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_execute_cascade.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/status_cascade/test_patch_operation.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/job_logs → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/suggestion_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_commands/test_confirm_suggestion_addressed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_commands/test_reject_suggestion_resolution.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/logging_config → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/suggestion_verification}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_categorize_all_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_fetch_threads_lookup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_has_unaddressed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_partition_results.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_render_abort_summary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_render_unaddressed_thread_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_suggestionverificationresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/suggestion_verification/test_verify_previous_suggestions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/models → agentic_devtools-0.2.267/tests/unit/cli/azure_devops/vpn_toggle}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_check_network_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_connect_vpn.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_disconnect_vpn.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_ensure_jira_vpn_access.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_get_corporate_network_test_host.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_get_vpn_hostnames.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_get_vpn_url_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_is_on_corporate_network.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_is_pulse_secure_installed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_is_vpn_connected.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_jira_vpn_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_reconnect_vpn.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_run_pulse_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_smart_connect_vpn.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_off_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_off_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_on_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_on_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_status_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_status_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/azure_devops/vpn_toggle/test_vpn_toggle_context.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/patch_handler → agentic_devtools-0.2.267/tests/unit/cli/cert_utils}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test__print_ssl_error_help.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_count_certificates_in_pem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_ensure_ca_bundle.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_ensure_ca_bundle_force.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_fetch_certificate_chain_openssl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_fetch_certificate_chain_ssl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_get_ssl_verify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_normalize_pem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_normalize_pem_block.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/cert_utils/test_ssl_request_with_retry.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline → agentic_devtools-0.2.267/tests/unit/cli/checks}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions → agentic_devtools-0.2.267/tests/unit/cli/checks/__main__}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/__main__/test_main.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/apply_suggestions → agentic_devtools-0.2.267/tests/unit/cli/checks/changed_files}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/changed_files/test_get_changed_files.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/approve → agentic_devtools-0.2.267/tests/unit/cli/checks/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/commands/test__condense_output.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/commands/test__run_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/commands/test_check_setup_expectations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/commands/test_main.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/dispatch_repair → agentic_devtools-0.2.267/tests/unit/cli/checks/lint}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/lint/test_format_check_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/lint/test_format_fix_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/lint/test_lint_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/lint/test_mypy_check_files.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/guards → agentic_devtools-0.2.267/tests/unit/cli/checks/structure}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/structure/test_validate_test_structure.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/merge → agentic_devtools-0.2.267/tests/unit/cli/checks/tests}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/tests/test_run_changed_tests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/tests/test_run_coverage_check.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/checks/tests/test_run_one_coverage.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/publish → agentic_devtools-0.2.267/tests/unit/cli/ci}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/rebase → agentic_devtools-0.2.267/tests/unit/cli/ci/actionable_checks}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/actionable_checks/test_actionable_checks.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/request_review → agentic_devtools-0.2.267/tests/unit/cli/ci/ado_provider}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/ado_provider/test__author_matches.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/ado_provider/test__first_line.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/ado_provider/test__select_deletion_targets.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/ado_provider/test_azuredevopsprovider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/ado_provider/test_delete_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/agent_assignment/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/agent_assignment/test_assign_issue_to_agent.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/resolve_threads → agentic_devtools-0.2.267/tests/unit/cli/ci/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_ai_pr_loop_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_ai_pr_loop_command_missing_dep.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_assign_implementation_agent_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_ci_paths_golden_smoke.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_feature_flag.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/commands/test_speckit_trigger_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/actions/squash → agentic_devtools-0.2.267/tests/unit/cli/ci/delete_review_comments_command}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/delete_review_comments_command/test__build_provider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/delete_review_comments_command/test__print_result.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/delete_review_comments_command/test__resolve_ado_coordinates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/delete_review_comments_command/test_delete_review_comments_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/base → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/command → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/actions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_agentic_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_dispatch_action.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_no_action.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_resolve_evaluated_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_synthesize_sentinel.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_trigger_re_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/actions/test_verify_and_resolve.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/deferral → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/classifier}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/classifier/test_classify_post_agent_state.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/command}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/command/test_evaluate_post_agent_state_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/browser_strategy → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/diff_heuristic}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/diff_heuristic/test_check_lines_modified.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/graphql_strategy → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/lock}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/lock/test__get_writer_token.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/lock/test_acquire_lock.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/lock/test_check_lock_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/lock/test_release_lock.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/html_strategy → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_commentinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_evaluationresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_postagentaction.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_postagentclassification.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_postagentsnapshot.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/models/test_threadinfo.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/models → agentic_devtools-0.2.267/tests/unit/cli/ci/evaluator/snapshot}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/snapshot/test__get_latest_agent_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/snapshot/test__get_review_thread_statuses.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/snapshot/test__has_evaluator_sentinel_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/evaluator/snapshot/test_build_snapshot.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/orchestrator → agentic_devtools-0.2.267/tests/unit/cli/ci/exceptions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/exceptions/test_malformedeventerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/exceptions/test_providerratelimiterror.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/discovery/rest_strategy → agentic_devtools-0.2.267/tests/unit/cli/ci/github_provider}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__build_comment_verification_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__build_head_commit_line.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__build_repair_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__build_squash_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__build_verification_context_diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__clean_sdk_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__deduplicate_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__enforce_comment_size_limit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__extract_existing_pr_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__extract_github_key_from_subjects.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__fence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__fetch_outdated_by_comment_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__generate_commit_message_via_sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__has_existing_addressed_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__is_sdk_footer_line.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__list_abandoned_reply_parent_comment_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__list_addressed_reply_parent_comment_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__list_unresolve_reply_parent_comment_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__parse_paginated_json.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__parse_suppressed_from_review_body.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__read_repo_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__render_squash_message_from_sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__repo_api.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_conflicted_file_content_via_sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_issue_key_adapter_aware.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_issue_key_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_issue_type_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_rebase_conflicts_via_sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__resolve_repair_skills.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__strip_trailing_sdk_footer_lines.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__verify_comment_via_sdk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test__verify_comments_fr003_guard.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_add_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_approve_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_claim_pr_for_audit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_compute_diff_hash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_count_commits_behind.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_count_prs_without_labels.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_count_unresolved_review_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_create_audit_tracking_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_create_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_delete_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_dispatch_audit_evaluation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_dispatch_conflict_repair.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_finalize_post_repair.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_finalize_post_repair_reply_format.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_find_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_check_annotations.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_commit_author_login.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_commit_range_diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_label_applied_at.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_pr_diff.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_pr_metadata.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_get_ref_sha.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_gh_api.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_graphql.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_all_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_check_runs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_closed_prs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_issue_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_pr_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_pr_issue_events.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_prs_with_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_review_thread_states.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_reviews.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_list_workflow_runs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_merge_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_parse_event.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_parse_event_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_post_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_publish_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_rebase_onto_base.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_reclaim_copilot_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_remove_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_request_reviewer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_rerun_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_retry_integration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_scheduler_methods.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_squash_before_publish.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/github_provider/test_update_comment.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/exceptions → agentic_devtools-0.2.267/tests/unit/cli/ci/guards}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test__parse_iso8601_timestamp_guard.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_build_conflict_repair_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_cycle_limit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_deduplication.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_docker_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_edit_relevance.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_exclusion_labels.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_fork_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_check_privileged_paths.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_get_dedup_writer_token.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_is_duplicate_trigger.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_repair_satisfied_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_should_dispatch_conflict_repair.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/guards/test_squash_wait_marker.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/exclusion → agentic_devtools-0.2.267/tests/unit/cli/ci/job_logs}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_condense_job_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_extract_job_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_fetch_condensed_job_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_fetch_failed_check_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_fetch_job_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_fetch_run_event.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/job_logs/test_parse_failed_step_logs.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/gate_verdict → agentic_devtools-0.2.267/tests/unit/cli/ci/logging_config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/logging_config/test_is_github_actions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/logging_config/test_log_group.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/logging_config/test_setup_logging.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline → agentic_devtools-0.2.267/tests/unit/cli/ci}/models/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_checkrunstatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_commentresolution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_copilot_reviewer_login.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_eventpayload.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_failedcheckcontext.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_failedsteplog.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_finalizationresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_prmetadata.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_repairdecision.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_reviewcommentdeletionresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_reviewcommentinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_reviewcommenttarget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_reviewinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/models/test_verificationverdict.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/runner → agentic_devtools-0.2.267/tests/unit/cli/ci/patch_handler}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/session_detector → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/snapshot → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/suggestions → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/apply_suggestions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/apply_suggestions/test__post_summary_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/apply_suggestions/test_applysuggestionsaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/pipeline/summary → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/approve}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/approve/test_approveaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/provider → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/dispatch_repair}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/dispatch_repair/test_dispatchrepairaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/guards}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/guards/test_guardsaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/command → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/merge}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/merge/test_mergeaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/config → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/publish}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/publish/test_publishaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/context_mapper → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/rebase}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/rebase/test_rebaseaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/engine → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/request_review}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/request_review/test_requestreviewaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/exceptions → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/resolve_threads}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/resolve_threads/test_resolvethreadsaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/reconciliation/models → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/actions/squash}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/squash/test_squashaction.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/takeover/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/actions/takeover/test_takeovercopilotcommitaction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/base}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/base/test_action.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/engine → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/command}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/command/test__determine_exit_code.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/command/test_run_ai_pr_loop_v2.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/github_adapter → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/deferral}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/deferral/test_post_deferral_marker.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/models → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/protocols → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/browser_strategy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/browser_strategy/test_browser_discover.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/reply_formatter → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/graphql_strategy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/graphql_strategy/test_graphql_discover.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/state_persistence → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/html_strategy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/html_strategy/test_html_discover.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/models/test_discoveryattempt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/models/test_discoveryoutcome.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/automation_markers → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/orchestrator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/orchestrator/test_browser_tier_enabled.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/orchestrator/test_run_discovery.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/orchestrator/test_should_retry.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/diff_heuristic → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/discovery/rest_strategy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/discovery/rest_strategy/test_rest_discover.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/outdated → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/exceptions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/exceptions/test_pipeline_exceptions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/sdk_evaluation → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/exclusion}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/exclusion/test_exclusioncontext.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/swe_agent_reply → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/gate_verdict}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/gate_verdict/test_evaluate_copilot_gate_verdict.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/resolution/tiers/thread_evaluated → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/models/test_actiondecision.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/models/test_actionresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/models/test_pipelinerunsummary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/retry → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/runner}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/runner/test_run_pipeline.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/scheduler → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/session_detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/session_detector/test_is_copilot_session_active.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/session_detector/test_is_copilot_session_active_via_agent_task.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/scheduler_command → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/snapshot}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/snapshot/test_build_pr_state_snapshot.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/snapshot/test_count_commits_behind.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/snapshot/test_derivedstate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/snapshot/test_prstatesnapshot.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/speckit_trigger → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/suggestions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/suggestions/test_apply_suggestions_batch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/suggestions/test_apply_suggestions_with_bisection.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/suggestions/test_applysuggestionsresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/suggestions/test_fetch_applicable_suggestions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/tracker → agentic_devtools-0.2.267/tests/unit/cli/ci/pipeline/summary}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/summary/test_collapse_prior_summaries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/pipeline/summary/test_render_summary_comment.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/tracker/merger → agentic_devtools-0.2.267/tests/unit/cli/ci/provider}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/provider/test_ciplatformprovider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/provider/test_ciplatformprovider_integration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/provider/test_list_eligible_prs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/provider/test_scheduler_methods.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/tracker/models → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/tracker/parser → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/command}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/command/test_list_workflow_runs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/command/test_reconcile_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/command/test_rerun_workflow.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/ci/tracker/renderer → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/config/test_max_run_attempts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/config/test_reconciliation_window_hours.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/context_mapper}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/context_mapper/test_map_run_context.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config/commit_type_resolution → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/engine}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/engine/test_reconcile.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config/opt_in_mode → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/exceptions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/exceptions/test_unmappablecontexterror.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config/project_config → agentic_devtools-0.2.267/tests/unit/cli/ci/reconciliation/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/models/test_reconciliationresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/models/test_runeventcontext.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/reconciliation/models/test_workflowrun.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config/pull_request_review_config → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/config/sync_back → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/engine}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/engine/test_tieredresolutionengine.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/copilot → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/github_adapter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/github_adapter/test_githubthreadadapter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/copilot/auto_start → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/models/test_resolutionreply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/models/test_resolutionverdict.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/models/test_threadresolutionstate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/models/test_tierresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/copilot/session → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/protocols}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/protocols/test_evaluationtier.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/protocols/test_resolutioncontext.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/protocols/test_reviewthread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/protocols/test_threadcomment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/protocols/test_threadresolver.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/copilot/trust → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/reply_formatter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/reply_formatter/test_replyformatter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/state_persistence}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test__thread_id_to_filename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_clear_resolution_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_increment_iteration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_is_tentative_expired.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_load_resolution_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_mark_abandoned.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/state_persistence/test_save_resolution_state.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/agdt_branch → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/async_commands → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/automation_markers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/automation_markers/test_automationmarkertier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/commands → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/diff_heuristic}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/diff_heuristic/test_diffheuristictier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/commit_intent → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/outdated}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/outdated/test_outdatedtier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/commit_template → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/sdk_evaluation}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/sdk_evaluation/test__parse_sdk_response.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/sdk_evaluation/test_sdkevaluationtier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/core → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/swe_agent_reply}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/swe_agent_reply/test_sweagentreplytier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/diff → agentic_devtools-0.2.267/tests/unit/cli/ci/resolution/tiers/thread_evaluated}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/resolution/tiers/thread_evaluated/test_threadevaluatedtier.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/operations → agentic_devtools-0.2.267/tests/unit/cli/ci/retry}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/retry/test_retry_with_backoff.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/git/transparency → agentic_devtools-0.2.267/tests/unit/cli/ci/scheduler}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_dispatchevent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_eligiblepr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_filter_eligible_prs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_resolve_batch_size.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_resolve_cursor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_resolve_pool_size.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_run_scheduler.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_schedulerresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler/test_select_next_batch.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github → agentic_devtools-0.2.267/tests/unit/cli/ci/scheduler_command}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/scheduler_command/test_ai_pr_loop_scheduler_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/apply_thread_autofix → agentic_devtools-0.2.267/tests/unit/cli/ci/speckit_trigger}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/speckit_trigger/test_speckit_trigger_deprecation.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/async_commands → agentic_devtools-0.2.267/tests/unit/cli/ci/tracker}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/browser_apply_autofix → agentic_devtools-0.2.267/tests/unit/cli/ci/tracker/merger}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/merger/test_determine_new_sessions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/merger/test_is_review_completion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/merger/test_merge_sessions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/copilot_review_status → agentic_devtools-0.2.267/tests/unit/cli/ci/tracker/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/models/test_detectionsource.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/models/test_trackedsession.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/models/test_trackercomment.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/issue_commands → agentic_devtools-0.2.267/tests/unit/cli/ci/tracker/parser}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/parser/test_parse_render_roundtrip.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/parser/test_parse_tracker_comment.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_approve → agentic_devtools-0.2.267/tests/unit/cli/ci/tracker/renderer}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/renderer/test_render_tracker_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/ci/tracker/renderer/test_truncate_sessions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_checks_status → agentic_devtools-0.2.267/tests/unit/cli/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_create → agentic_devtools-0.2.267/tests/unit/cli/config/commit_type_resolution}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test__escape_single_quote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test_read_available_commit_types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test_read_default_commit_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test_resolve_commit_issue_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test_standard_commit_types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/commit_type_resolution/test_validate_commit_issue_type.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_merge → agentic_devtools-0.2.267/tests/unit/cli/config/opt_in_mode}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/opt_in_mode/test_config_mode_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/opt_in_mode/test_get_config_mode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/opt_in_mode/test_invalid_config_mode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/opt_in_mode/test_validate_config_mode.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_poll_ready → agentic_devtools-0.2.267/tests/unit/cli/config/project_config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test__get_config_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_get_available_models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_get_effective_project_config_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_get_project_config_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_load_effective_project_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_load_project_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_save_project_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/project_config/test_sync_eligible_keys.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/pr_state → agentic_devtools-0.2.267/tests/unit/cli/config/pull_request_review_config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/pull_request_review_config/test_load_pull_request_review_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/pull_request_review_config/test_pullrequestreviewconfig.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/pull_request_review_config/test_rubberduckconfig.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/pull_request_review_config/test_triageconfig.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/repo_resolution → agentic_devtools-0.2.267/tests/unit/cli/config/sync_back}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/sync_back/test_sync_back.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/sync_back/test_sync_back_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/config/sync_back/test_validate_cross_field.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/request_copilot_review → agentic_devtools-0.2.267/tests/unit/cli/copilot}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/rerun_checks → agentic_devtools-0.2.267/tests/unit/cli/copilot/auto_start}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__is_retryable_win_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__is_run_triggered.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__mark_run_triggered.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__read_model_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__run_copilot_with_retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test__unmark_run_triggered.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test_copilot_auto_start_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/auto_start/test_retry_autostart_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/resolve_review_threads → agentic_devtools-0.2.267/tests/unit/cli/copilot/session}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__build_copilot_args.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__check_session_mutex.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__emit_log_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__get_copilot_binary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__get_jsonl_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test__is_process_alive.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test_build_copilot_args.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test_copilotsessionresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test_get_default_copilot_model.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test_is_gh_copilot_available.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/session/test_start_copilot_session.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/review_reply → agentic_devtools-0.2.267/tests/unit/cli/copilot/trust}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__in_test_environment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__is_already_trusted.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__is_ancestor_or_equal.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__normalize_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__path_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__split_jsonc_header.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test__verify_trusted.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test_ensure_trusted_folder.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test_get_copilot_config_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test_is_auto_trust_enabled.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/copilot/trust/test_seed_worktree_trust.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/github/state_helpers → agentic_devtools-0.2.267/tests/unit/cli/git}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/hierarchy → agentic_devtools-0.2.267/tests/unit/cli/git/agdt_branch}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__branch_exists_locally.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__branch_exists_remotely.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__discover_workflow_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__fetch_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__get_parent_sha.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__get_repo_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__has_matching_run_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__read_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__read_tree_for_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__reset_dirty.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test__run_plumbing.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_build_tree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_create_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_gitplumbingerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_hash_object.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_is_dirty.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_load_workflow_artifacts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_mark_dirty.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_persist_if_dirty.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_persist_workflow_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_persistresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_push_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_read_blob.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_read_branch_tree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_resolve_worktree_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/agdt_branch/test_update_ref.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/hierarchy/commands → agentic_devtools-0.2.267/tests/unit/cli/git/async_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/_helpers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_amend_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_commit_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_force_push_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_publish_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_push_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/async_commands/test_stage_async.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/hierarchy/helpers → agentic_devtools-0.2.267/tests/unit/cli/git/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__extract_commit_parts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__get_issue_key_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__mark_checklist_items_completed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__persist_effective_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__sync_with_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test__trigger_implementation_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_amend_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_commit_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_force_push_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_publish_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_push_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commands/test_stage_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_assemble_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_extract_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_get_commit_body_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_parse_frontmatter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_read_commit_body.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_body/test_show_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira → agentic_devtools-0.2.267/tests/unit/cli/git/commit_intent}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_intent/test__remove_leading_title_stanza.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_intent/test_commitintent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_intent/test_resolve_commit_intent.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/adf → agentic_devtools-0.2.267/tests/unit/cli/git/commit_template}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__build_render_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__derive_issue_link_from_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__discover_git_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__get_missing_required_variables.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__load_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__resolve_commit_body.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__resolve_commit_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__resolve_issue_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__resolve_issue_link.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__resolve_issue_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test__warn_unresolved_variables.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/commit_template/test_resolve_commit_message_from_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/conftest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/async_commands → agentic_devtools-0.2.267/tests/unit/cli/git/core}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/core/test_get_bool_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/core/test_get_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/core/test_get_current_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/core/test_run_git.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/core/test_temp_message_file.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/async_status → agentic_devtools-0.2.267/tests/unit/cli/git/diff}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test__is_diff_file_header.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_addedline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_addedlinesinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_diffentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_difflinesinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_get_added_lines_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_get_diff_entries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_get_diff_lines_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_get_diff_patch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_get_removed_lines_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_normalize_ref_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_removedline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_removedlinesinfo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/diff/test_sync_git_ref.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/comment_commands → agentic_devtools-0.2.267/tests/unit/cli/git/operations}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_amend_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_branch_has_commits_ahead_of_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_branchsafetycheckresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_check_branch_safe_to_recreate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_checkout_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_checkoutresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_create_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_delete_local_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_fetch_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_fetch_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_force_push.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_get_commits_behind_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_get_files_changed_on_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_get_last_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_get_short_commit_hash.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_has_local_changes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_last_commit_contains_issue_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_local_branch_matches_origin.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_publish_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_push.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_rebase_onto_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_rebaseresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_rename_local_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_reset_branch_to_origin.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_should_amend_instead_of_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/operations/test_stage_changes.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/config → agentic_devtools-0.2.267/tests/unit/cli/git/remote_push}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/create_commands → agentic_devtools-0.2.267/tests/unit/cli/git/transparency}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/transparency/test_print_commit_title_change.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/git/transparency/test_print_resolved_commit_message.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/formatting → agentic_devtools-0.2.267/tests/unit/cli/github}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/get_commands → agentic_devtools-0.2.267/tests/unit/cli/github/apply_thread_autofix}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_apply_diff_to_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_apply_pr_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_apply_single_hunk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_extract_nested.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_fetch_all_page_html.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_fetch_suggestions_from_page.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_get_file_content_and_sha.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_get_gh_token.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_get_hunk_range.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_get_pr_head_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_get_pr_head_sha.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_post_reply_to_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_ranges_overlap.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_reply_and_resolve_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_resolve_thread_for_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_split_into_hunks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/apply_thread_autofix/test_update_file_via_api.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/helpers → agentic_devtools-0.2.267/tests/unit/cli/github/async_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_bug_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_bug_issue_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_documentation_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_documentation_issue_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_feature_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_feature_issue_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_issue_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_task_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/async_commands/test_create_agdt_task_issue_async_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/parse_error_report → agentic_devtools-0.2.267/tests/unit/cli/github/browser_apply_autofix}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_apply_pr_suggestions_via_browser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_authenticated_page.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_browserautofixunavailable.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_browsercredentialerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_browsercredentials.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_click_if_present.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_commit_last_suggestion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_count_browser_autofix_candidates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_count_commit_suggestion_buttons.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_default_credentials_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_drain_commit_rescan.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_fetch_pr_head_sha.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_generate_totp.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_github_enterprise_slug.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_idp_domain.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_load_credentials.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_perform_idp_login.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_pr_conversation_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_require_pyotp.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_require_sync_playwright.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_resolve_secret.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_resolve_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/browser_apply_autofix/test_wait_for_settle.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/role_commands → agentic_devtools-0.2.267/tests/unit/cli/github/copilot_review_status}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test__classify_review_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test__count_inline_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test__count_suppressed_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test__fetch_reviews_for_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test__select_latest_copilot_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test_copilot_review_status_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/copilot_review_status/test_get_copilot_review_status.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/sdk → agentic_devtools-0.2.267/tests/unit/cli/github/issue_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__append_related_issues.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__append_terminal_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__build_gh_create_args.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__check_gh_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__get_environment_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test__gh_supports_issue_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test_create_agdt_bug_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test_create_agdt_documentation_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test_create_agdt_feature_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test_create_agdt_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/issue_commands/test_create_agdt_task_issue.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/state_helpers → agentic_devtools-0.2.267/tests/unit/cli/github/pr_approve}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test__check_gh_available.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test__resolve_current_user.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test__submit_approval.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test__validate_repo_format.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test__verify_approval.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test_approve_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_approve/test_pr_approve_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/update_commands → agentic_devtools-0.2.267/tests/unit/cli/github/pr_checks_status}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__classify_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__fetch_check_suites.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__fetch_pr_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__normalize_repo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__reconcile_results.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test__verify_check_suites.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test_get_pr_checks_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_checks_status/test_pr_checks_status_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/jira/vpn_wrapper → agentic_devtools-0.2.267/tests/unit/cli/github/pr_create}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_create/test_create_pull_request.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/network → agentic_devtools-0.2.267/tests/unit/cli/github/pr_merge}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test__check_gh_available.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test__classify_merge_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test__execute_merge.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test__verify_merge.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test_merge_pr.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_merge/test_pr_merge_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/network/commands → agentic_devtools-0.2.267/tests/unit/cli/github/pr_poll_ready}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_poll_ready/test__evaluate_iteration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_poll_ready/test__should_rerun_checks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_poll_ready/test_poll_pr_ready.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_poll_ready/test_pr_poll_ready_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/network/detection → agentic_devtools-0.2.267/tests/unit/cli/github/pr_state}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_state/test__evaluate_terminal_condition.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_state/test__fetch_pr_with_retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_state/test_get_pr_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/pr_state/test_pr_state_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/pr_template → agentic_devtools-0.2.267/tests/unit/cli/github/repo_resolution}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/repo_resolution/test__repo_from_git_remote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/repo_resolution/test__resolve_repo_from_git_remote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/repo_resolution/test__validate_repo_format.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/repo_resolution/test_resolve_github_repo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/repo_resolution/test_resolve_github_repo_safe.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/release → agentic_devtools-0.2.267/tests/unit/cli/github/request_copilot_review}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test__check_login_in_response.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test__check_reviewer_in_reviews.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test__login_matches.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test__post_review_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test__verify_reviewer_requested.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test_request_copilot_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/request_copilot_review/test_request_copilot_review_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/release/commands → agentic_devtools-0.2.267/tests/unit/cli/github/rerun_checks}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/rerun_checks/test__fetch_workflow_runs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/rerun_checks/test__filter_failed_runs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/rerun_checks/test__rerun_single_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/rerun_checks/test_rerun_checks_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/rerun_checks/test_rerun_failed_checks.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/release/helpers → agentic_devtools-0.2.267/tests/unit/cli/github/resolve_review_threads}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__fetch_review_comment_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__fetch_review_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__map_comments_to_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__resolve_and_verify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__resolve_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test__unresolve_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test_resolve_review_threads.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test_resolve_review_threads_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/resolve_review_threads/test_unresolve_review_threads.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/runner → agentic_devtools-0.2.267/tests/unit/cli/github/review_reply}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__check_gh_available.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__load_replies_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__post_single_reply.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__retry_failed_replies.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__validate_reply_entries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test__verify_replies.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test_reply_to_review_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/review_reply/test_reply_to_review_comments_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/segments → agentic_devtools-0.2.267/tests/unit/cli/github/state_helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/state_helpers/test_get_issue_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/github/state_helpers/test_set_issue_value.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/segments/commands → agentic_devtools-0.2.267/tests/unit/cli/hierarchy}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup → agentic_devtools-0.2.267/tests/unit/cli/hierarchy/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/commands/test_cascade_trigger_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/commands/test_commands_resolve_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/commands/test_detect_hierarchy_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/commands/test_enforce_parent_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/commands → agentic_devtools-0.2.267/tests/unit/cli/hierarchy/helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/helpers/test_resolve_owner_repo.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/hierarchy/helpers/test_resolve_owner_repo_partial.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/commit_template_setup → agentic_devtools-0.2.267/tests/unit/cli/jira}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/copilot_cli_installer → agentic_devtools-0.2.267/tests/unit/cli/jira/adf}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/adf/test__convert_adf_to_text.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/adf/test__process_adf_children.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/dependency_checker → agentic_devtools-0.2.267/tests/unit/cli/jira/async_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_add_comment_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_add_comment_async_cli.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_add_users_to_project_role_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_add_users_to_project_role_batch_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_check_user_exists_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_check_users_exist_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_create_epic_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_create_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_create_subtask_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_find_role_id_by_name_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_get_issue_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_get_project_role_details_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_list_project_roles_async.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_commands/test_update_issue_async.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/exit_codes → agentic_devtools-0.2.267/tests/unit/cli/jira/async_status}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_status/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/async_status/test_write_async_status.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/expectations_validator → agentic_devtools-0.2.267/tests/unit/cli/jira/comment_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/comment_commands/test_add_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/comment_commands/test_add_comment_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/gh_cli_installer → agentic_devtools-0.2.267/tests/unit/cli/jira/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/config/test_build_jira_issue_pattern.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/config/test_get_jira_auth_header.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/config/test_get_jira_base_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/config/test_get_jira_headers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/config/test_get_jira_project_keys.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/conftest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/gitignore_negations → agentic_devtools-0.2.267/tests/unit/cli/jira/create_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/create_commands/test_create_epic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/create_commands/test_create_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/create_commands/test_create_issue_sync.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/create_commands/test_create_subtask.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/phases → agentic_devtools-0.2.267/tests/unit/cli/jira/formatting}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/formatting/test_build_user_story_description.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/formatting/test_format_bullet_list.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/formatting/test_merge_labels.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/platform_detection → agentic_devtools-0.2.267/tests/unit/cli/jira/get_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/get_commands/test__fetch_epic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/get_commands/test__fetch_parent_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/get_commands/test__fetch_remote_links.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/get_commands/test_get_issue.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/pr_workflow → agentic_devtools-0.2.267/tests/unit/cli/jira/helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__count_certificates_in_pem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__ensure_jira_pem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__fetch_certificate_chain_openssl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__fetch_certificate_chain_ssl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__get_repo_jira_pem_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__get_requests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__get_ssl_verify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__get_temp_jira_pem_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__parse_comma_separated.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/helpers/test__parse_multiline_string.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/report → agentic_devtools-0.2.267/tests/unit/cli/jira/parse_error_report}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_get_user_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_get_user_details_api_calls.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_error_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_error_file_combined_errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_error_file_multiple_dataproducts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_jira_error_report.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_jira_error_report_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/parse_error_report/test_parse_jira_error_report_integration.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators → agentic_devtools-0.2.267/tests/unit/cli/jira/role_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_add_users_to_project_role.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_add_users_to_project_role_additional_cases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_add_users_to_project_role_batch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_check_user_exists.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_check_user_exists_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_check_users_exist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_check_users_exist_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_check_users_exist_command_paths.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_find_role_id_by_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_get_project_role_details.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_get_project_role_details_command_paths.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_list_project_roles.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_list_project_roles_command_paths.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_role_commands_error_handling.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/role_commands/test_role_id_extraction.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/atomic_write → agentic_devtools-0.2.267/tests/unit/cli/jira/sdk}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/sdk/test_build_jira_client.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/sdk/test_is_cloud.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/complete_setup → agentic_devtools-0.2.267/tests/unit/cli/jira/state_helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/state_helpers/test_get_jira_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/state_helpers/test_set_jira_value.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/configured_setup → agentic_devtools-0.2.267/tests/unit/cli/jira/update_commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/update_commands/test__build_update_payload.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/update_commands/test_update_issue.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/constants → agentic_devtools-0.2.267/tests/unit/cli/jira/vpn_wrapper}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/vpn_wrapper/test_with_jira_vpn_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/vpn_wrapper/test_with_jira_vpn_context_decorator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/jira/vpn_wrapper/test_with_jira_vpn_context_integration.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/gitignore_updater → agentic_devtools-0.2.267/tests/unit/cli/network}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/legacy_migration → agentic_devtools-0.2.267/tests/unit/cli/network/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/network/commands/test_network_status_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/repo_specific → agentic_devtools-0.2.267/tests/unit/cli/network/detection}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/network/detection/test_detect_network_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/network/detection/test_get_network_context_display.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/required_setup → agentic_devtools-0.2.267/tests/unit/cli/pr_template}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test__default_pr_title_template_for.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_ensure_pr_body_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_ensure_pr_title_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_get_pr_title_template_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_get_template_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_init_pr_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_render_j2_body_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_resolve_full_commit_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_resolve_main_ref.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_resolve_pr_body.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/pr_template/test_resolve_pr_title.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/script_generators/root_entry_point → agentic_devtools-0.2.267/tests/unit/cli/release}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/shell_profile → agentic_devtools-0.2.267/tests/unit/cli/release/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/commands/test__normalize_repository.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/commands/test__release_pypi_sync.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/commands/test__require_pypi_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/commands/test__run_tests_and_wait.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/commands/test_release_pypi_async.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/version_guard → agentic_devtools-0.2.267/tests/unit/cli/release/helpers}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_build_distribution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_compute_sha256.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_normalize_package_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_pypi_version_exists.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_upload_distribution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/release/helpers/test_validate_distribution.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/setup/workflow_templates → agentic_devtools-0.2.267/tests/unit/cli/runner}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_command_map.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_command_map_integrity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_main.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_main_entry_point.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_run_as_script.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/runner/test_run_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit → agentic_devtools-0.2.267/tests/unit/cli/segments}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit → agentic_devtools-0.2.267/tests/unit/cli/segments}/commands/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/segments/commands/test_segments_clean_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/segments/commands/test_segments_status_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/cross_ref → agentic_devtools-0.2.267/tests/unit/cli/setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/detect_parent_cli → agentic_devtools-0.2.267/tests/unit/cli/setup/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__build_unified_ca_bundle.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__generate_setup_scripts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__persist_env_vars_to_profile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__persist_single_var.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__populate_available_models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__prefetch_certs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__print_manual_instructions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__print_path_instructions_if_needed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__prompt_copilot_model.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__prompt_project_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__query_copilot_models.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test__valid_issue_adapters_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test_setup_certs_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test_setup_check_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test_setup_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test_setup_copilot_cli_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commands/test_setup_gh_cli_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/hierarchy → agentic_devtools-0.2.267/tests/unit/cli/setup/commit_template_setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commit_template_setup/test__default_template_for.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commit_template_setup/test_ensure_commit_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/commit_template_setup/test_validate_commit_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/conftest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/hierarchy_detector → agentic_devtools-0.2.267/tests/unit/cli/setup/copilot_cli_installer}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_detect_platform_asset.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_download_and_install.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_get_copilot_cli_binary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_get_installed_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_get_latest_release_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/copilot_cli_installer/test_install_copilot_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2 → agentic_devtools-0.2.267/tests/unit/cli/setup/dependency_checker}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test__find_binary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test__get_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test__run_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test_check_all_dependencies.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test_dependencystatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/dependency_checker/test_print_dependency_report.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/constants → agentic_devtools-0.2.267/tests/unit/cli/setup/exit_codes}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/exit_codes/test_constants.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/exit_codes/test_exit_code_descriptions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/exit_codes/test_get_exit_code_name.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/coverage_mapper → agentic_devtools-0.2.267/tests/unit/cli/setup/expectations_validator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/expectations_validator/test_validate_setup_expectations.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/models → agentic_devtools-0.2.267/tests/unit/cli/setup/gh_cli_installer}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_detect_platform_asset.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_download_and_install.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_get_gh_cli_binary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_get_installed_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_get_latest_release_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gh_cli_installer/test_install_gh_cli.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/reporter → agentic_devtools-0.2.267/tests/unit/cli/setup/gitignore_negations}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gitignore_negations/test__detect_newline.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/gitignore_negations/test_ensure_root_gitignore_negations.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/spec_parser → agentic_devtools-0.2.267/tests/unit/cli/setup/phases}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/phases/test_phases.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/task_classifier → agentic_devtools-0.2.267/tests/unit/cli/setup/platform_detection}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/platform_detection/test__get_origin_remote_url.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/platform_detection/test_confirm_and_override.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/platform_detection/test_detect_platforms.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/platform_detection/test_detectionresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_e2/validator → agentic_devtools-0.2.267/tests/unit/cli/setup/pr_workflow}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/pr_workflow/test__resolve_branch_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/pr_workflow/test_run_setup_with_pr_workflow.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g → agentic_devtools-0.2.267/tests/unit/cli/setup/report}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/report/test_phaseresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/report/test_setupreport.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/report/test_write_report.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/classifier → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/constants → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/atomic_write}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/atomic_write/test_concurrent_writes.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/extractors → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/complete_setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/complete_setup/test_generate_complete_setup.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/extractors/base → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/configured_setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/configured_setup/test_generate_configured_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/configured_setup/test_render_tool_installs.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/extractors/python_extractor → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/constants}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/constants/test_constants.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/intent_detector → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/gitignore_updater}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/gitignore_updater/test_update_gitignore.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/inventory → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/legacy_migration}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/legacy_migration/test_detect_legacy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/legacy_migration/test_migrate_content.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/matcher → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/repo_specific}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/repo_specific/test_never_overwrite.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/models → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/required_setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test__site_packages_dirs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test_cleanup_artifacts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test_detect_corrupted_artifacts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test_generate_required_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test_install_package.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/required_setup/test_setup_git_hooks.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/reference_extractor → agentic_devtools-0.2.267/tests/unit/cli/setup/script_generators/root_entry_point}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/script_generators/root_entry_point/test_generate_root_entry_point.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/pass_g/reporter → agentic_devtools-0.2.267/tests/unit/cli/setup/shell_profile}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/shell_profile/test_detect_shell_profile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/shell_profile/test_detect_shell_type.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/shell_profile/test_persist_env_var.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/shell_profile/test_persist_path_entry.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/validate_checklists → agentic_devtools-0.2.267/tests/unit/cli/setup/version_guard}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/version_guard/test__fallback_compare.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/version_guard/test__segment_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/version_guard/test_check_version_guard.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/version_guard/test_compare_versions.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/speckit/validate_frs → agentic_devtools-0.2.267/tests/unit/cli/setup/workflow_templates}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/workflow_templates/test_generate_default_templates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/workflow_templates/test_list_available_templates.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/setup/workflow_templates/test_template_info.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/state → agentic_devtools-0.2.267/tests/unit/cli/speckit}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/subprocess_utils → agentic_devtools-0.2.267/tests/unit/cli/speckit/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test__load_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test__parse_args.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test__run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_analyze.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_clarify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_constitution.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_implement.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_plan.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_specify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/commands/test_speckit_taskstoissues.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/tasks → agentic_devtools-0.2.267/tests/unit/cli/speckit/cross_ref}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/cross_ref/test_cross_ref_command.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/tasks/commands → agentic_devtools-0.2.267/tests/unit/cli/speckit/detect_parent_cli}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/detect_parent_cli/test__normalisingargumentparser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/detect_parent_cli/test__normalize_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/detect_parent_cli/test__positive_int.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/detect_parent_cli/test__timeout_handler.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/detect_parent_cli/test_main.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/testing → agentic_devtools-0.2.267/tests/unit/cli/speckit/hierarchy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test__parse_timestamp.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_childentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_get_child_position.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_get_first_child.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_get_next_child.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_hierarchy_schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_hierarchydetector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_hierarchylevel.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_hierarchynode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_hierarchyvalidationerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_load_hierarchy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_round_trip.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy/test_save_hierarchy.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/vpn → agentic_devtools-0.2.267/tests/unit/cli/speckit/hierarchy_detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test__normalize_issue_title.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test__parse_rate_limit_headers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test__raise_for_graphql_errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test__split_header_body_blocks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test_get_hierarchy_detector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test_githubhierarchydetector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test_jirahierarchydetector.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/hierarchy_detector/test_parse_issue_reference.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/vpn/commands → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/vpn/runner → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/constants}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/constants/test_test_task_keywords.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/constants/test_test_type_keywords.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/vscode_tasks → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/coverage_mapper}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/coverage_mapper/test_evaluate_coverage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/coverage_mapper/test_generate_task_scoped_findings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/coverage_mapper/test_map_test_tasks_to_frs.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/models/test_models.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/advancement → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/reporter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/reporter/test_render_findings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/reporter/test_render_test_coverage_summary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/base → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/spec_parser}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/spec_parser/test__extract_priority_from_section.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/spec_parser/test_build_us_to_fr_mapping.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/spec_parser/test_extract_frs_with_priority.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/spec_parser/test_parse_user_story_sections.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/checklist → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/task_classifier}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/task_classifier/test__build_multi_word_pattern.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/task_classifier/test_classify_test_types.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/task_classifier/test_detect_ambiguous_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/task_classifier/test_extract_task_fr_refs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/task_classifier/test_is_test_task.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/commands → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_e2/validator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/validator/test__parse_tasks_from_content.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/validator/test__print_human_output.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/validator/test__safe_print.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/validator/test_test_coverage_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_e2/validator/test_validate_test_coverage.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/manager → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/preflight → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/classifier}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/classifier/test__check_partial_match.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/classifier/test__should_skip.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/classifier/test_classify_references.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/cli/workflows/worktree_setup → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/constants}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_disambiguation_margin.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_high_confidence_threshold.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_max_candidates_per_reference.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_new_symbol_noun_markers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_new_symbol_verb_markers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_performance_warning_seconds.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_protected_file_patterns.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/constants/test_suggestion_threshold.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/config → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/extractors}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/context → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/extractors/base}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/extractors/base/test_symbolextractor.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/context/models → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/extractors/python_extractor}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/extractors/python_extractor/test__file_to_module_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/extractors/python_extractor/test__parse_project_scripts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/extractors/python_extractor/test_pythonextractor.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/context/nodes → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/intent_detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/intent_detector/test_detect_new_symbol_intent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/intent_detector/test_detect_new_symbol_intent_noun.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/context/retriever → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/inventory}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/inventory/test_build_inventory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/inventory/test_build_inventory_extended.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/inventory/test_symbolinventory.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/context_budget → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/matcher}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/matcher/test_classify_match_confidence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/matcher/test_exact_match.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/matcher/test_fuzzy_match.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/matcher/test_fuzzy_match_extended.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/models/test_candidate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/models/test_finding.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/models/test_matchstatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/models/test_reference.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/models/test_referencekind.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/config → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/reference_extractor}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reference_extractor/test_classify_reference_kind.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reference_extractor/test_extract_references.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reference_extractor/test_extract_references_extended.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/dependencies → agentic_devtools-0.2.267/tests/unit/cli/speckit/pass_g/reporter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reporter/test_render_json.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reporter/test_render_markdown.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/pass_g/reporter/test_reporter_edge_cases.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/errors → agentic_devtools-0.2.267/tests/unit/cli/speckit/validate_checklists}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test__check_collision.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test__print_human_output.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test__resolve_issue_number.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test__resolve_paths.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test__verify_source_issue_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_aggregateresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_classify_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_count_checkboxes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_remediate_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_validate_checklists.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_validate_checklists_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_checklists/test_validate_file.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/loader → agentic_devtools-0.2.267/tests/unit/cli/speckit/validate_frs}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test__coerce_max_retries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test__resolve_max_retries.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_check_coverage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_extract_frs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_sort_fr_ids.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_validate_frs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_validate_frs_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/speckit/validate_frs/test_validationresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/models → agentic_devtools-0.2.267/tests/unit/cli/state}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_clear_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_clear_workflow_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_delete_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_get_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_get_workflow_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_set_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/state/test_show_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/normalizer → agentic_devtools-0.2.267/tests/unit/cli/subprocess_utils}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/subprocess_utils/test_run_safe.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/subprocess_utils/test_run_safe_integration.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/ordering → agentic_devtools-0.2.267/tests/unit/cli/tasks}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/schema → agentic_devtools-0.2.267/tests/unit/cli/tasks/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_handle_task_completed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_helper_functions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_list_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_safe_print_unicode_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_show_other_incomplete_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_command_integration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_id_argument.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_log_line_limits.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_wait.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_task_wait_value_error_handling.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/tasks/commands/test_tasks_clean.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/epic_tree/validator → agentic_devtools-0.2.267/tests/unit/cli/testing}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test__infer_test_file_from_source.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test__try_get_workspace_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_async_wrappers.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_create_test_file_parser.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_get_workspace_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_subprocess_with_streaming.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_file_sync.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_pattern.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_quick.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_quick_sync.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/testing/test_run_tests_sync.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/file_locking → agentic_devtools-0.2.267/tests/unit/cli/vpn}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy → agentic_devtools-0.2.267/tests/unit/cli/vpn/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vpn/commands/test_vpn_run_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/artifact_profiles → agentic_devtools-0.2.267/tests/unit/cli/vpn/runner}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vpn/runner/test__detect_vpn_requirement_from_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vpn/runner/test__execute_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vpn/runner/test_run_with_vpn_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vpn/runner/test_vpnrequirement.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/cascade → agentic_devtools-0.2.267/tests/unit/cli/vscode_tasks}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/vscode_tasks/test_remove_auto_start_task.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/detector → agentic_devtools-0.2.267/tests/unit/cli/workflows}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/enforcement → agentic_devtools-0.2.267/tests/unit/cli/workflows/advancement}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_branch_pushed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_jira_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_jira_issue_retrieved.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_pr_creation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/advancement/test_try_advance_workflow_after_pr_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_appliedsuggestionentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_appliedsuggestionsstate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_get_applied_suggestions_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_load_applied_suggestions_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_load_from_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/applied_suggestions/test_save_applied_suggestions_state.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/github_detector → agentic_devtools-0.2.267/tests/unit/cli/workflows/base}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test__state_key_to_variable_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test_advance_workflow_step.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test_clear_state_for_workflow_initiation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test_collect_variables_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test_initiate_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/base/test_validate_required_state.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/jira_detector → agentic_devtools-0.2.267/tests/unit/cli/workflows/checklist}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_checklistitem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_get_checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_get_checklist_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_initialize_checklist.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_mark_items_completed.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_parse_completed_items_arg.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/checklist/test_save_checklist.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/metadata_io → agentic_devtools-0.2.267/tests/unit/cli/workflows/commands}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__clear_stale_issue_keys_for_create.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__copy_review_state_to_apply_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__effective_argv.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__ensure_bootstrap_identity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__execute_retrieve_step.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__fetch_issue_for_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__format_auto_setup_success_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__format_degraded_setup_message.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__format_jira_issue_comments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__format_jira_issue_prompt_fields.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__parse_bool_interactive.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__powershell_join.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test__stringify_jira_text_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_advance_pull_request_review_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_advance_work_on_jira_issue_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_advance_workflow_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_create_checklist_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_get_workflow_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_apply_pull_request_review_suggestions_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_break_down_issue_into_subtasks_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_create_jira_epic_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_create_jira_issue_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_create_jira_subtask_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_optimize_issue_for_ai_agent_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_pr_merge_orchestrator_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_pull_request_review_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_update_jira_issue_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_initiate_work_on_jira_issue_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_notify_workflow_event.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_setup_worktree_background_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_show_checklist_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/commands/test_update_checklist_cmd.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/models → agentic_devtools-0.2.267/tests/unit/cli/workflows/manager}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test__build_command_hint.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test__check_required_tasks_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test__render_failure_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test__render_step_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test__render_waiting_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_get_next_step.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_get_next_workflow_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_get_next_workflow_prompt_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_get_workflow_definition.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_nextpromptresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_notify_workflow_event.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/manager/test_promptstatus.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/hierarchy/path_resolver → agentic_devtools-0.2.267/tests/unit/cli/workflows/preflight}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_check_worktree_and_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_generate_setup_instructions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_get_current_git_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_get_git_repo_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_perform_auto_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/preflight/test_preflightresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/mcp → agentic_devtools-0.2.267/tests/unit/cli/workflows/worktree_setup}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__cleanup_pending_auto_start_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__cleanup_stale_auto_start_task_for_worktree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__detect_git_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__detect_python_scripts_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__focus_vscode_window.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__maybe_inject_auto_start_before_vscode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__open_log_in_vscode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__print_agent_instructions_block.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__prompt_file_relative_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__propagate_agdt_cache.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__resolve_state_context_in_worktree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__run_auto_execute_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__setup_worktree_from_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__shell_quote.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__spawn_delayed_autostart_verification.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_apply_pr_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_create_jira_epic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_create_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_create_jira_subtask.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_pr_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_update_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_work_on_jira_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__start_copilot_session_for_workflow.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__try_terminal_send_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__wait_for_prompt_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__workflow_prompt_filenames.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__workflow_start_prompts.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test__write_pending_auto_start_marker.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_check_worktree_exists.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_create_placeholder_and_setup_worktree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_create_placeholder_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_create_worktree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_find_workspace_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_generate_workflow_branch_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_get_ai_agent_continuation_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_get_current_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_get_main_repo_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_get_repos_parent_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_get_worktree_continuation_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_inject_auto_start_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_inject_git_path_settings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_inject_python_path_settings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_inject_task_permission_settings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_is_in_worktree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_is_vscode_available.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_open_vscode_workspace.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_placeholderissueresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_run_worktree_setup_script.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_setup_worktree_environment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_setup_worktree_in_background_sync.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_start_worktree_setup_background.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_switch_to_main_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_worktreesetupresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/cli/workflows/worktree_setup/test_worktreestatecontext.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/mcp/server → agentic_devtools-0.2.267/tests/unit/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/config/test_load_platform_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/config/test_load_repo_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/config/test_load_review_focus_areas.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/config/test_save_platform_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/conftest.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration → agentic_devtools-0.2.267/tests/unit/context}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/checkpointing → agentic_devtools-0.2.267/tests/unit/context/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context/models/test_agentcontext.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution → agentic_devtools-0.2.267/tests/unit/context/nodes}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context/nodes/test_retrieve_context_node.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/adr_validation → agentic_devtools-0.2.267/tests/unit/context/retriever}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context/retriever/test_issuecontextretriever.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/context → agentic_devtools-0.2.267/tests/unit/context_budget}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_budgetresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_collapse_whitespace.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_contextbudgeterror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_enforce_context_budget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_hard_truncate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_reductionstage.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_remove_image_references.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_strip_markdown_formatting.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/context_budget/test_validate_content_shape.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/context_factory → agentic_devtools-0.2.267/tests/unit/epic_tree}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/decision_gate → agentic_devtools-0.2.267/tests/unit/epic_tree/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/config/test_load_epic_tree_config.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/decision_policy → agentic_devtools-0.2.267/tests/unit/epic_tree/dependencies}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/dependencies/test_build_dependency_graph.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/dependencies/test_detect_cycles.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/dependencies/test_topological_sort.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/event_edge_mapping → agentic_devtools-0.2.267/tests/unit/epic_tree/errors}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/errors/test_configerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/errors/test_epictreeloaderror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/errors/test_epictreevalidationerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/errors/test_validationreport.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/errors/test_versionmismatcherror.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/exceptions → agentic_devtools-0.2.267/tests/unit/epic_tree/loader}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/loader/test__find_repo_root.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/loader/test__normalize_validation_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/loader/test_load_epic_tree.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/idempotency → agentic_devtools-0.2.267/tests/unit/epic_tree/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/models/test_epictree.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/models/test_featurenode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/models/test_issuenode.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/models/test_subtasknode.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/poc_node → agentic_devtools-0.2.267/tests/unit/epic_tree/normalizer}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/normalizer/test_normalize_tree.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/protocols → agentic_devtools-0.2.267/tests/unit/epic_tree/ordering}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/ordering/test_creation_sequence.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/ordering/test_resolve_sibling_order.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/retry → agentic_devtools-0.2.267/tests/unit/epic_tree/schema}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/schema/test_load_schema.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/schema/test_schema_path.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/state → agentic_devtools-0.2.267/tests/unit/epic_tree/validator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/validator/test_check_schema_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/epic_tree/validator/test_validate_epic_tree.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/trace_persistence → agentic_devtools-0.2.267/tests/unit/file_locking}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_cross_platform_behavior.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_file_lock_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_lock_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_lock_functions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_locked_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_locked_file_edge_cases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_locked_state_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_unix_file_locking.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_unlock_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/file_locking/test_windows_file_locking.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/tracing → agentic_devtools-0.2.267/tests/unit/hierarchy}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/execution/types → agentic_devtools-0.2.267/tests/unit/hierarchy/artifact_profiles}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/artifact_profiles/test_epic_profile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/artifact_profiles/test_feature_profile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/artifact_profiles/test_get_artifact_profile_invalid.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/artifact_profiles/test_get_artifact_profile_returns_copy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/artifact_profiles/test_task_profile.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/graph_builder → agentic_devtools-0.2.267/tests/unit/hierarchy/cascade}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_all_children_skipped.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_cascade_internals.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_cascade_read_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_cascade_with_parent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_find_eligible_skip_before.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_halt_on_api_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_halt_on_failure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_idempotent_label.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_no_children.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_skip_closed_issues.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_skip_deleted_issues.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_skip_speckit_skip.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_skipped_text.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_trigger_first_child.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/cascade/test_trigger_next_sibling.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm → agentic_devtools-0.2.267/tests/unit/hierarchy/detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/detector/test_hierarchydetector.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/base_provider → agentic_devtools-0.2.267/tests/unit/hierarchy/enforcement}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_check_parent_specked.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_enforce_parent_specked.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_enforcementresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_grandchild_enforcement.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_legacy_path_file_match.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_legacy_path_lookup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/enforcement/test_reject_trigger.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/call_logger → agentic_devtools-0.2.267/tests/unit/hierarchy/github_detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/github_detector/test_githubhierarchydetector.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/config → agentic_devtools-0.2.267/tests/unit/hierarchy/jira_detector}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/jira_detector/test_jirahierarchydetector.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/config_schema → agentic_devtools-0.2.267/tests/unit/hierarchy/metadata_io}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/metadata_io/test_read_hierarchy_yml.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/metadata_io/test_read_hierarchy_yml_errors.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/metadata_io/test_standalone_no_yml.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/metadata_io/test_write_hierarchy_yml.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/cost_estimator → agentic_devtools-0.2.267/tests/unit/hierarchy/models}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/models/test_artifactprofile.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/models/test_cascadeevent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/models/test_hierarchylevel.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/models/test_hierarchymetadata.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/errors → agentic_devtools-0.2.267/tests/unit/hierarchy/path_resolver}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/path_resolver/test_backward_compatibility.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/path_resolver/test_resolve_fallback_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/path_resolver/test_resolve_hierarchical_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/hierarchy/path_resolver/test_resolve_standalone_path.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/factory → agentic_devtools-0.2.267/tests/unit/mcp}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/mock_provider → agentic_devtools-0.2.267/tests/unit/mcp/server}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/mcp/server/test__load_azure_devops_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/mcp/server/test__load_jira_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/mcp/server/test_create_mcp_server.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/mcp/server/test_main.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/provider_config → agentic_devtools-0.2.267/tests/unit/orchestration}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/providers → agentic_devtools-0.2.267/tests/unit/orchestration/checkpointing}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/checkpointing/test_get_checkpointer.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/providers/azure_openai → agentic_devtools-0.2.267/tests/unit/orchestration/execution}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/providers/local_model → agentic_devtools-0.2.267/tests/unit/orchestration/execution/adr_validation}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/adr_validation/test_validate_adr_014.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/providers/openai_direct → agentic_devtools-0.2.267/tests/unit/orchestration/execution/context}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/context/test_executioncontext.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/retry → agentic_devtools-0.2.267/tests/unit/orchestration/execution/context_factory}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/context_factory/test_build_execution_context.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/testing → agentic_devtools-0.2.267/tests/unit/orchestration/execution/decision_gate}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/decision_gate/test_decisionrequired.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/testing/canonical_hash → agentic_devtools-0.2.267/tests/unit/orchestration/execution/decision_policy}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/decision_policy/test_load_decision_policy.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/decision_policy/test_validate_policy_data.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/testing/deterministic → agentic_devtools-0.2.267/tests/unit/orchestration/execution/event_edge_mapping}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/event_edge_mapping/test_build_routing_function.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/event_edge_mapping/test_eventedgeconfig.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/event_edge_mapping/test_load_event_edge_mapping.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/testing/fixture_store → agentic_devtools-0.2.267/tests/unit/orchestration/execution/exceptions}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/exceptions/test_reasoningtimeouterror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/exceptions/test_retryexhaustederror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/exceptions/test_toolinvocationerror.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/token_counter → agentic_devtools-0.2.267/tests/unit/orchestration/execution/idempotency}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/idempotency/test_idempotency_edge_cases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/idempotency/test_idempotencyentry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/idempotency/test_idempotencyregistry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/idempotency/test_idempotent_tool_wrapper.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/types → agentic_devtools-0.2.267/tests/unit/orchestration/execution/poc_node}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/poc_node/test_create_analysis_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/poc_node/test_tool_result_envelope.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/llm/usage_tracker → agentic_devtools-0.2.267/tests/unit/orchestration/execution/protocols}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/protocols/test_assert_import_isolation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/protocols/test_reasoningprovider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/protocols/test_toolregistry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/protocols/test_traceemitter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/node_factory → agentic_devtools-0.2.267/tests/unit/orchestration/execution/retry}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/retry/test_with_retry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/run_id/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/run_id/test_validate_run_id.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/pilot_workflow → agentic_devtools-0.2.267/tests/unit/orchestration/execution/state}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/state/test_executionstate.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/review → agentic_devtools-0.2.267/tests/unit/orchestration/execution/trace_persistence}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/trace_persistence/test_persistenttraceemitter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/trace_persistence/test_trace_persistence_edge_cases.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/trace_persistence/test_tracerecord.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/trace_persistence/test_write_execution_summary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/review/nodes → agentic_devtools-0.2.267/tests/unit/orchestration/execution/tracing}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/tracing/test_loggingtraceemitter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/tracing/test_make_trace_event.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/tracing/test_redact_sensitive_keys.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/tracing/test_traceevent.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/runner → agentic_devtools-0.2.267/tests/unit/orchestration/execution/types}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/types/test_jsonvalue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/types/test_reasoningresponse.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/execution/types/test_tokenusage.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas → agentic_devtools-0.2.267/tests/unit/orchestration/graph_builder}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/graph_builder/test_build_work_on_issue_graph.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/__init__ → agentic_devtools-0.2.267/tests/unit/orchestration/llm}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/_confidence → agentic_devtools-0.2.267/tests/unit/orchestration/llm/base_provider}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/base_provider/test_llmprovider.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/base_provider/test_omit_none_values.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/_enums → agentic_devtools-0.2.267/tests/unit/orchestration/llm/call_logger}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/call_logger/test_calllogger.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/_export → agentic_devtools-0.2.267/tests/unit/orchestration/llm/config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/config/test_load_config.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/config/test_resolve_node_config.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/_fallback → agentic_devtools-0.2.267/tests/unit/orchestration/llm/config_schema}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/config_schema/test_validate_config.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/_validation → agentic_devtools-0.2.267/tests/unit/orchestration/llm/cost_estimator}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/cost_estimator/test_costestimator.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/examples → agentic_devtools-0.2.267/tests/unit/orchestration/llm/errors}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/errors/test_errors.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/examples/review_examples → agentic_devtools-0.2.267/tests/unit/orchestration/llm/factory}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/factory/test_providerfactory.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/examples/shared_examples → agentic_devtools-0.2.267/tests/unit/orchestration/llm/mock_provider}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/mock_provider/test_mock_provider.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/examples/work_examples → agentic_devtools-0.2.267/tests/unit/orchestration/llm/provider_config}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/provider_config/test_llmproviderconfig.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review → agentic_devtools-0.2.267/tests/unit/orchestration/llm/providers}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review/decision → agentic_devtools-0.2.267/tests/unit/orchestration/llm/providers/azure_openai}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/providers/azure_openai/test_azureopenaiprovider.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review/finding → agentic_devtools-0.2.267/tests/unit/orchestration/llm/providers/local_model}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/providers/local_model/test_localmodelprovider.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review/result → agentic_devtools-0.2.267/tests/unit/orchestration/llm/providers/openai_direct}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/providers/openai_direct/test_openaidirectprovider.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review/summary → agentic_devtools-0.2.267/tests/unit/orchestration/llm/retry}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/retry/test_retryhandler.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/review/verdict → agentic_devtools-0.2.267/tests/unit/orchestration/llm/testing}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/shared → agentic_devtools-0.2.267/tests/unit/orchestration/llm/testing/canonical_hash}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/testing/canonical_hash/test_compute_fixture_key.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/shared/confidence → agentic_devtools-0.2.267/tests/unit/orchestration/llm/testing/deterministic}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/testing/deterministic/test_deterministictestprovider.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/shared/escalation → agentic_devtools-0.2.267/tests/unit/orchestration/llm/testing/fixture_store}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/testing/fixture_store/test_fixturestore.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/shared/stop_condition → agentic_devtools-0.2.267/tests/unit/orchestration/llm/token_counter}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/token_counter/test_tokencounter.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue → agentic_devtools-0.2.267/tests/unit/orchestration/llm/types}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/types/test_llmresponse.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/types/test_streamchunk.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/types/test_tokenusage.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue/checklist → agentic_devtools-0.2.267/tests/unit/orchestration/llm/usage_tracker}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/llm/usage_tracker/test_usagetracker.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue/diagnosis → agentic_devtools-0.2.267/tests/unit/orchestration/node_factory}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/node_factory/test_make_node.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue/plan → agentic_devtools-0.2.267/tests/unit/orchestration/pilot_workflow}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test__utc_now.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_checklist_creation_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_checkpoint_compatibility.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_commit_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_completion_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_error_handler_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_get_mermaid_diagram.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_implementation_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_implementation_review_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_initiate_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_planning_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_pull_request_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_checklist_creation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_implementation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_implementation_review.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_initiate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_plan.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_setup.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_route_after_verify.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_routing_purity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_setup_node.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/pilot_workflow/test_verification_node.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue/quality → agentic_devtools-0.2.267/tests/unit/orchestration/review}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/schemas/work_on_issue/summary → agentic_devtools-0.2.267/tests/unit/orchestration/review/nodes}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/review/nodes/test_review_file_node.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/state_schema → agentic_devtools-0.2.267/tests/unit/orchestration/runner}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/runner/test__is_workflow_paused.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/runner/test_run_langchain_workflow.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/audit → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/__init__}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/__init__/test_serialization.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools → agentic_devtools-0.2.267/tests/unit/orchestration/schemas}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/builtins → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/_confidence}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_confidence/test_confidencescore.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/decorators → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/_enums}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_enums/test_escalationcategory.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_enums/test_qualitygatename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_enums/test_severity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_enums/test_verdict.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/definition → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/_export}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_export/test_export_json_schema.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/executor → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/_fallback}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_fallback/test_fallback_pipeline.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/langchain_adapter → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/_validation}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_validation/test__truncate_utf8.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_validation/test_schemavalidationerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/_validation/test_validate_llm_output.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/registry → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/examples}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/result → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/examples/review_examples}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/examples/review_examples/test_review_examples.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/review_bindings → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/examples/shared_examples}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/examples/shared_examples/test_shared_examples.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/orchestration/tools/validation → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/examples/work_examples}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/examples/work_examples/test_work_examples.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/prompts → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/prompts/loader → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review/decision}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/decision/test_reviewdecision.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review/finding}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/finding/test_codesuggestion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/finding/test_filereviewfinding.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments/cleanup → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review/result}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/result/test_filereviewresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments/errors → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review/summary}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/summary/test_reviewsummary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments/manager → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/review/verdict}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/verdict/test_reviewsuggestion.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/review/verdict/test_reviewverdict.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments/models → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/shared}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/segments/reconciler → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/shared/confidence}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/shared/confidence/test_confidencescore.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/skill_injector → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/shared/escalation}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/shared/escalation/test_escalationreason.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/state → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/shared/stop_condition}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/shared/stop_condition/test_stopcondition.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/submission_manager → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue}/__init__.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/submission_processor → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue/checklist}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/work_on_issue/checklist/test_checklistitem.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/task_state → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue/diagnosis}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/work_on_issue/diagnosis/test_testfailurediagnosis.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/tools → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue/plan}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/work_on_issue/plan/test_implementationplan.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/tools/azure_devops → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue/quality}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/work_on_issue/quality/test_qualitygateresult.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/tools/git → agentic_devtools-0.2.267/tests/unit/orchestration/schemas/work_on_issue/summary}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/schemas/work_on_issue/summary/test_implementationsummary.py +0 -0
- {agentic_devtools-0.2.265/tests/unit/tools/jira → agentic_devtools-0.2.267/tests/unit/orchestration/state_schema}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/state_schema/test_workonissueevent.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/state_schema/test_workonissuestate.py +0 -0
- {agentic_devtools-0.2.265/tests/workflows → agentic_devtools-0.2.267/tests/unit/orchestration/tools}/__init__.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/audit/test_emit_audit_log.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/audit/test_get_timestamp.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/builtins/test_builtin_functions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/builtins/test_filesystem_containment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/builtins/test_register_git_tools.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/builtins/test_sc001_tool_count.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/decorators/test_tool_definition_decorator.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/definition/test_tooldefinition.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_audit_duration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_audit_failure.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_execute.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_invoke.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_is_dry_run_fallback.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_list_all_get_categories.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_shutdown.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_thread_safety.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/executor/test_timeout.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/langchain_adapter/test_import_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/langchain_adapter/test_json_type_to_python_list.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/langchain_adapter/test_optional_fields.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/langchain_adapter/test_to_langchain_tool.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/registry/test_concretetoolregistry.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/registry/test_get_function.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/registry/test_invoke.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/result/test_toolresult.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/review_bindings/test_review_bindings.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/orchestration/tools/validation/test_validate_inputs.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_get_prompts_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_get_required_variables.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_get_temp_output_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_get_template_filename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_get_template_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_load_and_render_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_load_ci_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_load_prompt_template.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_log_prompt_with_save_notice.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_pr_review_consolidate_and_submit_prompt_rendering.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_pr_review_delegate_prompt_rendering.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_pr_review_pr_synthesis_prompt_rendering.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_save_generated_prompt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_silentundefined.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_substitute_variables.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_substitute_variables_syntax_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_template_validation_error.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/prompts/loader/test_validate_template_variables.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/cleanup/test_cleanup_segments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/cleanup/test_is_owner_alive.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/errors/test_reconciliationerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/errors/test_segmenterror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/errors/test_segmentlifecycleerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/errors/test_segmentnotfounderror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test__atomic_write_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_complete_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_create_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_fail_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_get_segments_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_list_segments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_read_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/manager/test_write_segment_data.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/models/test_segmentstatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/models/test_statesegment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/reconciler/test_apply_reconciliation.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/reconciler/test_precedencedecision.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/reconciler/test_reconcile_segments.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/segments/reconciler/test_reconciliationrecord.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__derive_fallback_description_from_markdown.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__ensure_github_gitignore_unignores_agdt.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__extract_description.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__flatten_filename.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__generate_readme.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__get_source_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__list_md_files.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test__parse_frontmatter.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/skill_injector/test_inject_skills.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__emit_pin_diagnostic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__get_git_email.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__get_or_refresh_identity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__read_identity_cache.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__resolve_identity.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__sync_bootstrap_for_context_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__update_bootstrap_worktree_key.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test__write_identity_cache.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_clear_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_clear_workflow_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_delete_pin_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_delete_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_all_keys.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_bootstrap_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_pull_request_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_pypi_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_pypi_package_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_pypi_repository.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_pypi_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_state_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_state_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_thread_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_get_workflow_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_is_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_is_safe_dir_segment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_is_workflow_active.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_load_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_load_state_locked.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_read_and_validate_pin_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_read_modify_write_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_refresh_pin_file_ttl.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_save_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_save_state_locked.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_bootstrap_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_context_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_pull_request_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_pypi_dry_run.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_pypi_package_name.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_pypi_repository.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_pypi_version.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_resolve_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_thread_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_value.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_set_workflow_state.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_should_resolve_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_update_workflow_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_update_workflow_step.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_workflow_state_integration.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/state/test_write_pin_file.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_create_submission_manager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_faileditemsummary.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_failurereport.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_submissionitem.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_submissionmanager.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_submissionstatus.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_manager/test_transientsubmissionerror.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_processor/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_processor/test__get_attribution_params.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_processor/test__validate_suggestions.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_processor/test_create_review_processor.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/submission_processor/test_process_submission.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test__update_task_in_all_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_add_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_background_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_cleanup_expired_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_duration_seconds.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_from_dict_invalid_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_active_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_all_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_all_tasks_file_path.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_background_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_background_tasks_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_failed_most_recent_per_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_incomplete_most_recent_per_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_logs_dir.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_most_recent_tasks_per_command.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_other_incomplete_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_recent_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_task_by_id.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_task_from_all_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_get_tasks_by_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_is_expired.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_print_task_tracking_info.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_remove_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_save_background_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_sort_tasks.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_task_lifecycle.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_task_status.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/task_state/test_update_task.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test__escape_for_cmd.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test__get_requests.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test_add_pull_request_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test_add_reviewer.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test_create_pull_request.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test_reply_to_pull_request_thread.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/azure_devops/test_update_review_narrative.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test__capture.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test__run_op.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_amend_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_create_commit.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_force_push.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_get_recent_changes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_publish_branch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_push.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_save_work.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/git/test_stage_changes.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test__fetch_remote_links.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test_add_comment.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test_create_epic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test_create_issue.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test_create_subtask.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/unit/tools/jira/test_fetch_issue_context.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/vpn/test_vpn_commands.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/vpn/test_vpn_runner.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/conftest.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_ai_pr_loop_redispatch.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_ai_pr_loop_throttler.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_copilot_generate.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_enforce_budget.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_fix_markdown_deterministic.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_workflow_end_to_end.py +0 -0
- {agentic_devtools-0.2.265 → agentic_devtools-0.2.267}/tests/workflows/test_wrap_markdown_lines.py +0 -0
|
@@ -0,0 +1,4375 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# generate-spec-from-issue.sh - Generate a full speckit planning artifact suite
|
|
4
|
+
#
|
|
5
|
+
# Runs the complete speckit pipeline: specify → clarify → checklist → plan →
|
|
6
|
+
# tasks → analyze → markdownlint validation. Each phase invokes the Copilot
|
|
7
|
+
# SDK via copilot_generate.py.
|
|
8
|
+
#
|
|
9
|
+
# When --phase <N> is provided, runs only the specified phase (1-5) and its
|
|
10
|
+
# markdownlint validation. Phase mapping:
|
|
11
|
+
# 1 → specify (spec.md)
|
|
12
|
+
# 2 → clarify + checklist (spec.md, checklists/requirements.md)
|
|
13
|
+
# 3 → plan (plan.md + optional artifacts)
|
|
14
|
+
# 4 → tasks (tasks.md)
|
|
15
|
+
# 5 → analyze (analysis-report.md)
|
|
16
|
+
#
|
|
17
|
+
# When --phase is omitted, runs all phases sequentially (backward compatible).
|
|
18
|
+
#
|
|
19
|
+
# Usage: generate-spec-from-issue.sh [--phase <1-5>] [--max-retries <N>]
|
|
20
|
+
#
|
|
21
|
+
# Environment Variables (required):
|
|
22
|
+
# ISSUE_NUMBER - The GitHub issue number
|
|
23
|
+
# ISSUE_TITLE - The issue title
|
|
24
|
+
# ISSUE_BODY - The issue body/description
|
|
25
|
+
# ISSUE_URL - The issue URL
|
|
26
|
+
# SHORT_NAME - Sanitized short name for branch/directory
|
|
27
|
+
# COPILOT_GITHUB_TOKEN - Provided by the workflow via GitHub App token
|
|
28
|
+
#
|
|
29
|
+
# Environment Variables (optional):
|
|
30
|
+
# COPILOT_MODEL - Model to use via the Copilot SDK (default: claude-opus-4.6)
|
|
31
|
+
# COPILOT_TIMEOUT - Seconds to wait for a Copilot SDK response (default: 600).
|
|
32
|
+
# Plan, Tasks, and Analyze phases override this to 900.
|
|
33
|
+
# SPEC_BASE_PATH - Base path for specs (default: specs)
|
|
34
|
+
# AGDT_PLAN_CONTEXT_BUDGET - Context budget in characters for the plan phase
|
|
35
|
+
# (default: 32000). If the spec content exceeds this
|
|
36
|
+
# limit, deterministic reduction is applied before
|
|
37
|
+
# calling the LLM.
|
|
38
|
+
# MARKDOWNLINT_MAX_ITERATIONS - Maximum number of markdownlint validation/
|
|
39
|
+
# remediation iterations (default: 5). Phase 7
|
|
40
|
+
# retries up to this limit before failing.
|
|
41
|
+
# SPECKIT_COPILOT_CLI_ON_STALL - Enable recovery layers (Layer 3-5) on stall
|
|
42
|
+
# detection (default: true). Set to "false" to
|
|
43
|
+
# disable and fail immediately on stall.
|
|
44
|
+
# SPECKIT_CRITICAL_GATE_REMEDIATION - Enable/disable CRITICAL analysis gate
|
|
45
|
+
# remediation (default: true). When true,
|
|
46
|
+
# the gate attempts multi-layer LLM-based
|
|
47
|
+
# remediation before failing.
|
|
48
|
+
# SPECKIT_CRITICAL_GATE_MAX_RETRIES - Max retries for Layer 1 (standard LLM
|
|
49
|
+
# remediation) of CRITICAL gate (default: 2).
|
|
50
|
+
# AGDT_MIN_SPEC_BYTES_REDUCTION_FACTOR - Factor for dynamic MIN_SPEC_BYTES
|
|
51
|
+
# reduction on short issues (default: 0.6,
|
|
52
|
+
# range: 0.0–1.0). A value of 0.6 means
|
|
53
|
+
# the threshold floor is 60% of original.
|
|
54
|
+
# SPECIFY_MAX_RETRIES - Maximum validation-consuming retry attempts for Phase 1
|
|
55
|
+
# specify (default: 3).
|
|
56
|
+
# MIN_SPEC_BYTES - Minimum spec size in bytes (default: 2048).
|
|
57
|
+
# MIN_FUNCTIONAL_REQUIREMENTS - Minimum unique FR/NFR entries (default: 5).
|
|
58
|
+
# MIN_USER_STORIES - Minimum user stories with Given/When/Then (default: 3).
|
|
59
|
+
# MAX_BULLET_LINE_PCT - Maximum bullet-point percentage (default: 80).
|
|
60
|
+
#
|
|
61
|
+
# Outputs:
|
|
62
|
+
# GITHUB_OUTPUT: branch_name, spec_file, issue_number, spec_dir
|
|
63
|
+
|
|
64
|
+
set -euo pipefail
|
|
65
|
+
|
|
66
|
+
# ---------------------------------------------------------------------------
|
|
67
|
+
# Argument parsing: optional --phase <1-5>
|
|
68
|
+
# ---------------------------------------------------------------------------
|
|
69
|
+
PHASE=""
|
|
70
|
+
MAX_RETRIES=""
|
|
71
|
+
while [[ $# -gt 0 ]]; do
|
|
72
|
+
case "$1" in
|
|
73
|
+
--phase)
|
|
74
|
+
PHASE="${2:-}"
|
|
75
|
+
if [[ -z "$PHASE" ]]; then
|
|
76
|
+
echo "Error: --phase requires a value (1-5)" >&2
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
if [[ ! "$PHASE" =~ ^[1-5]$ ]]; then
|
|
80
|
+
echo "Error: --phase must be 1-5 (got '$PHASE')" >&2
|
|
81
|
+
exit 1
|
|
82
|
+
fi
|
|
83
|
+
shift 2
|
|
84
|
+
;;
|
|
85
|
+
--max-retries)
|
|
86
|
+
MAX_RETRIES="${2:-}"
|
|
87
|
+
if [[ -z "$MAX_RETRIES" ]]; then
|
|
88
|
+
echo "Error: --max-retries requires a value" >&2
|
|
89
|
+
exit 1
|
|
90
|
+
fi
|
|
91
|
+
if [[ ! "$MAX_RETRIES" =~ ^[0-9]+$ ]]; then
|
|
92
|
+
echo "Error: --max-retries must be a non-negative integer (got '$MAX_RETRIES')" >&2
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
shift 2
|
|
96
|
+
;;
|
|
97
|
+
*)
|
|
98
|
+
echo "Error: Unknown argument '$1'" >&2
|
|
99
|
+
exit 1
|
|
100
|
+
;;
|
|
101
|
+
esac
|
|
102
|
+
done
|
|
103
|
+
|
|
104
|
+
# Validate required environment variables
|
|
105
|
+
: "${ISSUE_NUMBER:?ISSUE_NUMBER is required}"
|
|
106
|
+
: "${ISSUE_TITLE:?ISSUE_TITLE is required}"
|
|
107
|
+
: "${SHORT_NAME:?SHORT_NAME is required}"
|
|
108
|
+
|
|
109
|
+
: "${COPILOT_GITHUB_TOKEN:?COPILOT_GITHUB_TOKEN is required (provided by workflow via GitHub App token)}"
|
|
110
|
+
|
|
111
|
+
ISSUE_BODY="${ISSUE_BODY:-}"
|
|
112
|
+
ISSUE_URL="${ISSUE_URL:-}"
|
|
113
|
+
COPILOT_MODEL="${COPILOT_MODEL:-claude-opus-4.6}"
|
|
114
|
+
SPEC_BASE_PATH="${SPEC_BASE_PATH:-specs}"
|
|
115
|
+
MARKDOWNLINT_MAX_ITERATIONS="${MARKDOWNLINT_MAX_ITERATIONS:-5}"
|
|
116
|
+
# Validate as a positive base-10 integer; fall back to default on bad input
|
|
117
|
+
# (e.g., non-numeric strings or octal-looking values like "08").
|
|
118
|
+
if ! [[ "$MARKDOWNLINT_MAX_ITERATIONS" =~ ^[0-9]+$ ]] || (( 10#$MARKDOWNLINT_MAX_ITERATIONS <= 0 )); then
|
|
119
|
+
echo "Warning: MARKDOWNLINT_MAX_ITERATIONS='$MARKDOWNLINT_MAX_ITERATIONS' is not a valid positive integer. Using default (5)." >&2
|
|
120
|
+
MARKDOWNLINT_MAX_ITERATIONS=5
|
|
121
|
+
fi
|
|
122
|
+
# Maximum prompt size in characters for per-file LLM remediation (NFR-004).
|
|
123
|
+
# Estimated token count = ceil(char_count / 4); 32000 chars ≈ 8000 tokens.
|
|
124
|
+
MARKDOWNLINT_PROMPT_MAX_CHARS=32000
|
|
125
|
+
# Pin markdownlint-cli2 version to prevent output format changes from breaking
|
|
126
|
+
# the parser. Update this AND .github/workflows/copilot-setup-steps.yml together.
|
|
127
|
+
MARKDOWNLINT_CLI2_VERSION="0.17.2"
|
|
128
|
+
# Enable/disable the enhanced recovery layers (Layer 3: multi-turn SDK remediation,
|
|
129
|
+
# Layer 4: alternate LLM remediation) on stall detection. Set to "false" to disable.
|
|
130
|
+
SPECKIT_COPILOT_CLI_ON_STALL="${SPECKIT_COPILOT_CLI_ON_STALL:-true}"
|
|
131
|
+
# Enable/disable CRITICAL analysis gate remediation. When enabled, the gate
|
|
132
|
+
# attempts LLM-based remediation before failing. Set to "false" to disable.
|
|
133
|
+
SPECKIT_CRITICAL_GATE_REMEDIATION="${SPECKIT_CRITICAL_GATE_REMEDIATION:-true}"
|
|
134
|
+
# Maximum retries for Layer 1 (standard LLM remediation) of the CRITICAL gate.
|
|
135
|
+
SPECKIT_CRITICAL_GATE_MAX_RETRIES="${SPECKIT_CRITICAL_GATE_MAX_RETRIES:-2}"
|
|
136
|
+
# Validate as a non-negative base-10 integer; fall back to default on bad input.
|
|
137
|
+
if ! [[ "$SPECKIT_CRITICAL_GATE_MAX_RETRIES" =~ ^[0-9]+$ ]]; then
|
|
138
|
+
echo "Warning: SPECKIT_CRITICAL_GATE_MAX_RETRIES='$SPECKIT_CRITICAL_GATE_MAX_RETRIES' is not a valid non-negative integer. Using default (2)." >&2
|
|
139
|
+
SPECKIT_CRITICAL_GATE_MAX_RETRIES=2
|
|
140
|
+
fi
|
|
141
|
+
|
|
142
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
143
|
+
REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
|
|
144
|
+
|
|
145
|
+
# Source the CRITICAL analysis gate library (FR-009)
|
|
146
|
+
# shellcheck source=check-analysis-gate.sh
|
|
147
|
+
source "$SCRIPT_DIR/check-analysis-gate.sh"
|
|
148
|
+
|
|
149
|
+
# Source shared retry library
|
|
150
|
+
# shellcheck source=lib/retry.sh
|
|
151
|
+
source "$SCRIPT_DIR/lib/retry.sh"
|
|
152
|
+
|
|
153
|
+
# ---------------------------------------------------------------------------
|
|
154
|
+
# Validate and normalize HIERARCHY_LEVEL (FR-001, FR-010, #1859)
|
|
155
|
+
# Done BEFORE sourcing spec-validation.sh, which reads HIERARCHY_LEVEL at
|
|
156
|
+
# source time (e.g. to set MIN_USER_STORIES=0 for epic level).
|
|
157
|
+
# Valid values: epic, feature, task. Defaults to 'feature' when unset or empty.
|
|
158
|
+
# Normalizes to lowercase so callers can pass 'Epic', 'FEATURE', etc.
|
|
159
|
+
# Unknown values log a warning and fall back to 'feature'.
|
|
160
|
+
# ---------------------------------------------------------------------------
|
|
161
|
+
HIERARCHY_LEVEL="$(printf '%s' "${HIERARCHY_LEVEL:-feature}" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
|
|
162
|
+
if [[ ! "$HIERARCHY_LEVEL" =~ ^(epic|feature|task)$ ]]; then
|
|
163
|
+
echo "Warning: Unknown HIERARCHY_LEVEL='$HIERARCHY_LEVEL'. Defaulting to 'feature'." >&2
|
|
164
|
+
HIERARCHY_LEVEL="feature"
|
|
165
|
+
fi
|
|
166
|
+
echo "Hierarchy level: $HIERARCHY_LEVEL"
|
|
167
|
+
|
|
168
|
+
# Source Phase 1 spec validation library (FR-001, #1505)
|
|
169
|
+
# shellcheck source=lib/spec-validation.sh
|
|
170
|
+
source "$SCRIPT_DIR/lib/spec-validation.sh"
|
|
171
|
+
|
|
172
|
+
# ---------------------------------------------------------------------------
|
|
173
|
+
# Validate ISSUE_NUMBER is a positive integer (FR-011)
|
|
174
|
+
# ---------------------------------------------------------------------------
|
|
175
|
+
if [[ ! "$ISSUE_NUMBER" =~ ^[1-9][0-9]*$ ]]; then
|
|
176
|
+
echo "Error: ISSUE_NUMBER must be a positive integer (got '$ISSUE_NUMBER')" >&2
|
|
177
|
+
exit 1
|
|
178
|
+
fi
|
|
179
|
+
|
|
180
|
+
echo "=== SpecKit: Generating Full Planning Artifact Suite ==="
|
|
181
|
+
echo "Issue: #$ISSUE_NUMBER - $ISSUE_TITLE"
|
|
182
|
+
echo "Model: $COPILOT_MODEL"
|
|
183
|
+
|
|
184
|
+
# Function to get the next feature number (legacy autoincrement, kept for
|
|
185
|
+
# potential fallback use). Only counts directories/branches that match the
|
|
186
|
+
# legacy 3-digit prefix pattern ^[0-9]{3}- so that issue-numbered directories
|
|
187
|
+
# with non-3-digit prefixes (e.g. 42-foo, 1176-bar) do not inflate the
|
|
188
|
+
# autoincrement counter (FR-007). Note: 3-digit issue numbers (100–999) will
|
|
189
|
+
# still match the legacy pattern and be counted — this is an accepted overlap
|
|
190
|
+
# since the autoincrement function is only used as a fallback.
|
|
191
|
+
get_next_feature_number() {
|
|
192
|
+
local highest=0
|
|
193
|
+
|
|
194
|
+
# Check existing specs directories — only legacy 3-digit prefixed dirs
|
|
195
|
+
if [[ -d "$REPO_ROOT/$SPEC_BASE_PATH" ]]; then
|
|
196
|
+
for dir in "$REPO_ROOT/$SPEC_BASE_PATH"/*; do
|
|
197
|
+
[[ -d "$dir" ]] || continue
|
|
198
|
+
dirname=$(basename "$dir")
|
|
199
|
+
# Only match legacy 3-digit prefixed directories (FR-007)
|
|
200
|
+
echo "$dirname" | grep -q '^[0-9]\{3\}-' || continue
|
|
201
|
+
number=$(echo "$dirname" | grep -o '^[0-9]\{3\}')
|
|
202
|
+
number=$((10#$number))
|
|
203
|
+
if [[ $number -gt $highest ]]; then
|
|
204
|
+
highest=$number
|
|
205
|
+
fi
|
|
206
|
+
done
|
|
207
|
+
fi
|
|
208
|
+
|
|
209
|
+
# Check branches — already correctly filters ^[0-9]{3}-
|
|
210
|
+
branches=$(git branch -a 2>/dev/null || echo "")
|
|
211
|
+
if [[ -n "$branches" ]]; then
|
|
212
|
+
while IFS= read -r branch; do
|
|
213
|
+
clean_branch=$(echo "$branch" | sed 's/^[* ]*//; s|^remotes/[^/]*/||')
|
|
214
|
+
if echo "$clean_branch" | grep -q '^[0-9]\{3\}-'; then
|
|
215
|
+
number=$(echo "$clean_branch" | grep -o '^[0-9]\{3\}' || echo "0")
|
|
216
|
+
number=$((10#$number))
|
|
217
|
+
if [[ $number -gt $highest ]]; then
|
|
218
|
+
highest=$number
|
|
219
|
+
fi
|
|
220
|
+
fi
|
|
221
|
+
done <<< "$branches"
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
echo $((highest + 1))
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
# ---------------------------------------------------------------------------
|
|
228
|
+
# Collision detection & directory reuse (FR-004, FR-012, FR-015)
|
|
229
|
+
#
|
|
230
|
+
# Use the GitHub issue number directly as the spec directory prefix instead
|
|
231
|
+
# of autoincrementing. If a directory for this issue already exists, reuse
|
|
232
|
+
# it (even if the issue title — and therefore SHORT_NAME — has changed).
|
|
233
|
+
# ---------------------------------------------------------------------------
|
|
234
|
+
EXISTING_DIRS=()
|
|
235
|
+
|
|
236
|
+
shopt -s nullglob
|
|
237
|
+
for dir in "$REPO_ROOT/$SPEC_BASE_PATH"/${ISSUE_NUMBER}-*; do
|
|
238
|
+
if [[ -d "$dir" ]]; then
|
|
239
|
+
EXISTING_DIRS+=("$dir")
|
|
240
|
+
fi
|
|
241
|
+
done
|
|
242
|
+
shopt -u nullglob
|
|
243
|
+
|
|
244
|
+
if (( ${#EXISTING_DIRS[@]} > 1 )); then
|
|
245
|
+
echo "Error: Found multiple existing spec directories for issue #$ISSUE_NUMBER:" >&2
|
|
246
|
+
for dir in "${EXISTING_DIRS[@]}"; do
|
|
247
|
+
echo " - $(basename "$dir")" >&2
|
|
248
|
+
done
|
|
249
|
+
echo "Refusing to choose one directory non-deterministically. Remove or rename the extra directories and retry." >&2
|
|
250
|
+
exit 1
|
|
251
|
+
fi
|
|
252
|
+
|
|
253
|
+
EXISTING_DIR=""
|
|
254
|
+
if (( ${#EXISTING_DIRS[@]} == 1 )); then
|
|
255
|
+
EXISTING_DIR="${EXISTING_DIRS[0]}"
|
|
256
|
+
fi
|
|
257
|
+
|
|
258
|
+
if [[ -n "$EXISTING_DIR" ]]; then
|
|
259
|
+
# FR-015: For 3-digit issue numbers (100-999), the prefix overlaps with
|
|
260
|
+
# the legacy ^[0-9]{3}- namespace. Verify that the candidate directory
|
|
261
|
+
# actually belongs to this issue by checking for a Source Issue marker.
|
|
262
|
+
if [[ ${#ISSUE_NUMBER} -eq 3 ]]; then
|
|
263
|
+
SOURCE_ISSUE_FOUND=false
|
|
264
|
+
for artifact in "$EXISTING_DIR/checklists/requirements.md" "$EXISTING_DIR/spec.md"; do
|
|
265
|
+
if [[ -f "$artifact" ]] && grep -Eq "\*\*Source Issue\*\*.*#${ISSUE_NUMBER}([^0-9]|$)" "$artifact"; then
|
|
266
|
+
SOURCE_ISSUE_FOUND=true
|
|
267
|
+
break
|
|
268
|
+
fi
|
|
269
|
+
done
|
|
270
|
+
if [[ "$SOURCE_ISSUE_FOUND" != "true" ]]; then
|
|
271
|
+
echo "Error: Found existing directory '$(basename "$EXISTING_DIR")' but it does not contain a matching Source Issue marker for #$ISSUE_NUMBER." >&2
|
|
272
|
+
echo "This may be an unrelated legacy directory. Refusing to reuse." >&2
|
|
273
|
+
exit 1
|
|
274
|
+
fi
|
|
275
|
+
fi
|
|
276
|
+
|
|
277
|
+
# Reuse existing directory (FR-012: stable identity even if title changed)
|
|
278
|
+
EXISTING_DIRNAME=$(basename "$EXISTING_DIR")
|
|
279
|
+
BRANCH_NAME="$EXISTING_DIRNAME"
|
|
280
|
+
SPEC_DIR="$EXISTING_DIR"
|
|
281
|
+
echo "Reusing existing spec directory: $EXISTING_DIRNAME"
|
|
282
|
+
else
|
|
283
|
+
# Create new directory with raw issue number prefix (FR-001)
|
|
284
|
+
BRANCH_NAME="${ISSUE_NUMBER}-${SHORT_NAME}"
|
|
285
|
+
SPEC_DIR="$REPO_ROOT/$SPEC_BASE_PATH/$BRANCH_NAME"
|
|
286
|
+
fi
|
|
287
|
+
SPEC_FILE="$SPEC_BASE_PATH/$(basename "$SPEC_DIR")/spec.md"
|
|
288
|
+
|
|
289
|
+
echo "Branch: $BRANCH_NAME"
|
|
290
|
+
echo "Spec Directory: $SPEC_DIR"
|
|
291
|
+
|
|
292
|
+
# Create spec directory structure
|
|
293
|
+
mkdir -p "$SPEC_DIR"
|
|
294
|
+
mkdir -p "$SPEC_DIR/checklists"
|
|
295
|
+
mkdir -p "$SPEC_DIR/contracts"
|
|
296
|
+
# Add .gitkeep files so empty directories are tracked by git and appear in the
|
|
297
|
+
# PR artifact list. Later phases will populate these directories with real files.
|
|
298
|
+
touch "$SPEC_DIR/checklists/.gitkeep"
|
|
299
|
+
touch "$SPEC_DIR/contracts/.gitkeep"
|
|
300
|
+
|
|
301
|
+
# Copy spec-directory markdownlint config override (stricter than root —
|
|
302
|
+
# enforces MD041 without the front_matter_title exemption since specs
|
|
303
|
+
# never use front matter).
|
|
304
|
+
# Compute the correct relative path to repo-root .markdownlint.json based on
|
|
305
|
+
# the actual depth of SPEC_DIR, so this works for any SPEC_BASE_PATH depth.
|
|
306
|
+
# NOTE: The root .markdownlint-cli2.jsonc has a "config" section, which
|
|
307
|
+
# disables per-directory .markdownlint.json discovery. Phase 7 lint calls
|
|
308
|
+
# therefore run with cwd=$spec_dir so markdownlint-cli2 does NOT find the
|
|
309
|
+
# root .markdownlint-cli2.jsonc, falling back to markdownlint's own
|
|
310
|
+
# per-file directory-based config resolution that honours this override.
|
|
311
|
+
_mdlint_template="$SCRIPT_DIR/templates/spec-markdownlint.json"
|
|
312
|
+
if [[ -f "$_mdlint_template" ]]; then
|
|
313
|
+
_spec_rel="${SPEC_DIR#"$REPO_ROOT/"}"
|
|
314
|
+
_depth=$(echo "$_spec_rel" | tr '/' '\n' | wc -l)
|
|
315
|
+
_extends_prefix=""
|
|
316
|
+
for (( _i=0; _i<_depth; _i++ )); do _extends_prefix="../$_extends_prefix"; done
|
|
317
|
+
_extends_path="${_extends_prefix}.markdownlint.json"
|
|
318
|
+
sed "s|\"extends\": \"../../.markdownlint.json\"|\"extends\": \"${_extends_path}\"|" \
|
|
319
|
+
"$_mdlint_template" > "$SPEC_DIR/.markdownlint.json"
|
|
320
|
+
fi
|
|
321
|
+
|
|
322
|
+
# ---------------------------------------------------------------------------
|
|
323
|
+
# Retry helper — provided by shared library (lib/retry.sh)
|
|
324
|
+
# Usage: call_with_retry <max_attempts> <initial_delay_seconds> <command...>
|
|
325
|
+
# ---------------------------------------------------------------------------
|
|
326
|
+
|
|
327
|
+
# ---------------------------------------------------------------------------
|
|
328
|
+
# call_llm <prompt_text>
|
|
329
|
+
#
|
|
330
|
+
# Generic LLM invocation via the Copilot SDK. Sends the prompt to
|
|
331
|
+
# copilot_generate.py and prints the response to stdout.
|
|
332
|
+
# Returns non-zero on empty/failed response.
|
|
333
|
+
# ---------------------------------------------------------------------------
|
|
334
|
+
call_llm() {
|
|
335
|
+
local prompt="$1"
|
|
336
|
+
local response=""
|
|
337
|
+
|
|
338
|
+
_call_api() {
|
|
339
|
+
response=$(printf '%s' "$prompt" | python "$SCRIPT_DIR/copilot_generate.py")
|
|
340
|
+
local exit_code=$?
|
|
341
|
+
if [[ $exit_code -ne 0 ]]; then
|
|
342
|
+
return "$exit_code"
|
|
343
|
+
fi
|
|
344
|
+
if [[ -z "$response" ]]; then
|
|
345
|
+
echo "Empty response from LLM (copilot_generate.py produced no output)." >&2
|
|
346
|
+
return 1
|
|
347
|
+
fi
|
|
348
|
+
return 0
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if ! call_with_retry 3 5 _call_api; then
|
|
352
|
+
return 1
|
|
353
|
+
fi
|
|
354
|
+
|
|
355
|
+
printf '%s' "$response"
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
# ---------------------------------------------------------------------------
|
|
359
|
+
# append_model_footer <file>
|
|
360
|
+
#
|
|
361
|
+
# Appends a standard model-attribution footer to an artifact file.
|
|
362
|
+
# Idempotent: strips any existing footer before appending.
|
|
363
|
+
# ---------------------------------------------------------------------------
|
|
364
|
+
append_model_footer() {
|
|
365
|
+
local file="$1"
|
|
366
|
+
local tmp_footer_file="${file}.footer.tmp"
|
|
367
|
+
# Strip any existing footer to avoid duplication (only at end of file)
|
|
368
|
+
local content
|
|
369
|
+
content=$(_strip_footer_from_text "$(cat "$file")")
|
|
370
|
+
rm -f "$tmp_footer_file"
|
|
371
|
+
if ! printf '%s\n\n---\n*Generated by Copilot SDK (%s)*\n' "$content" "$COPILOT_MODEL" > "$tmp_footer_file"; then
|
|
372
|
+
echo "Error: Failed to write footer to temporary file: $tmp_footer_file" >&2
|
|
373
|
+
rm -f "$tmp_footer_file"
|
|
374
|
+
return 1
|
|
375
|
+
fi
|
|
376
|
+
if ! mv "$tmp_footer_file" "$file"; then
|
|
377
|
+
echo "Error: Failed to move file with footer into place: $file" >&2
|
|
378
|
+
rm -f "$tmp_footer_file"
|
|
379
|
+
return 1
|
|
380
|
+
fi
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
# ---------------------------------------------------------------------------
|
|
384
|
+
# strip_model_footer <text>
|
|
385
|
+
#
|
|
386
|
+
# Removes the model-attribution footer from artifact content before feeding
|
|
387
|
+
# it into an LLM prompt, so footers don't pollute the context or duplicate.
|
|
388
|
+
# Prints the stripped content to stdout.
|
|
389
|
+
# ---------------------------------------------------------------------------
|
|
390
|
+
strip_model_footer() {
|
|
391
|
+
_strip_footer_from_text "$1"
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
# ---------------------------------------------------------------------------
|
|
395
|
+
# _strip_footer_from_text <text>
|
|
396
|
+
#
|
|
397
|
+
# Internal helper: removes a trailing model-attribution footer from text.
|
|
398
|
+
# The sed pattern is anchored to end-of-string ($), so markdown horizontal
|
|
399
|
+
# rules (---) elsewhere in the content are preserved.
|
|
400
|
+
# ---------------------------------------------------------------------------
|
|
401
|
+
_strip_footer_from_text() {
|
|
402
|
+
local text="$1"
|
|
403
|
+
# Remove trailing model-attribution footer: blank line(s) + --- + attribution line.
|
|
404
|
+
# The sed substitution only matches at the end of text ($), so markdown horizontal
|
|
405
|
+
# rules (---) elsewhere in the content are preserved. When no footer is present
|
|
406
|
+
# the substitution is a no-op and the text passes through unchanged.
|
|
407
|
+
# Note: use [[:space:]] instead of \s for POSIX ERE portability (GNU sed treats \s as literal 's')
|
|
408
|
+
printf '%s' "$text" | sed -E ':a;N;$!ba;s/\n*\n---\n\*Generated by Copilot SDK \([^)]*\)\*[[:space:]]*$//'
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
# ========================== Markdownlint Validation ==========================
|
|
412
|
+
|
|
413
|
+
# ---------------------------------------------------------------------------
|
|
414
|
+
# log_file_header <phase_label> <filepath>
|
|
415
|
+
#
|
|
416
|
+
# Logs the first 3 lines of a generated file to stderr for quick preamble
|
|
417
|
+
# detection. If the file is empty, logs "(empty)" instead.
|
|
418
|
+
# ---------------------------------------------------------------------------
|
|
419
|
+
log_file_header() {
|
|
420
|
+
local phase_label="$1"
|
|
421
|
+
local filepath="$2"
|
|
422
|
+
local filename
|
|
423
|
+
filename=$(basename "$filepath")
|
|
424
|
+
if [[ ! -s "$filepath" ]]; then
|
|
425
|
+
echo "[$phase_label] First lines of $filename: (empty)" >&2
|
|
426
|
+
return 0
|
|
427
|
+
fi
|
|
428
|
+
local first_lines
|
|
429
|
+
first_lines=$(head -n 3 "$filepath" | awk 'BEGIN { sep = "" } { printf "%s%s", sep, $0; sep = " | " }')
|
|
430
|
+
echo "[$phase_label] First lines of $filename: $first_lines" >&2
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
# ---------------------------------------------------------------------------
|
|
434
|
+
# check_npx_available
|
|
435
|
+
#
|
|
436
|
+
# Guards against missing npx. Returns 0 if npx is available, 1 otherwise
|
|
437
|
+
# with an actionable error message to stderr.
|
|
438
|
+
# ---------------------------------------------------------------------------
|
|
439
|
+
check_npx_available() {
|
|
440
|
+
if ! command -v npx &>/dev/null; then
|
|
441
|
+
echo "Error: npx is not available. Install Node.js/npm to enable markdownlint validation." >&2
|
|
442
|
+
return 1
|
|
443
|
+
fi
|
|
444
|
+
return 0
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
# ---------------------------------------------------------------------------
|
|
448
|
+
# _join_continuation_lines <raw_output>
|
|
449
|
+
#
|
|
450
|
+
# Pre-processes raw markdownlint output to join continuation lines back onto
|
|
451
|
+
# the preceding violation line. markdownlint-cli2 v0.22+ can wrap long
|
|
452
|
+
# [Context: ...] descriptions onto separate lines. A "violation start line"
|
|
453
|
+
# is any line matching ^.+\.md:[0-9]+ (file path followed by : and a line number).
|
|
454
|
+
# Subsequent lines that do NOT match that pattern are appended to the previous
|
|
455
|
+
# violation line separated by a single space, except for known markdownlint
|
|
456
|
+
# metadata/footer lines and blank separators, which act as boundaries.
|
|
457
|
+
# ---------------------------------------------------------------------------
|
|
458
|
+
_join_continuation_lines() {
|
|
459
|
+
local raw="$1"
|
|
460
|
+
[[ -z "$raw" ]] && return 0
|
|
461
|
+
printf '%s\n' "$raw" | awk '
|
|
462
|
+
function flush_buf() {
|
|
463
|
+
if (buf != "") {
|
|
464
|
+
print buf
|
|
465
|
+
buf = ""
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
/^.+\.md:[0-9]+/ {
|
|
469
|
+
flush_buf()
|
|
470
|
+
buf = $0
|
|
471
|
+
next
|
|
472
|
+
}
|
|
473
|
+
/^[[:space:]]*$/ {
|
|
474
|
+
flush_buf()
|
|
475
|
+
next
|
|
476
|
+
}
|
|
477
|
+
/^markdownlint-cli2/ || /^Finding:/ || /^Linting:/ || /^Summary:/ {
|
|
478
|
+
flush_buf()
|
|
479
|
+
next
|
|
480
|
+
}
|
|
481
|
+
{
|
|
482
|
+
if (buf != "") buf = buf " " $0
|
|
483
|
+
}
|
|
484
|
+
END {
|
|
485
|
+
flush_buf()
|
|
486
|
+
}
|
|
487
|
+
'
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
# ---------------------------------------------------------------------------
|
|
491
|
+
# _count_raw_violations <raw_output>
|
|
492
|
+
#
|
|
493
|
+
# Fallback violation counter: counts lines matching ^.+\.md:[0-9]+ in the raw
|
|
494
|
+
# markdownlint output. Used only for logging when parse_markdownlint_output
|
|
495
|
+
# returns 0 violations despite a non-zero lint exit code.
|
|
496
|
+
# ---------------------------------------------------------------------------
|
|
497
|
+
_count_raw_violations() {
|
|
498
|
+
local raw="$1"
|
|
499
|
+
[[ -z "$raw" ]] && { echo "0"; return 0; }
|
|
500
|
+
local count
|
|
501
|
+
count=$(printf '%s\n' "$raw" | grep -cE '^.+\.md:[0-9]+' || true)
|
|
502
|
+
echo "$count"
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
# ---------------------------------------------------------------------------
|
|
506
|
+
# parse_markdownlint_output <raw_output>
|
|
507
|
+
#
|
|
508
|
+
# Parses markdownlint-cli2 stdout/stderr output into structured violation
|
|
509
|
+
# records. Each output line is in the format:
|
|
510
|
+
# filename:line:col rule/alias description
|
|
511
|
+
# Prints one record per line as tab-separated: filename\tline\tcol\trule\tdescription
|
|
512
|
+
# ---------------------------------------------------------------------------
|
|
513
|
+
parse_markdownlint_output() {
|
|
514
|
+
local raw="$1"
|
|
515
|
+
if [[ -z "$raw" ]]; then
|
|
516
|
+
return 0
|
|
517
|
+
fi
|
|
518
|
+
# Match lines like: path/file.md:10:1 MD013/line-length Expected: ...
|
|
519
|
+
# or: path/file.md:10:1 error MD013/line-length Expected: ...
|
|
520
|
+
# or: path/file.md:10 MD013/line-length Expected: ...
|
|
521
|
+
# markdownlint-cli2 v0.22+ inserts "error"/"warning" between location and rule
|
|
522
|
+
_join_continuation_lines "$raw" | while IFS= read -r line; do
|
|
523
|
+
# Skip empty lines and summary/metadata lines
|
|
524
|
+
[[ -z "$line" ]] && continue
|
|
525
|
+
[[ "$line" =~ ^markdownlint-cli2 ]] && continue
|
|
526
|
+
[[ "$line" =~ ^Finding: ]] && continue
|
|
527
|
+
[[ "$line" =~ ^Linting: ]] && continue
|
|
528
|
+
[[ "$line" =~ ^Summary: ]] && continue
|
|
529
|
+
# Pattern with col and severity: filename:line:col [error|warning] rule description
|
|
530
|
+
if [[ "$line" =~ ^(.+):([0-9]+):([0-9]+)[[:space:]]+(error|warning)[[:space:]]+([A-Z]+[0-9]+/[^[:space:]]+)[[:space:]]+(.+)$ ]]; then
|
|
531
|
+
printf '%s\t%s\t%s\t%s\t%s\n' "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "${BASH_REMATCH[3]}" "${BASH_REMATCH[5]}" "${BASH_REMATCH[6]}"
|
|
532
|
+
# Pattern with col, no severity: filename:line:col rule description
|
|
533
|
+
elif [[ "$line" =~ ^(.+):([0-9]+):([0-9]+)[[:space:]]+([A-Z]+[0-9]+/[^[:space:]]+)[[:space:]]+(.+)$ ]]; then
|
|
534
|
+
printf '%s\t%s\t%s\t%s\t%s\n' "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "${BASH_REMATCH[3]}" "${BASH_REMATCH[4]}" "${BASH_REMATCH[5]}"
|
|
535
|
+
# Pattern without col, with severity: filename:line [error|warning] rule description
|
|
536
|
+
elif [[ "$line" =~ ^(.+):([0-9]+)[[:space:]]+(error|warning)[[:space:]]+([A-Z]+[0-9]+/[^[:space:]]+)[[:space:]]+(.+)$ ]]; then
|
|
537
|
+
printf '%s\t%s\t%s\t%s\t%s\n' "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "0" "${BASH_REMATCH[4]}" "${BASH_REMATCH[5]}"
|
|
538
|
+
# Pattern without col, no severity: filename:line rule description
|
|
539
|
+
elif [[ "$line" =~ ^(.+):([0-9]+)[[:space:]]+([A-Z]+[0-9]+/[^[:space:]]+)[[:space:]]+(.+)$ ]]; then
|
|
540
|
+
printf '%s\t%s\t%s\t%s\t%s\n' "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}" "0" "${BASH_REMATCH[3]}" "${BASH_REMATCH[4]}"
|
|
541
|
+
else
|
|
542
|
+
# Explicit no-op: prevents unmatched lines from leaving a non-zero
|
|
543
|
+
# exit status on the if-elif chain, which with set -euo pipefail
|
|
544
|
+
# would propagate through the pipeline and abort the caller.
|
|
545
|
+
:
|
|
546
|
+
fi
|
|
547
|
+
done
|
|
548
|
+
return 0
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
# ---------------------------------------------------------------------------
|
|
552
|
+
# compute_violation_fingerprint <parsed_violations>
|
|
553
|
+
#
|
|
554
|
+
# Produces a deterministic fingerprint from parsed violations for stall
|
|
555
|
+
# detection. Uses filename, line, col, and rule (stable identity fields).
|
|
556
|
+
# Prints an md5sum hash to stdout.
|
|
557
|
+
# ---------------------------------------------------------------------------
|
|
558
|
+
compute_violation_fingerprint() {
|
|
559
|
+
local violations="$1"
|
|
560
|
+
if [[ -z "$violations" ]]; then
|
|
561
|
+
echo "empty"
|
|
562
|
+
return 0
|
|
563
|
+
fi
|
|
564
|
+
# Extract stable fields (filename, line, col, rule), sort, and hash
|
|
565
|
+
echo "$violations" | awk -F'\t' '{print $1, $2, $3, $4}' | sort | md5sum | awk '{print $1}'
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
# ---------------------------------------------------------------------------
|
|
569
|
+
# _is_valid_md_start <line>
|
|
570
|
+
#
|
|
571
|
+
# Returns 0 (true) if the given line looks like a valid markdown construct
|
|
572
|
+
# that could legitimately begin a file: heading, blockquote, list item,
|
|
573
|
+
# table row, link/image, fenced code, ordered list, setext underline, or
|
|
574
|
+
# HTML comment. Used by strip_llm_preamble to distinguish real content
|
|
575
|
+
# from conversational preamble.
|
|
576
|
+
#
|
|
577
|
+
# Defined at top level (not inside strip_llm_preamble) because bash
|
|
578
|
+
# function definitions are always global — nesting would pollute the
|
|
579
|
+
# caller's namespace just the same.
|
|
580
|
+
# ---------------------------------------------------------------------------
|
|
581
|
+
_is_valid_md_start() {
|
|
582
|
+
local line="$1"
|
|
583
|
+
[[ -z "$line" ]] && return 1
|
|
584
|
+
# Headings may be indented by up to 3 spaces (CommonMark). 4+ spaces are code blocks.
|
|
585
|
+
local leading_spaces="${line%%[! ]*}"
|
|
586
|
+
local trimmed="${line#"$leading_spaces"}"
|
|
587
|
+
[[ "$trimmed" =~ ^#{1,6}[[:space:]]+ && "${#leading_spaces}" -le 3 ]] && return 0
|
|
588
|
+
[[ "$line" =~ ^\> ]] && return 0
|
|
589
|
+
[[ "$line" =~ ^-[[:space:]]+ ]] && return 0
|
|
590
|
+
[[ "$line" =~ ^\*[[:space:]]+ ]] && return 0
|
|
591
|
+
[[ "$line" =~ ^\+[[:space:]]+ ]] && return 0
|
|
592
|
+
[[ "$line" =~ ^\| ]] && return 0
|
|
593
|
+
[[ "$line" =~ ^\[ ]] && return 0
|
|
594
|
+
[[ "$line" =~ ^! ]] && return 0
|
|
595
|
+
[[ "$line" =~ ^\`\`\` ]] && return 0
|
|
596
|
+
[[ "$line" =~ ^[0-9]+\.[[:space:]]+ ]] && return 0
|
|
597
|
+
[[ "$line" =~ ^---+ ]] && return 0
|
|
598
|
+
[[ "$line" =~ ^===+ ]] && return 0
|
|
599
|
+
[[ "$line" == "<!--"* ]] && return 0
|
|
600
|
+
return 1
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
# ---------------------------------------------------------------------------
|
|
604
|
+
# strip_llm_preamble <llm_output> <original_first_line>
|
|
605
|
+
#
|
|
606
|
+
# Safety net that removes conversational preamble text that LLMs sometimes
|
|
607
|
+
# prepend to their output (e.g. "All 13 violations fixed — here's the
|
|
608
|
+
# corrected file:"). If the first line of the LLM output does not look
|
|
609
|
+
# like valid markdown, the function searches for the first heading line
|
|
610
|
+
# (# ...) when the original file started with a heading, or strips lines
|
|
611
|
+
# until a recognised markdown construct is found.
|
|
612
|
+
#
|
|
613
|
+
# Prints the cleaned content to stdout. If no preamble is detected, the
|
|
614
|
+
# output is identical to the input (no-op).
|
|
615
|
+
# ---------------------------------------------------------------------------
|
|
616
|
+
strip_llm_preamble() {
|
|
617
|
+
local llm_output="$1"
|
|
618
|
+
local original_first_line="${2:-}"
|
|
619
|
+
local _fl line
|
|
620
|
+
|
|
621
|
+
[[ -z "$llm_output" ]] && return 0
|
|
622
|
+
|
|
623
|
+
# Strip BOM marker (UTF-8 BOM: EF BB BF) if present at the start (FR-006)
|
|
624
|
+
# The BOM is a single Unicode character U+FEFF encoded as 3 bytes in UTF-8
|
|
625
|
+
local bom=$'\xEF\xBB\xBF'
|
|
626
|
+
if [[ "${llm_output}" == "${bom}"* ]]; then
|
|
627
|
+
llm_output="${llm_output#"${bom}"}"
|
|
628
|
+
fi
|
|
629
|
+
|
|
630
|
+
# Skip leading blank/whitespace-only lines to find the first non-empty line.
|
|
631
|
+
# A blank first line should not be treated as a valid markdown start.
|
|
632
|
+
local first_line=""
|
|
633
|
+
local skipped_blanks=false
|
|
634
|
+
while IFS= read -r _fl; do
|
|
635
|
+
if [[ "$_fl" =~ [^[:space:]] ]]; then
|
|
636
|
+
first_line="$_fl"
|
|
637
|
+
break
|
|
638
|
+
else
|
|
639
|
+
skipped_blanks=true
|
|
640
|
+
fi
|
|
641
|
+
done <<< "$llm_output"
|
|
642
|
+
|
|
643
|
+
# If the entire output is blank lines, return as-is
|
|
644
|
+
[[ -z "$first_line" ]] && { printf '%s' "$llm_output"; return 0; }
|
|
645
|
+
|
|
646
|
+
# If the first non-empty line is valid markdown...
|
|
647
|
+
if _is_valid_md_start "$first_line"; then
|
|
648
|
+
if [[ "$skipped_blanks" == true ]]; then
|
|
649
|
+
# Leading blank lines before valid markdown — trim them to avoid
|
|
650
|
+
# MD041 violations (the file must start with content, not blanks).
|
|
651
|
+
local trimmed=""
|
|
652
|
+
local found=false
|
|
653
|
+
while IFS= read -r line; do
|
|
654
|
+
if [[ "$found" == true ]]; then
|
|
655
|
+
trimmed+="$line"$'\n'
|
|
656
|
+
elif [[ "$line" =~ [^[:space:]] ]]; then
|
|
657
|
+
found=true
|
|
658
|
+
trimmed+="$line"$'\n'
|
|
659
|
+
fi
|
|
660
|
+
done <<< "$llm_output"
|
|
661
|
+
[[ -n "$trimmed" ]] && trimmed="${trimmed%$'\n'}"
|
|
662
|
+
printf '%s' "$trimmed"
|
|
663
|
+
else
|
|
664
|
+
# No leading blanks — return as-is
|
|
665
|
+
printf '%s' "$llm_output"
|
|
666
|
+
fi
|
|
667
|
+
return 0
|
|
668
|
+
fi
|
|
669
|
+
|
|
670
|
+
# Multi-line preamble detection (FR-006): if lines 1–3 are conversational
|
|
671
|
+
# but a subsequent line (within first 5 lines) is a heading, strip only
|
|
672
|
+
# the preamble lines.
|
|
673
|
+
local line_num=0
|
|
674
|
+
local found_heading_in_early_lines=false
|
|
675
|
+
while IFS= read -r line; do
|
|
676
|
+
line_num=$((line_num + 1))
|
|
677
|
+
[[ "$line_num" -gt 5 ]] && break
|
|
678
|
+
if [[ "$line_num" -gt 1 ]] && [[ "$line" =~ ^#{1,6}[[:space:]]+ ]]; then
|
|
679
|
+
found_heading_in_early_lines=true
|
|
680
|
+
break
|
|
681
|
+
fi
|
|
682
|
+
done <<< "$llm_output"
|
|
683
|
+
|
|
684
|
+
if [[ "$found_heading_in_early_lines" == true ]]; then
|
|
685
|
+
# Strip preamble lines before the heading
|
|
686
|
+
local result=""
|
|
687
|
+
local found_md=false
|
|
688
|
+
while IFS= read -r line; do
|
|
689
|
+
if [[ "$found_md" == true ]]; then
|
|
690
|
+
result+="$line"$'\n'
|
|
691
|
+
elif [[ "$line" =~ ^#{1,6}[[:space:]]+ ]]; then
|
|
692
|
+
found_md=true
|
|
693
|
+
result+="$line"$'\n'
|
|
694
|
+
fi
|
|
695
|
+
done <<< "$llm_output"
|
|
696
|
+
if [[ "$found_md" == true && -n "$result" ]]; then
|
|
697
|
+
printf '%s' "${result%$'\n'}"
|
|
698
|
+
return 0
|
|
699
|
+
fi
|
|
700
|
+
fi
|
|
701
|
+
|
|
702
|
+
# Preamble detected — log a warning
|
|
703
|
+
echo "[Sanitize] ⚠ LLM preamble detected: \"$(printf '%.60s' "$first_line")...\" — stripping." >&2
|
|
704
|
+
|
|
705
|
+
# Strategy 1: If the original file started with a heading, find the first
|
|
706
|
+
# heading line in the LLM output and strip everything before it.
|
|
707
|
+
if [[ "$original_first_line" =~ ^#{1,6}[[:space:]]+ ]]; then
|
|
708
|
+
local found_heading=false
|
|
709
|
+
local result=""
|
|
710
|
+
while IFS= read -r line; do
|
|
711
|
+
if [[ "$found_heading" == true ]]; then
|
|
712
|
+
result+="$line"$'\n'
|
|
713
|
+
elif [[ "$line" =~ ^#{1,6}[[:space:]]+ ]]; then
|
|
714
|
+
found_heading=true
|
|
715
|
+
result+="$line"$'\n'
|
|
716
|
+
fi
|
|
717
|
+
done <<< "$llm_output"
|
|
718
|
+
if [[ "$found_heading" == true && -n "$result" ]]; then
|
|
719
|
+
# Remove trailing newline added by the loop
|
|
720
|
+
printf '%s' "${result%$'\n'}"
|
|
721
|
+
return 0
|
|
722
|
+
fi
|
|
723
|
+
fi
|
|
724
|
+
|
|
725
|
+
# Strategy 2: Find the first line that looks like valid markdown
|
|
726
|
+
local found_md=false
|
|
727
|
+
local result=""
|
|
728
|
+
while IFS= read -r line; do
|
|
729
|
+
if [[ "$found_md" == true ]]; then
|
|
730
|
+
result+="$line"$'\n'
|
|
731
|
+
elif _is_valid_md_start "$line"; then
|
|
732
|
+
found_md=true
|
|
733
|
+
result+="$line"$'\n'
|
|
734
|
+
fi
|
|
735
|
+
done <<< "$llm_output"
|
|
736
|
+
if [[ "$found_md" == true && -n "$result" ]]; then
|
|
737
|
+
printf '%s' "${result%$'\n'}"
|
|
738
|
+
return 0
|
|
739
|
+
fi
|
|
740
|
+
|
|
741
|
+
# Strategy 3: No valid markdown found — keep the LLM output unchanged
|
|
742
|
+
echo "[Sanitize] ⚠ Could not find valid markdown start in LLM output. Keeping LLM output unchanged." >&2
|
|
743
|
+
printf '%s' "$llm_output"
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
# ---------------------------------------------------------------------------
|
|
747
|
+
# ensure_heading_start <content> <default_heading>
|
|
748
|
+
#
|
|
749
|
+
# Ensures that <content> starts with a markdown heading (# ... through
|
|
750
|
+
# ###### ...). If the first non-empty line is already a heading, any
|
|
751
|
+
# leading blank lines are stripped so the output truly starts with the
|
|
752
|
+
# heading. Otherwise, <default_heading> is prepended with a blank line
|
|
753
|
+
# separator.
|
|
754
|
+
#
|
|
755
|
+
# Prints the (possibly modified) content to stdout.
|
|
756
|
+
# ---------------------------------------------------------------------------
|
|
757
|
+
ensure_heading_start() {
|
|
758
|
+
local content="$1"
|
|
759
|
+
local default_heading="${2:-# Document}"
|
|
760
|
+
[[ -z "$content" ]] && { printf '%s' "$default_heading"; return 0; }
|
|
761
|
+
local first_line=""
|
|
762
|
+
while IFS= read -r _fl; do
|
|
763
|
+
if [[ "$_fl" =~ [^[:space:]] ]]; then first_line="$_fl"; break; fi
|
|
764
|
+
done <<< "$content"
|
|
765
|
+
# Check for heading with optional up to 3 leading spaces (CommonMark)
|
|
766
|
+
local trimmed_first="${first_line#"${first_line%%[! ]*}"}"
|
|
767
|
+
if [[ "$first_line" =~ ^#{1,6}[[:space:]]+ ]] || [[ "$trimmed_first" =~ ^#{1,6}[[:space:]]+ && "${#first_line}" -le "$((${#trimmed_first} + 3))" ]]; then
|
|
768
|
+
# Strip leading blank/whitespace-only lines so the output truly starts with the heading
|
|
769
|
+
local trimmed_h=""
|
|
770
|
+
local found_h=false
|
|
771
|
+
while IFS= read -r line; do
|
|
772
|
+
if [[ "$found_h" == true ]]; then
|
|
773
|
+
trimmed_h+="$line"$'\n'
|
|
774
|
+
elif [[ "$line" =~ [^[:space:]] ]]; then
|
|
775
|
+
found_h=true
|
|
776
|
+
trimmed_h+="$line"$'\n'
|
|
777
|
+
fi
|
|
778
|
+
done <<< "$content"
|
|
779
|
+
[[ -n "$trimmed_h" ]] && trimmed_h="${trimmed_h%$'\n'}"
|
|
780
|
+
printf '%s' "$trimmed_h"
|
|
781
|
+
else
|
|
782
|
+
echo "[Sanitize] ⚠ No heading found — prepending default: \"$default_heading\"" >&2
|
|
783
|
+
# Strip leading blank/whitespace-only lines before prepending heading
|
|
784
|
+
local trimmed=""
|
|
785
|
+
local found=false
|
|
786
|
+
while IFS= read -r line; do
|
|
787
|
+
if [[ "$found" == true ]]; then
|
|
788
|
+
trimmed+="$line"$'\n'
|
|
789
|
+
elif [[ "$line" =~ [^[:space:]] ]]; then
|
|
790
|
+
found=true
|
|
791
|
+
trimmed+="$line"$'\n'
|
|
792
|
+
fi
|
|
793
|
+
done <<< "$content"
|
|
794
|
+
[[ -n "$trimmed" ]] && trimmed="${trimmed%$'\n'}"
|
|
795
|
+
printf '%s\n\n%s' "$default_heading" "$trimmed"
|
|
796
|
+
fi
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
# ---------------------------------------------------------------------------
|
|
800
|
+
# wrap_long_lines_in_spec_dir <spec_dir> [max_line_length]
|
|
801
|
+
#
|
|
802
|
+
# Best-effort deterministic pass that wraps overlong prose / list items in
|
|
803
|
+
# all .md files under <spec_dir> to <max_line_length> characters (default
|
|
804
|
+
# 200, matching the MD013 config in .markdownlint-cli2.jsonc). Fenced code
|
|
805
|
+
# blocks, tables, indented code, YAML front matter, and headings are
|
|
806
|
+
# preserved verbatim.
|
|
807
|
+
#
|
|
808
|
+
# This step reduces MD013 violations before the downstream markdownlint
|
|
809
|
+
# validation loop kicks off LLM remediation — LLM output very commonly
|
|
810
|
+
# produces single-line paragraphs and list items that exceed the 200-char
|
|
811
|
+
# limit. Always returns 0 — this is a best-effort pass, not a gate.
|
|
812
|
+
# ---------------------------------------------------------------------------
|
|
813
|
+
wrap_long_lines_in_spec_dir() {
|
|
814
|
+
local spec_dir="$1"
|
|
815
|
+
local max_line_length="${2:-200}"
|
|
816
|
+
local -a md_files=()
|
|
817
|
+
while IFS= read -r -d '' file; do
|
|
818
|
+
md_files+=("$file")
|
|
819
|
+
done < <(find "$spec_dir" -name '*.md' -type f -print0)
|
|
820
|
+
|
|
821
|
+
if [[ ${#md_files[@]} -eq 0 ]]; then
|
|
822
|
+
return 0
|
|
823
|
+
fi
|
|
824
|
+
|
|
825
|
+
local py_bin=""
|
|
826
|
+
if command -v python3 &>/dev/null; then
|
|
827
|
+
py_bin=python3
|
|
828
|
+
elif command -v python &>/dev/null && python -c 'import sys; raise SystemExit(0 if sys.version_info[0] >= 3 else 1)' &>/dev/null; then
|
|
829
|
+
py_bin=python
|
|
830
|
+
else
|
|
831
|
+
echo "[Wrap] ⚠ no Python 3 interpreter available — skipping line-wrap pre-validation pass" >&2
|
|
832
|
+
return 0
|
|
833
|
+
fi
|
|
834
|
+
|
|
835
|
+
if ! "$py_bin" "$SCRIPT_DIR/wrap_markdown_lines.py" \
|
|
836
|
+
--quiet \
|
|
837
|
+
--max-line-length "$max_line_length" \
|
|
838
|
+
"${md_files[@]}"; then
|
|
839
|
+
echo "[Wrap] ⚠ wrap_markdown_lines.py exited non-zero — continuing" >&2
|
|
840
|
+
fi
|
|
841
|
+
return 0
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
# ---------------------------------------------------------------------------
|
|
845
|
+
# quick_markdown_sanity_check <spec_dir>
|
|
846
|
+
#
|
|
847
|
+
# Best-effort pre-validation pass over all .md files in <spec_dir>.
|
|
848
|
+
# Fixes deterministic issues (leading blank lines, long prose lines) and
|
|
849
|
+
# logs warnings for problems that require manual attention.
|
|
850
|
+
#
|
|
851
|
+
# Always returns 0 — this is a best-effort check, not a gate.
|
|
852
|
+
# ---------------------------------------------------------------------------
|
|
853
|
+
quick_markdown_sanity_check() {
|
|
854
|
+
local spec_dir="$1"
|
|
855
|
+
local file content first_line
|
|
856
|
+
|
|
857
|
+
while IFS= read -r -d '' file; do
|
|
858
|
+
# (a) Empty file — skip
|
|
859
|
+
if [[ ! -s "$file" ]]; then
|
|
860
|
+
echo "[Sanitize] ⚠ Empty file: $file — skipping" >&2
|
|
861
|
+
continue
|
|
862
|
+
fi
|
|
863
|
+
|
|
864
|
+
content=$(cat "$file")
|
|
865
|
+
|
|
866
|
+
# Treat whitespace-only files as empty. Command substitution strips
|
|
867
|
+
# trailing newlines, so blank files with only whitespace/newlines can
|
|
868
|
+
# appear empty here despite being non-zero bytes on disk.
|
|
869
|
+
if [[ ! "$content" =~ [^[:space:]] ]]; then
|
|
870
|
+
echo "[Sanitize] ⚠ Empty/blank file: $file — truncating and skipping" >&2
|
|
871
|
+
: > "$file"
|
|
872
|
+
continue
|
|
873
|
+
fi
|
|
874
|
+
|
|
875
|
+
# (b) Leading blank/whitespace-only lines — remove them
|
|
876
|
+
local trimmed=""
|
|
877
|
+
local found=false
|
|
878
|
+
while IFS= read -r line; do
|
|
879
|
+
if [[ "$found" == true ]]; then
|
|
880
|
+
trimmed+="$line"$'\n'
|
|
881
|
+
elif [[ "$line" =~ [^[:space:]] ]]; then
|
|
882
|
+
found=true
|
|
883
|
+
trimmed+="$line"$'\n'
|
|
884
|
+
fi
|
|
885
|
+
done <<< "$content"
|
|
886
|
+
[[ -n "$trimmed" ]] && trimmed="${trimmed%$'\n'}"
|
|
887
|
+
|
|
888
|
+
if [[ "$trimmed" != "$content" ]]; then
|
|
889
|
+
printf '%s\n' "$trimmed" > "$file"
|
|
890
|
+
content="$trimmed"
|
|
891
|
+
fi
|
|
892
|
+
|
|
893
|
+
# Find first non-blank line (treating whitespace-only as blank)
|
|
894
|
+
first_line=""
|
|
895
|
+
while IFS= read -r _fl; do
|
|
896
|
+
if [[ "$_fl" =~ [^[:space:]] ]]; then first_line="$_fl"; break; fi
|
|
897
|
+
done <<< "$content"
|
|
898
|
+
|
|
899
|
+
# (c) Starts with code fence — skip (no deterministic fix)
|
|
900
|
+
if [[ "$first_line" =~ ^\`\`\` ]]; then
|
|
901
|
+
echo "[Sanitize] ⚠ File starts with code fence: $file — skipping" >&2
|
|
902
|
+
continue
|
|
903
|
+
fi
|
|
904
|
+
|
|
905
|
+
# (d) First non-empty line is not a heading — log warning
|
|
906
|
+
if [[ ! "$first_line" =~ ^#{1,6}[[:space:]]+ ]]; then
|
|
907
|
+
echo "[Sanitize] ⚠ File does not start with a heading: $file" >&2
|
|
908
|
+
fi
|
|
909
|
+
done < <(find "$spec_dir" -name '*.md' -type f -print0)
|
|
910
|
+
|
|
911
|
+
# Wrap overlong prose lines after leading-blank removal so that files
|
|
912
|
+
# with leading whitespace before YAML front matter (---) are handled
|
|
913
|
+
# correctly — the wrapper only detects front matter on the very first
|
|
914
|
+
# line.
|
|
915
|
+
wrap_long_lines_in_spec_dir "$spec_dir"
|
|
916
|
+
|
|
917
|
+
return 0
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
# ---------------------------------------------------------------------------
|
|
921
|
+
# _run_enhanced_remediation <spec_dir> <affected_files...>
|
|
922
|
+
#
|
|
923
|
+
# Layer 3: Enhanced multi-turn SDK remediation. When the standard per-file
|
|
924
|
+
# LLM loop stalls, this function performs up to 3 sub-iterations of combined
|
|
925
|
+
# remediation: sends a richer prompt with ALL affected file contents + ALL
|
|
926
|
+
# remaining violations, writes corrections, then re-runs markdownlint to
|
|
927
|
+
# validate. Returns 0 if all violations are resolved, 1 otherwise.
|
|
928
|
+
# ---------------------------------------------------------------------------
|
|
929
|
+
_run_enhanced_remediation() {
|
|
930
|
+
local spec_dir="$1"
|
|
931
|
+
shift
|
|
932
|
+
local -a affected_files=("$@")
|
|
933
|
+
|
|
934
|
+
echo "[Phase 7] [Layer 3] Starting enhanced multi-turn remediation (${#affected_files[@]} file(s))..." >&2
|
|
935
|
+
|
|
936
|
+
local max_sub_iter=3
|
|
937
|
+
local sub_iter
|
|
938
|
+
|
|
939
|
+
for (( sub_iter=1; sub_iter<=max_sub_iter; sub_iter++ )); do
|
|
940
|
+
echo "[Phase 7] [Layer 3] Sub-iteration $sub_iter/$max_sub_iter" >&2
|
|
941
|
+
|
|
942
|
+
# Build combined prompt with all files and violations
|
|
943
|
+
local combined_content=""
|
|
944
|
+
local combined_violations=""
|
|
945
|
+
|
|
946
|
+
for af in "${affected_files[@]}"; do
|
|
947
|
+
[[ -f "$af" ]] || continue
|
|
948
|
+
local fc=""
|
|
949
|
+
fc=$(strip_model_footer "$(cat "$af")")
|
|
950
|
+
combined_content="$combined_content
|
|
951
|
+
===FILE:$af===
|
|
952
|
+
$fc
|
|
953
|
+
"
|
|
954
|
+
# Get per-file violations
|
|
955
|
+
local file_lint=""
|
|
956
|
+
file_lint=$(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "$af" 2>&1) || true
|
|
957
|
+
if [[ -n "$file_lint" ]]; then
|
|
958
|
+
combined_violations="$combined_violations
|
|
959
|
+
## Violations in $af
|
|
960
|
+
$file_lint
|
|
961
|
+
"
|
|
962
|
+
fi
|
|
963
|
+
done
|
|
964
|
+
|
|
965
|
+
if [[ -z "$combined_violations" ]]; then
|
|
966
|
+
echo "[Phase 7] [Layer 3] ✓ No violations remain after sub-iteration $((sub_iter - 1))." >&2
|
|
967
|
+
return 0
|
|
968
|
+
fi
|
|
969
|
+
|
|
970
|
+
local enhanced_prompt="You are a markdown lint fixer. Fix ALL markdownlint violations in the files below.
|
|
971
|
+
|
|
972
|
+
## All remaining violations
|
|
973
|
+
$combined_violations
|
|
974
|
+
|
|
975
|
+
## Rules
|
|
976
|
+
- Your response MUST contain the corrected content for EACH file, separated by delimiter lines
|
|
977
|
+
- Use EXACTLY this delimiter format: ===FILE:<filepath>===
|
|
978
|
+
- Output ONLY corrected markdown content after each delimiter — no commentary
|
|
979
|
+
- Do NOT add conversational preamble before the first delimiter
|
|
980
|
+
- For MD040 (fenced-code-language): add a language identifier (use 'text' if unsure)
|
|
981
|
+
- For MD056 (table-column-count): ensure all table rows have the same number of columns as the header
|
|
982
|
+
- For MD013 (line-length): break long lines at natural points to stay under 200 characters
|
|
983
|
+
- Preserve all content meaning and structure
|
|
984
|
+
|
|
985
|
+
## Files to fix
|
|
986
|
+
$combined_content
|
|
987
|
+
|
|
988
|
+
## CRITICAL
|
|
989
|
+
Start your response with ===FILE: delimiter. No preamble."
|
|
990
|
+
|
|
991
|
+
local prompt_len=${#enhanced_prompt}
|
|
992
|
+
if [[ $prompt_len -gt 64000 ]]; then
|
|
993
|
+
echo "[Phase 7] [Layer 3] Warning: Combined prompt too large ($prompt_len chars). Skipping." >&2
|
|
994
|
+
return 1
|
|
995
|
+
fi
|
|
996
|
+
|
|
997
|
+
local response=""
|
|
998
|
+
if ! response=$(call_llm "$enhanced_prompt"); then
|
|
999
|
+
echo "[Phase 7] [Layer 3] Warning: LLM call failed in sub-iteration $sub_iter." >&2
|
|
1000
|
+
continue
|
|
1001
|
+
fi
|
|
1002
|
+
|
|
1003
|
+
# Parse response and write files
|
|
1004
|
+
# Helper: validate that a parsed path is in the affected_files allowlist
|
|
1005
|
+
_is_allowed_file() {
|
|
1006
|
+
local candidate="$1"
|
|
1007
|
+
for allowed in "${affected_files[@]}"; do
|
|
1008
|
+
[[ "$candidate" == "$allowed" ]] && return 0
|
|
1009
|
+
done
|
|
1010
|
+
return 1
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
local current_file="" current_content=""
|
|
1014
|
+
while IFS= read -r line; do
|
|
1015
|
+
if [[ "$line" =~ ^===FILE:(.+)===$ ]]; then
|
|
1016
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
1017
|
+
local original_first_line=""
|
|
1018
|
+
original_first_line=$(head -n 1 "$current_file" 2>/dev/null || echo "")
|
|
1019
|
+
current_content=$(strip_llm_preamble "$current_content" "$original_first_line")
|
|
1020
|
+
if [[ "$current_content" =~ [^[:space:]] ]]; then
|
|
1021
|
+
printf '%s\n' "$current_content" > "$current_file"
|
|
1022
|
+
append_model_footer "$current_file"
|
|
1023
|
+
echo "[Phase 7] [Layer 3] ✓ Applied fix to $(basename "$current_file")" >&2
|
|
1024
|
+
fi
|
|
1025
|
+
fi
|
|
1026
|
+
current_file="${BASH_REMATCH[1]}"
|
|
1027
|
+
current_file="${current_file#"${current_file%%[![:space:]]*}"}"
|
|
1028
|
+
current_file="${current_file%"${current_file##*[![:space:]]}"}"
|
|
1029
|
+
# Validate path is in the affected_files allowlist
|
|
1030
|
+
if ! _is_allowed_file "$current_file"; then
|
|
1031
|
+
echo "[Phase 7] [Layer 3] ⚠ Skipping unrecognized path from model: $current_file" >&2
|
|
1032
|
+
current_file=""
|
|
1033
|
+
fi
|
|
1034
|
+
current_content=""
|
|
1035
|
+
else
|
|
1036
|
+
if [[ -n "$current_file" ]]; then
|
|
1037
|
+
current_content="${current_content:+$current_content
|
|
1038
|
+
}$line"
|
|
1039
|
+
fi
|
|
1040
|
+
fi
|
|
1041
|
+
done <<< "$response"
|
|
1042
|
+
# Write last file
|
|
1043
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
1044
|
+
local original_first_line=""
|
|
1045
|
+
original_first_line=$(head -n 1 "$current_file" 2>/dev/null || echo "")
|
|
1046
|
+
current_content=$(strip_llm_preamble "$current_content" "$original_first_line")
|
|
1047
|
+
if [[ "$current_content" =~ [^[:space:]] ]]; then
|
|
1048
|
+
printf '%s\n' "$current_content" > "$current_file"
|
|
1049
|
+
append_model_footer "$current_file"
|
|
1050
|
+
echo "[Phase 7] [Layer 3] ✓ Applied fix to $(basename "$current_file")" >&2
|
|
1051
|
+
fi
|
|
1052
|
+
fi
|
|
1053
|
+
|
|
1054
|
+
# Re-run lint to check
|
|
1055
|
+
local lint_exit=0
|
|
1056
|
+
(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${affected_files[@]}" 2>&1) >/dev/null || lint_exit=$?
|
|
1057
|
+
|
|
1058
|
+
if [[ $lint_exit -eq 0 ]]; then
|
|
1059
|
+
echo "[Phase 7] [Layer 3] ✓ All violations resolved after sub-iteration $sub_iter." >&2
|
|
1060
|
+
return 0
|
|
1061
|
+
fi
|
|
1062
|
+
echo "[Phase 7] [Layer 3] Violations remain after sub-iteration $sub_iter — continuing." >&2
|
|
1063
|
+
done
|
|
1064
|
+
|
|
1065
|
+
echo "[Phase 7] [Layer 3] ✗ Enhanced remediation exhausted ($max_sub_iter sub-iterations)." >&2
|
|
1066
|
+
return 1
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
# ---------------------------------------------------------------------------
|
|
1070
|
+
# _run_alternate_llm_remediation <spec_dir> <affected_files...>
|
|
1071
|
+
#
|
|
1072
|
+
# Layer 4: Alternate LLM remediation with distinct prompt strategy. Uses
|
|
1073
|
+
# call_llm with a differently structured prompt (focused on self-validation
|
|
1074
|
+
# instructions) to attempt fixes from a fresh angle. Returns 0 if all
|
|
1075
|
+
# violations resolved, 1 otherwise.
|
|
1076
|
+
#
|
|
1077
|
+
# Note: Despite the historical "Copilot CLI" name in logs, this layer uses
|
|
1078
|
+
# the SDK-based call_llm helper (not `gh copilot`) because the CLI does not
|
|
1079
|
+
# produce the ===FILE: delimited output required by the parser.
|
|
1080
|
+
# ---------------------------------------------------------------------------
|
|
1081
|
+
_run_alternate_llm_remediation() {
|
|
1082
|
+
local spec_dir="$1"
|
|
1083
|
+
shift
|
|
1084
|
+
local -a affected_files=("$@")
|
|
1085
|
+
|
|
1086
|
+
echo "[Phase 7] [Layer 4] Starting alternate LLM remediation (${#affected_files[@]} file(s))..." >&2
|
|
1087
|
+
|
|
1088
|
+
local max_attempts=3
|
|
1089
|
+
local attempt
|
|
1090
|
+
|
|
1091
|
+
for (( attempt=1; attempt<=max_attempts; attempt++ )); do
|
|
1092
|
+
echo "[Phase 7] [Layer 4] Attempt $attempt/$max_attempts" >&2
|
|
1093
|
+
|
|
1094
|
+
# Build structured prompt
|
|
1095
|
+
local file_contents=""
|
|
1096
|
+
local violations=""
|
|
1097
|
+
|
|
1098
|
+
for af in "${affected_files[@]}"; do
|
|
1099
|
+
[[ -f "$af" ]] || continue
|
|
1100
|
+
file_contents="$file_contents
|
|
1101
|
+
===FILE:$af===
|
|
1102
|
+
$(cat "$af")
|
|
1103
|
+
"
|
|
1104
|
+
local file_lint=""
|
|
1105
|
+
file_lint=$(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "$af" 2>&1) || true
|
|
1106
|
+
if [[ -n "$file_lint" ]]; then
|
|
1107
|
+
violations="$violations
|
|
1108
|
+
$file_lint
|
|
1109
|
+
"
|
|
1110
|
+
fi
|
|
1111
|
+
done
|
|
1112
|
+
|
|
1113
|
+
if [[ -z "$violations" ]]; then
|
|
1114
|
+
echo "[Phase 7] [Layer 4] ✓ No violations remain." >&2
|
|
1115
|
+
return 0
|
|
1116
|
+
fi
|
|
1117
|
+
|
|
1118
|
+
local cli_prompt="Fix the following markdownlint violations in these markdown files.
|
|
1119
|
+
|
|
1120
|
+
VIOLATIONS:
|
|
1121
|
+
$violations
|
|
1122
|
+
|
|
1123
|
+
FILES:
|
|
1124
|
+
$file_contents
|
|
1125
|
+
|
|
1126
|
+
INSTRUCTIONS:
|
|
1127
|
+
1. Fix all violations listed above
|
|
1128
|
+
2. For MD040: add language identifier to bare code fences (use 'text' if unsure)
|
|
1129
|
+
3. For MD056: ensure all table rows have same column count as header
|
|
1130
|
+
4. For MD013: break long lines at natural points (under 200 chars)
|
|
1131
|
+
5. Output ONLY the corrected file contents with ===FILE:<path>=== delimiters
|
|
1132
|
+
6. Start your response with ===FILE: delimiter. No preamble."
|
|
1133
|
+
|
|
1134
|
+
# Guard: skip if prompt exceeds size limit (avoids timeouts when
|
|
1135
|
+
# Layer 3 already skipped for the same reason).
|
|
1136
|
+
local cli_prompt_len=${#cli_prompt}
|
|
1137
|
+
if [[ $cli_prompt_len -gt 64000 ]]; then
|
|
1138
|
+
echo "[Phase 7] [Layer 4] Warning: Combined prompt too large ($cli_prompt_len chars). Skipping." >&2
|
|
1139
|
+
return 1
|
|
1140
|
+
fi
|
|
1141
|
+
|
|
1142
|
+
local cli_response=""
|
|
1143
|
+
if ! cli_response=$(call_llm "$cli_prompt"); then
|
|
1144
|
+
echo "[Phase 7] [Layer 4] Warning: LLM call failed in attempt $attempt." >&2
|
|
1145
|
+
continue
|
|
1146
|
+
fi
|
|
1147
|
+
|
|
1148
|
+
# Helper: validate that a parsed path is in the affected_files allowlist
|
|
1149
|
+
_is_allowed_file_l4() {
|
|
1150
|
+
local candidate="$1"
|
|
1151
|
+
for allowed in "${affected_files[@]}"; do
|
|
1152
|
+
[[ "$candidate" == "$allowed" ]] && return 0
|
|
1153
|
+
done
|
|
1154
|
+
return 1
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
# If response contains file delimiters, parse and apply
|
|
1158
|
+
if echo "$cli_response" | grep -q "^===FILE:"; then
|
|
1159
|
+
local current_file="" current_content=""
|
|
1160
|
+
while IFS= read -r line; do
|
|
1161
|
+
if [[ "$line" =~ ^===FILE:(.+)===$ ]]; then
|
|
1162
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
1163
|
+
local original_first_line=""
|
|
1164
|
+
original_first_line=$(head -n 1 "$current_file" 2>/dev/null || echo "")
|
|
1165
|
+
current_content=$(strip_llm_preamble "$current_content" "$original_first_line")
|
|
1166
|
+
if [[ "$current_content" =~ [^[:space:]] ]]; then
|
|
1167
|
+
printf '%s\n' "$current_content" > "$current_file"
|
|
1168
|
+
append_model_footer "$current_file"
|
|
1169
|
+
fi
|
|
1170
|
+
fi
|
|
1171
|
+
current_file="${BASH_REMATCH[1]}"
|
|
1172
|
+
current_file="${current_file#"${current_file%%[![:space:]]*}"}"
|
|
1173
|
+
current_file="${current_file%"${current_file##*[![:space:]]}"}"
|
|
1174
|
+
# Validate path is in the affected_files allowlist
|
|
1175
|
+
if ! _is_allowed_file_l4 "$current_file"; then
|
|
1176
|
+
echo "[Phase 7] [Layer 4] ⚠ Skipping unrecognized path from model: $current_file" >&2
|
|
1177
|
+
current_file=""
|
|
1178
|
+
fi
|
|
1179
|
+
current_content=""
|
|
1180
|
+
else
|
|
1181
|
+
if [[ -n "$current_file" ]]; then
|
|
1182
|
+
current_content="${current_content:+$current_content
|
|
1183
|
+
}$line"
|
|
1184
|
+
fi
|
|
1185
|
+
fi
|
|
1186
|
+
done <<< "$cli_response"
|
|
1187
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
1188
|
+
local original_first_line=""
|
|
1189
|
+
original_first_line=$(head -n 1 "$current_file" 2>/dev/null || echo "")
|
|
1190
|
+
current_content=$(strip_llm_preamble "$current_content" "$original_first_line")
|
|
1191
|
+
if [[ "$current_content" =~ [^[:space:]] ]]; then
|
|
1192
|
+
printf '%s\n' "$current_content" > "$current_file"
|
|
1193
|
+
append_model_footer "$current_file"
|
|
1194
|
+
fi
|
|
1195
|
+
fi
|
|
1196
|
+
fi
|
|
1197
|
+
|
|
1198
|
+
# Re-run lint to validate
|
|
1199
|
+
local lint_exit=0
|
|
1200
|
+
(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${affected_files[@]}" 2>&1) >/dev/null || lint_exit=$?
|
|
1201
|
+
|
|
1202
|
+
if [[ $lint_exit -eq 0 ]]; then
|
|
1203
|
+
echo "[Phase 7] [Layer 4] ✓ All violations resolved after attempt $attempt." >&2
|
|
1204
|
+
return 0
|
|
1205
|
+
fi
|
|
1206
|
+
echo "[Phase 7] [Layer 4] Violations remain after attempt $attempt." >&2
|
|
1207
|
+
done
|
|
1208
|
+
|
|
1209
|
+
echo "[Phase 7] [Layer 4] ✗ Alternate LLM remediation exhausted ($max_attempts attempts)." >&2
|
|
1210
|
+
return 1
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
# Source CRITICAL gate remediation library (FR-009)
|
|
1214
|
+
# shellcheck source=lib/critical-gate-remediation.sh
|
|
1215
|
+
source "$SCRIPT_DIR/lib/critical-gate-remediation.sh"
|
|
1216
|
+
|
|
1217
|
+
# Source clarify retry library (multi-layer clarify phase remediation)
|
|
1218
|
+
# shellcheck source=lib/clarify-retry.sh
|
|
1219
|
+
source "$SCRIPT_DIR/lib/clarify-retry.sh"
|
|
1220
|
+
|
|
1221
|
+
# ---------------------------------------------------------------------------
|
|
1222
|
+
# run_markdownlint_validation <spec_dir>
|
|
1223
|
+
#
|
|
1224
|
+
# Runs the markdownlint validation/remediation loop for markdown files in
|
|
1225
|
+
# the given spec directory. Attempts auto-fix first, then LLM remediation
|
|
1226
|
+
# if violations remain. Stops on clean result, stall detection, or max
|
|
1227
|
+
# iterations.
|
|
1228
|
+
#
|
|
1229
|
+
# Recovery layers (invoked on stall/exhaustion when SPECKIT_COPILOT_CLI_ON_STALL=true):
|
|
1230
|
+
# Layer 1: Deterministic fixers (MD040, MD056) — run before iteration loop
|
|
1231
|
+
# Layer 2: Standard per-file LLM remediation (existing iteration loop)
|
|
1232
|
+
# Layer 3: Enhanced multi-turn SDK remediation (_run_enhanced_remediation)
|
|
1233
|
+
# Layer 4: Alternate LLM remediation (_run_alternate_llm_remediation)
|
|
1234
|
+
# Layer 5: Graceful fallback — proceed with warning
|
|
1235
|
+
#
|
|
1236
|
+
# Returns 0 on success (all files lint-clean or graceful fallback).
|
|
1237
|
+
# ---------------------------------------------------------------------------
|
|
1238
|
+
run_markdownlint_validation() {
|
|
1239
|
+
local spec_dir="$1"
|
|
1240
|
+
|
|
1241
|
+
# Guard: check npx availability (EC5)
|
|
1242
|
+
if ! check_npx_available; then
|
|
1243
|
+
return 1
|
|
1244
|
+
fi
|
|
1245
|
+
|
|
1246
|
+
# Guard: check for markdown files (EC9 — empty spec directory)
|
|
1247
|
+
# Use find instead of bash glob to reliably discover nested .md files
|
|
1248
|
+
# without requiring shopt -s globstar (which is not enabled by default).
|
|
1249
|
+
local md_files=()
|
|
1250
|
+
while IFS= read -r -d '' f; do
|
|
1251
|
+
md_files+=("$f")
|
|
1252
|
+
done < <(find "$spec_dir" -name '*.md' -type f -print0)
|
|
1253
|
+
|
|
1254
|
+
if [[ ${#md_files[@]} -eq 0 ]]; then
|
|
1255
|
+
echo "[Phase 7] No markdown files found in $spec_dir — skipping validation." >&2
|
|
1256
|
+
echo "markdownlint_status=success" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1257
|
+
echo "markdownlint_iterations=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1258
|
+
echo "markdownlint_violations=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1259
|
+
return 0
|
|
1260
|
+
fi
|
|
1261
|
+
|
|
1262
|
+
# Layer 1: Deterministic fixers (MD040, MD056) — fast, 100% reliable
|
|
1263
|
+
echo "[Phase 7] [Layer 1] Running deterministic fixers (MD040, MD056)..." >&2
|
|
1264
|
+
python "$SCRIPT_DIR/fix_markdown_deterministic.py" "${md_files[@]}" || {
|
|
1265
|
+
echo "[Phase 7] [Layer 1] Warning: Deterministic fixer script failed (non-fatal)." >&2
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
local max_iter="$MARKDOWNLINT_MAX_ITERATIONS"
|
|
1269
|
+
local prev_fingerprint=""
|
|
1270
|
+
local prev_violation_count=0
|
|
1271
|
+
local count_stall_streak=0
|
|
1272
|
+
local iteration=0
|
|
1273
|
+
local total_iterations=0
|
|
1274
|
+
local final_violation_count=0
|
|
1275
|
+
local last_lint_exit=1
|
|
1276
|
+
local stall_detected=false
|
|
1277
|
+
|
|
1278
|
+
echo "[Phase 7] Starting markdownlint validation (max $max_iter iterations, ${#md_files[@]} markdown files)" >&2
|
|
1279
|
+
|
|
1280
|
+
for (( iteration=1; iteration<=max_iter; iteration++ )); do
|
|
1281
|
+
total_iterations=$iteration
|
|
1282
|
+
echo "" >&2
|
|
1283
|
+
echo "[Phase 7] Iteration $iteration/$max_iter" >&2
|
|
1284
|
+
|
|
1285
|
+
# Step 1: Auto-fix pass (run from spec_dir so per-spec .markdownlint.json is discovered)
|
|
1286
|
+
echo "[Phase 7] Running markdownlint-cli2 --fix..." >&2
|
|
1287
|
+
(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs --fix "${md_files[@]}") 2>&1 || true
|
|
1288
|
+
|
|
1289
|
+
# Step 2: Check-only pass — capture output (run from spec_dir)
|
|
1290
|
+
local lint_output=""
|
|
1291
|
+
local lint_exit=0
|
|
1292
|
+
lint_output=$(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${md_files[@]}" 2>&1) || lint_exit=$?
|
|
1293
|
+
last_lint_exit=$lint_exit
|
|
1294
|
+
|
|
1295
|
+
# Persist raw lint output for CI debugging (append per iteration)
|
|
1296
|
+
{
|
|
1297
|
+
echo "--- Iteration $iteration ($(date -u +%Y-%m-%dT%H:%M:%SZ)) ---"
|
|
1298
|
+
echo "$lint_output"
|
|
1299
|
+
echo ""
|
|
1300
|
+
} >> "$spec_dir/.markdownlint-debug.log" || true
|
|
1301
|
+
|
|
1302
|
+
if [[ $lint_exit -eq 0 ]]; then
|
|
1303
|
+
echo "[Phase 7] ✓ All files lint-clean after auto-fix." >&2
|
|
1304
|
+
final_violation_count=0
|
|
1305
|
+
break
|
|
1306
|
+
fi
|
|
1307
|
+
|
|
1308
|
+
# Step 3: Parse remaining violations
|
|
1309
|
+
local parsed=""
|
|
1310
|
+
parsed=$(parse_markdownlint_output "$lint_output")
|
|
1311
|
+
|
|
1312
|
+
local violation_count=0
|
|
1313
|
+
if [[ -n "$parsed" ]]; then
|
|
1314
|
+
violation_count=$(printf '%s\n' "$parsed" | awk 'END{print NR}')
|
|
1315
|
+
fi
|
|
1316
|
+
final_violation_count=$violation_count
|
|
1317
|
+
|
|
1318
|
+
# Guard: lint failed but parser found no violations — attempt raw-output
|
|
1319
|
+
# LLM remediation instead of breaking out of the loop immediately.
|
|
1320
|
+
if [[ $violation_count -eq 0 ]]; then
|
|
1321
|
+
local raw_count=0
|
|
1322
|
+
raw_count=$(_count_raw_violations "$lint_output")
|
|
1323
|
+
echo "[Phase 7] ⚠ markdownlint exited $lint_exit but no violations could be parsed (raw count: ~$raw_count)." >&2
|
|
1324
|
+
echo "[Phase 7] Raw output:" >&2
|
|
1325
|
+
printf '%s\n' "$lint_output" | head -20 >&2
|
|
1326
|
+
echo "[Phase 7] Attempting raw-output LLM remediation..." >&2
|
|
1327
|
+
|
|
1328
|
+
# Extract file paths from raw output; fall back to all md_files
|
|
1329
|
+
local raw_affected_files=""
|
|
1330
|
+
raw_affected_files=$(printf '%s\n' "$lint_output" | grep -oE '^[^:]+\.md' | sort -u || true)
|
|
1331
|
+
if [[ -z "$raw_affected_files" ]]; then
|
|
1332
|
+
raw_affected_files=$(printf '%s\n' "${md_files[@]}")
|
|
1333
|
+
fi
|
|
1334
|
+
|
|
1335
|
+
local raw_remediation_applied=false
|
|
1336
|
+
while IFS= read -r target_file; do
|
|
1337
|
+
[[ -z "$target_file" ]] && continue
|
|
1338
|
+
[[ ! -f "$target_file" ]] && continue
|
|
1339
|
+
|
|
1340
|
+
local file_content=""
|
|
1341
|
+
file_content=$(cat "$target_file")
|
|
1342
|
+
local stripped_content=""
|
|
1343
|
+
stripped_content=$(strip_model_footer "$file_content")
|
|
1344
|
+
local original_first_line=""
|
|
1345
|
+
original_first_line=$(printf '%s' "$stripped_content" | head -n 1)
|
|
1346
|
+
|
|
1347
|
+
# Filter lint output to only lines relevant to the current target_file
|
|
1348
|
+
# to avoid inflating the prompt when multiple files are in the output.
|
|
1349
|
+
local filtered_lint_output=""
|
|
1350
|
+
filtered_lint_output=$(
|
|
1351
|
+
awk -v file="$target_file" '
|
|
1352
|
+
function is_target_start(line) {
|
|
1353
|
+
return index(line, file ":") == 1 || index(line, "./" file ":") == 1
|
|
1354
|
+
}
|
|
1355
|
+
|
|
1356
|
+
function is_violation_start(line) {
|
|
1357
|
+
return line ~ /^.+\.md:[0-9]+/
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
function is_metadata_boundary(line) {
|
|
1361
|
+
return line ~ /^(markdownlint-cli2|markdownlint)([[:space:]:-]|$)/ ||
|
|
1362
|
+
line ~ /^Summary([[:space:]:-]|$)/ ||
|
|
1363
|
+
line ~ /^Lint(ing| results?)([[:space:]:-]|$)/ ||
|
|
1364
|
+
line ~ /^Finding:/
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
is_target_start($0) {
|
|
1368
|
+
capture = 1
|
|
1369
|
+
print
|
|
1370
|
+
next
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
capture && (is_violation_start($0) || is_metadata_boundary($0)) {
|
|
1374
|
+
capture = 0
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
capture {
|
|
1378
|
+
print
|
|
1379
|
+
}
|
|
1380
|
+
' <<< "$lint_output"
|
|
1381
|
+
)
|
|
1382
|
+
|
|
1383
|
+
if [[ -z "$filtered_lint_output" ]]; then
|
|
1384
|
+
filtered_lint_output="No file-specific markdownlint output could be extracted for $target_file from the combined markdownlint report. Fix only violations relevant to this file content."
|
|
1385
|
+
fi
|
|
1386
|
+
|
|
1387
|
+
local raw_prompt="You are a markdown lint fixer. The markdownlint tool reported violations but the output could not be parsed structurally. Fix all violations indicated in the raw linter output below.
|
|
1388
|
+
|
|
1389
|
+
## Raw markdownlint output
|
|
1390
|
+
$filtered_lint_output
|
|
1391
|
+
|
|
1392
|
+
## Rules
|
|
1393
|
+
- Your response MUST begin immediately with markdown content — no conversational preamble
|
|
1394
|
+
- Output ONLY the corrected markdown content, nothing else
|
|
1395
|
+
- Do NOT add commentary, explanations, or code fences around the output
|
|
1396
|
+
- Do NOT change the meaning or structure of the content beyond what is needed to fix the violations
|
|
1397
|
+
- Preserve all headings, lists, tables, and code blocks
|
|
1398
|
+
|
|
1399
|
+
## File content to fix ($target_file)
|
|
1400
|
+
$stripped_content
|
|
1401
|
+
|
|
1402
|
+
## CRITICAL
|
|
1403
|
+
Your response must begin with the actual markdown content."
|
|
1404
|
+
|
|
1405
|
+
local prompt_len=${#raw_prompt}
|
|
1406
|
+
if [[ $prompt_len -gt $MARKDOWNLINT_PROMPT_MAX_CHARS ]]; then
|
|
1407
|
+
echo "[Phase 7] Warning: Raw prompt for $target_file exceeds $MARKDOWNLINT_PROMPT_MAX_CHARS chars ($prompt_len). Skipping." >&2
|
|
1408
|
+
continue
|
|
1409
|
+
fi
|
|
1410
|
+
|
|
1411
|
+
local corrected=""
|
|
1412
|
+
if corrected=$(call_llm "$raw_prompt"); then
|
|
1413
|
+
if [[ -n "$corrected" ]]; then
|
|
1414
|
+
corrected=$(strip_llm_preamble "$corrected" "$original_first_line")
|
|
1415
|
+
if [[ "$corrected" =~ [^[:space:]] ]]; then
|
|
1416
|
+
printf '%s\n' "$corrected" > "$target_file"
|
|
1417
|
+
append_model_footer "$target_file"
|
|
1418
|
+
echo "[Phase 7] ✓ Raw LLM remediation applied to $(basename "$target_file")" >&2
|
|
1419
|
+
raw_remediation_applied=true
|
|
1420
|
+
else
|
|
1421
|
+
echo "[Phase 7] Warning: Raw LLM returned blank content for $(basename "$target_file"). Skipping." >&2
|
|
1422
|
+
fi
|
|
1423
|
+
fi
|
|
1424
|
+
else
|
|
1425
|
+
echo "[Phase 7] Warning: Raw LLM call failed for $(basename "$target_file")." >&2
|
|
1426
|
+
fi
|
|
1427
|
+
done <<< "$raw_affected_files"
|
|
1428
|
+
|
|
1429
|
+
if [[ "$raw_remediation_applied" == "true" ]]; then
|
|
1430
|
+
echo "[Phase 7] Raw remediation applied — continuing loop." >&2
|
|
1431
|
+
continue
|
|
1432
|
+
else
|
|
1433
|
+
echo "[Phase 7] Raw remediation failed for all files — breaking." >&2
|
|
1434
|
+
break
|
|
1435
|
+
fi
|
|
1436
|
+
fi
|
|
1437
|
+
|
|
1438
|
+
# Collect affected files
|
|
1439
|
+
local affected_files=""
|
|
1440
|
+
if [[ -n "$parsed" ]]; then
|
|
1441
|
+
affected_files=$(echo "$parsed" | awk -F'\t' '{print $1}' | sort -u)
|
|
1442
|
+
fi
|
|
1443
|
+
local affected_count=0
|
|
1444
|
+
if [[ -n "$affected_files" ]]; then
|
|
1445
|
+
affected_count=$(printf '%s\n' "$affected_files" | awk 'END{print NR}')
|
|
1446
|
+
fi
|
|
1447
|
+
|
|
1448
|
+
echo "[Phase 7] $violation_count violation(s) remaining in $affected_count file(s)" >&2
|
|
1449
|
+
if [[ -n "$affected_files" ]]; then
|
|
1450
|
+
echo "$affected_files" | while IFS= read -r af; do
|
|
1451
|
+
echo "[Phase 7] - $af" >&2
|
|
1452
|
+
done
|
|
1453
|
+
fi
|
|
1454
|
+
|
|
1455
|
+
# Step 4: Stall detection
|
|
1456
|
+
local current_fingerprint=""
|
|
1457
|
+
current_fingerprint=$(compute_violation_fingerprint "$parsed")
|
|
1458
|
+
|
|
1459
|
+
if [[ "$current_fingerprint" == "$prev_fingerprint" ]]; then
|
|
1460
|
+
echo "[Phase 7] ⚠ Stall detected — violations unchanged from previous iteration." >&2
|
|
1461
|
+
stall_detected=true
|
|
1462
|
+
break
|
|
1463
|
+
fi
|
|
1464
|
+
|
|
1465
|
+
# Secondary stall detection: if violation count has not decreased for
|
|
1466
|
+
# 2 consecutive iterations, the LLM is likely introducing new violations
|
|
1467
|
+
# at the same rate it fixes others (e.g. preamble causing MD041).
|
|
1468
|
+
if [[ $prev_violation_count -gt 0 && $violation_count -ge $prev_violation_count ]]; then
|
|
1469
|
+
count_stall_streak=$((count_stall_streak + 1))
|
|
1470
|
+
else
|
|
1471
|
+
count_stall_streak=0
|
|
1472
|
+
fi
|
|
1473
|
+
if [[ $count_stall_streak -ge 2 ]]; then
|
|
1474
|
+
echo "[Phase 7] ⚠ Stall detected — violation count has not decreased for $count_stall_streak consecutive iterations ($violation_count >= $prev_violation_count)." >&2
|
|
1475
|
+
stall_detected=true
|
|
1476
|
+
break
|
|
1477
|
+
fi
|
|
1478
|
+
|
|
1479
|
+
prev_fingerprint="$current_fingerprint"
|
|
1480
|
+
prev_violation_count=$violation_count
|
|
1481
|
+
|
|
1482
|
+
# Step 5-6: LLM remediation for each file with violations
|
|
1483
|
+
echo "[Phase 7] Running LLM remediation for $affected_count file(s)..." >&2
|
|
1484
|
+
|
|
1485
|
+
while IFS= read -r target_file; do
|
|
1486
|
+
[[ -z "$target_file" ]] && continue
|
|
1487
|
+
|
|
1488
|
+
# Gather violations for this specific file
|
|
1489
|
+
local file_violations=""
|
|
1490
|
+
file_violations=$(echo "$parsed" | awk -F'\t' -v f="$target_file" '$1 == f {printf "Line %s: %s %s\n", $2, $4, $5}')
|
|
1491
|
+
|
|
1492
|
+
if [[ -z "$file_violations" ]]; then
|
|
1493
|
+
continue
|
|
1494
|
+
fi
|
|
1495
|
+
|
|
1496
|
+
# Read file content and strip footer
|
|
1497
|
+
local file_content=""
|
|
1498
|
+
file_content=$(cat "$target_file")
|
|
1499
|
+
local stripped_content=""
|
|
1500
|
+
stripped_content=$(strip_model_footer "$file_content")
|
|
1501
|
+
|
|
1502
|
+
# Capture the original first line for preamble detection
|
|
1503
|
+
local original_first_line=""
|
|
1504
|
+
original_first_line=$(printf '%s' "$stripped_content" | head -n 1)
|
|
1505
|
+
|
|
1506
|
+
# Build per-file LLM prompt (enforce <8K tokens ≈ 32000 chars)
|
|
1507
|
+
# Conditionally include MD041 guidance only when that rule is violated
|
|
1508
|
+
local md041_rule=""
|
|
1509
|
+
if echo "$file_violations" | grep -q "MD041"; then
|
|
1510
|
+
md041_rule="
|
|
1511
|
+
- For MD041 (first-line-heading): ensure the file starts with a top-level heading (# Heading)"
|
|
1512
|
+
fi
|
|
1513
|
+
|
|
1514
|
+
local llm_prompt="You are a markdown lint fixer. Fix the following markdownlint violations in the markdown file below.
|
|
1515
|
+
|
|
1516
|
+
## Violations to fix
|
|
1517
|
+
$file_violations
|
|
1518
|
+
|
|
1519
|
+
## Rules
|
|
1520
|
+
- Your response MUST begin immediately with markdown content — no conversational preamble. Preserve the original first line unless a violation (e.g., MD041) requires changing it
|
|
1521
|
+
- Output ONLY the corrected markdown content, nothing else
|
|
1522
|
+
- Do NOT add commentary, explanations, or code fences around the output
|
|
1523
|
+
- Do NOT start your response with phrases like \"Here is\", \"All violations fixed\", \"I have\", \"Sure\", \"Certainly\", \"Good\", \"Updated\", or any other conversational text
|
|
1524
|
+
- Do NOT change the meaning or structure of the content beyond what is needed to fix the violations
|
|
1525
|
+
- Preserve all headings, lists, tables, and code blocks$md041_rule
|
|
1526
|
+
- For MD013 (line-length): break long lines at natural points (after punctuation, between clauses) to stay under 200 characters
|
|
1527
|
+
- For MD040 (fenced-code-language): add an appropriate language identifier to fenced code blocks
|
|
1528
|
+
|
|
1529
|
+
## File content to fix
|
|
1530
|
+
$stripped_content
|
|
1531
|
+
|
|
1532
|
+
## CRITICAL
|
|
1533
|
+
Your response must begin with the actual markdown content. The very first character of your response should be part of the file content (e.g., \`#\` for a heading, \`---\` for front matter, \`>\` for a blockquote). Any preamble or explanation will corrupt the file."
|
|
1534
|
+
|
|
1535
|
+
# Check prompt size (NFR-004: <8K tokens ≈ MARKDOWNLINT_PROMPT_MAX_CHARS chars)
|
|
1536
|
+
local prompt_len=${#llm_prompt}
|
|
1537
|
+
if [[ $prompt_len -gt $MARKDOWNLINT_PROMPT_MAX_CHARS ]]; then
|
|
1538
|
+
echo "[Phase 7] Warning: Prompt for $target_file exceeds $MARKDOWNLINT_PROMPT_MAX_CHARS chars ($prompt_len). Skipping LLM remediation for this file." >&2
|
|
1539
|
+
continue
|
|
1540
|
+
fi
|
|
1541
|
+
|
|
1542
|
+
# Call LLM
|
|
1543
|
+
local corrected=""
|
|
1544
|
+
if corrected=$(call_llm "$llm_prompt"); then
|
|
1545
|
+
if [[ -n "$corrected" ]]; then
|
|
1546
|
+
# Strip any conversational preamble the LLM may have prepended
|
|
1547
|
+
corrected=$(strip_llm_preamble "$corrected" "$original_first_line")
|
|
1548
|
+
if [[ "$corrected" =~ [^[:space:]] ]]; then
|
|
1549
|
+
printf '%s\n' "$corrected" > "$target_file"
|
|
1550
|
+
append_model_footer "$target_file"
|
|
1551
|
+
echo "[Phase 7] ✓ LLM remediation applied to $(basename "$target_file")" >&2
|
|
1552
|
+
else
|
|
1553
|
+
echo "[Phase 7] Warning: LLM returned blank or whitespace-only content for $(basename "$target_file") after preamble stripping. Skipping." >&2
|
|
1554
|
+
fi
|
|
1555
|
+
else
|
|
1556
|
+
echo "[Phase 7] Warning: LLM returned empty content for $(basename "$target_file"). Skipping." >&2
|
|
1557
|
+
fi
|
|
1558
|
+
else
|
|
1559
|
+
echo "[Phase 7] Warning: LLM call failed for $(basename "$target_file"). Continuing." >&2
|
|
1560
|
+
fi
|
|
1561
|
+
done <<< "$affected_files"
|
|
1562
|
+
done
|
|
1563
|
+
|
|
1564
|
+
# Summary logging
|
|
1565
|
+
echo "" >&2
|
|
1566
|
+
echo "[Phase 7] === Validation Summary ===" >&2
|
|
1567
|
+
echo "[Phase 7] Iterations run: $total_iterations/$max_iter" >&2
|
|
1568
|
+
echo "[Phase 7] Final violations: $final_violation_count" >&2
|
|
1569
|
+
echo "[Phase 7] Last lint exit code: $last_lint_exit" >&2
|
|
1570
|
+
if [[ "$stall_detected" == "true" ]]; then
|
|
1571
|
+
echo "[Phase 7] Stall detected: yes" >&2
|
|
1572
|
+
fi
|
|
1573
|
+
|
|
1574
|
+
# Return status — gate on actual lint exit code, not just parsed count.
|
|
1575
|
+
# This prevents silent success when lint fails but output can't be parsed.
|
|
1576
|
+
local markdownlint_status=""
|
|
1577
|
+
if [[ $last_lint_exit -eq 0 && $final_violation_count -eq 0 ]]; then
|
|
1578
|
+
echo "[Phase 7] Result: ✓ SUCCESS — all files lint-clean" >&2
|
|
1579
|
+
markdownlint_status="success"
|
|
1580
|
+
echo "markdownlint_status=$markdownlint_status" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1581
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1582
|
+
echo "markdownlint_violations=$final_violation_count" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1583
|
+
return 0
|
|
1584
|
+
fi
|
|
1585
|
+
|
|
1586
|
+
# Check unparseable output before exhaustion: when lint fails but no
|
|
1587
|
+
# violations were parsed, this is the most specific diagnosis regardless
|
|
1588
|
+
# of whether we also hit the iteration limit.
|
|
1589
|
+
if [[ $last_lint_exit -ne 0 && $final_violation_count -eq 0 ]]; then
|
|
1590
|
+
echo "[Phase 7] Result: ✗ FAILED — markdownlint exited $last_lint_exit but violations could not be parsed" >&2
|
|
1591
|
+
markdownlint_status="failed-unparseable"
|
|
1592
|
+
elif [[ "$stall_detected" == "true" ]]; then
|
|
1593
|
+
echo "[Phase 7] Result: ✗ FAILED — stall detected with $final_violation_count remaining violation(s)" >&2
|
|
1594
|
+
markdownlint_status="failed-stall"
|
|
1595
|
+
elif [[ $total_iterations -ge $max_iter && $final_violation_count -gt 0 ]]; then
|
|
1596
|
+
echo "[Phase 7] Result: ✗ FAILED — max iterations ($max_iter) exhausted with $final_violation_count remaining violation(s)" >&2
|
|
1597
|
+
markdownlint_status="failed-exhausted"
|
|
1598
|
+
else
|
|
1599
|
+
markdownlint_status="failed"
|
|
1600
|
+
fi
|
|
1601
|
+
|
|
1602
|
+
# --- Recovery Layers 3-5 (when enabled) ---
|
|
1603
|
+
# Use defaulted expansion so test harnesses sourcing only this section
|
|
1604
|
+
# under set -u do not abort with an unbound-variable error.
|
|
1605
|
+
if [[ "${SPECKIT_COPILOT_CLI_ON_STALL:-true}" == "true" && "$markdownlint_status" != "failed-unparseable" ]]; then
|
|
1606
|
+
echo "" >&2
|
|
1607
|
+
echo "[Phase 7] === Recovery Layers (SPECKIT_COPILOT_CLI_ON_STALL=true) ===" >&2
|
|
1608
|
+
|
|
1609
|
+
# Collect affected files for recovery layers
|
|
1610
|
+
local recovery_affected_files=()
|
|
1611
|
+
local recovery_lint_output=""
|
|
1612
|
+
recovery_lint_output=$(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${md_files[@]}" 2>&1) || true
|
|
1613
|
+
local recovery_files_raw=""
|
|
1614
|
+
recovery_files_raw=$(printf '%s\n' "$recovery_lint_output" | grep -oE '^[^:]+\.md' | sort -u || true)
|
|
1615
|
+
if [[ -n "$recovery_files_raw" ]]; then
|
|
1616
|
+
while IFS= read -r rf; do
|
|
1617
|
+
[[ -n "$rf" && -f "$rf" ]] && recovery_affected_files+=("$rf")
|
|
1618
|
+
done <<< "$recovery_files_raw"
|
|
1619
|
+
fi
|
|
1620
|
+
# Fallback to all md_files if no specific files identified
|
|
1621
|
+
if [[ ${#recovery_affected_files[@]} -eq 0 ]]; then
|
|
1622
|
+
recovery_affected_files=("${md_files[@]}")
|
|
1623
|
+
fi
|
|
1624
|
+
|
|
1625
|
+
# Layer 3: Enhanced multi-turn SDK remediation
|
|
1626
|
+
if _run_enhanced_remediation "$spec_dir" "${recovery_affected_files[@]}"; then
|
|
1627
|
+
echo "[Phase 7] Result: ✓ SUCCESS — resolved via Layer 3 (enhanced remediation)" >&2
|
|
1628
|
+
echo "markdownlint_status=success" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1629
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1630
|
+
echo "markdownlint_violations=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1631
|
+
return 0
|
|
1632
|
+
fi
|
|
1633
|
+
|
|
1634
|
+
# Layer 4: Alternate LLM remediation
|
|
1635
|
+
if _run_alternate_llm_remediation "$spec_dir" "${recovery_affected_files[@]}"; then
|
|
1636
|
+
echo "[Phase 7] Result: ✓ SUCCESS — resolved via Layer 4 (alternate LLM)" >&2
|
|
1637
|
+
echo "markdownlint_status=success" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1638
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1639
|
+
echo "markdownlint_violations=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1640
|
+
return 0
|
|
1641
|
+
fi
|
|
1642
|
+
|
|
1643
|
+
# Layer 5: Graceful fallback — proceed with warning
|
|
1644
|
+
echo "" >&2
|
|
1645
|
+
echo "[Phase 7] [Layer 5] Graceful fallback — proceeding with remaining violations as warnings." >&2
|
|
1646
|
+
local remaining_violations=""
|
|
1647
|
+
local lint_rerun_exit=0
|
|
1648
|
+
remaining_violations=$(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${md_files[@]}" 2>&1) || lint_rerun_exit=$?
|
|
1649
|
+
# Re-count actual remaining violations (final_violation_count may be stale
|
|
1650
|
+
# after Layers 3/4 partially reduced findings)
|
|
1651
|
+
local actual_remaining_count=0
|
|
1652
|
+
actual_remaining_count=$(printf '%s\n' "$remaining_violations" | grep -cE '^.+\.md:[0-9]+' || true)
|
|
1653
|
+
# Guard against tooling/config errors: if markdownlint exited non-zero
|
|
1654
|
+
# but we parsed zero violation lines, something else went wrong.
|
|
1655
|
+
if [[ $lint_rerun_exit -ne 0 && $actual_remaining_count -eq 0 ]]; then
|
|
1656
|
+
echo "[Phase 7] [Layer 5] ⚠ markdownlint exited $lint_rerun_exit but no parseable violations found — possible tooling error." >&2
|
|
1657
|
+
echo "[Phase 7] [Layer 5] Output: $remaining_violations" >&2
|
|
1658
|
+
echo "markdownlint_status=failed" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1659
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1660
|
+
echo "markdownlint_violations=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1661
|
+
return 1
|
|
1662
|
+
fi
|
|
1663
|
+
echo "[Phase 7] Remaining violations (warning-only): $actual_remaining_count" >&2
|
|
1664
|
+
printf '%s\n' "$remaining_violations" | head -50 >&2 || true
|
|
1665
|
+
echo "[Phase 7] Result: ⚠ WARNING-FALLBACK — $actual_remaining_count violation(s) remain as warnings" >&2
|
|
1666
|
+
|
|
1667
|
+
echo "markdownlint_status=warning-fallback" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1668
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1669
|
+
echo "markdownlint_violations=$actual_remaining_count" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1670
|
+
echo "markdownlint_remaining_violations<<EOF" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1671
|
+
printf '%s\n' "$remaining_violations" | sed "s|${spec_dir}/||g" | head -30 >> "${GITHUB_OUTPUT:-/dev/stdout}" || true
|
|
1672
|
+
echo "EOF" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1673
|
+
return 0
|
|
1674
|
+
fi
|
|
1675
|
+
|
|
1676
|
+
echo "markdownlint_status=$markdownlint_status" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1677
|
+
echo "markdownlint_iterations=$total_iterations" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1678
|
+
echo "markdownlint_violations=$final_violation_count" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
1679
|
+
|
|
1680
|
+
# Print remaining violations for actionable output (capped at 50 lines to
|
|
1681
|
+
# keep CI logs readable; full output is available via markdownlint re-run)
|
|
1682
|
+
echo "[Phase 7] Remaining violations:" >&2
|
|
1683
|
+
(cd "$spec_dir" && npx "markdownlint-cli2@${MARKDOWNLINT_CLI2_VERSION}" --no-globs "${md_files[@]}" 2>&1) | head -50 >&2 || true
|
|
1684
|
+
|
|
1685
|
+
return 1
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
# ========================== Content Preservation =============================
|
|
1689
|
+
#
|
|
1690
|
+
# Shared validation contract for both CI and interactive modes.
|
|
1691
|
+
# These functions implement the three-layer protection model:
|
|
1692
|
+
# Layer 1: PREVENTION — Improved LLM prompt (see run_clarify_phase / run_checklist_phase)
|
|
1693
|
+
# Layer 2: DETECTION — Structural validation (validate_structural_integrity)
|
|
1694
|
+
# Layer 3: RECOVERY — Backup + restore (create_backup / restore_from_backup)
|
|
1695
|
+
#
|
|
1696
|
+
# Constants used by validate_structural_integrity:
|
|
1697
|
+
# MANDATORY_SECTIONS — Always required in every valid spec.md
|
|
1698
|
+
# REQUIREMENT_RETENTION_THRESHOLD — Minimum % of FR/NFR entries to retain (spec)
|
|
1699
|
+
# CHECKLIST_RETENTION_THRESHOLD — Minimum % of checklist items to retain
|
|
1700
|
+
#
|
|
1701
|
+
# See also: .github/agents/speckit.clarify.agent.md (interactive mode)
|
|
1702
|
+
# ============================================================================
|
|
1703
|
+
|
|
1704
|
+
# Always-mandatory sections in spec.md (FR-006)
|
|
1705
|
+
MANDATORY_SECTIONS=(
|
|
1706
|
+
"## Problem Statement"
|
|
1707
|
+
"## User Scenarios & Testing"
|
|
1708
|
+
"## Requirements"
|
|
1709
|
+
"## Success Criteria"
|
|
1710
|
+
)
|
|
1711
|
+
|
|
1712
|
+
# Retention thresholds (percentage, integer)
|
|
1713
|
+
REQUIREMENT_RETENTION_THRESHOLD=95
|
|
1714
|
+
CHECKLIST_RETENTION_THRESHOLD=100
|
|
1715
|
+
|
|
1716
|
+
# File size (bytes) at or above which a context-window truncation warning
|
|
1717
|
+
# is emitted to stderr during the clarification phase (FR-012).
|
|
1718
|
+
CONTEXT_WINDOW_WARNING_THRESHOLD="${CONTEXT_WINDOW_WARNING_THRESHOLD:-50000}"
|
|
1719
|
+
|
|
1720
|
+
# ---------------------------------------------------------------------------
|
|
1721
|
+
# create_backup <filepath>
|
|
1722
|
+
#
|
|
1723
|
+
# Creates a backup of <filepath> with collision-avoidance naming:
|
|
1724
|
+
# <filepath>.bak, <filepath>.bak.1, <filepath>.bak.2, ...
|
|
1725
|
+
# Aborts with OS-level error detail on write failure (FR-002).
|
|
1726
|
+
# Prints the backup path on stdout.
|
|
1727
|
+
# ---------------------------------------------------------------------------
|
|
1728
|
+
create_backup() {
|
|
1729
|
+
local filepath="$1"
|
|
1730
|
+
local backup_path="${filepath}.bak"
|
|
1731
|
+
local counter=1
|
|
1732
|
+
|
|
1733
|
+
while [[ -e "$backup_path" ]]; do
|
|
1734
|
+
backup_path="${filepath}.bak.${counter}"
|
|
1735
|
+
counter=$((counter + 1))
|
|
1736
|
+
done
|
|
1737
|
+
|
|
1738
|
+
local cp_error
|
|
1739
|
+
|
|
1740
|
+
if ! cp_error=$(cp "$filepath" "$backup_path" 2>&1); then
|
|
1741
|
+
echo "Error: Failed to create backup at '$backup_path': $cp_error" >&2
|
|
1742
|
+
return 1
|
|
1743
|
+
fi
|
|
1744
|
+
|
|
1745
|
+
printf '%s' "$backup_path"
|
|
1746
|
+
}
|
|
1747
|
+
|
|
1748
|
+
# ---------------------------------------------------------------------------
|
|
1749
|
+
# restore_from_backup <filepath> <backup_path>
|
|
1750
|
+
#
|
|
1751
|
+
# Restores the original file from a backup (FR-007).
|
|
1752
|
+
# ---------------------------------------------------------------------------
|
|
1753
|
+
restore_from_backup() {
|
|
1754
|
+
local filepath="$1"
|
|
1755
|
+
local backup_path="$2"
|
|
1756
|
+
local cp_error
|
|
1757
|
+
|
|
1758
|
+
if [[ ! -f "$backup_path" ]]; then
|
|
1759
|
+
echo "Error: Backup file '$backup_path' does not exist" >&2
|
|
1760
|
+
return 1
|
|
1761
|
+
fi
|
|
1762
|
+
|
|
1763
|
+
if ! cp_error=$(cp "$backup_path" "$filepath" 2>&1); then
|
|
1764
|
+
echo "Error: Failed to restore '$filepath' from backup '$backup_path': $cp_error" >&2
|
|
1765
|
+
return 1
|
|
1766
|
+
fi
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1769
|
+
# ---------------------------------------------------------------------------
|
|
1770
|
+
# count_requirement_entries <filepath>
|
|
1771
|
+
#
|
|
1772
|
+
# Counts unique FR-### / NFR-### requirement IDs in the spec. When a
|
|
1773
|
+
# "## Requirements" section exists, only that section is scanned; otherwise the
|
|
1774
|
+
# full file is scanned as a fallback. This supports bullets, paragraphs,
|
|
1775
|
+
# headings, and table-based requirement formats.
|
|
1776
|
+
# Returns count on stdout.
|
|
1777
|
+
# ---------------------------------------------------------------------------
|
|
1778
|
+
count_requirement_entries() {
|
|
1779
|
+
local filepath="$1"
|
|
1780
|
+
|
|
1781
|
+
if [[ ! -f "$filepath" ]]; then
|
|
1782
|
+
echo "0"
|
|
1783
|
+
return 0
|
|
1784
|
+
fi
|
|
1785
|
+
|
|
1786
|
+
# Extract the Requirements section (or full file if none exists), then
|
|
1787
|
+
# use grep -oE to find unique FR-###/NFR-### IDs. This avoids the
|
|
1788
|
+
# non-POSIX awk match(..., ..., capture_array) form that fails on
|
|
1789
|
+
# macOS/BSD awk.
|
|
1790
|
+
local scoped_lines count
|
|
1791
|
+
scoped_lines=$(
|
|
1792
|
+
awk '
|
|
1793
|
+
BEGIN { in_req = 0; saw_req = 0 }
|
|
1794
|
+
/^[[:space:]]*##[[:space:]]+Requirements([[:space:]]*$|[[:space:][:punct:]].*)/ {
|
|
1795
|
+
in_req = 1; saw_req = 1
|
|
1796
|
+
}
|
|
1797
|
+
saw_req && in_req && /^[[:space:]]*##[[:space:]]+/ && $0 !~ /^[[:space:]]*##[[:space:]]+Requirements([[:space:]]*$|[[:space:][:punct:]].*)/ {
|
|
1798
|
+
in_req = 0
|
|
1799
|
+
}
|
|
1800
|
+
{ if (!saw_req || in_req) print }
|
|
1801
|
+
' "$filepath" 2>/dev/null || printf ''
|
|
1802
|
+
)
|
|
1803
|
+
|
|
1804
|
+
if [[ -z "$scoped_lines" ]]; then
|
|
1805
|
+
echo "0"
|
|
1806
|
+
return 0
|
|
1807
|
+
fi
|
|
1808
|
+
|
|
1809
|
+
count=$(printf '%s\n' "$scoped_lines" | grep -oE '(^|[^[:alnum:]_])(FR|NFR)-[0-9]+' | grep -oE '(FR|NFR)-[0-9]+' | sort -u | wc -l) || true
|
|
1810
|
+
echo "${count:-0}"
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
# ---------------------------------------------------------------------------
|
|
1814
|
+
# count_checklist_items <filepath>
|
|
1815
|
+
#
|
|
1816
|
+
# Counts Markdown task list items: - [ ], - [x], - [X]
|
|
1817
|
+
# Returns count on stdout.
|
|
1818
|
+
# ---------------------------------------------------------------------------
|
|
1819
|
+
count_checklist_items() {
|
|
1820
|
+
local filepath="$1"
|
|
1821
|
+
local count
|
|
1822
|
+
count=$(grep -cE '^- \[([xX]| )\] ' "$filepath" 2>/dev/null) || true
|
|
1823
|
+
echo "${count:-0}"
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
# ---------------------------------------------------------------------------
|
|
1827
|
+
# extract_section_headings <filepath>
|
|
1828
|
+
#
|
|
1829
|
+
# Extracts ## headings, strips trailing *(mandatory)* annotations and trims
|
|
1830
|
+
# whitespace. Returns one heading per line on stdout.
|
|
1831
|
+
# ---------------------------------------------------------------------------
|
|
1832
|
+
extract_section_headings() {
|
|
1833
|
+
local filepath="$1"
|
|
1834
|
+
{ grep -E '^## ' "$filepath" 2>/dev/null || true; } | sed -E 's/[[:space:]]*\*\(mandatory\)\*[[:space:]]*$//' | sed 's/[[:space:]]*$//'
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
# ---------------------------------------------------------------------------
|
|
1838
|
+
# validate_structural_integrity <original_file> <candidate_file> [--type spec|checklist]
|
|
1839
|
+
#
|
|
1840
|
+
# Compares a candidate output against the original file to ensure structural
|
|
1841
|
+
# integrity is preserved.
|
|
1842
|
+
#
|
|
1843
|
+
# For --type spec (default):
|
|
1844
|
+
# - All mandatory sections must be present
|
|
1845
|
+
# - All original section headings must be preserved
|
|
1846
|
+
# - Requirement entry count must be >= ceil(0.95 * original_count)
|
|
1847
|
+
#
|
|
1848
|
+
# For --type checklist:
|
|
1849
|
+
# - All original section headings must be preserved
|
|
1850
|
+
# - Checklist item count must be >= original_count
|
|
1851
|
+
#
|
|
1852
|
+
# Skips retention check when original count is 0.
|
|
1853
|
+
# Prints specific failure reasons to stderr (NFR-002).
|
|
1854
|
+
# Returns 0 on pass, 1 on fail.
|
|
1855
|
+
# ---------------------------------------------------------------------------
|
|
1856
|
+
validate_structural_integrity() {
|
|
1857
|
+
local original_file="$1"
|
|
1858
|
+
local candidate_file="$2"
|
|
1859
|
+
local file_type="spec"
|
|
1860
|
+
|
|
1861
|
+
# Parse optional --type argument
|
|
1862
|
+
shift 2
|
|
1863
|
+
while [[ $# -gt 0 ]]; do
|
|
1864
|
+
case "$1" in
|
|
1865
|
+
--type)
|
|
1866
|
+
if [[ -z "${2:-}" ]]; then
|
|
1867
|
+
echo "Error: --type requires a value" >&2
|
|
1868
|
+
return 1
|
|
1869
|
+
fi
|
|
1870
|
+
case "$2" in
|
|
1871
|
+
spec|checklist)
|
|
1872
|
+
file_type="$2"
|
|
1873
|
+
;;
|
|
1874
|
+
*)
|
|
1875
|
+
echo "Error: --type must be 'spec' or 'checklist' (got '$2')" >&2
|
|
1876
|
+
return 1
|
|
1877
|
+
;;
|
|
1878
|
+
esac
|
|
1879
|
+
shift 2
|
|
1880
|
+
;;
|
|
1881
|
+
*)
|
|
1882
|
+
echo "Error: Unknown argument '$1'" >&2
|
|
1883
|
+
return 1
|
|
1884
|
+
;;
|
|
1885
|
+
esac
|
|
1886
|
+
done
|
|
1887
|
+
|
|
1888
|
+
local failed=0
|
|
1889
|
+
|
|
1890
|
+
# --- Mandatory sections check (spec only) ---
|
|
1891
|
+
# Use extracted headings (line-anchored) to avoid false positives from TOC/links
|
|
1892
|
+
if [[ "$file_type" == "spec" ]]; then
|
|
1893
|
+
local candidate_headings_for_mandatory
|
|
1894
|
+
candidate_headings_for_mandatory=$(extract_section_headings "$candidate_file")
|
|
1895
|
+
for section in "${MANDATORY_SECTIONS[@]}"; do
|
|
1896
|
+
local normalized_section
|
|
1897
|
+
normalized_section=$(echo "$section" | sed -E 's/[[:space:]]*\*\(mandatory\)\*[[:space:]]*$//' | sed 's/[[:space:]]*$//')
|
|
1898
|
+
if ! echo "$candidate_headings_for_mandatory" | grep -qxF "$normalized_section"; then
|
|
1899
|
+
echo "Validation FAILED: mandatory section missing: '$normalized_section'" >&2
|
|
1900
|
+
failed=1
|
|
1901
|
+
fi
|
|
1902
|
+
done
|
|
1903
|
+
fi
|
|
1904
|
+
|
|
1905
|
+
# --- All original section headings preserved ---
|
|
1906
|
+
local original_headings candidate_headings
|
|
1907
|
+
original_headings=$(extract_section_headings "$original_file")
|
|
1908
|
+
candidate_headings=$(extract_section_headings "$candidate_file")
|
|
1909
|
+
|
|
1910
|
+
while IFS= read -r heading; do
|
|
1911
|
+
[[ -z "$heading" ]] && continue
|
|
1912
|
+
if ! echo "$candidate_headings" | grep -qxF "$heading"; then
|
|
1913
|
+
echo "Validation FAILED: original section heading missing: '$heading'" >&2
|
|
1914
|
+
failed=1
|
|
1915
|
+
fi
|
|
1916
|
+
done <<< "$original_headings"
|
|
1917
|
+
|
|
1918
|
+
# --- Retention check ---
|
|
1919
|
+
if [[ "$file_type" == "spec" ]]; then
|
|
1920
|
+
local original_count candidate_count threshold
|
|
1921
|
+
original_count=$(count_requirement_entries "$original_file")
|
|
1922
|
+
candidate_count=$(count_requirement_entries "$candidate_file")
|
|
1923
|
+
|
|
1924
|
+
if [[ "$original_count" -gt 0 ]]; then
|
|
1925
|
+
# Integer ceiling: ceil(threshold% * N) = (threshold * N + (100-1)) / 100
|
|
1926
|
+
threshold=$(( (REQUIREMENT_RETENTION_THRESHOLD * original_count + 99) / 100 ))
|
|
1927
|
+
if [[ "$candidate_count" -lt "$threshold" ]]; then
|
|
1928
|
+
echo "Validation FAILED: requirement count dropped from $original_count to $candidate_count (threshold: $threshold, ${REQUIREMENT_RETENTION_THRESHOLD}%)" >&2
|
|
1929
|
+
failed=1
|
|
1930
|
+
fi
|
|
1931
|
+
fi
|
|
1932
|
+
elif [[ "$file_type" == "checklist" ]]; then
|
|
1933
|
+
local original_count candidate_count
|
|
1934
|
+
original_count=$(count_checklist_items "$original_file")
|
|
1935
|
+
candidate_count=$(count_checklist_items "$candidate_file")
|
|
1936
|
+
|
|
1937
|
+
if [[ "$original_count" -gt 0 ]]; then
|
|
1938
|
+
local threshold
|
|
1939
|
+
threshold=$(( (CHECKLIST_RETENTION_THRESHOLD * original_count + 99) / 100 ))
|
|
1940
|
+
if [[ "$candidate_count" -lt "$threshold" ]]; then
|
|
1941
|
+
echo "Validation FAILED: checklist item count dropped from $original_count to $candidate_count (threshold: $threshold, ${CHECKLIST_RETENTION_THRESHOLD}% retention required)" >&2
|
|
1942
|
+
failed=1
|
|
1943
|
+
fi
|
|
1944
|
+
fi
|
|
1945
|
+
fi
|
|
1946
|
+
|
|
1947
|
+
return "$failed"
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
# ---------------------------------------------------------------------------
|
|
1951
|
+
# safe_write_with_validation <original_file> <candidate_content> [--type spec|checklist]
|
|
1952
|
+
#
|
|
1953
|
+
# Orchestrates the full safe-write flow:
|
|
1954
|
+
# 1. Create backup of original (FR-002)
|
|
1955
|
+
# 2. Write candidate to <original_file>.tmp
|
|
1956
|
+
# 3. Run validate_structural_integrity
|
|
1957
|
+
# 4. On pass: mv .tmp original (atomic POSIX rename)
|
|
1958
|
+
# 5. On fail: remove .tmp, leave original unchanged, report errors (FR-007)
|
|
1959
|
+
#
|
|
1960
|
+
# Returns 0 on success, non-zero on any failure (validation, backup, I/O, or
|
|
1961
|
+
# atomic replace).
|
|
1962
|
+
# ---------------------------------------------------------------------------
|
|
1963
|
+
safe_write_with_validation() {
|
|
1964
|
+
local original_file="$1"
|
|
1965
|
+
local candidate_content="$2"
|
|
1966
|
+
shift 2
|
|
1967
|
+
local extra_args=("$@")
|
|
1968
|
+
|
|
1969
|
+
local tmp_file="${original_file}.tmp"
|
|
1970
|
+
|
|
1971
|
+
# Step 1: Create backup
|
|
1972
|
+
local backup_path
|
|
1973
|
+
backup_path=$(create_backup "$original_file") || {
|
|
1974
|
+
echo "Error: Backup creation failed for '$original_file'. Aborting write." >&2
|
|
1975
|
+
return 1
|
|
1976
|
+
}
|
|
1977
|
+
echo "Backup created: $backup_path" >&2
|
|
1978
|
+
|
|
1979
|
+
# Step 2: Write candidate to .tmp
|
|
1980
|
+
printf '%s\n' "$candidate_content" > "$tmp_file" || {
|
|
1981
|
+
echo "Error: Failed to write candidate to '$tmp_file'" >&2
|
|
1982
|
+
rm -f "$tmp_file"
|
|
1983
|
+
rm -f "$backup_path"
|
|
1984
|
+
return 1
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
# Step 3: Validate
|
|
1988
|
+
if validate_structural_integrity "$original_file" "$tmp_file" "${extra_args[@]}"; then
|
|
1989
|
+
# Step 4: Atomic replace
|
|
1990
|
+
mv "$tmp_file" "$original_file" || {
|
|
1991
|
+
echo "Error: Atomic replace failed. Restoring from backup." >&2
|
|
1992
|
+
restore_from_backup "$original_file" "$backup_path"
|
|
1993
|
+
rm -f "$tmp_file"
|
|
1994
|
+
return 1
|
|
1995
|
+
}
|
|
1996
|
+
# Remove backup after successful replace to prevent .bak files from being committed
|
|
1997
|
+
rm -f "$backup_path"
|
|
1998
|
+
echo "Validation passed. File updated: $original_file" >&2
|
|
1999
|
+
return 0
|
|
2000
|
+
else
|
|
2001
|
+
# Step 5: Validation failed — leave original unchanged
|
|
2002
|
+
rm -f "$tmp_file"
|
|
2003
|
+
echo "Validation FAILED. Original file preserved: $original_file" >&2
|
|
2004
|
+
echo "Backup available at: $backup_path" >&2
|
|
2005
|
+
return 1
|
|
2006
|
+
fi
|
|
2007
|
+
}
|
|
2008
|
+
|
|
2009
|
+
# ---------------------------------------------------------------------------
|
|
2010
|
+
# capture_missing_mandatory_sections <original_file> <candidate_content>
|
|
2011
|
+
#
|
|
2012
|
+
# Compares the candidate content against the MANDATORY_SECTIONS array and
|
|
2013
|
+
# returns (prints to stdout) a comma-separated list of missing section names.
|
|
2014
|
+
# Used by run_clarify_phase() to build retry feedback for the LLM.
|
|
2015
|
+
# ---------------------------------------------------------------------------
|
|
2016
|
+
capture_missing_mandatory_sections() {
|
|
2017
|
+
local original_file="$1"
|
|
2018
|
+
local candidate_content="$2"
|
|
2019
|
+
local tmp_check
|
|
2020
|
+
tmp_check=$(mktemp "${original_file}.missing_check.XXXXXX") || {
|
|
2021
|
+
echo "Error: capture_missing_mandatory_sections: failed to create temp file near ${original_file}" >&2
|
|
2022
|
+
return 1
|
|
2023
|
+
}
|
|
2024
|
+
if ! printf '%s\n' "$candidate_content" > "$tmp_check"; then
|
|
2025
|
+
echo "Error: capture_missing_mandatory_sections: failed to write candidate content to $tmp_check" >&2
|
|
2026
|
+
rm -f "$tmp_check"
|
|
2027
|
+
return 1
|
|
2028
|
+
fi
|
|
2029
|
+
local candidate_headings
|
|
2030
|
+
candidate_headings=$(extract_section_headings "$tmp_check")
|
|
2031
|
+
local missing=""
|
|
2032
|
+
for section in "${MANDATORY_SECTIONS[@]}"; do
|
|
2033
|
+
local normalized
|
|
2034
|
+
normalized=$(echo "$section" | sed -E 's/[[:space:]]*\*\(mandatory\)\*[[:space:]]*$//' | sed 's/[[:space:]]*$//')
|
|
2035
|
+
if ! echo "$candidate_headings" | grep -qxF "$normalized"; then
|
|
2036
|
+
missing="${missing}${missing:+, }${normalized}"
|
|
2037
|
+
fi
|
|
2038
|
+
done
|
|
2039
|
+
rm -f "$tmp_check"
|
|
2040
|
+
printf '%s' "$missing"
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
# ========================== Phase Functions ==================================
|
|
2044
|
+
|
|
2045
|
+
# ---------------------------------------------------------------------------
|
|
2046
|
+
# run_specify_phase
|
|
2047
|
+
#
|
|
2048
|
+
# Constructs the specify prompt and calls call_llm.
|
|
2049
|
+
# Prints the generated spec content to stdout.
|
|
2050
|
+
# ---------------------------------------------------------------------------
|
|
2051
|
+
run_specify_phase() {
|
|
2052
|
+
# Load the spec template
|
|
2053
|
+
local template_file="$REPO_ROOT/.specify/presets/agdt-templates/templates/spec-template.md"
|
|
2054
|
+
local spec_template=""
|
|
2055
|
+
if [[ -f "$template_file" ]]; then
|
|
2056
|
+
spec_template=$(cat "$template_file")
|
|
2057
|
+
fi
|
|
2058
|
+
|
|
2059
|
+
# Load the mandatory skeleton block (FR-001, FR-006 #1859)
|
|
2060
|
+
# Select skeleton variant based on HIERARCHY_LEVEL
|
|
2061
|
+
local skeleton_file
|
|
2062
|
+
if [[ "$HIERARCHY_LEVEL" == "epic" ]]; then
|
|
2063
|
+
skeleton_file="$SCRIPT_DIR/templates/specify-skeleton-epic.md"
|
|
2064
|
+
echo "Using specify-skeleton-epic.md for HIERARCHY_LEVEL=epic"
|
|
2065
|
+
else
|
|
2066
|
+
skeleton_file="$SCRIPT_DIR/templates/specify-skeleton.md"
|
|
2067
|
+
fi
|
|
2068
|
+
local skeleton_block=""
|
|
2069
|
+
if [[ -f "$skeleton_file" ]]; then
|
|
2070
|
+
skeleton_block=$(cat "$skeleton_file")
|
|
2071
|
+
fi
|
|
2072
|
+
|
|
2073
|
+
local mandatory_heading_lines=""
|
|
2074
|
+
local section
|
|
2075
|
+
for section in "${MANDATORY_SECTIONS[@]}"; do
|
|
2076
|
+
mandatory_heading_lines="${mandatory_heading_lines}- ${section}"$'\n'
|
|
2077
|
+
done
|
|
2078
|
+
|
|
2079
|
+
# Build level-appropriate instructions (FR-006, #1859)
|
|
2080
|
+
local level_instructions
|
|
2081
|
+
if [[ "$HIERARCHY_LEVEL" == "epic" ]]; then
|
|
2082
|
+
level_instructions="1. Create a complete epic-level specification following the template structure
|
|
2083
|
+
2. Define goals, vision, and strategic objectives
|
|
2084
|
+
3. Define functional and non-functional requirements at a high level
|
|
2085
|
+
4. Include cross-cutting concerns and architectural boundaries
|
|
2086
|
+
5. Add a \"Source Issue\" field at the top with: #$ISSUE_NUMBER ($ISSUE_URL)
|
|
2087
|
+
6. Keep the specification focused on strategic WHAT and WHY, not detailed HOW
|
|
2088
|
+
7. Make reasonable assumptions where details are missing
|
|
2089
|
+
8. Limit [NEEDS CLARIFICATION] markers to maximum 3 critical items
|
|
2090
|
+
9. Include ALL mandatory section headings as level-2 markdown headings (##), exactly as shown below:
|
|
2091
|
+
${mandatory_heading_lines}
|
|
2092
|
+
10. Write detailed prose paragraphs — do NOT use bullet points for more than ${MAX_BULLET_LINE_PCT}% of content lines.
|
|
2093
|
+
11. Do NOT include user stories with Given/When/Then scenarios — those belong at the feature level. Focus on goals, vision, and measurable success criteria."
|
|
2094
|
+
else
|
|
2095
|
+
level_instructions="1. Create a complete feature specification following the template structure
|
|
2096
|
+
2. Include user stories with priorities (P1, P2, P3)
|
|
2097
|
+
3. Define functional and non-functional requirements
|
|
2098
|
+
4. Include acceptance scenarios in Given/When/Then format
|
|
2099
|
+
5. Add a \"Source Issue\" field at the top with: #$ISSUE_NUMBER ($ISSUE_URL)
|
|
2100
|
+
6. Keep the specification focused on WHAT and WHY, not HOW
|
|
2101
|
+
7. Make reasonable assumptions where details are missing
|
|
2102
|
+
8. Limit [NEEDS CLARIFICATION] markers to maximum 3 critical items
|
|
2103
|
+
9. Include ALL mandatory section headings as level-2 markdown headings (##), exactly as shown below:
|
|
2104
|
+
${mandatory_heading_lines}
|
|
2105
|
+
10. Write detailed prose paragraphs — do NOT use bullet points for more than ${MAX_BULLET_LINE_PCT}% of content lines. Sections like Problem Statement and User Scenarios should use prose descriptions, not just bullet lists."
|
|
2106
|
+
fi
|
|
2107
|
+
|
|
2108
|
+
local prompt
|
|
2109
|
+
local prompt_subject="a feature specification"
|
|
2110
|
+
if [[ "$HIERARCHY_LEVEL" == "epic" ]]; then
|
|
2111
|
+
prompt_subject="an epic specification"
|
|
2112
|
+
fi
|
|
2113
|
+
prompt="You are a specification writer. Create $prompt_subject based on the following GitHub issue.
|
|
2114
|
+
|
|
2115
|
+
## Issue Details
|
|
2116
|
+
- **Issue Number**: #$ISSUE_NUMBER
|
|
2117
|
+
- **Issue URL**: $ISSUE_URL
|
|
2118
|
+
- **Title**: $ISSUE_TITLE
|
|
2119
|
+
|
|
2120
|
+
## Issue Description
|
|
2121
|
+
$ISSUE_BODY
|
|
2122
|
+
|
|
2123
|
+
## Instructions
|
|
2124
|
+
${level_instructions}
|
|
2125
|
+
|
|
2126
|
+
## Mandatory Document Structure
|
|
2127
|
+
|
|
2128
|
+
Your output MUST contain all of the following sections. Use this skeleton as your structural foundation and fill in each section with substantive, detailed content:
|
|
2129
|
+
|
|
2130
|
+
${skeleton_block}
|
|
2131
|
+
|
|
2132
|
+
## Template Reference
|
|
2133
|
+
$spec_template
|
|
2134
|
+
|
|
2135
|
+
Generate the specification now. Output ONLY the specification content, no commentary, no code fences. Start with the header and metadata section.
|
|
2136
|
+
|
|
2137
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
2138
|
+
WRONG: \"Spec created at specs/...\"
|
|
2139
|
+
WRONG: \"Here is the updated specification...\"
|
|
2140
|
+
WRONG: \"Certainly! Here is...\"
|
|
2141
|
+
CORRECT: \"# Spec: Feature Name\"
|
|
2142
|
+
Do NOT include any conversational preamble before the heading."
|
|
2143
|
+
|
|
2144
|
+
call_llm "$prompt"
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
# ---------------------------------------------------------------------------
|
|
2148
|
+
# run_specify_phase_with_feedback
|
|
2149
|
+
#
|
|
2150
|
+
# Variant of run_specify_phase that includes structured feedback from a
|
|
2151
|
+
# previous failed validation attempt. Uses SPECIFY_RETRY_FEEDBACK and
|
|
2152
|
+
# SPECIFY_FAILED_OUTPUT global variables when set. On retry >= 2, injects
|
|
2153
|
+
# an example valid spec for reference (FR-010).
|
|
2154
|
+
# ---------------------------------------------------------------------------
|
|
2155
|
+
run_specify_phase_with_feedback() {
|
|
2156
|
+
if [[ -z "${SPECIFY_RETRY_FEEDBACK:-}" ]]; then
|
|
2157
|
+
run_specify_phase
|
|
2158
|
+
return $?
|
|
2159
|
+
fi
|
|
2160
|
+
|
|
2161
|
+
# Load the spec template
|
|
2162
|
+
local template_file="$REPO_ROOT/.specify/presets/agdt-templates/templates/spec-template.md"
|
|
2163
|
+
local spec_template=""
|
|
2164
|
+
if [[ -f "$template_file" ]]; then
|
|
2165
|
+
spec_template=$(cat "$template_file")
|
|
2166
|
+
fi
|
|
2167
|
+
|
|
2168
|
+
# Load the mandatory skeleton block (FR-001)
|
|
2169
|
+
local skeleton_file="$SCRIPT_DIR/templates/specify-skeleton.md"
|
|
2170
|
+
local skeleton_block=""
|
|
2171
|
+
if [[ -f "$skeleton_file" ]]; then
|
|
2172
|
+
skeleton_block=$(cat "$skeleton_file")
|
|
2173
|
+
fi
|
|
2174
|
+
|
|
2175
|
+
# Load example spec for injection on retry >= 2 (FR-010)
|
|
2176
|
+
local example_section=""
|
|
2177
|
+
if [[ "${specify_retry_count:-0}" -ge 2 ]]; then
|
|
2178
|
+
local example_file="$SCRIPT_DIR/templates/example-valid-spec.md"
|
|
2179
|
+
if [[ -f "$example_file" ]]; then
|
|
2180
|
+
local example_content
|
|
2181
|
+
example_content=$(head -c 1500 "$example_file")
|
|
2182
|
+
example_section="
|
|
2183
|
+
## Reference: Example Valid Specification (truncated)
|
|
2184
|
+
|
|
2185
|
+
The following is an example of a specification that passes ALL validation checks. Use it as a structural reference:
|
|
2186
|
+
|
|
2187
|
+
\`\`\`markdown
|
|
2188
|
+
${example_content}
|
|
2189
|
+
\`\`\`
|
|
2190
|
+
|
|
2191
|
+
"
|
|
2192
|
+
fi
|
|
2193
|
+
fi
|
|
2194
|
+
|
|
2195
|
+
local mandatory_heading_lines=""
|
|
2196
|
+
local section
|
|
2197
|
+
for section in "${MANDATORY_SECTIONS[@]}"; do
|
|
2198
|
+
mandatory_heading_lines="${mandatory_heading_lines}- ${section}"$'\n'
|
|
2199
|
+
done
|
|
2200
|
+
|
|
2201
|
+
local prompt
|
|
2202
|
+
prompt="You are a specification writer. Your previous attempt failed structural validation. You MUST fix ALL issues listed below.
|
|
2203
|
+
|
|
2204
|
+
## Issue Details
|
|
2205
|
+
- **Issue Number**: #$ISSUE_NUMBER
|
|
2206
|
+
- **Issue URL**: $ISSUE_URL
|
|
2207
|
+
- **Title**: $ISSUE_TITLE
|
|
2208
|
+
|
|
2209
|
+
## Issue Description
|
|
2210
|
+
$ISSUE_BODY
|
|
2211
|
+
|
|
2212
|
+
${SPECIFY_RETRY_FEEDBACK}
|
|
2213
|
+
${example_section}
|
|
2214
|
+
## Your Previous (Invalid) Output
|
|
2215
|
+
${SPECIFY_FAILED_OUTPUT:-}
|
|
2216
|
+
|
|
2217
|
+
## Mandatory Document Structure
|
|
2218
|
+
|
|
2219
|
+
Your output MUST contain all of the following sections:
|
|
2220
|
+
|
|
2221
|
+
${skeleton_block}
|
|
2222
|
+
|
|
2223
|
+
## Instructions
|
|
2224
|
+
1. Create a COMPLETE feature specification — not a summary or outline
|
|
2225
|
+
2. Include user stories with priorities (P1, P2, P3) — each with Given/When/Then scenarios
|
|
2226
|
+
3. Define at least ${MIN_FUNCTIONAL_REQUIREMENTS} functional requirements (FR-### format)
|
|
2227
|
+
4. Include at least ${MIN_USER_STORIES} user stories (### User Story headings)
|
|
2228
|
+
5. Success criteria (SC-### format) must contain measurable targets (numbers, percentages)
|
|
2229
|
+
6. Write detailed prose — do NOT use bullet points for more than ${MAX_BULLET_LINE_PCT}% of content lines
|
|
2230
|
+
7. Add a \"Source Issue\" field at the top with: #$ISSUE_NUMBER ($ISSUE_URL)
|
|
2231
|
+
8. Keep the specification focused on WHAT and WHY, not HOW
|
|
2232
|
+
9. Include ALL mandatory section headings as level-2 markdown headings (##), exactly as shown below:
|
|
2233
|
+
${mandatory_heading_lines}
|
|
2234
|
+
|
|
2235
|
+
## Template Reference
|
|
2236
|
+
$spec_template
|
|
2237
|
+
|
|
2238
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
2239
|
+
Do NOT include any conversational preamble before the heading."
|
|
2240
|
+
|
|
2241
|
+
call_llm "$prompt"
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
# ---------------------------------------------------------------------------
|
|
2245
|
+
# _emit_validation_errors <phase_number> <phase_name> <failures_text>
|
|
2246
|
+
#
|
|
2247
|
+
# Emits structured validation errors to $GITHUB_OUTPUT and writes a
|
|
2248
|
+
# validation-errors.json workspace file for downstream fallback consumption.
|
|
2249
|
+
# Only called on structural validation failures (FR-001).
|
|
2250
|
+
# ---------------------------------------------------------------------------
|
|
2251
|
+
_emit_validation_errors() {
|
|
2252
|
+
local phase_number="$1"
|
|
2253
|
+
local phase_name="$2"
|
|
2254
|
+
local failures_text="$3"
|
|
2255
|
+
local compatibility_failures_text
|
|
2256
|
+
|
|
2257
|
+
compatibility_failures_text=$(printf '%s' "$failures_text" | sed 's/ | REMEDIATION: .*//')
|
|
2258
|
+
|
|
2259
|
+
# Emit semicolon-delimited validation_errors to GITHUB_OUTPUT
|
|
2260
|
+
local output_line
|
|
2261
|
+
output_line=$(printf '%s' "$compatibility_failures_text" | tr '\n' ';' | sed 's/;$//')
|
|
2262
|
+
echo "validation_errors=${output_line}" >> "${GITHUB_OUTPUT:-/dev/null}"
|
|
2263
|
+
|
|
2264
|
+
# Write validation-errors.json workspace file
|
|
2265
|
+
local json_errors="["
|
|
2266
|
+
local first=true
|
|
2267
|
+
while IFS= read -r line; do
|
|
2268
|
+
[[ -z "$line" ]] && continue
|
|
2269
|
+
local category detail
|
|
2270
|
+
category=$(printf '%s' "$line" | sed 's/^[[:space:]]*//' | cut -d: -f1)
|
|
2271
|
+
detail=$(printf '%s' "$line" | sed 's/^[^:]*:[[:space:]]*//')
|
|
2272
|
+
if [[ "$first" == "true" ]]; then
|
|
2273
|
+
first=false
|
|
2274
|
+
else
|
|
2275
|
+
json_errors+=","
|
|
2276
|
+
fi
|
|
2277
|
+
# Escape JSON special characters in detail
|
|
2278
|
+
detail=$(printf '%s' "$detail" | sed 's/\\/\\\\/g; s/"/\\"/g')
|
|
2279
|
+
json_errors+="{\"category\":\"${category}\",\"detail\":\"${detail}\"}"
|
|
2280
|
+
done <<< "$compatibility_failures_text"
|
|
2281
|
+
json_errors+="]"
|
|
2282
|
+
|
|
2283
|
+
local json_file="${GITHUB_WORKSPACE:-${RUNNER_TEMP:-/tmp}}/validation-errors.json"
|
|
2284
|
+
cat > "$json_file" <<JSONEOF
|
|
2285
|
+
{"phase":${phase_number},"phase_name":"${phase_name}","errors":${json_errors}}
|
|
2286
|
+
JSONEOF
|
|
2287
|
+
echo "[Agent Fallback] Wrote validation errors to ${json_file}" >&2
|
|
2288
|
+
}
|
|
2289
|
+
|
|
2290
|
+
# ---------------------------------------------------------------------------
|
|
2291
|
+
# run_specify_phase_with_validation_retries
|
|
2292
|
+
#
|
|
2293
|
+
# Runs Phase 1 specify with structural validation retries and structured
|
|
2294
|
+
# feedback. Validation failures consume retry budget; operational failures do
|
|
2295
|
+
# not consume retry budget. Includes dynamic threshold adaptation (FR-004),
|
|
2296
|
+
# deterministic fallback on exhaustion (FR-003), and metrics reporting (FR-007).
|
|
2297
|
+
#
|
|
2298
|
+
# Stdout: Valid specification content
|
|
2299
|
+
# Returns:
|
|
2300
|
+
# 0 = success
|
|
2301
|
+
# 1 = validation retries exhausted or operational failure cap reached
|
|
2302
|
+
# ---------------------------------------------------------------------------
|
|
2303
|
+
run_specify_phase_with_validation_retries() {
|
|
2304
|
+
local specify_retry_count=0
|
|
2305
|
+
local specify_operational_failures=0
|
|
2306
|
+
local specify_last_failures=""
|
|
2307
|
+
local last_operational_reason=""
|
|
2308
|
+
local validation_rc=0
|
|
2309
|
+
local specify_first_attempt_pass=false
|
|
2310
|
+
local specify_fallback_used=false
|
|
2311
|
+
local specify_failure_reasons=""
|
|
2312
|
+
|
|
2313
|
+
# Dynamic threshold adaptation (FR-004)
|
|
2314
|
+
_compute_dynamic_thresholds "${ISSUE_BODY:-}"
|
|
2315
|
+
|
|
2316
|
+
while [[ "$specify_retry_count" -lt "$SPECIFY_MAX_RETRIES" ]]; do
|
|
2317
|
+
SPEC_CONTENT=$(run_specify_phase_with_feedback) || {
|
|
2318
|
+
echo "[Specify] LLM call failed (operational failure, not counting as retry)" >&2
|
|
2319
|
+
specify_operational_failures=$((specify_operational_failures + 1))
|
|
2320
|
+
last_operational_reason="LLM call failed"
|
|
2321
|
+
if [[ "$specify_operational_failures" -ge "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2322
|
+
break
|
|
2323
|
+
fi
|
|
2324
|
+
continue
|
|
2325
|
+
}
|
|
2326
|
+
if [[ -z "$SPEC_CONTENT" ]]; then
|
|
2327
|
+
echo "[Specify] LLM returned empty content (operational failure, not counting as retry)" >&2
|
|
2328
|
+
specify_operational_failures=$((specify_operational_failures + 1))
|
|
2329
|
+
last_operational_reason="LLM returned empty content"
|
|
2330
|
+
if [[ "$specify_operational_failures" -ge "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2331
|
+
break
|
|
2332
|
+
fi
|
|
2333
|
+
continue
|
|
2334
|
+
fi
|
|
2335
|
+
SPEC_CONTENT=$(strip_llm_preamble "$SPEC_CONTENT" "# ")
|
|
2336
|
+
if [[ -z "${SPEC_CONTENT//[[:space:]]/}" ]]; then
|
|
2337
|
+
echo "[Specify] LLM returned only whitespace after preamble stripping (operational failure)" >&2
|
|
2338
|
+
specify_operational_failures=$((specify_operational_failures + 1))
|
|
2339
|
+
last_operational_reason="LLM returned whitespace after preamble stripping"
|
|
2340
|
+
if [[ "$specify_operational_failures" -ge "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2341
|
+
break
|
|
2342
|
+
fi
|
|
2343
|
+
continue
|
|
2344
|
+
fi
|
|
2345
|
+
SPEC_CONTENT=$(ensure_heading_start "$SPEC_CONTENT" "# Spec: $ISSUE_TITLE")
|
|
2346
|
+
|
|
2347
|
+
# Validate structural quality
|
|
2348
|
+
if specify_last_failures=$(_validate_spec_content "$SPEC_CONTENT"); then
|
|
2349
|
+
unset SPECIFY_RETRY_FEEDBACK SPECIFY_FAILED_OUTPUT 2>/dev/null || true
|
|
2350
|
+
if [[ "$specify_retry_count" -eq 0 ]]; then
|
|
2351
|
+
specify_first_attempt_pass=true
|
|
2352
|
+
fi
|
|
2353
|
+
_report_specify_metrics "$specify_first_attempt_pass" "$specify_retry_count" "$specify_fallback_used" "$specify_failure_reasons" "$((specify_retry_count + 1))"
|
|
2354
|
+
printf '%s' "$SPEC_CONTENT"
|
|
2355
|
+
return 0
|
|
2356
|
+
else
|
|
2357
|
+
validation_rc=$?
|
|
2358
|
+
if [[ "$validation_rc" -eq 2 ]]; then
|
|
2359
|
+
echo "[Specify] Structural validation could not run (operational failure, not counting as retry)" >&2
|
|
2360
|
+
specify_operational_failures=$((specify_operational_failures + 1))
|
|
2361
|
+
last_operational_reason="structural validation could not run"
|
|
2362
|
+
if [[ "$specify_operational_failures" -ge "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2363
|
+
break
|
|
2364
|
+
fi
|
|
2365
|
+
continue
|
|
2366
|
+
fi
|
|
2367
|
+
fi
|
|
2368
|
+
|
|
2369
|
+
# Track failure reasons for metrics
|
|
2370
|
+
specify_failure_reasons="${specify_last_failures}"
|
|
2371
|
+
|
|
2372
|
+
# Reset only after a non-operational iteration so consecutive rc=2
|
|
2373
|
+
# validation failures can still reach the operational-failure cap.
|
|
2374
|
+
specify_operational_failures=0
|
|
2375
|
+
|
|
2376
|
+
specify_retry_count=$((specify_retry_count + 1))
|
|
2377
|
+
if [[ "$specify_retry_count" -lt "$SPECIFY_MAX_RETRIES" ]]; then
|
|
2378
|
+
echo "[Specify] Validation failed (attempt ${specify_retry_count}/${SPECIFY_MAX_RETRIES}), retrying with structured feedback..." >&2
|
|
2379
|
+
local feedback
|
|
2380
|
+
feedback=$(_build_structured_specify_feedback "/dev/null" "$specify_last_failures")
|
|
2381
|
+
SPECIFY_RETRY_FEEDBACK="$feedback"
|
|
2382
|
+
SPECIFY_FAILED_OUTPUT="$SPEC_CONTENT"
|
|
2383
|
+
else
|
|
2384
|
+
echo "[Specify] Validation failed — all ${SPECIFY_MAX_RETRIES} retries exhausted" >&2
|
|
2385
|
+
fi
|
|
2386
|
+
done
|
|
2387
|
+
|
|
2388
|
+
unset SPECIFY_RETRY_FEEDBACK SPECIFY_FAILED_OUTPUT 2>/dev/null || true
|
|
2389
|
+
|
|
2390
|
+
# Deterministic fallback (FR-003)
|
|
2391
|
+
if [[ "$specify_operational_failures" -lt "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2392
|
+
echo "[Specify] ⚠️ Activating deterministic fallback skeleton..." >&2
|
|
2393
|
+
local fallback_content
|
|
2394
|
+
if fallback_content=$(_generate_fallback_skeleton "${ISSUE_TITLE:-}" "${ISSUE_BODY:-}" "${ISSUE_NUMBER:-0}" "${ISSUE_URL:-}"); then
|
|
2395
|
+
if [[ -n "$fallback_content" ]]; then
|
|
2396
|
+
specify_fallback_used=true
|
|
2397
|
+
_report_specify_metrics "$specify_first_attempt_pass" "$specify_retry_count" "$specify_fallback_used" "$specify_failure_reasons" "$specify_retry_count"
|
|
2398
|
+
printf '%s' "$fallback_content"
|
|
2399
|
+
return 0
|
|
2400
|
+
fi
|
|
2401
|
+
fi
|
|
2402
|
+
echo "[Specify] ⚠️ Fallback skeleton generation failed" >&2
|
|
2403
|
+
fi
|
|
2404
|
+
|
|
2405
|
+
# Complete failure path
|
|
2406
|
+
if [[ "$specify_operational_failures" -ge "$SPECIFY_MAX_OPERATIONAL_FAILURES" ]]; then
|
|
2407
|
+
echo "Error: Specify phase encountered ${specify_operational_failures} consecutive operational failures (limit: ${SPECIFY_MAX_OPERATIONAL_FAILURES})." >&2
|
|
2408
|
+
echo "Last operational failure: ${last_operational_reason}" >&2
|
|
2409
|
+
else
|
|
2410
|
+
echo "Error: Specify phase failed structural validation after ${SPECIFY_MAX_RETRIES} attempts." >&2
|
|
2411
|
+
echo "Failures:" >&2
|
|
2412
|
+
printf '%s\n' "$specify_last_failures" >&2
|
|
2413
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
2414
|
+
_emit_validation_errors "1" "specify" "$specify_last_failures"
|
|
2415
|
+
fi
|
|
2416
|
+
_report_specify_metrics "$specify_first_attempt_pass" "$specify_retry_count" "$specify_fallback_used" "$specify_failure_reasons" "$specify_retry_count"
|
|
2417
|
+
return 1
|
|
2418
|
+
}
|
|
2419
|
+
|
|
2420
|
+
# ---------------------------------------------------------------------------
|
|
2421
|
+
# _report_specify_metrics <first_attempt_pass> <total_retries> <fallback_used> <failure_reasons> [total_attempts]
|
|
2422
|
+
#
|
|
2423
|
+
# Emits JSON metrics to stderr and GITHUB_OUTPUT for CI visibility (FR-007).
|
|
2424
|
+
#
|
|
2425
|
+
# Parameters:
|
|
2426
|
+
# first_attempt_pass - "true" or "false"
|
|
2427
|
+
# total_retries - Integer count of validation-consuming attempts
|
|
2428
|
+
# fallback_used - "true" or "false"
|
|
2429
|
+
# failure_reasons - Raw failure text (may be empty)
|
|
2430
|
+
# total_attempts - Optional explicit total attempts value
|
|
2431
|
+
# ---------------------------------------------------------------------------
|
|
2432
|
+
_report_specify_metrics() {
|
|
2433
|
+
local first_attempt_pass="${1:-false}"
|
|
2434
|
+
local total_retries="${2:-0}"
|
|
2435
|
+
local fallback_used="${3:-false}"
|
|
2436
|
+
local failure_reasons="${4:-}"
|
|
2437
|
+
local total_attempts="${5:-$((total_retries + 1))}"
|
|
2438
|
+
|
|
2439
|
+
# Build failure reasons array
|
|
2440
|
+
local reasons_json="[]"
|
|
2441
|
+
if [[ -n "$failure_reasons" ]]; then
|
|
2442
|
+
reasons_json="["
|
|
2443
|
+
local first=true
|
|
2444
|
+
while IFS= read -r line; do
|
|
2445
|
+
[[ -z "$line" ]] && continue
|
|
2446
|
+
local cat="${line%%:*}"
|
|
2447
|
+
if [[ "$first" == "true" ]]; then
|
|
2448
|
+
first=false
|
|
2449
|
+
else
|
|
2450
|
+
reasons_json+=","
|
|
2451
|
+
fi
|
|
2452
|
+
reasons_json+="\"${cat}\""
|
|
2453
|
+
done <<< "$failure_reasons"
|
|
2454
|
+
reasons_json+="]"
|
|
2455
|
+
fi
|
|
2456
|
+
|
|
2457
|
+
local metrics_json
|
|
2458
|
+
metrics_json="{\"first_attempt_success\":${first_attempt_pass},\"total_attempts\":${total_attempts},\"fallback_activated\":${fallback_used},\"failure_reasons\":${reasons_json}}"
|
|
2459
|
+
|
|
2460
|
+
echo "[Specify] 📊 Metrics: ${metrics_json}" >&2
|
|
2461
|
+
|
|
2462
|
+
# Output to GITHUB_OUTPUT for CI visibility
|
|
2463
|
+
echo "specify_metrics=${metrics_json}" >> "${GITHUB_OUTPUT:-/dev/null}"
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
# ---------------------------------------------------------------------------
|
|
2467
|
+
# run_clarify_phase
|
|
2468
|
+
#
|
|
2469
|
+
# Reads the current spec.md, asks the LLM to perform an autonomous
|
|
2470
|
+
# clarification pass, and overwrites spec.md with the updated content.
|
|
2471
|
+
# ---------------------------------------------------------------------------
|
|
2472
|
+
run_clarify_phase() {
|
|
2473
|
+
local spec_file="$SPEC_DIR/spec.md"
|
|
2474
|
+
|
|
2475
|
+
# --- Pre-flight checks (FR-009) ---
|
|
2476
|
+
if [[ ! -f "$spec_file" ]]; then
|
|
2477
|
+
echo "Error: spec.md does not exist at '$spec_file'. Run the specify phase first." >&2
|
|
2478
|
+
return 1
|
|
2479
|
+
fi
|
|
2480
|
+
if [[ ! -s "$spec_file" ]]; then
|
|
2481
|
+
echo "Error: spec.md is empty (0 bytes) at '$spec_file'. Run the specify phase first." >&2
|
|
2482
|
+
return 1
|
|
2483
|
+
fi
|
|
2484
|
+
|
|
2485
|
+
# --- File size warning (FR-012) ---
|
|
2486
|
+
local file_size
|
|
2487
|
+
file_size=$(wc -c < "$spec_file")
|
|
2488
|
+
if [[ "$file_size" -ge "$CONTEXT_WINDOW_WARNING_THRESHOLD" ]]; then
|
|
2489
|
+
echo "Warning: spec.md is ${file_size} bytes (≥${CONTEXT_WINDOW_WARNING_THRESHOLD}B). Potential context-window truncation risk." >&2
|
|
2490
|
+
fi
|
|
2491
|
+
|
|
2492
|
+
local spec_content
|
|
2493
|
+
spec_content=$(strip_model_footer "$(cat "$spec_file")")
|
|
2494
|
+
|
|
2495
|
+
# --- Collect baseline metrics for LLM cross-reference ---
|
|
2496
|
+
local section_headings requirement_count
|
|
2497
|
+
section_headings=$(extract_section_headings "$spec_file")
|
|
2498
|
+
requirement_count=$(count_requirement_entries "$spec_file")
|
|
2499
|
+
|
|
2500
|
+
local today
|
|
2501
|
+
today=$(date +%Y-%m-%d)
|
|
2502
|
+
|
|
2503
|
+
local prompt
|
|
2504
|
+
prompt="You are an autonomous specification clarifier. Below is a feature specification. Your task is to:
|
|
2505
|
+
|
|
2506
|
+
CRITICAL PRESERVATION RULES:
|
|
2507
|
+
- You MUST output the COMPLETE specification with ALL sections intact
|
|
2508
|
+
- Do NOT summarize, truncate, or omit any section
|
|
2509
|
+
- Every section heading from the input MUST appear in your output
|
|
2510
|
+
- Every FR-### and NFR-### entry MUST be preserved unless explicitly merged
|
|
2511
|
+
- Replace [NEEDS CLARIFICATION] markers in-place with resolved answers
|
|
2512
|
+
- Append a ## Clarifications section (or add to existing) with session Q&A
|
|
2513
|
+
|
|
2514
|
+
CROSS-REFERENCE CHECKLIST (verify before finalizing your output):
|
|
2515
|
+
The original specification contains the following section headings — ALL must appear in your output:
|
|
2516
|
+
$section_headings
|
|
2517
|
+
The original specification contains $requirement_count requirement entries (FR-### / NFR-###).
|
|
2518
|
+
Your output must retain at least 95% of these entries.
|
|
2519
|
+
|
|
2520
|
+
INSTRUCTIONS:
|
|
2521
|
+
1. Perform a structured ambiguity scan across these categories:
|
|
2522
|
+
- Functional Scope & Behavior
|
|
2523
|
+
- Domain & Data Model
|
|
2524
|
+
- Interaction & UX Flow
|
|
2525
|
+
- Non-Functional Quality Attributes
|
|
2526
|
+
- Integration & External Dependencies
|
|
2527
|
+
- Edge Cases & Failure Handling
|
|
2528
|
+
- Constraints & Tradeoffs
|
|
2529
|
+
- Terminology & Consistency
|
|
2530
|
+
|
|
2531
|
+
2. Generate up to 5 clarification questions. For each question, determine the recommended answer based on best practices and the context of the specification.
|
|
2532
|
+
|
|
2533
|
+
3. Immediately auto-accept all recommended answers (do NOT wait for human input).
|
|
2534
|
+
|
|
2535
|
+
4. Embed the questions and accepted answers in a \`## Clarifications\` section (placed after the overview/introduction section) with:
|
|
2536
|
+
- A \`### Session $today\` subheading
|
|
2537
|
+
- Bullet points in this format: \`- Q: <question> → A: <accepted answer>\`
|
|
2538
|
+
|
|
2539
|
+
5. Apply each accepted answer to the appropriate section of the specification:
|
|
2540
|
+
- Functional answers → Functional Requirements section
|
|
2541
|
+
- UX/actor answers → User Stories section
|
|
2542
|
+
- Data shape answers → Key Entities / Data Model section
|
|
2543
|
+
- Non-functional answers → Non-Functional Requirements (convert vague terms to measurable metrics)
|
|
2544
|
+
- Edge case answers → Edge Cases section
|
|
2545
|
+
- Terminology answers → Normalize terminology across the entire spec
|
|
2546
|
+
|
|
2547
|
+
6. If no critical ambiguities are detected, add a \`## Clarifications\` section with:
|
|
2548
|
+
\`### Session $today\`
|
|
2549
|
+
\`- No critical ambiguities detected.\`
|
|
2550
|
+
|
|
2551
|
+
Output the COMPLETE updated specification content. Output ONLY the spec content, no commentary, no code fences.
|
|
2552
|
+
|
|
2553
|
+
## Current Specification
|
|
2554
|
+
$spec_content
|
|
2555
|
+
|
|
2556
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
2557
|
+
WRONG: \"Spec created at specs/...\"
|
|
2558
|
+
WRONG: \"Here is the updated specification...\"
|
|
2559
|
+
WRONG: \"Certainly! Here is...\"
|
|
2560
|
+
CORRECT: \"# Spec: Feature Name\"
|
|
2561
|
+
Do NOT include any conversational preamble before the heading."
|
|
2562
|
+
|
|
2563
|
+
# --- LLM call with multi-layer validation retry ---
|
|
2564
|
+
# Layer 1: Targeted feedback retries with stall detection
|
|
2565
|
+
# Layer 2: Incremental patching (_run_clarify_incremental_patch)
|
|
2566
|
+
# Layer 3: Alternate prompt strategy (_run_clarify_alternate_strategy)
|
|
2567
|
+
# Layer 4: Graceful degradation (preserve original, return 0)
|
|
2568
|
+
local clarify_attempt=0
|
|
2569
|
+
local clarify_max_retries="$CLARIFY_MAX_RETRIES"
|
|
2570
|
+
local clarify_retry_feedback=""
|
|
2571
|
+
local result
|
|
2572
|
+
local clarify_status="pending"
|
|
2573
|
+
local prev_fingerprint=""
|
|
2574
|
+
local clarify_layer_used=""
|
|
2575
|
+
|
|
2576
|
+
# Save original spec content for Layer 4 fallback and Layer 2/3
|
|
2577
|
+
local original_spec_content="$spec_content"
|
|
2578
|
+
# Track the last invalid candidate from Layer 1 for use as Layer 2 patch base
|
|
2579
|
+
local last_failed_candidate=""
|
|
2580
|
+
|
|
2581
|
+
# ── Early guard: skip all remediation when budget is 0 ──────────────
|
|
2582
|
+
if [[ "$clarify_max_retries" -le 0 ]]; then
|
|
2583
|
+
echo "[Clarify] All layers skipped (SPECKIT_CLARIFY_MAX_RETRIES=0) — preserving original spec.md" >&2
|
|
2584
|
+
clarify_status="warning-fallback"
|
|
2585
|
+
clarify_layer_used="layer4"
|
|
2586
|
+
echo "clarify_status=$clarify_status" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
2587
|
+
echo "clarify_layer_used=$clarify_layer_used" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
2588
|
+
return 0
|
|
2589
|
+
fi
|
|
2590
|
+
|
|
2591
|
+
# ── Layer 1: Targeted Feedback ──────────────────────────────────────
|
|
2592
|
+
echo "[Clarify] [Layer 1] Targeted feedback retries (max $clarify_max_retries)" >&2
|
|
2593
|
+
|
|
2594
|
+
clarify_attempt=0
|
|
2595
|
+
local _l1_op_failures=0
|
|
2596
|
+
while true; do
|
|
2597
|
+
# Build prompt (with retry feedback if set)
|
|
2598
|
+
local full_prompt="$prompt"
|
|
2599
|
+
if [[ -n "$clarify_retry_feedback" ]]; then
|
|
2600
|
+
full_prompt="RETRY CONTEXT — PREVIOUS ATTEMPT FAILED VALIDATION:
|
|
2601
|
+
${clarify_retry_feedback}
|
|
2602
|
+
You MUST fix ALL of the above issues in your output this time.
|
|
2603
|
+
|
|
2604
|
+
${prompt}"
|
|
2605
|
+
fi
|
|
2606
|
+
|
|
2607
|
+
local llm_rc=0
|
|
2608
|
+
result=$(call_llm "$full_prompt") || llm_rc=$?
|
|
2609
|
+
if [[ "$llm_rc" -ne 0 ]]; then
|
|
2610
|
+
_l1_op_failures=$((_l1_op_failures + 1))
|
|
2611
|
+
echo "[Clarify] [Layer 1] LLM call failed (operational error, rc=$llm_rc) — failure $_l1_op_failures/3" >&2
|
|
2612
|
+
if [[ "$_l1_op_failures" -ge 3 ]]; then
|
|
2613
|
+
echo "[Clarify] [Layer 1] Too many operational failures — escalating" >&2
|
|
2614
|
+
break
|
|
2615
|
+
fi
|
|
2616
|
+
continue # Retry without consuming retry budget
|
|
2617
|
+
fi
|
|
2618
|
+
if [[ -z "$result" ]]; then
|
|
2619
|
+
_l1_op_failures=$((_l1_op_failures + 1))
|
|
2620
|
+
echo "[Clarify] [Layer 1] LLM returned empty content — failure $_l1_op_failures/3" >&2
|
|
2621
|
+
if [[ "$_l1_op_failures" -ge 3 ]]; then
|
|
2622
|
+
echo "[Clarify] [Layer 1] Too many operational failures — escalating" >&2
|
|
2623
|
+
break
|
|
2624
|
+
fi
|
|
2625
|
+
continue # Retry without consuming retry budget
|
|
2626
|
+
fi
|
|
2627
|
+
result=$(strip_llm_preamble "$result" "# ")
|
|
2628
|
+
if [[ -z "${result//[[:space:]]/}" ]]; then
|
|
2629
|
+
_l1_op_failures=$((_l1_op_failures + 1))
|
|
2630
|
+
echo "[Clarify] [Layer 1] LLM returned blank content after preamble stripping — failure $_l1_op_failures/3" >&2
|
|
2631
|
+
if [[ "$_l1_op_failures" -ge 3 ]]; then
|
|
2632
|
+
echo "[Clarify] [Layer 1] Too many operational failures — escalating" >&2
|
|
2633
|
+
break
|
|
2634
|
+
fi
|
|
2635
|
+
continue # Retry without consuming retry budget
|
|
2636
|
+
fi
|
|
2637
|
+
result=$(ensure_heading_start "$result" "# Spec: $ISSUE_TITLE")
|
|
2638
|
+
|
|
2639
|
+
# LLM produced usable content — reset operational failure counter
|
|
2640
|
+
_l1_op_failures=0
|
|
2641
|
+
|
|
2642
|
+
# --- Diagnostic logging before validation ---
|
|
2643
|
+
local _diag_tmp
|
|
2644
|
+
if ! _diag_tmp=$(mktemp "${spec_file}.diag.XXXXXX.tmp"); then
|
|
2645
|
+
echo "Error: Clarify phase failed to create a diagnostic temp file for validation logging" >&2
|
|
2646
|
+
return 1
|
|
2647
|
+
fi
|
|
2648
|
+
if ! printf '%s\n' "$result" > "$_diag_tmp"; then
|
|
2649
|
+
rm -f "$_diag_tmp"
|
|
2650
|
+
echo "Error: Clarify phase failed to write diagnostic content to temporary file '$_diag_tmp'" >&2
|
|
2651
|
+
return 1
|
|
2652
|
+
fi
|
|
2653
|
+
echo "[Clarify] [Layer 1] Candidate section headings:" >&2
|
|
2654
|
+
extract_section_headings "$_diag_tmp" >&2 || true
|
|
2655
|
+
log_file_header "Clarify" "$_diag_tmp" || true
|
|
2656
|
+
rm -f "$_diag_tmp"
|
|
2657
|
+
|
|
2658
|
+
# --- Pre-validation with full structural integrity check ---
|
|
2659
|
+
local _preval_tmp _preval_err validation_failure_reasons
|
|
2660
|
+
_preval_tmp=$(mktemp "${spec_file}.preval.XXXXXX") || {
|
|
2661
|
+
echo "Error: Clarify phase failed to create temp file for pre-validation" >&2
|
|
2662
|
+
return 1
|
|
2663
|
+
}
|
|
2664
|
+
_preval_err=$(mktemp "${spec_file}.preval.err.XXXXXX") || {
|
|
2665
|
+
rm -f "$_preval_tmp"
|
|
2666
|
+
echo "Error: Clarify phase failed to create temp file for validation diagnostics" >&2
|
|
2667
|
+
return 1
|
|
2668
|
+
}
|
|
2669
|
+
if ! printf '%s\n' "$result" > "$_preval_tmp"; then
|
|
2670
|
+
rm -f "$_preval_tmp" "$_preval_err"
|
|
2671
|
+
echo "Error: Clarify phase failed to write candidate for pre-validation" >&2
|
|
2672
|
+
return 1
|
|
2673
|
+
fi
|
|
2674
|
+
|
|
2675
|
+
if validate_structural_integrity "$spec_file" "$_preval_tmp" --type spec 2>"$_preval_err"; then
|
|
2676
|
+
rm -f "$_preval_tmp" "$_preval_err"
|
|
2677
|
+
# Validation passed — attempt safe write
|
|
2678
|
+
clarify_retry_feedback=""
|
|
2679
|
+
if safe_write_with_validation "$spec_file" "$result" --type spec; then
|
|
2680
|
+
clarify_status="success"
|
|
2681
|
+
clarify_layer_used="layer1"
|
|
2682
|
+
echo "[Clarify] [Layer 1] ✓ Validation passed" >&2
|
|
2683
|
+
break 2>/dev/null || true # Exit Layer 1 retry loop
|
|
2684
|
+
fi
|
|
2685
|
+
echo "Error: Failed to persist validated Clarify phase output to $spec_file. Original spec.md preserved." >&2
|
|
2686
|
+
return 1
|
|
2687
|
+
fi
|
|
2688
|
+
|
|
2689
|
+
# Validation failed — build structured feedback
|
|
2690
|
+
validation_failure_reasons="$(sed '/^[[:space:]]*$/d' "$_preval_err" || true)"
|
|
2691
|
+
if [[ -z "$validation_failure_reasons" ]]; then
|
|
2692
|
+
validation_failure_reasons="Structural integrity validation failed without detailed diagnostics."
|
|
2693
|
+
fi
|
|
2694
|
+
|
|
2695
|
+
# Track last failed candidate for Layer 2 patch base
|
|
2696
|
+
last_failed_candidate="$result"
|
|
2697
|
+
|
|
2698
|
+
# Stall detection: compare fingerprints
|
|
2699
|
+
local current_fingerprint
|
|
2700
|
+
current_fingerprint=$(_compute_clarify_validation_fingerprint "$spec_file" "$_preval_tmp")
|
|
2701
|
+
rm -f "$_preval_tmp" "$_preval_err"
|
|
2702
|
+
|
|
2703
|
+
if [[ -n "$prev_fingerprint" && "$current_fingerprint" == "$prev_fingerprint" ]]; then
|
|
2704
|
+
echo "[Clarify] [Layer 1] Stall detected — validation fingerprint unchanged, escalating to Layer 2" >&2
|
|
2705
|
+
break
|
|
2706
|
+
fi
|
|
2707
|
+
prev_fingerprint="$current_fingerprint"
|
|
2708
|
+
|
|
2709
|
+
# Build structured retry feedback
|
|
2710
|
+
local _struct_tmp
|
|
2711
|
+
_struct_tmp=$(mktemp "${spec_file}.struct.XXXXXX") || {
|
|
2712
|
+
echo "Error: Clarify phase failed to create temp file for structured feedback" >&2
|
|
2713
|
+
return 1
|
|
2714
|
+
}
|
|
2715
|
+
if ! printf '%s\n' "$result" > "$_struct_tmp"; then
|
|
2716
|
+
rm -f "$_struct_tmp"
|
|
2717
|
+
echo "[Clarify] [Layer 1] Failed to write candidate for structured feedback — treating as operational failure" >&2
|
|
2718
|
+
_l1_op_failures=$((_l1_op_failures + 1))
|
|
2719
|
+
if [[ "$_l1_op_failures" -ge 3 ]]; then
|
|
2720
|
+
echo "[Clarify] [Layer 1] Too many operational failures — escalating" >&2
|
|
2721
|
+
break
|
|
2722
|
+
fi
|
|
2723
|
+
continue # Retry without consuming retry budget
|
|
2724
|
+
fi
|
|
2725
|
+
local structured_feedback
|
|
2726
|
+
structured_feedback=$(_build_structured_clarify_feedback "$spec_file" "$_struct_tmp")
|
|
2727
|
+
rm -f "$_struct_tmp"
|
|
2728
|
+
|
|
2729
|
+
if [[ -n "$structured_feedback" ]]; then
|
|
2730
|
+
clarify_retry_feedback="The previous Clarify response failed structural validation. Fix these specific issues:
|
|
2731
|
+
${structured_feedback}
|
|
2732
|
+
Raw validation errors:
|
|
2733
|
+
${validation_failure_reasons}"
|
|
2734
|
+
else
|
|
2735
|
+
clarify_retry_feedback=$'The previous Clarify response failed structural validation. Fix these issues and regenerate the complete response:\n'"$validation_failure_reasons"
|
|
2736
|
+
fi
|
|
2737
|
+
|
|
2738
|
+
clarify_attempt=$((clarify_attempt + 1))
|
|
2739
|
+
if [[ "$clarify_attempt" -gt "$clarify_max_retries" ]]; then
|
|
2740
|
+
echo "[Clarify] [Layer 1] Exhausted ($clarify_max_retries retries)" >&2
|
|
2741
|
+
break
|
|
2742
|
+
fi
|
|
2743
|
+
|
|
2744
|
+
echo "[Clarify] [Layer 1] Retry $clarify_attempt/$clarify_max_retries — validation failed. Reasons: $validation_failure_reasons" >&2
|
|
2745
|
+
done
|
|
2746
|
+
|
|
2747
|
+
# Check if Layer 1 succeeded
|
|
2748
|
+
if [[ "$clarify_status" == "success" ]]; then
|
|
2749
|
+
# Layer 1 succeeded — skip remaining layers
|
|
2750
|
+
:
|
|
2751
|
+
else
|
|
2752
|
+
# Clear stale feedback before Layer 2
|
|
2753
|
+
clarify_retry_feedback=""
|
|
2754
|
+
|
|
2755
|
+
# ── Layer 2: Incremental Patching ────────────────────────────────
|
|
2756
|
+
echo "[Clarify] [Layer 2] Incremental patching (max $clarify_max_retries retries)" >&2
|
|
2757
|
+
|
|
2758
|
+
local _l2_op_failures=0
|
|
2759
|
+
local _l2_exit_reason="exhausted"
|
|
2760
|
+
for (( clarify_attempt=1; clarify_attempt<=clarify_max_retries + 1; clarify_attempt++ )); do
|
|
2761
|
+
echo "[Clarify] [Layer 2] Attempt $clarify_attempt/$((clarify_max_retries + 1))" >&2
|
|
2762
|
+
|
|
2763
|
+
# Build validation failures text from last failed candidate (or original)
|
|
2764
|
+
local _l2_tmp _l2_failures _l2_patch_base
|
|
2765
|
+
_l2_patch_base="${last_failed_candidate:-$original_spec_content}"
|
|
2766
|
+
_l2_tmp=$(mktemp "${spec_file}.l2.XXXXXX") || {
|
|
2767
|
+
_l2_op_failures=$((_l2_op_failures + 1))
|
|
2768
|
+
echo "[Clarify] [Layer 2] Failed to create temp file (operational failure $_l2_op_failures/3)" >&2
|
|
2769
|
+
if [[ "$_l2_op_failures" -ge 3 ]]; then
|
|
2770
|
+
echo "[Clarify] [Layer 2] Too many operational failures — escalating" >&2
|
|
2771
|
+
_l2_exit_reason="operational"
|
|
2772
|
+
break
|
|
2773
|
+
fi
|
|
2774
|
+
clarify_attempt=$((clarify_attempt - 1)) # Don't consume retry budget
|
|
2775
|
+
continue # Retry without consuming retry budget
|
|
2776
|
+
}
|
|
2777
|
+
if ! printf '%s\n' "$_l2_patch_base" > "$_l2_tmp"; then
|
|
2778
|
+
rm -f "$_l2_tmp"
|
|
2779
|
+
_l2_op_failures=$((_l2_op_failures + 1))
|
|
2780
|
+
echo "[Clarify] [Layer 2] Failed to write patch base to temp file (operational failure $_l2_op_failures/3)" >&2
|
|
2781
|
+
if [[ "$_l2_op_failures" -ge 3 ]]; then
|
|
2782
|
+
echo "[Clarify] [Layer 2] Too many operational failures — escalating" >&2
|
|
2783
|
+
_l2_exit_reason="operational"
|
|
2784
|
+
break
|
|
2785
|
+
fi
|
|
2786
|
+
clarify_attempt=$((clarify_attempt - 1)) # Don't consume retry budget
|
|
2787
|
+
continue
|
|
2788
|
+
fi
|
|
2789
|
+
_l2_failures=$(_build_structured_clarify_feedback "$spec_file" "$_l2_tmp" 2>/dev/null || true)
|
|
2790
|
+
rm -f "$_l2_tmp"
|
|
2791
|
+
|
|
2792
|
+
if [[ -z "$_l2_failures" ]]; then
|
|
2793
|
+
# No failures detected — try with last result
|
|
2794
|
+
_l2_failures="Missing mandatory sections or heading structure issues detected."
|
|
2795
|
+
fi
|
|
2796
|
+
|
|
2797
|
+
local patch_rc=0
|
|
2798
|
+
local patched_result=""
|
|
2799
|
+
patched_result=$(_run_clarify_incremental_patch "$spec_file" "$_l2_patch_base" "$_l2_failures") || patch_rc=$?
|
|
2800
|
+
|
|
2801
|
+
if [[ "$patch_rc" -eq 2 ]]; then
|
|
2802
|
+
_l2_op_failures=$((_l2_op_failures + 1))
|
|
2803
|
+
echo "[Clarify] [Layer 2] Operational failure ($_l2_op_failures) — not counting as retry" >&2
|
|
2804
|
+
if [[ "$_l2_op_failures" -ge 3 ]]; then
|
|
2805
|
+
echo "[Clarify] [Layer 2] Too many operational failures — escalating" >&2
|
|
2806
|
+
_l2_exit_reason="operational"
|
|
2807
|
+
break
|
|
2808
|
+
fi
|
|
2809
|
+
clarify_attempt=$((clarify_attempt - 1)) # Don't consume retry budget
|
|
2810
|
+
continue
|
|
2811
|
+
fi
|
|
2812
|
+
|
|
2813
|
+
# Non-operational outcome — reset consecutive operational failure counter
|
|
2814
|
+
_l2_op_failures=0
|
|
2815
|
+
|
|
2816
|
+
if [[ "$patch_rc" -eq 0 && -n "$patched_result" ]]; then
|
|
2817
|
+
patched_result=$(ensure_heading_start "$patched_result" "# Spec: $ISSUE_TITLE")
|
|
2818
|
+
if safe_write_with_validation "$spec_file" "$patched_result" --type spec; then
|
|
2819
|
+
clarify_status="success-layer2"
|
|
2820
|
+
clarify_layer_used="layer2"
|
|
2821
|
+
echo "[Clarify] [Layer 2] ✓ Incremental patching succeeded after attempt $clarify_attempt" >&2
|
|
2822
|
+
break
|
|
2823
|
+
fi
|
|
2824
|
+
# safe_write_with_validation failed after _run_clarify_incremental_patch
|
|
2825
|
+
# already validated the content — this is an I/O/persistence error, not
|
|
2826
|
+
# a validation failure. Fail fast rather than consuming retry budget.
|
|
2827
|
+
echo "Error: [Clarify] [Layer 2] Persistence failure writing validated content to $spec_file. Original spec.md preserved." >&2
|
|
2828
|
+
return 1
|
|
2829
|
+
fi
|
|
2830
|
+
|
|
2831
|
+
echo "[Clarify] [Layer 2] Attempt $clarify_attempt failed" >&2
|
|
2832
|
+
done
|
|
2833
|
+
|
|
2834
|
+
if [[ "$clarify_status" != "success-layer2" ]]; then
|
|
2835
|
+
if [[ "$_l2_exit_reason" == "operational" ]]; then
|
|
2836
|
+
echo "[Clarify] [Layer 2] Escalating due to repeated operational failures" >&2
|
|
2837
|
+
else
|
|
2838
|
+
echo "[Clarify] [Layer 2] Exhausted ($clarify_max_retries retries)" >&2
|
|
2839
|
+
fi
|
|
2840
|
+
|
|
2841
|
+
# Clear stale feedback before Layer 3
|
|
2842
|
+
clarify_retry_feedback=""
|
|
2843
|
+
|
|
2844
|
+
# ── Layer 3: Alternate Prompt Strategy ──────────────────────────
|
|
2845
|
+
echo "[Clarify] [Layer 3] Alternate prompt strategy (max $clarify_max_retries retries)" >&2
|
|
2846
|
+
|
|
2847
|
+
local _l3_op_failures=0
|
|
2848
|
+
local _l3_exit_reason="exhausted"
|
|
2849
|
+
for (( clarify_attempt=1; clarify_attempt<=clarify_max_retries + 1; clarify_attempt++ )); do
|
|
2850
|
+
echo "[Clarify] [Layer 3] Attempt $clarify_attempt/$((clarify_max_retries + 1))" >&2
|
|
2851
|
+
|
|
2852
|
+
local alt_rc=0
|
|
2853
|
+
local alt_result=""
|
|
2854
|
+
alt_result=$(_run_clarify_alternate_strategy "$spec_file" "$original_spec_content" "$section_headings" "$requirement_count") || alt_rc=$?
|
|
2855
|
+
|
|
2856
|
+
if [[ "$alt_rc" -eq 2 ]]; then
|
|
2857
|
+
_l3_op_failures=$((_l3_op_failures + 1))
|
|
2858
|
+
echo "[Clarify] [Layer 3] Operational failure ($_l3_op_failures) — not counting as retry" >&2
|
|
2859
|
+
if [[ "$_l3_op_failures" -ge 3 ]]; then
|
|
2860
|
+
echo "[Clarify] [Layer 3] Too many operational failures — escalating" >&2
|
|
2861
|
+
_l3_exit_reason="operational"
|
|
2862
|
+
break
|
|
2863
|
+
fi
|
|
2864
|
+
clarify_attempt=$((clarify_attempt - 1)) # Don't consume retry budget
|
|
2865
|
+
continue
|
|
2866
|
+
fi
|
|
2867
|
+
|
|
2868
|
+
# Non-operational outcome — reset consecutive operational failure counter
|
|
2869
|
+
_l3_op_failures=0
|
|
2870
|
+
|
|
2871
|
+
if [[ "$alt_rc" -eq 0 && -n "$alt_result" ]]; then
|
|
2872
|
+
alt_result=$(ensure_heading_start "$alt_result" "# Spec: $ISSUE_TITLE")
|
|
2873
|
+
if safe_write_with_validation "$spec_file" "$alt_result" --type spec; then
|
|
2874
|
+
clarify_status="success-layer3"
|
|
2875
|
+
clarify_layer_used="layer3"
|
|
2876
|
+
echo "[Clarify] [Layer 3] ✓ Alternate strategy succeeded after attempt $clarify_attempt" >&2
|
|
2877
|
+
break
|
|
2878
|
+
fi
|
|
2879
|
+
# safe_write_with_validation failed after _run_clarify_alternate_strategy
|
|
2880
|
+
# already validated the content — this is an I/O/persistence error, not
|
|
2881
|
+
# a validation failure. Fail fast rather than consuming retry budget.
|
|
2882
|
+
echo "Error: [Clarify] [Layer 3] Persistence failure writing validated content to $spec_file. Original spec.md preserved." >&2
|
|
2883
|
+
return 1
|
|
2884
|
+
fi
|
|
2885
|
+
|
|
2886
|
+
echo "[Clarify] [Layer 3] Attempt $clarify_attempt failed" >&2
|
|
2887
|
+
done
|
|
2888
|
+
|
|
2889
|
+
if [[ "$clarify_status" != "success-layer3" ]]; then
|
|
2890
|
+
if [[ "$_l3_exit_reason" == "operational" ]]; then
|
|
2891
|
+
echo "[Clarify] [Layer 3] Escalating due to repeated operational failures" >&2
|
|
2892
|
+
else
|
|
2893
|
+
echo "[Clarify] [Layer 3] Exhausted ($clarify_max_retries retries)" >&2
|
|
2894
|
+
fi
|
|
2895
|
+
|
|
2896
|
+
# ── Layer 4: Graceful Degradation ───────────────────────────
|
|
2897
|
+
echo "[Clarify] [Layer 4] Graceful degradation — preserving original spec.md" >&2
|
|
2898
|
+
echo "[Clarify] WARNING-FALLBACK: All remediation layers exhausted. Original spec.md preserved." >&2
|
|
2899
|
+
clarify_status="warning-fallback"
|
|
2900
|
+
clarify_layer_used="layer4"
|
|
2901
|
+
fi
|
|
2902
|
+
fi
|
|
2903
|
+
fi
|
|
2904
|
+
|
|
2905
|
+
# Write clarify_status and clarify_layer_used to GITHUB_OUTPUT
|
|
2906
|
+
echo "clarify_status=$clarify_status" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
2907
|
+
echo "clarify_layer_used=$clarify_layer_used" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
2908
|
+
|
|
2909
|
+
# If graceful degradation, return 0 without modifying the spec
|
|
2910
|
+
if [[ "$clarify_status" == "warning-fallback" ]]; then
|
|
2911
|
+
return 0
|
|
2912
|
+
fi
|
|
2913
|
+
|
|
2914
|
+
# --- Post-write: append model footer only after successful validation ---
|
|
2915
|
+
append_model_footer "$spec_file"
|
|
2916
|
+
|
|
2917
|
+
# --- Post-write: ensure ## Clarifications section exists (FR-005) ---
|
|
2918
|
+
if ! grep -q '^## Clarifications' "$spec_file"; then
|
|
2919
|
+
echo "Warning: LLM output missing ## Clarifications section. Appending minimal entry." >&2
|
|
2920
|
+
# Insert before the model footer using the same safe write path to avoid
|
|
2921
|
+
# destructive overwrites of the validated spec.
|
|
2922
|
+
local content updated_content
|
|
2923
|
+
content=$(strip_model_footer "$(cat "$spec_file")")
|
|
2924
|
+
updated_content=$(printf '%s\n\n## Clarifications\n\n### Session %s\n\n- Autonomous clarification pass completed. See inline updates for details.\n' "$content" "$today")
|
|
2925
|
+
if ! safe_write_with_validation "$spec_file" "$updated_content" --type spec; then
|
|
2926
|
+
echo "Error: Failed to safely append missing ## Clarifications section. Original spec.md preserved." >&2
|
|
2927
|
+
return 1
|
|
2928
|
+
fi
|
|
2929
|
+
append_model_footer "$spec_file"
|
|
2930
|
+
fi
|
|
2931
|
+
|
|
2932
|
+
# --- Post-write: warn about remaining [NEEDS CLARIFICATION] markers ---
|
|
2933
|
+
local remaining_markers
|
|
2934
|
+
remaining_markers=$(grep -c '\[NEEDS CLARIFICATION\]' "$spec_file" 2>/dev/null || echo "0")
|
|
2935
|
+
if [[ "$remaining_markers" -gt 0 ]]; then
|
|
2936
|
+
echo "Warning: $remaining_markers [NEEDS CLARIFICATION] marker(s) remain in spec.md after clarification." >&2
|
|
2937
|
+
fi
|
|
2938
|
+
}
|
|
2939
|
+
|
|
2940
|
+
# ---------------------------------------------------------------------------
|
|
2941
|
+
# run_checklist_phase
|
|
2942
|
+
#
|
|
2943
|
+
# Generates an LLM-based specification quality checklist tailored to the
|
|
2944
|
+
# actual spec content. Writes to checklists/requirements.md.
|
|
2945
|
+
# ---------------------------------------------------------------------------
|
|
2946
|
+
run_checklist_phase() {
|
|
2947
|
+
local spec_content
|
|
2948
|
+
spec_content=$(strip_model_footer "$(cat "$SPEC_DIR/spec.md")")
|
|
2949
|
+
|
|
2950
|
+
local checklist_file="$SPEC_DIR/checklists/requirements.md"
|
|
2951
|
+
local existing_checklist=false
|
|
2952
|
+
|
|
2953
|
+
# --- Conditional pre-flight: only apply backup/validation if file exists ---
|
|
2954
|
+
if [[ -f "$checklist_file" ]] && [[ -s "$checklist_file" ]]; then
|
|
2955
|
+
existing_checklist=true
|
|
2956
|
+
fi
|
|
2957
|
+
|
|
2958
|
+
local checklist_preservation_rules=""
|
|
2959
|
+
if [[ "$existing_checklist" == "true" ]]; then
|
|
2960
|
+
local existing_content
|
|
2961
|
+
existing_content=$(strip_model_footer "$(cat "$checklist_file")")
|
|
2962
|
+
local existing_item_count
|
|
2963
|
+
existing_item_count=$(count_checklist_items "$checklist_file")
|
|
2964
|
+
local existing_headings
|
|
2965
|
+
existing_headings=$(extract_section_headings "$checklist_file")
|
|
2966
|
+
|
|
2967
|
+
checklist_preservation_rules="
|
|
2968
|
+
CRITICAL PRESERVATION RULES:
|
|
2969
|
+
- An existing checklist already exists with $existing_item_count checklist items
|
|
2970
|
+
- You MUST preserve ALL existing checklist items (- [ ] and - [x] and - [X] items)
|
|
2971
|
+
- You MUST preserve ALL existing section headings
|
|
2972
|
+
- You MAY add new checklist items, but you MUST NOT remove or omit any existing ones
|
|
2973
|
+
- Every section heading from the existing checklist MUST appear in your output
|
|
2974
|
+
|
|
2975
|
+
EXISTING CHECKLIST CROSS-REFERENCE:
|
|
2976
|
+
Section headings to preserve:
|
|
2977
|
+
$existing_headings
|
|
2978
|
+
Existing checklist item count: $existing_item_count (ALL must be retained)
|
|
2979
|
+
|
|
2980
|
+
EXISTING CHECKLIST CONTENT:
|
|
2981
|
+
$existing_content
|
|
2982
|
+
"
|
|
2983
|
+
fi
|
|
2984
|
+
|
|
2985
|
+
local prompt
|
|
2986
|
+
prompt="Generate a specification quality checklist for the following feature specification.
|
|
2987
|
+
$checklist_preservation_rules
|
|
2988
|
+
The checklist must follow this structure:
|
|
2989
|
+
|
|
2990
|
+
# Specification Quality Checklist: [Feature Name from the spec]
|
|
2991
|
+
|
|
2992
|
+
**Purpose**: Validate specification completeness before proceeding to planning
|
|
2993
|
+
**Created**: $(date +%Y-%m-%d)
|
|
2994
|
+
**Feature**: [spec.md](../spec.md)
|
|
2995
|
+
**Source Issue**: #$ISSUE_NUMBER
|
|
2996
|
+
|
|
2997
|
+
## Content Quality
|
|
2998
|
+
- [ ] CHK001 [Specific check derived from the spec content about user value focus]
|
|
2999
|
+
- [ ] CHK002 [Specific check about user story format]
|
|
3000
|
+
- [ ] CHK003 [Specific check about priority assignment]
|
|
3001
|
+
- [ ] CHK004 [Specific check about no implementation details in requirements]
|
|
3002
|
+
|
|
3003
|
+
## Requirement Completeness
|
|
3004
|
+
- [ ] CHK005 [Specific check about testability of user stories]
|
|
3005
|
+
- [ ] CHK006 [Specific check about edge case documentation]
|
|
3006
|
+
- [ ] CHK007 [Specific check about acceptance scenario format]
|
|
3007
|
+
- [ ] CHK008 [Specific check about measurable success criteria]
|
|
3008
|
+
- [ ] CHK009 [Specific check about scope boundaries]
|
|
3009
|
+
- [ ] CHK010 [Specific check about dependencies and assumptions]
|
|
3010
|
+
|
|
3011
|
+
## Feature Readiness
|
|
3012
|
+
- [ ] CHK011 [Specific check about functional requirements having acceptance criteria]
|
|
3013
|
+
- [ ] CHK012 [Specific check about user scenario coverage]
|
|
3014
|
+
- [ ] CHK013 [Specific check about measurable outcomes in success criteria]
|
|
3015
|
+
- [ ] CHK014 [Specific check about no implementation details leaking into spec]
|
|
3016
|
+
|
|
3017
|
+
## Notes
|
|
3018
|
+
- This checklist was generated from the specification content for issue #$ISSUE_NUMBER
|
|
3019
|
+
- Items marked incomplete require spec updates before proceeding to planning
|
|
3020
|
+
|
|
3021
|
+
Make each checklist item SPECIFIC to the actual content of this specification — reference specific user stories, requirements, or sections by name where appropriate. Do NOT use generic placeholder text.
|
|
3022
|
+
|
|
3023
|
+
Output ONLY the markdown checklist, no commentary, no code fences.
|
|
3024
|
+
|
|
3025
|
+
## Specification Content
|
|
3026
|
+
$spec_content
|
|
3027
|
+
|
|
3028
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
3029
|
+
WRONG: \"Spec created at specs/...\"
|
|
3030
|
+
WRONG: \"Here is the updated specification...\"
|
|
3031
|
+
WRONG: \"Certainly! Here is...\"
|
|
3032
|
+
CORRECT: \"# Specification Quality Checklist: Feature Name\"
|
|
3033
|
+
Do NOT include any conversational preamble before the heading."
|
|
3034
|
+
|
|
3035
|
+
local result
|
|
3036
|
+
result=$(call_llm "$prompt") || return 1
|
|
3037
|
+
if [[ -z "$result" ]]; then
|
|
3038
|
+
echo "Error: Checklist phase returned empty content" >&2
|
|
3039
|
+
return 1
|
|
3040
|
+
fi
|
|
3041
|
+
result=$(strip_llm_preamble "$result" "# ")
|
|
3042
|
+
if [[ -z "${result//[[:space:]]/}" ]]; then
|
|
3043
|
+
echo "Error: Checklist phase returned blank content after preamble stripping" >&2
|
|
3044
|
+
return 1
|
|
3045
|
+
fi
|
|
3046
|
+
result=$(ensure_heading_start "$result" "# Specification Quality Checklist")
|
|
3047
|
+
|
|
3048
|
+
if [[ "$existing_checklist" == "true" ]]; then
|
|
3049
|
+
# --- Safe write with validation for existing checklist ---
|
|
3050
|
+
if ! safe_write_with_validation "$checklist_file" "$result" --type checklist; then
|
|
3051
|
+
echo "Error: Checklist phase output failed structural validation. Original checklist preserved." >&2
|
|
3052
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3053
|
+
_emit_validation_errors "2" "checklist" "MISSING_SECTIONS: checklist output failed structural validation"
|
|
3054
|
+
return 1
|
|
3055
|
+
fi
|
|
3056
|
+
else
|
|
3057
|
+
# --- First-time creation: no baseline to compare, but still write safely ---
|
|
3058
|
+
local tmp_checklist_file="${checklist_file}.tmp"
|
|
3059
|
+
rm -f "$tmp_checklist_file"
|
|
3060
|
+
if ! printf '%s\n' "$result" > "$tmp_checklist_file"; then
|
|
3061
|
+
echo "Error: Failed to write initial checklist to temporary file: $tmp_checklist_file" >&2
|
|
3062
|
+
rm -f "$tmp_checklist_file"
|
|
3063
|
+
return 1
|
|
3064
|
+
fi
|
|
3065
|
+
if ! mv "$tmp_checklist_file" "$checklist_file"; then
|
|
3066
|
+
echo "Error: Failed to move initial checklist into place: $checklist_file" >&2
|
|
3067
|
+
rm -f "$tmp_checklist_file"
|
|
3068
|
+
return 1
|
|
3069
|
+
fi
|
|
3070
|
+
fi
|
|
3071
|
+
|
|
3072
|
+
append_model_footer "$checklist_file"
|
|
3073
|
+
}
|
|
3074
|
+
|
|
3075
|
+
# ---------------------------------------------------------------------------
|
|
3076
|
+
# _derive_plan_artifact_heading <filename>
|
|
3077
|
+
#
|
|
3078
|
+
# Maps a plan-phase artifact filename to an appropriate default heading.
|
|
3079
|
+
# Prints the heading to stdout.
|
|
3080
|
+
# ---------------------------------------------------------------------------
|
|
3081
|
+
_derive_plan_artifact_heading() {
|
|
3082
|
+
local file="$1"
|
|
3083
|
+
case "$file" in
|
|
3084
|
+
plan.md) echo "# Implementation Plan" ;;
|
|
3085
|
+
research.md) echo "# Technical Research" ;;
|
|
3086
|
+
data-model.md) echo "# Data Model" ;;
|
|
3087
|
+
quickstart.md) echo "# Quick Start Guide" ;;
|
|
3088
|
+
contracts/*.md) echo "# API Contract: $(basename "$file" .md)" ;;
|
|
3089
|
+
*) echo "# $(basename "$file" .md)" ;;
|
|
3090
|
+
esac
|
|
3091
|
+
}
|
|
3092
|
+
|
|
3093
|
+
# ---------------------------------------------------------------------------
|
|
3094
|
+
# run_plan_phase
|
|
3095
|
+
#
|
|
3096
|
+
# Generates plan.md and optional artifacts (research.md, data-model.md,
|
|
3097
|
+
# contracts/*, quickstart.md) using artifact delimiters.
|
|
3098
|
+
#
|
|
3099
|
+
# Context budget enforcement: before calling the LLM, the spec content is
|
|
3100
|
+
# passed through the Python budget module to ensure it fits within the
|
|
3101
|
+
# configured context budget (default: 32,000 chars, override via
|
|
3102
|
+
# AGDT_PLAN_CONTEXT_BUDGET). If the content is too large, deterministic
|
|
3103
|
+
# reduction stages are applied (strip markdown → remove images → collapse
|
|
3104
|
+
# whitespace → hard truncate → summary-only).
|
|
3105
|
+
# ---------------------------------------------------------------------------
|
|
3106
|
+
run_plan_phase() {
|
|
3107
|
+
local spec_content
|
|
3108
|
+
spec_content=$(strip_model_footer "$(cat "$SPEC_DIR/spec.md")")
|
|
3109
|
+
|
|
3110
|
+
# --- Context budget enforcement ---
|
|
3111
|
+
local budget_args=()
|
|
3112
|
+
local budget_value="${AGDT_PLAN_CONTEXT_BUDGET:-}"
|
|
3113
|
+
if [[ -n "$budget_value" ]]; then
|
|
3114
|
+
# Validate that the value is a positive integer (strip leading zeros to avoid octal)
|
|
3115
|
+
if [[ "$budget_value" =~ ^[0-9]+$ ]] && (( 10#$budget_value > 0 )); then
|
|
3116
|
+
budget_args+=(--budget "$budget_value")
|
|
3117
|
+
else
|
|
3118
|
+
echo "Warning: AGDT_PLAN_CONTEXT_BUDGET='$budget_value' is not a valid positive integer. Using default." >&2
|
|
3119
|
+
fi
|
|
3120
|
+
fi
|
|
3121
|
+
|
|
3122
|
+
local budget_stderr_file
|
|
3123
|
+
budget_stderr_file=$(mktemp /tmp/budget_stderr.XXXXXX) || {
|
|
3124
|
+
echo "Error: Failed to create temp file for budget stderr capture." >&2
|
|
3125
|
+
return 1
|
|
3126
|
+
}
|
|
3127
|
+
local budget_content=""
|
|
3128
|
+
local budget_exit_code=0
|
|
3129
|
+
budget_content=$(printf '%s' "$spec_content" | python "$SCRIPT_DIR/enforce_budget.py" "${budget_args[@]}" 2>"$budget_stderr_file") || budget_exit_code=$?
|
|
3130
|
+
local budget_stderr=""
|
|
3131
|
+
budget_stderr=$(cat "$budget_stderr_file" 2>/dev/null || echo "")
|
|
3132
|
+
rm -f "$budget_stderr_file"
|
|
3133
|
+
|
|
3134
|
+
if [[ $budget_exit_code -ne 0 ]]; then
|
|
3135
|
+
echo "Error: Context budget enforcement failed for plan phase." >&2
|
|
3136
|
+
if [[ -n "$budget_stderr" ]]; then
|
|
3137
|
+
echo "$budget_stderr" >&2
|
|
3138
|
+
fi
|
|
3139
|
+
return 1
|
|
3140
|
+
fi
|
|
3141
|
+
|
|
3142
|
+
# Emit budget diagnostics
|
|
3143
|
+
if [[ -n "$budget_stderr" ]]; then
|
|
3144
|
+
echo "$budget_stderr" >&2
|
|
3145
|
+
fi
|
|
3146
|
+
|
|
3147
|
+
# Use budget-compliant content for the prompt
|
|
3148
|
+
spec_content="$budget_content"
|
|
3149
|
+
|
|
3150
|
+
local prompt
|
|
3151
|
+
prompt="You are a technical implementation planner. Based on the following feature specification, produce a comprehensive implementation plan.
|
|
3152
|
+
|
|
3153
|
+
Your output must contain multiple artifacts separated by delimiter lines. Use EXACTLY this delimiter format on its own line:
|
|
3154
|
+
===ARTIFACT:<filename>===
|
|
3155
|
+
|
|
3156
|
+
You MUST produce at least:
|
|
3157
|
+
- plan.md — the main implementation plan
|
|
3158
|
+
|
|
3159
|
+
You SHOULD also produce these artifacts when relevant:
|
|
3160
|
+
- research.md — technical research and decisions (produce this if there are unknowns, technology choices, or best practices to evaluate)
|
|
3161
|
+
- data-model.md — data entity definitions (produce this if the feature involves data entities, state, or persistence)
|
|
3162
|
+
- quickstart.md — quick-start guide for developers picking up this feature
|
|
3163
|
+
|
|
3164
|
+
You MAY produce contract files if the feature involves API endpoints:
|
|
3165
|
+
- contracts/<name>.md — API contract definitions (one per major API area)
|
|
3166
|
+
|
|
3167
|
+
## Plan Structure (plan.md)
|
|
3168
|
+
Follow this structure:
|
|
3169
|
+
1. **Technical Context** — technology stack, key dependencies, architecture decisions
|
|
3170
|
+
2. **Research Summary** — reference research.md if produced; list key decisions made
|
|
3171
|
+
3. **Design Overview** — high-level architecture for this feature
|
|
3172
|
+
4. **Implementation Phases** — ordered phases with clear deliverables
|
|
3173
|
+
5. **Risk Assessment** — potential risks and mitigations
|
|
3174
|
+
6. **Dependencies** — external and internal dependencies
|
|
3175
|
+
|
|
3176
|
+
## Research Structure (research.md)
|
|
3177
|
+
For each topic researched:
|
|
3178
|
+
- **Decision**: [choice made]
|
|
3179
|
+
- **Rationale**: [why chosen]
|
|
3180
|
+
- **Alternatives considered**: [what else was evaluated]
|
|
3181
|
+
|
|
3182
|
+
## Data Model Structure (data-model.md)
|
|
3183
|
+
For each entity:
|
|
3184
|
+
- Entity name, fields, types, validation rules
|
|
3185
|
+
- Relationships between entities
|
|
3186
|
+
- State transitions (if applicable)
|
|
3187
|
+
|
|
3188
|
+
## Output Format
|
|
3189
|
+
Start each artifact with its delimiter line. Example:
|
|
3190
|
+
===ARTIFACT:plan.md===
|
|
3191
|
+
(plan content here)
|
|
3192
|
+
===ARTIFACT:research.md===
|
|
3193
|
+
(research content here)
|
|
3194
|
+
|
|
3195
|
+
Output ONLY the artifact content with delimiters. No commentary outside artifacts, no code fences around the entire output.
|
|
3196
|
+
|
|
3197
|
+
## Markdown Formatting Rules
|
|
3198
|
+
- ALWAYS include a language identifier on fenced code blocks (e.g., \`\`\`python, \`\`\`bash, \`\`\`text). NEVER use bare \`\`\` without a language.
|
|
3199
|
+
- In markdown tables, ensure EVERY row has the SAME number of columns as the header row. Pad with empty cells if needed.
|
|
3200
|
+
- Keep lines under 200 characters where possible; break at natural points (after punctuation, between clauses).
|
|
3201
|
+
|
|
3202
|
+
## Feature Specification
|
|
3203
|
+
$spec_content
|
|
3204
|
+
|
|
3205
|
+
CRITICAL: Each artifact MUST begin with a markdown heading on the very first line after its delimiter.
|
|
3206
|
+
WRONG: \"Here is the plan...\"
|
|
3207
|
+
WRONG: \"Certainly! Here is...\"
|
|
3208
|
+
CORRECT: \"# Implementation Plan\"
|
|
3209
|
+
Do NOT include any conversational preamble before the heading in any artifact."
|
|
3210
|
+
|
|
3211
|
+
local response
|
|
3212
|
+
response=$(call_llm "$prompt") || return 1
|
|
3213
|
+
|
|
3214
|
+
# Parse artifacts from delimiter-separated response
|
|
3215
|
+
local current_file=""
|
|
3216
|
+
local current_content=""
|
|
3217
|
+
|
|
3218
|
+
while IFS= read -r line; do
|
|
3219
|
+
if [[ "$line" =~ ^===ARTIFACT:(.+)===$ ]]; then
|
|
3220
|
+
# Write previous artifact if any
|
|
3221
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
3222
|
+
local _plan_heading
|
|
3223
|
+
_plan_heading=$(_derive_plan_artifact_heading "$current_file")
|
|
3224
|
+
current_content=$(strip_llm_preamble "$current_content" "# ")
|
|
3225
|
+
if [[ -z "${current_content//[[:space:]]/}" ]]; then
|
|
3226
|
+
echo "[Sanitize] ⚠ Plan artifact '$current_file' is blank after preamble stripping — skipping" >&2
|
|
3227
|
+
else
|
|
3228
|
+
current_content=$(ensure_heading_start "$current_content" "$_plan_heading")
|
|
3229
|
+
# Ensure parent directory exists (for contracts/ subdirectory)
|
|
3230
|
+
mkdir -p "$SPEC_DIR/$(dirname "$current_file")"
|
|
3231
|
+
printf '%s\n' "$current_content" > "$SPEC_DIR/$current_file"
|
|
3232
|
+
append_model_footer "$SPEC_DIR/$current_file"
|
|
3233
|
+
echo " → Wrote $current_file"
|
|
3234
|
+
fi
|
|
3235
|
+
fi
|
|
3236
|
+
# Trim leading/trailing whitespace from captured filename
|
|
3237
|
+
current_file="${BASH_REMATCH[1]}"
|
|
3238
|
+
current_file="${current_file#"${current_file%%[![:space:]]*}"}"
|
|
3239
|
+
current_file="${current_file%"${current_file##*[![:space:]]}"}"
|
|
3240
|
+
# Validate filename: reject path traversal, absolute paths,
|
|
3241
|
+
# trailing slashes (directory paths), and characters outside
|
|
3242
|
+
# the expected alphanumeric + ._-/ set
|
|
3243
|
+
if [[ "$current_file" == /* || "$current_file" == *..* || -z "$current_file" ]]; then
|
|
3244
|
+
echo "Warning: Skipping invalid artifact filename: $current_file" >&2
|
|
3245
|
+
current_file=""
|
|
3246
|
+
elif [[ "$current_file" == */ ]]; then
|
|
3247
|
+
echo "Warning: Skipping directory-path artifact filename: $current_file" >&2
|
|
3248
|
+
current_file=""
|
|
3249
|
+
elif [[ ! "$current_file" =~ ^[A-Za-z0-9._/-]+$ ]]; then
|
|
3250
|
+
echo "Warning: Skipping artifact filename with invalid characters: $current_file" >&2
|
|
3251
|
+
current_file=""
|
|
3252
|
+
elif [[ -d "$SPEC_DIR/$current_file" ]]; then
|
|
3253
|
+
echo "Warning: Skipping artifact filename that collides with existing directory: $current_file" >&2
|
|
3254
|
+
current_file=""
|
|
3255
|
+
fi
|
|
3256
|
+
current_content=""
|
|
3257
|
+
else
|
|
3258
|
+
if [[ -n "$current_file" ]]; then
|
|
3259
|
+
if [[ -n "$current_content" ]]; then
|
|
3260
|
+
current_content="$current_content
|
|
3261
|
+
$line"
|
|
3262
|
+
else
|
|
3263
|
+
current_content="$line"
|
|
3264
|
+
fi
|
|
3265
|
+
fi
|
|
3266
|
+
fi
|
|
3267
|
+
done <<< "$response"
|
|
3268
|
+
|
|
3269
|
+
# Write the last artifact
|
|
3270
|
+
if [[ -n "$current_file" && -n "$current_content" ]]; then
|
|
3271
|
+
local _plan_heading_last
|
|
3272
|
+
_plan_heading_last=$(_derive_plan_artifact_heading "$current_file")
|
|
3273
|
+
current_content=$(strip_llm_preamble "$current_content" "# ")
|
|
3274
|
+
if [[ -z "${current_content//[[:space:]]/}" ]]; then
|
|
3275
|
+
echo "[Sanitize] ⚠ Plan artifact '$current_file' is blank after preamble stripping — skipping" >&2
|
|
3276
|
+
else
|
|
3277
|
+
current_content=$(ensure_heading_start "$current_content" "$_plan_heading_last")
|
|
3278
|
+
mkdir -p "$SPEC_DIR/$(dirname "$current_file")"
|
|
3279
|
+
printf '%s\n' "$current_content" > "$SPEC_DIR/$current_file"
|
|
3280
|
+
append_model_footer "$SPEC_DIR/$current_file"
|
|
3281
|
+
echo " → Wrote $current_file"
|
|
3282
|
+
fi
|
|
3283
|
+
fi
|
|
3284
|
+
|
|
3285
|
+
# Verify plan.md was produced and is non-empty (required artifact)
|
|
3286
|
+
if [[ ! -s "$SPEC_DIR/plan.md" ]]; then
|
|
3287
|
+
echo "Error: Plan phase did not produce a non-empty plan.md" >&2
|
|
3288
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3289
|
+
_emit_validation_errors "3" "plan" "MISSING_FILE: plan.md was not produced"
|
|
3290
|
+
return 1
|
|
3291
|
+
fi
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
# ---------------------------------------------------------------------------
|
|
3295
|
+
# resolve_parent_context <spec_dir>
|
|
3296
|
+
#
|
|
3297
|
+
# Resolves parent feature's spec.md and plan.md for task-level context injection.
|
|
3298
|
+
# Reads hierarchy.yml in the given spec directory, finds the parent issue's
|
|
3299
|
+
# spec directory, and reads its spec.md and plan.md.
|
|
3300
|
+
#
|
|
3301
|
+
# Sets global variables:
|
|
3302
|
+
# PARENT_SPEC_CONTENT - Content of parent's spec.md (empty if not found)
|
|
3303
|
+
# PARENT_PLAN_CONTENT - Content of parent's plan.md (empty if not found)
|
|
3304
|
+
# PARENT_CONTEXT_STATUS - "complete" if both found, "partial" otherwise
|
|
3305
|
+
#
|
|
3306
|
+
# Returns:
|
|
3307
|
+
# 0 - on success (even with partial context)
|
|
3308
|
+
# 1 - on ambiguous directory match (multiple dirs for same parent number)
|
|
3309
|
+
# ---------------------------------------------------------------------------
|
|
3310
|
+
resolve_parent_context() {
|
|
3311
|
+
local spec_dir="$1"
|
|
3312
|
+
local hierarchy_file="$spec_dir/hierarchy.yml"
|
|
3313
|
+
|
|
3314
|
+
PARENT_SPEC_CONTENT=""
|
|
3315
|
+
PARENT_PLAN_CONTENT=""
|
|
3316
|
+
PARENT_CONTEXT_STATUS="partial"
|
|
3317
|
+
|
|
3318
|
+
if [[ ! -f "$hierarchy_file" ]]; then
|
|
3319
|
+
echo "Warning: No hierarchy.yml found in $spec_dir" >&2
|
|
3320
|
+
return 0
|
|
3321
|
+
fi
|
|
3322
|
+
|
|
3323
|
+
# Parse parent field (strip optional leading #, normalize to integer)
|
|
3324
|
+
local parent_raw parent_number
|
|
3325
|
+
parent_raw=$(awk '
|
|
3326
|
+
/^[[:space:]]*parent:[[:space:]]*/ {
|
|
3327
|
+
line = $0
|
|
3328
|
+
sub(/^[[:space:]]*parent:[[:space:]]*/, "", line)
|
|
3329
|
+
|
|
3330
|
+
# Preserve "#" when value is quoted (e.g., parent: "#1859")
|
|
3331
|
+
if (line ~ /^"/) {
|
|
3332
|
+
sub(/^"/, "", line)
|
|
3333
|
+
sub(/".*$/, "", line)
|
|
3334
|
+
} else if (line ~ /^'\''/) {
|
|
3335
|
+
sub(/^'\''/, "", line)
|
|
3336
|
+
sub(/'\''.*$/, "", line)
|
|
3337
|
+
} else {
|
|
3338
|
+
# For unquoted values, treat " # ..." as an inline YAML comment
|
|
3339
|
+
sub(/[[:space:]]+#.*/, "", line)
|
|
3340
|
+
}
|
|
3341
|
+
|
|
3342
|
+
gsub(/^[[:space:]]+|[[:space:]]+$/, "", line)
|
|
3343
|
+
print line
|
|
3344
|
+
exit
|
|
3345
|
+
}
|
|
3346
|
+
' "$hierarchy_file")
|
|
3347
|
+
parent_number="${parent_raw#\#}"
|
|
3348
|
+
# Strip leading/trailing whitespace
|
|
3349
|
+
parent_number="$(echo "$parent_number" | tr -d '[:space:]')"
|
|
3350
|
+
|
|
3351
|
+
if [[ -z "$parent_number" ]]; then
|
|
3352
|
+
echo "Warning: No valid parent value found in $hierarchy_file" >&2
|
|
3353
|
+
return 0
|
|
3354
|
+
fi
|
|
3355
|
+
if [[ ! "$parent_number" =~ ^[0-9]+$ ]]; then
|
|
3356
|
+
echo "Warning: Parent value must be numeric in $hierarchy_file (got: $parent_raw)" >&2
|
|
3357
|
+
return 0
|
|
3358
|
+
fi
|
|
3359
|
+
parent_number=$((10#$parent_number))
|
|
3360
|
+
|
|
3361
|
+
echo "Resolving parent context for parent issue #$parent_number"
|
|
3362
|
+
|
|
3363
|
+
# Search SPEC_BASE_PATH for matching directory (bounded depth for nested layouts)
|
|
3364
|
+
local matches=()
|
|
3365
|
+
while IFS= read -r -d '' dir; do
|
|
3366
|
+
matches+=("$dir")
|
|
3367
|
+
done < <(find "$REPO_ROOT/$SPEC_BASE_PATH" -maxdepth 3 -type d \
|
|
3368
|
+
\( -name "${parent_number}" -o -name "${parent_number}-*" \) -print0 2>/dev/null)
|
|
3369
|
+
|
|
3370
|
+
if [[ ${#matches[@]} -gt 1 ]]; then
|
|
3371
|
+
echo "Error: Ambiguous parent directory resolution for parent=$parent_number:" >&2
|
|
3372
|
+
printf ' %s\n' "${matches[@]}" >&2
|
|
3373
|
+
return 1
|
|
3374
|
+
fi
|
|
3375
|
+
|
|
3376
|
+
if [[ ${#matches[@]} -eq 0 ]]; then
|
|
3377
|
+
echo "Warning: No parent directory found for parent=$parent_number in $REPO_ROOT/$SPEC_BASE_PATH" >&2
|
|
3378
|
+
return 0
|
|
3379
|
+
fi
|
|
3380
|
+
|
|
3381
|
+
local parent_dir="${matches[0]}"
|
|
3382
|
+
echo "Found parent directory: $parent_dir"
|
|
3383
|
+
|
|
3384
|
+
# Read parent spec.md
|
|
3385
|
+
if [[ -f "$parent_dir/spec.md" ]]; then
|
|
3386
|
+
PARENT_SPEC_CONTENT=$(strip_model_footer "$(cat "$parent_dir/spec.md")")
|
|
3387
|
+
echo " ✓ Loaded parent spec.md ($(wc -c < "$parent_dir/spec.md") bytes)"
|
|
3388
|
+
else
|
|
3389
|
+
echo "Warning: Parent spec.md not found at $parent_dir/spec.md" >&2
|
|
3390
|
+
fi
|
|
3391
|
+
|
|
3392
|
+
# Read parent plan.md
|
|
3393
|
+
if [[ -f "$parent_dir/plan.md" ]]; then
|
|
3394
|
+
PARENT_PLAN_CONTENT=$(strip_model_footer "$(cat "$parent_dir/plan.md")")
|
|
3395
|
+
echo " ✓ Loaded parent plan.md ($(wc -c < "$parent_dir/plan.md") bytes)"
|
|
3396
|
+
else
|
|
3397
|
+
echo "Warning: Parent plan.md not found at $parent_dir/plan.md" >&2
|
|
3398
|
+
fi
|
|
3399
|
+
|
|
3400
|
+
# Determine context completeness
|
|
3401
|
+
if [[ -n "$PARENT_SPEC_CONTENT" && -n "$PARENT_PLAN_CONTENT" ]]; then
|
|
3402
|
+
PARENT_CONTEXT_STATUS="complete"
|
|
3403
|
+
fi
|
|
3404
|
+
|
|
3405
|
+
echo "Parent context status: $PARENT_CONTEXT_STATUS"
|
|
3406
|
+
return 0
|
|
3407
|
+
}
|
|
3408
|
+
|
|
3409
|
+
# ---------------------------------------------------------------------------
|
|
3410
|
+
# run_tasks_phase
|
|
3411
|
+
#
|
|
3412
|
+
# Generates tasks.md from spec.md, plan.md, and any supporting artifacts.
|
|
3413
|
+
# ---------------------------------------------------------------------------
|
|
3414
|
+
run_tasks_phase() {
|
|
3415
|
+
local spec_content plan_content
|
|
3416
|
+
|
|
3417
|
+
# Task-level: spec.md/plan.md may not exist locally; use parent context (#1859)
|
|
3418
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
3419
|
+
if [[ -f "$SPEC_DIR/spec.md" ]]; then
|
|
3420
|
+
spec_content=$(strip_model_footer "$(cat "$SPEC_DIR/spec.md")")
|
|
3421
|
+
else
|
|
3422
|
+
spec_content="(No local spec.md — see Parent Feature Specification below)"
|
|
3423
|
+
fi
|
|
3424
|
+
if [[ -f "$SPEC_DIR/plan.md" ]]; then
|
|
3425
|
+
plan_content=$(strip_model_footer "$(cat "$SPEC_DIR/plan.md")")
|
|
3426
|
+
else
|
|
3427
|
+
plan_content="(No local plan.md — see Parent Feature Implementation Plan below)"
|
|
3428
|
+
fi
|
|
3429
|
+
else
|
|
3430
|
+
spec_content=$(strip_model_footer "$(cat "$SPEC_DIR/spec.md")")
|
|
3431
|
+
plan_content=$(strip_model_footer "$(cat "$SPEC_DIR/plan.md")")
|
|
3432
|
+
fi
|
|
3433
|
+
|
|
3434
|
+
# Include optional supporting artifacts if they exist
|
|
3435
|
+
local extra_context=""
|
|
3436
|
+
if [[ -f "$SPEC_DIR/research.md" ]]; then
|
|
3437
|
+
extra_context="$extra_context
|
|
3438
|
+
|
|
3439
|
+
## Research Context
|
|
3440
|
+
$(strip_model_footer "$(cat "$SPEC_DIR/research.md")")"
|
|
3441
|
+
fi
|
|
3442
|
+
if [[ -f "$SPEC_DIR/data-model.md" ]]; then
|
|
3443
|
+
extra_context="$extra_context
|
|
3444
|
+
|
|
3445
|
+
## Data Model Context
|
|
3446
|
+
$(strip_model_footer "$(cat "$SPEC_DIR/data-model.md")")"
|
|
3447
|
+
fi
|
|
3448
|
+
# Include API contracts so tasks can reference endpoints
|
|
3449
|
+
local contract_file
|
|
3450
|
+
if [[ -d "$SPEC_DIR/contracts" ]]; then
|
|
3451
|
+
for contract_file in "$SPEC_DIR"/contracts/*.md; do
|
|
3452
|
+
[[ -f "$contract_file" ]] || continue
|
|
3453
|
+
extra_context="$extra_context
|
|
3454
|
+
|
|
3455
|
+
## API Contract: $(basename -- "$contract_file")
|
|
3456
|
+
$(strip_model_footer "$(cat "$contract_file")")"
|
|
3457
|
+
done
|
|
3458
|
+
fi
|
|
3459
|
+
if [[ -f "$SPEC_DIR/quickstart.md" ]]; then
|
|
3460
|
+
extra_context="$extra_context
|
|
3461
|
+
|
|
3462
|
+
## Quickstart Context
|
|
3463
|
+
$(strip_model_footer "$(cat "$SPEC_DIR/quickstart.md")")"
|
|
3464
|
+
fi
|
|
3465
|
+
|
|
3466
|
+
# Task-level parent context injection (#1859, FR-003, AC-5)
|
|
3467
|
+
# When HIERARCHY_LEVEL=task, inject parent feature's spec.md and plan.md
|
|
3468
|
+
# as additional context for generating this task's slice of work.
|
|
3469
|
+
local parent_context=""
|
|
3470
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
3471
|
+
local resolve_status=0
|
|
3472
|
+
if resolve_parent_context "$SPEC_DIR"; then
|
|
3473
|
+
:
|
|
3474
|
+
else
|
|
3475
|
+
resolve_status=$?
|
|
3476
|
+
fi
|
|
3477
|
+
if [[ $resolve_status -ne 0 ]]; then
|
|
3478
|
+
echo "Warning: Parent context resolution returned non-zero ($resolve_status), continuing with partial context" >&2
|
|
3479
|
+
fi
|
|
3480
|
+
if [[ -n "$PARENT_SPEC_CONTENT" ]]; then
|
|
3481
|
+
parent_context="$parent_context
|
|
3482
|
+
|
|
3483
|
+
## Parent Feature Specification
|
|
3484
|
+
> This task is a subtask of a parent feature. The parent's specification provides
|
|
3485
|
+
> the full feature context. Generate tasks ONLY for this specific task's scope,
|
|
3486
|
+
> not the entire parent feature.
|
|
3487
|
+
|
|
3488
|
+
$PARENT_SPEC_CONTENT"
|
|
3489
|
+
fi
|
|
3490
|
+
if [[ -n "$PARENT_PLAN_CONTENT" ]]; then
|
|
3491
|
+
parent_context="$parent_context
|
|
3492
|
+
|
|
3493
|
+
## Parent Feature Implementation Plan
|
|
3494
|
+
> Reference this plan for architectural decisions and design patterns, but
|
|
3495
|
+
> generate tasks only for this task's scope.
|
|
3496
|
+
|
|
3497
|
+
$PARENT_PLAN_CONTENT"
|
|
3498
|
+
fi
|
|
3499
|
+
fi
|
|
3500
|
+
|
|
3501
|
+
local prompt
|
|
3502
|
+
prompt="You are a task breakdown specialist. Based on the following specification and implementation plan, generate a comprehensive task list.
|
|
3503
|
+
|
|
3504
|
+
## Task Format Rules
|
|
3505
|
+
Each task must follow this EXACT format:
|
|
3506
|
+
\`\`\`
|
|
3507
|
+
- [ ] [TaskID] [P?] [Story?] Description with file path
|
|
3508
|
+
\`\`\`
|
|
3509
|
+
Where:
|
|
3510
|
+
- **Task ID**: Sequential (T001, T002, ...) in execution order
|
|
3511
|
+
- **[P] marker**: Include ONLY if the task is parallelizable (works on different files, no blocking dependencies)
|
|
3512
|
+
- **[Story] label**: [US1], [US2], etc. mapping to spec user stories. Setup/Foundational tasks have NO story label. User story tasks MUST have a story label.
|
|
3513
|
+
- **Description**: Clear action with exact file path where applicable
|
|
3514
|
+
|
|
3515
|
+
## Phase Structure
|
|
3516
|
+
Organize tasks into these phases:
|
|
3517
|
+
1. **Phase 1: Setup** — Project initialization, scaffolding (no story labels)
|
|
3518
|
+
2. **Phase 2: Foundational** — Blocking prerequisites that must complete before user stories (no story labels)
|
|
3519
|
+
3. **Phase 3+: User Stories** — One phase per user story in priority order (P1, P2, P3...)
|
|
3520
|
+
- Within each story: Tests → Models → Services → Endpoints → Integration
|
|
3521
|
+
4. **Final Phase: Polish & Cross-Cutting** — Documentation, cleanup, integration tests (no story labels)
|
|
3522
|
+
|
|
3523
|
+
## Rules
|
|
3524
|
+
- Map each task to the user story it serves
|
|
3525
|
+
- Mark dependencies between tasks
|
|
3526
|
+
- Tasks from API contracts → map to the user story the endpoint serves
|
|
3527
|
+
- Tasks from data model → map to the story(ies) that need the entity
|
|
3528
|
+
- Shared infrastructure → Setup or Foundational phase
|
|
3529
|
+
|
|
3530
|
+
Output ONLY the tasks.md content in markdown format. No commentary, no code fences around the entire output.
|
|
3531
|
+
|
|
3532
|
+
## Markdown Formatting Rules
|
|
3533
|
+
- ALWAYS include a language identifier on fenced code blocks (e.g., \`\`\`bash, \`\`\`python, \`\`\`text). NEVER use bare \`\`\` without a language.
|
|
3534
|
+
- In markdown tables, ensure EVERY row has the SAME number of columns as the header row.
|
|
3535
|
+
- Keep lines under 200 characters where possible.
|
|
3536
|
+
|
|
3537
|
+
## Feature Specification
|
|
3538
|
+
$spec_content
|
|
3539
|
+
|
|
3540
|
+
## Implementation Plan
|
|
3541
|
+
$plan_content
|
|
3542
|
+
$extra_context
|
|
3543
|
+
$parent_context
|
|
3544
|
+
|
|
3545
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
3546
|
+
WRONG: \"Here are the tasks...\"
|
|
3547
|
+
WRONG: \"Certainly! Here is...\"
|
|
3548
|
+
CORRECT: \"# Tasks: Feature Name\"
|
|
3549
|
+
Do NOT include any conversational preamble before the heading."
|
|
3550
|
+
|
|
3551
|
+
# Append FR retry feedback if set by run_fr_validation_with_retry
|
|
3552
|
+
if [[ -n "${SPECKIT_FR_RETRY_FEEDBACK:-}" ]]; then
|
|
3553
|
+
prompt="$prompt
|
|
3554
|
+
|
|
3555
|
+
## IMPORTANT: FR Coverage Feedback (Retry)
|
|
3556
|
+
|
|
3557
|
+
$SPECKIT_FR_RETRY_FEEDBACK
|
|
3558
|
+
|
|
3559
|
+
You MUST ensure that every FR identifier listed above appears at least once in the task descriptions."
|
|
3560
|
+
# Clear feedback after use so it doesn't persist across retries
|
|
3561
|
+
unset SPECKIT_FR_RETRY_FEEDBACK
|
|
3562
|
+
fi
|
|
3563
|
+
|
|
3564
|
+
# Append CRITICAL gate feedback if set by _run_critical_gate_remediation
|
|
3565
|
+
if [[ -n "${SPECKIT_CRITICAL_GATE_FEEDBACK:-}" ]]; then
|
|
3566
|
+
prompt="$prompt
|
|
3567
|
+
|
|
3568
|
+
## IMPORTANT: CRITICAL Analysis Gate Feedback (Remediation)
|
|
3569
|
+
|
|
3570
|
+
$SPECKIT_CRITICAL_GATE_FEEDBACK
|
|
3571
|
+
|
|
3572
|
+
You MUST address ALL findings listed above. Failure to do so will cause the CRITICAL analysis gate to fail; in block mode the pipeline will abort."
|
|
3573
|
+
# Clear feedback after use so it doesn't persist across retries
|
|
3574
|
+
unset SPECKIT_CRITICAL_GATE_FEEDBACK
|
|
3575
|
+
fi
|
|
3576
|
+
|
|
3577
|
+
local result
|
|
3578
|
+
result=$(call_llm "$prompt") || return 1
|
|
3579
|
+
if [[ -z "$result" ]]; then
|
|
3580
|
+
echo "Error: Tasks phase returned empty content" >&2
|
|
3581
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3582
|
+
_emit_validation_errors "4" "tasks" "MISSING_FILE: tasks.md content was empty"
|
|
3583
|
+
return 1
|
|
3584
|
+
fi
|
|
3585
|
+
result=$(strip_llm_preamble "$result" "# ")
|
|
3586
|
+
if [[ -z "${result//[[:space:]]/}" ]]; then
|
|
3587
|
+
echo "Error: Tasks phase returned blank content after sanitization" >&2
|
|
3588
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3589
|
+
_emit_validation_errors "4" "tasks" "MISSING_FILE: tasks.md content was blank after sanitization"
|
|
3590
|
+
return 1
|
|
3591
|
+
fi
|
|
3592
|
+
result=$(ensure_heading_start "$result" "# Task List")
|
|
3593
|
+
printf '%s\n' "$result" > "$SPEC_DIR/tasks.md"
|
|
3594
|
+
append_model_footer "$SPEC_DIR/tasks.md"
|
|
3595
|
+
}
|
|
3596
|
+
|
|
3597
|
+
# ---------------------------------------------------------------------------
|
|
3598
|
+
# Resolve FR validation retry budget (single source of truth)
|
|
3599
|
+
# Precedence: --max-retries CLI arg > SPECKIT_VALIDATE_MAX_RETRIES env > default 2
|
|
3600
|
+
# ---------------------------------------------------------------------------
|
|
3601
|
+
if [[ -n "$MAX_RETRIES" ]]; then
|
|
3602
|
+
FR_VALIDATION_MAX_RETRIES="$MAX_RETRIES"
|
|
3603
|
+
elif [[ -n "${SPECKIT_VALIDATE_MAX_RETRIES:-}" ]]; then
|
|
3604
|
+
if [[ "$SPECKIT_VALIDATE_MAX_RETRIES" =~ ^[0-9]+$ ]]; then
|
|
3605
|
+
FR_VALIDATION_MAX_RETRIES="$SPECKIT_VALIDATE_MAX_RETRIES"
|
|
3606
|
+
else
|
|
3607
|
+
echo "Warning: ignoring invalid SPECKIT_VALIDATE_MAX_RETRIES='$SPECKIT_VALIDATE_MAX_RETRIES'; using default 2" >&2
|
|
3608
|
+
FR_VALIDATION_MAX_RETRIES=2
|
|
3609
|
+
fi
|
|
3610
|
+
else
|
|
3611
|
+
FR_VALIDATION_MAX_RETRIES=2
|
|
3612
|
+
fi
|
|
3613
|
+
|
|
3614
|
+
# ---------------------------------------------------------------------------
|
|
3615
|
+
# Resolve clarify phase retry budget (independent of FR validation)
|
|
3616
|
+
# Precedence: SPECKIT_CLARIFY_MAX_RETRIES env > default 2
|
|
3617
|
+
# ---------------------------------------------------------------------------
|
|
3618
|
+
if [[ -n "${SPECKIT_CLARIFY_MAX_RETRIES:-}" ]]; then
|
|
3619
|
+
if [[ "$SPECKIT_CLARIFY_MAX_RETRIES" =~ ^[0-9]+$ ]]; then
|
|
3620
|
+
CLARIFY_MAX_RETRIES="$SPECKIT_CLARIFY_MAX_RETRIES"
|
|
3621
|
+
else
|
|
3622
|
+
echo "Warning: ignoring invalid SPECKIT_CLARIFY_MAX_RETRIES='$SPECKIT_CLARIFY_MAX_RETRIES'; using default 2" >&2
|
|
3623
|
+
CLARIFY_MAX_RETRIES=2
|
|
3624
|
+
fi
|
|
3625
|
+
else
|
|
3626
|
+
CLARIFY_MAX_RETRIES=2
|
|
3627
|
+
fi
|
|
3628
|
+
|
|
3629
|
+
# ---------------------------------------------------------------------------
|
|
3630
|
+
# run_fr_validation
|
|
3631
|
+
#
|
|
3632
|
+
# Calls the Python FR coverage validator and captures JSON output to
|
|
3633
|
+
# $SPEC_DIR/fr-coverage.json. Stderr is captured to a temp file and
|
|
3634
|
+
# cleaned up on exit. Returns the validator exit code:
|
|
3635
|
+
# 0 = all FRs covered (or no FRs found — warning)
|
|
3636
|
+
# 1 = uncovered FRs detected
|
|
3637
|
+
# 2 = operational error
|
|
3638
|
+
# ---------------------------------------------------------------------------
|
|
3639
|
+
run_fr_validation() {
|
|
3640
|
+
echo ""
|
|
3641
|
+
echo "=== FR Coverage Validation ==="
|
|
3642
|
+
local fr_rc=0
|
|
3643
|
+
local fr_stderr_log
|
|
3644
|
+
fr_stderr_log=$(mktemp)
|
|
3645
|
+
agdt-speckit-validate-frs \
|
|
3646
|
+
--spec-file "$SPEC_DIR/spec.md" \
|
|
3647
|
+
--tasks-file "$SPEC_DIR/tasks.md" \
|
|
3648
|
+
--json \
|
|
3649
|
+
--max-retries "$FR_VALIDATION_MAX_RETRIES" \
|
|
3650
|
+
> "$SPEC_DIR/fr-coverage.json" \
|
|
3651
|
+
2> "$fr_stderr_log" || fr_rc=$?
|
|
3652
|
+
|
|
3653
|
+
if [[ "$fr_rc" -eq 0 ]]; then
|
|
3654
|
+
echo "✓ FR coverage validation passed"
|
|
3655
|
+
rm -f "$fr_stderr_log"
|
|
3656
|
+
elif [[ "$fr_rc" -eq 1 ]]; then
|
|
3657
|
+
echo "✗ FR coverage validation failed — uncovered FRs detected" >&2
|
|
3658
|
+
cat "$SPEC_DIR/fr-coverage.json" >&2
|
|
3659
|
+
rm -f "$fr_stderr_log"
|
|
3660
|
+
elif [[ "$fr_rc" -eq 2 ]]; then
|
|
3661
|
+
echo "Error: FR coverage validation encountered an operational error" >&2
|
|
3662
|
+
if [[ -s "$fr_stderr_log" ]]; then
|
|
3663
|
+
echo "Validator stderr:" >&2
|
|
3664
|
+
cat "$fr_stderr_log" >&2
|
|
3665
|
+
fi
|
|
3666
|
+
rm -f "$fr_stderr_log"
|
|
3667
|
+
else
|
|
3668
|
+
echo "Error: FR coverage validator returned unexpected exit code: $fr_rc" >&2
|
|
3669
|
+
if [[ -s "$fr_stderr_log" ]]; then
|
|
3670
|
+
echo "Validator stderr:" >&2
|
|
3671
|
+
cat "$fr_stderr_log" >&2
|
|
3672
|
+
fi
|
|
3673
|
+
rm -f "$fr_stderr_log"
|
|
3674
|
+
fi
|
|
3675
|
+
return "$fr_rc"
|
|
3676
|
+
}
|
|
3677
|
+
|
|
3678
|
+
# ---------------------------------------------------------------------------
|
|
3679
|
+
# run_test_coverage_validation
|
|
3680
|
+
#
|
|
3681
|
+
# Calls the Python E.2 test coverage validator and captures JSON output to
|
|
3682
|
+
# $SPEC_DIR/test-coverage.json. Always returns 0 (non-blocking):
|
|
3683
|
+
# Validator exit 0 = all FRs have test tasks (no findings) → file written
|
|
3684
|
+
# Validator exit 1 = findings present (flows into analyze phase) → file written
|
|
3685
|
+
# Validator exit 2 = operational error → file removed to avoid downstream parse failures
|
|
3686
|
+
# ---------------------------------------------------------------------------
|
|
3687
|
+
run_test_coverage_validation() {
|
|
3688
|
+
echo ""
|
|
3689
|
+
echo "=== E.2 Test Coverage Validation ==="
|
|
3690
|
+
local tc_rc=0
|
|
3691
|
+
local tc_stderr_log
|
|
3692
|
+
local tc_tmp_output
|
|
3693
|
+
tc_stderr_log=$(mktemp)
|
|
3694
|
+
tc_tmp_output=$(mktemp)
|
|
3695
|
+
agdt-speckit-test-coverage \
|
|
3696
|
+
--spec-file "$SPEC_DIR/spec.md" \
|
|
3697
|
+
--tasks-file "$SPEC_DIR/tasks.md" \
|
|
3698
|
+
--json \
|
|
3699
|
+
> "$tc_tmp_output" \
|
|
3700
|
+
2> "$tc_stderr_log" || tc_rc=$?
|
|
3701
|
+
|
|
3702
|
+
if [[ "$tc_rc" -eq 0 ]]; then
|
|
3703
|
+
mv "$tc_tmp_output" "$SPEC_DIR/test-coverage.json"
|
|
3704
|
+
echo "✓ Test coverage validation passed — all FRs have test tasks"
|
|
3705
|
+
rm -f "$tc_stderr_log"
|
|
3706
|
+
elif [[ "$tc_rc" -eq 1 ]]; then
|
|
3707
|
+
mv "$tc_tmp_output" "$SPEC_DIR/test-coverage.json"
|
|
3708
|
+
echo "⚠ Test coverage findings detected (non-blocking)" >&2
|
|
3709
|
+
rm -f "$tc_stderr_log"
|
|
3710
|
+
elif [[ "$tc_rc" -eq 2 ]]; then
|
|
3711
|
+
echo "Error: Test coverage validation encountered an operational error" >&2
|
|
3712
|
+
if [[ -s "$tc_stderr_log" ]]; then
|
|
3713
|
+
echo "Validator stderr:" >&2
|
|
3714
|
+
cat "$tc_stderr_log" >&2
|
|
3715
|
+
fi
|
|
3716
|
+
rm -f "$tc_stderr_log" "$tc_tmp_output" "$SPEC_DIR/test-coverage.json"
|
|
3717
|
+
else
|
|
3718
|
+
echo "Error: Test coverage validator returned unexpected exit code: $tc_rc" >&2
|
|
3719
|
+
if [[ -s "$tc_stderr_log" ]]; then
|
|
3720
|
+
echo "Validator stderr:" >&2
|
|
3721
|
+
cat "$tc_stderr_log" >&2
|
|
3722
|
+
fi
|
|
3723
|
+
rm -f "$tc_stderr_log" "$tc_tmp_output" "$SPEC_DIR/test-coverage.json"
|
|
3724
|
+
fi
|
|
3725
|
+
# Non-blocking: always returns 0; findings flow into the analyze phase
|
|
3726
|
+
return 0
|
|
3727
|
+
}
|
|
3728
|
+
|
|
3729
|
+
# ---------------------------------------------------------------------------
|
|
3730
|
+
# run_fr_validation_with_retry
|
|
3731
|
+
#
|
|
3732
|
+
# Runs FR validation against the current tasks.md and retries only when
|
|
3733
|
+
# uncovered FRs are reported.
|
|
3734
|
+
# The initial run_tasks_phase happens before this function is called; on each
|
|
3735
|
+
# retry after a validation failure, this function extracts uncovered FRs from
|
|
3736
|
+
# JSON and re-invokes run_tasks_phase with an augmented prompt listing the
|
|
3737
|
+
# missing FRs, then validates again.
|
|
3738
|
+
# Uses FR_VALIDATION_MAX_RETRIES as the retry budget.
|
|
3739
|
+
# ---------------------------------------------------------------------------
|
|
3740
|
+
run_fr_validation_with_retry() {
|
|
3741
|
+
local attempt=0
|
|
3742
|
+
local fr_rc=0
|
|
3743
|
+
|
|
3744
|
+
while true; do
|
|
3745
|
+
fr_rc=0
|
|
3746
|
+
run_fr_validation || fr_rc=$?
|
|
3747
|
+
|
|
3748
|
+
if [[ "$fr_rc" -eq 0 ]]; then
|
|
3749
|
+
return 0
|
|
3750
|
+
elif [[ "$fr_rc" -ne 1 ]]; then
|
|
3751
|
+
echo "Error: FR validation encountered an operational error (exit code: $fr_rc)" >&2
|
|
3752
|
+
return 2
|
|
3753
|
+
fi
|
|
3754
|
+
|
|
3755
|
+
# fr_rc == 1: uncovered FRs
|
|
3756
|
+
attempt=$((attempt + 1))
|
|
3757
|
+
if [[ "$attempt" -gt "$FR_VALIDATION_MAX_RETRIES" ]]; then
|
|
3758
|
+
echo "Error: FR coverage validation failed after $FR_VALIDATION_MAX_RETRIES retry attempt(s)" >&2
|
|
3759
|
+
echo "Uncovered FRs remain:" >&2
|
|
3760
|
+
if [[ -f "$SPEC_DIR/fr-coverage.json" ]]; then
|
|
3761
|
+
python3 -c "
|
|
3762
|
+
import json, sys
|
|
3763
|
+
data = json.load(open(sys.argv[1]))
|
|
3764
|
+
for fr in data.get('uncovered', []):
|
|
3765
|
+
print(f' - {fr}', file=sys.stderr)
|
|
3766
|
+
" "$SPEC_DIR/fr-coverage.json" 1>&2 || true
|
|
3767
|
+
fi
|
|
3768
|
+
return 1
|
|
3769
|
+
fi
|
|
3770
|
+
|
|
3771
|
+
echo ""
|
|
3772
|
+
echo "=== FR Coverage Retry ($attempt/$FR_VALIDATION_MAX_RETRIES) ==="
|
|
3773
|
+
|
|
3774
|
+
# Extract uncovered FRs for the retry prompt
|
|
3775
|
+
local uncovered_list=""
|
|
3776
|
+
if [[ -f "$SPEC_DIR/fr-coverage.json" ]]; then
|
|
3777
|
+
uncovered_list=$(python3 -c "
|
|
3778
|
+
import json, sys
|
|
3779
|
+
data = json.load(open(sys.argv[1]))
|
|
3780
|
+
print(', '.join(data.get('uncovered', [])))
|
|
3781
|
+
" "$SPEC_DIR/fr-coverage.json" 2>/dev/null || echo "")
|
|
3782
|
+
fi
|
|
3783
|
+
|
|
3784
|
+
echo "Re-running tasks phase with feedback about uncovered FRs: $uncovered_list"
|
|
3785
|
+
|
|
3786
|
+
# Set retry context for the tasks phase
|
|
3787
|
+
export SPECKIT_FR_RETRY_FEEDBACK="The following functional requirements from spec.md are NOT covered by any task in tasks.md: $uncovered_list. Please regenerate tasks.md ensuring every FR has at least one corresponding task."
|
|
3788
|
+
|
|
3789
|
+
COPILOT_TIMEOUT=900 run_tasks_phase || {
|
|
3790
|
+
echo "Error: Tasks phase failed during FR coverage retry" >&2
|
|
3791
|
+
return 1
|
|
3792
|
+
}
|
|
3793
|
+
done
|
|
3794
|
+
}
|
|
3795
|
+
|
|
3796
|
+
# ---------------------------------------------------------------------------
|
|
3797
|
+
# run_analyze_phase
|
|
3798
|
+
#
|
|
3799
|
+
# Cross-artifact consistency analysis producing analysis-report.md.
|
|
3800
|
+
# ---------------------------------------------------------------------------
|
|
3801
|
+
run_analyze_phase() {
|
|
3802
|
+
local spec_content plan_content tasks_content
|
|
3803
|
+
spec_content=$(strip_model_footer "$(cat "$SPEC_DIR/spec.md")")
|
|
3804
|
+
plan_content=$(strip_model_footer "$(cat "$SPEC_DIR/plan.md")")
|
|
3805
|
+
# Tolerate missing tasks.md for epic level (#1859, AC-1)
|
|
3806
|
+
if [[ -f "$SPEC_DIR/tasks.md" ]]; then
|
|
3807
|
+
tasks_content=$(strip_model_footer "$(cat "$SPEC_DIR/tasks.md")")
|
|
3808
|
+
else
|
|
3809
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "epic" ]]; then
|
|
3810
|
+
tasks_content="(No tasks.md — epic level does not produce task breakdowns)"
|
|
3811
|
+
echo "Analyze: Tolerating missing tasks.md (epic level)" >&2
|
|
3812
|
+
else
|
|
3813
|
+
echo "Error: tasks.md not found in $SPEC_DIR" >&2
|
|
3814
|
+
return 1
|
|
3815
|
+
fi
|
|
3816
|
+
fi
|
|
3817
|
+
|
|
3818
|
+
# Inject FR coverage data if available (produced by run_fr_validation)
|
|
3819
|
+
local fr_coverage_context=""
|
|
3820
|
+
if [[ -f "$SPEC_DIR/fr-coverage.json" ]]; then
|
|
3821
|
+
fr_coverage_context="
|
|
3822
|
+
|
|
3823
|
+
## FR Coverage Data (Deterministic — Pre-Validated)
|
|
3824
|
+
|
|
3825
|
+
The following FR coverage data was produced by the deterministic FR validator
|
|
3826
|
+
(\`agdt-speckit-validate-frs\`). Report this data as-is in the Coverage Summary
|
|
3827
|
+
section. Do not re-evaluate FR coverage — use these results directly.
|
|
3828
|
+
|
|
3829
|
+
\`\`\`json
|
|
3830
|
+
$(cat "$SPEC_DIR/fr-coverage.json")
|
|
3831
|
+
\`\`\`
|
|
3832
|
+
"
|
|
3833
|
+
fi
|
|
3834
|
+
|
|
3835
|
+
# Inject test coverage data if available and non-empty (produced by run_test_coverage_validation)
|
|
3836
|
+
local test_coverage_context=""
|
|
3837
|
+
if [[ -s "$SPEC_DIR/test-coverage.json" ]]; then
|
|
3838
|
+
test_coverage_context="
|
|
3839
|
+
|
|
3840
|
+
## E.2 Test Coverage Data (Deterministic — Pre-Validated)
|
|
3841
|
+
|
|
3842
|
+
The following test coverage data was produced by the deterministic E.2 validator
|
|
3843
|
+
(\`agdt-speckit-test-coverage\`). Report findings as-is in the E.2 Test Coverage
|
|
3844
|
+
section. Do not re-evaluate test coverage — use these results directly.
|
|
3845
|
+
|
|
3846
|
+
\`\`\`json
|
|
3847
|
+
$(cat "$SPEC_DIR/test-coverage.json")
|
|
3848
|
+
\`\`\`
|
|
3849
|
+
"
|
|
3850
|
+
fi
|
|
3851
|
+
|
|
3852
|
+
local prompt
|
|
3853
|
+
prompt="You are a specification quality analyst. Perform a cross-artifact consistency and quality analysis across the following specification, plan, and task list.
|
|
3854
|
+
|
|
3855
|
+
## Detection Passes (run all seven, max 50 findings total)
|
|
3856
|
+
|
|
3857
|
+
| Pass | Focus |
|
|
3858
|
+
|------|-------|
|
|
3859
|
+
| **A. Duplication** | Near-duplicate requirements; mark lower-quality phrasing for consolidation |
|
|
3860
|
+
| **B. Ambiguity** | Vague adjectives (fast, scalable, secure, intuitive, robust) lacking measurable criteria; unresolved placeholders (TODO, TKTK, ???) |
|
|
3861
|
+
| **C. Underspecification** | Requirements missing object/outcome; user stories missing acceptance criteria; tasks referencing undefined components |
|
|
3862
|
+
| **D. Constitution Alignment** | Missing mandated sections or quality gates |
|
|
3863
|
+
| **E. Coverage Gaps** | Requirements with zero tasks; tasks with no requirement mapping; non-functional requirements absent from tasks |
|
|
3864
|
+
| **F. Inconsistency** | Terminology drift; entities in plan but absent in spec; task ordering contradictions; conflicting requirements |
|
|
3865
|
+
| **G. Task Deduplication** | Duplicate, overlapping, or conflicting tasks in tasks.md (distinct from Category A which detects duplicate *requirements*) |
|
|
3866
|
+
|
|
3867
|
+
### Category G: Task Deduplication Details
|
|
3868
|
+
|
|
3869
|
+
Compare tasks across three dimensions:
|
|
3870
|
+
1. **Description similarity** — substantially same intent/outcome (not just keyword overlap)
|
|
3871
|
+
2. **File path overlap** — majority (≥50%) of same files/directories targeted
|
|
3872
|
+
3. **Code section overlap** — same function/class/method/section referenced
|
|
3873
|
+
|
|
3874
|
+
Classification and severity:
|
|
3875
|
+
- \`duplicate\` (same work, same scope) → CRITICAL
|
|
3876
|
+
- \`conflicting\` (contradictory outcomes) → CRITICAL
|
|
3877
|
+
- \`overlapping\` ≥2 dimensions match strongly → CRITICAL
|
|
3878
|
+
- \`overlapping\` exactly 1 dimension matches → HIGH
|
|
3879
|
+
|
|
3880
|
+
Grouping: Use transitive closure — if A overlaps B and B overlaps C, emit one finding for {A,B,C}. Highest severity wins.
|
|
3881
|
+
|
|
3882
|
+
Each finding must include: overlap_type, severity, task_ids (array of task ID strings, e.g. [\"T001\",\"T002\"]), dimensions (array of triggered dimension names from allowed values: \`description\`, \`file_path\`, \`code_section\`), rationale (≤500 chars).
|
|
3883
|
+
|
|
3884
|
+
Edge cases: Similar descriptions but different files → max HIGH; same file different sections → overlapping or no finding; broad-vs-narrow nesting → overlapping unless materially redundant; single-dimension evidence → max HIGH; contradictory verbs → conflicting.
|
|
3885
|
+
|
|
3886
|
+
Category G is READ-ONLY — do not merge/rewrite tasks. When Category G findings exist, emit a \`### Category G Structured Findings\` section after the findings table containing a valid JSON array of finding objects as raw JSON without Markdown code fences (schema: \`{id: string, overlap_type: \"duplicate\"|\"overlapping\"|\"conflicting\", severity: \"CRITICAL\"|\"HIGH\", task_ids: string[], dimensions: (\"description\"|\"file_path\"|\"code_section\")[], rationale: string}\`). The JSON array MUST be emitted directly — not wrapped in \`\`\`json fences — so downstream parsers can extract it without stripping fence markers.
|
|
3887
|
+
|
|
3888
|
+
## Severity Levels
|
|
3889
|
+
- **CRITICAL**: Missing core artifact or zero-coverage requirement blocking baseline functionality; task deduplication — duplicate tasks, conflicting tasks, or multi-dimension overlap (≥2 dimensions)
|
|
3890
|
+
- **HIGH**: Duplicate/conflicting requirement; ambiguous security/performance; untestable acceptance criterion; task deduplication — single-dimension overlap
|
|
3891
|
+
- **MEDIUM**: Terminology drift; missing non-functional task coverage; underspecified edge case
|
|
3892
|
+
- **LOW**: Style/wording improvements; minor redundancy not affecting execution order
|
|
3893
|
+
|
|
3894
|
+
## RESOLVED Finding Format Contract
|
|
3895
|
+
When a finding from a previous analysis has been addressed, change its Severity cell to:
|
|
3896
|
+
\`~~ORIGINAL_SEVERITY~~ → RESOLVED\`
|
|
3897
|
+
|
|
3898
|
+
This format is machine-parsed by the CRITICAL analysis gate. Examples:
|
|
3899
|
+
- CORRECT: \`| F-01 | ... | ~~CRITICAL~~ → RESOLVED | ... |\`
|
|
3900
|
+
- CORRECT: \`| F-02 | ... | ~~HIGH~~ → RESOLVED | ... |\`
|
|
3901
|
+
- INCORRECT: \`| F-01 | ... | ~~CRITICAL~~ | ... |\` (missing RESOLVED marker — gate treats as unresolved)
|
|
3902
|
+
- INCORRECT: \`| F-01 | ... | RESOLVED | ... |\` (missing strikethrough — gate cannot detect original severity)
|
|
3903
|
+
|
|
3904
|
+
## Report Format
|
|
3905
|
+
Produce a compact Markdown analysis report with:
|
|
3906
|
+
|
|
3907
|
+
1. **Findings Table**:
|
|
3908
|
+
| ID | Category | Severity | Location(s) | Summary | Recommendation |
|
|
3909
|
+
|----|----------|----------|-------------|---------|----------------|
|
|
3910
|
+
|
|
3911
|
+
2. **Coverage Summary Table**:
|
|
3912
|
+
| Requirement Key | Has Task? | Task IDs | Notes |
|
|
3913
|
+
|----------------|-----------|----------|-------|
|
|
3914
|
+
|
|
3915
|
+
3. **Metrics**:
|
|
3916
|
+
- Total Requirements
|
|
3917
|
+
- Total Tasks
|
|
3918
|
+
- Coverage %
|
|
3919
|
+
- Ambiguity Count
|
|
3920
|
+
- Requirement Duplication Count (Category A)
|
|
3921
|
+
- Critical Issues Count
|
|
3922
|
+
- Task Deduplication Finding Count
|
|
3923
|
+
- Task Deduplication by Type (duplicate / overlapping / conflicting)
|
|
3924
|
+
- Multi-Task Group Count (findings involving >2 tasks)
|
|
3925
|
+
|
|
3926
|
+
Output ONLY the analysis report in markdown format. No commentary, no code fences around the entire output.
|
|
3927
|
+
|
|
3928
|
+
## Feature Specification
|
|
3929
|
+
$spec_content
|
|
3930
|
+
|
|
3931
|
+
## Implementation Plan
|
|
3932
|
+
$plan_content
|
|
3933
|
+
|
|
3934
|
+
## Task List
|
|
3935
|
+
$tasks_content
|
|
3936
|
+
$fr_coverage_context
|
|
3937
|
+
$test_coverage_context
|
|
3938
|
+
CRITICAL: Your output MUST begin with a markdown heading on the very first line.
|
|
3939
|
+
WRONG: \"Here is the analysis...\"
|
|
3940
|
+
WRONG: \"Certainly! Here is...\"
|
|
3941
|
+
CORRECT: \"# Analysis Report\"
|
|
3942
|
+
Do NOT include any conversational preamble before the heading."
|
|
3943
|
+
|
|
3944
|
+
local result
|
|
3945
|
+
result=$(call_llm "$prompt") || return 1
|
|
3946
|
+
if [[ -z "$result" ]]; then
|
|
3947
|
+
echo "Error: Analyze phase returned empty content" >&2
|
|
3948
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3949
|
+
_emit_validation_errors "5" "analyze" "MISSING_FILE: analysis-report.md content was empty"
|
|
3950
|
+
return 1
|
|
3951
|
+
fi
|
|
3952
|
+
result=$(strip_llm_preamble "$result" "# ")
|
|
3953
|
+
if [[ -z "${result//[[:space:]]/}" ]]; then
|
|
3954
|
+
echo "Error: Analyze phase returned blank content after preamble removal" >&2
|
|
3955
|
+
# Emit structured validation errors for downstream fallback consumption (FR-001)
|
|
3956
|
+
_emit_validation_errors "5" "analyze" "MISSING_FILE: analysis-report.md content was blank after preamble removal"
|
|
3957
|
+
return 1
|
|
3958
|
+
fi
|
|
3959
|
+
result=$(ensure_heading_start "$result" "# Analysis Report")
|
|
3960
|
+
printf '%s\n' "$result" > "$SPEC_DIR/analysis-report.md"
|
|
3961
|
+
append_model_footer "$SPEC_DIR/analysis-report.md"
|
|
3962
|
+
}
|
|
3963
|
+
|
|
3964
|
+
# ========================== Orchestration ====================================
|
|
3965
|
+
|
|
3966
|
+
# ---------------------------------------------------------------------------
|
|
3967
|
+
# run_single_phase <phase_number>
|
|
3968
|
+
#
|
|
3969
|
+
# Runs only the specified phase (1-5) and its markdownlint validation.
|
|
3970
|
+
# ---------------------------------------------------------------------------
|
|
3971
|
+
run_single_phase() {
|
|
3972
|
+
local phase="$1"
|
|
3973
|
+
|
|
3974
|
+
# Precondition checks: verify prerequisite artifacts exist for phases 2-5
|
|
3975
|
+
case "$phase" in
|
|
3976
|
+
2)
|
|
3977
|
+
if [[ ! -f "$SPEC_DIR/spec.md" ]]; then
|
|
3978
|
+
echo "Error: $SPEC_DIR/spec.md not found. Phase 1 (specify) must be run first." >&2
|
|
3979
|
+
exit 1
|
|
3980
|
+
fi
|
|
3981
|
+
;;
|
|
3982
|
+
3)
|
|
3983
|
+
if [[ ! -f "$SPEC_DIR/spec.md" ]]; then
|
|
3984
|
+
echo "Error: $SPEC_DIR/spec.md not found. Phase 1 (specify) must be run first." >&2
|
|
3985
|
+
exit 1
|
|
3986
|
+
fi
|
|
3987
|
+
if [[ ! -f "$SPEC_DIR/checklists/requirements.md" ]]; then
|
|
3988
|
+
echo "Error: $SPEC_DIR/checklists/requirements.md not found. Phase 2 (clarify) must be run first." >&2
|
|
3989
|
+
exit 1
|
|
3990
|
+
fi
|
|
3991
|
+
;;
|
|
3992
|
+
4)
|
|
3993
|
+
# Task-level (HIERARCHY_LEVEL=task) skips phases 1-3, so plan.md
|
|
3994
|
+
# comes from the parent — it requires spec.md + plan.md as context
|
|
3995
|
+
# but resolves them via resolve_parent_context(), not local prereqs.
|
|
3996
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
3997
|
+
if [[ ! -f "$SPEC_DIR/spec.md" && ! -f "$SPEC_DIR/plan.md" ]]; then
|
|
3998
|
+
# Verify hierarchy.yml exists for parent resolution
|
|
3999
|
+
if [[ ! -f "$SPEC_DIR/hierarchy.yml" ]]; then
|
|
4000
|
+
echo "Warning: No hierarchy.yml in $SPEC_DIR — parent context resolution may fail" >&2
|
|
4001
|
+
fi
|
|
4002
|
+
echo "Task-level phase 4: Will resolve parent context for spec/plan" >&2
|
|
4003
|
+
fi
|
|
4004
|
+
else
|
|
4005
|
+
if [[ ! -f "$SPEC_DIR/plan.md" ]]; then
|
|
4006
|
+
echo "Error: $SPEC_DIR/plan.md not found. Phase 3 (plan) must be run first." >&2
|
|
4007
|
+
exit 1
|
|
4008
|
+
fi
|
|
4009
|
+
fi
|
|
4010
|
+
;;
|
|
4011
|
+
5)
|
|
4012
|
+
if [[ ! -f "$SPEC_DIR/tasks.md" ]]; then
|
|
4013
|
+
echo "Error: $SPEC_DIR/tasks.md not found. Phase 4 (tasks) must be run first." >&2
|
|
4014
|
+
exit 1
|
|
4015
|
+
fi
|
|
4016
|
+
;;
|
|
4017
|
+
esac
|
|
4018
|
+
|
|
4019
|
+
# Emit default gate outputs for non-analyze phases so downstream
|
|
4020
|
+
# workflow if: conditions evaluate correctly (FR-012, T026)
|
|
4021
|
+
case "$phase" in
|
|
4022
|
+
1|2|3|4)
|
|
4023
|
+
echo "gate_result=pass" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4024
|
+
echo "critical_count=0" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4025
|
+
;;
|
|
4026
|
+
esac
|
|
4027
|
+
|
|
4028
|
+
case "$phase" in
|
|
4029
|
+
1)
|
|
4030
|
+
echo ""
|
|
4031
|
+
echo "=== Phase 1: Specify ==="
|
|
4032
|
+
SPEC_CONTENT=$(run_specify_phase_with_validation_retries) || exit 1
|
|
4033
|
+
|
|
4034
|
+
printf '%s\n' "$SPEC_CONTENT" > "$SPEC_DIR/spec.md"
|
|
4035
|
+
append_model_footer "$SPEC_DIR/spec.md"
|
|
4036
|
+
log_file_header "Phase 1" "$SPEC_DIR/spec.md"
|
|
4037
|
+
echo "✓ Phase 1 complete: spec.md"
|
|
4038
|
+
|
|
4039
|
+
echo ""
|
|
4040
|
+
echo "=== Markdownlint Validation ==="
|
|
4041
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4042
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed" >&2; exit 1; }
|
|
4043
|
+
echo "✓ Markdownlint validation complete"
|
|
4044
|
+
;;
|
|
4045
|
+
2)
|
|
4046
|
+
echo ""
|
|
4047
|
+
echo "=== Phase 2: Clarify + Checklist ==="
|
|
4048
|
+
run_clarify_phase || { echo "Error: Clarify phase failed after retries" >&2; exit 1; }
|
|
4049
|
+
# Post-clarify re-validation (FR-009): warn if spec no longer passes quality checks
|
|
4050
|
+
if [[ -f "$SPEC_DIR/spec.md" ]]; then
|
|
4051
|
+
_post_clarify_failures=""
|
|
4052
|
+
if ! _post_clarify_failures=$(validate_spec_quality "$SPEC_DIR/spec.md"); then
|
|
4053
|
+
echo "[Specify] ⚠️ Post-clarify re-validation warning: spec.md no longer passes structural checks" >&2
|
|
4054
|
+
echo "[Specify] Failures: $(printf '%s' "$_post_clarify_failures" | tr '\n' '; ')" >&2
|
|
4055
|
+
fi
|
|
4056
|
+
fi
|
|
4057
|
+
log_file_header "Phase 2" "$SPEC_DIR/spec.md"
|
|
4058
|
+
echo "✓ Clarify complete: spec.md updated"
|
|
4059
|
+
run_checklist_phase || { echo "Error: Checklist phase failed after retries" >&2; exit 1; }
|
|
4060
|
+
log_file_header "Phase 2" "$SPEC_DIR/checklists/requirements.md"
|
|
4061
|
+
echo "✓ Checklist complete: checklists/requirements.md"
|
|
4062
|
+
|
|
4063
|
+
echo ""
|
|
4064
|
+
echo "=== Markdownlint Validation ==="
|
|
4065
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4066
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed" >&2; exit 1; }
|
|
4067
|
+
echo "✓ Markdownlint validation complete"
|
|
4068
|
+
;;
|
|
4069
|
+
3)
|
|
4070
|
+
echo ""
|
|
4071
|
+
echo "=== Phase 3: Plan ==="
|
|
4072
|
+
COPILOT_TIMEOUT=900 run_plan_phase || { echo "Error: Plan phase failed after retries" >&2; exit 1; }
|
|
4073
|
+
log_file_header "Phase 3" "$SPEC_DIR/plan.md"
|
|
4074
|
+
echo "✓ Phase 3 complete: plan.md (+ optional artifacts)"
|
|
4075
|
+
|
|
4076
|
+
echo ""
|
|
4077
|
+
echo "=== Markdownlint Validation ==="
|
|
4078
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4079
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed" >&2; exit 1; }
|
|
4080
|
+
echo "✓ Markdownlint validation complete"
|
|
4081
|
+
;;
|
|
4082
|
+
4)
|
|
4083
|
+
echo ""
|
|
4084
|
+
echo "=== Phase 4: Tasks ==="
|
|
4085
|
+
COPILOT_TIMEOUT=900 run_tasks_phase || { echo "Error: Tasks phase failed after retries" >&2; exit 1; }
|
|
4086
|
+
log_file_header "Phase 4" "$SPEC_DIR/tasks.md"
|
|
4087
|
+
echo "✓ Phase 4 complete: tasks.md"
|
|
4088
|
+
|
|
4089
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
4090
|
+
echo "Skipping FR and E.2 validation for task-level tasks-only generation"
|
|
4091
|
+
else
|
|
4092
|
+
# FR coverage validation gate with retry loop
|
|
4093
|
+
fr_validation_rc=0
|
|
4094
|
+
run_fr_validation_with_retry || fr_validation_rc=$?
|
|
4095
|
+
if [[ "$fr_validation_rc" -ne 0 ]]; then
|
|
4096
|
+
echo "Error: FR coverage validation failed — tasks PR blocked" >&2
|
|
4097
|
+
exit "$fr_validation_rc"
|
|
4098
|
+
fi
|
|
4099
|
+
|
|
4100
|
+
# E.2 Test coverage validation (non-blocking — findings flow to analyze)
|
|
4101
|
+
run_test_coverage_validation
|
|
4102
|
+
fi
|
|
4103
|
+
|
|
4104
|
+
echo ""
|
|
4105
|
+
echo "=== Markdownlint Validation ==="
|
|
4106
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4107
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed" >&2; exit 1; }
|
|
4108
|
+
echo "✓ Markdownlint validation complete"
|
|
4109
|
+
;;
|
|
4110
|
+
5)
|
|
4111
|
+
echo ""
|
|
4112
|
+
echo "=== Phase 5: Analyze ==="
|
|
4113
|
+
COPILOT_TIMEOUT=900 run_analyze_phase || { echo "Error: Analyze phase failed after retries" >&2; exit 1; }
|
|
4114
|
+
log_file_header "Phase 5" "$SPEC_DIR/analysis-report.md"
|
|
4115
|
+
echo "✓ Phase 5 complete: analysis-report.md"
|
|
4116
|
+
|
|
4117
|
+
# ── CRITICAL analysis gate (FR-009, phased path) ──────────
|
|
4118
|
+
echo ""
|
|
4119
|
+
echo "=== CRITICAL Analysis Gate ==="
|
|
4120
|
+
report_path="$SPEC_DIR/analysis-report.md"
|
|
4121
|
+
gate_mode="${SPECKIT_CRITICAL_GATE_MODE:-block}"
|
|
4122
|
+
gate_rc=0
|
|
4123
|
+
check_analysis_gate "$report_path" "$gate_mode" true || gate_rc=$?
|
|
4124
|
+
|
|
4125
|
+
if [[ "$gate_rc" -eq 10 ]]; then
|
|
4126
|
+
# Unresolved CRITICALs detected — attempt remediation
|
|
4127
|
+
if [[ "${SPECKIT_CRITICAL_GATE_REMEDIATION:-true}" == "true" ]]; then
|
|
4128
|
+
echo "=== CRITICAL Gate Remediation ===" >&2
|
|
4129
|
+
if _run_critical_gate_remediation "$SPEC_DIR" "$critical_findings_json"; then
|
|
4130
|
+
echo "✓ CRITICAL findings resolved via remediation (${critical_gate_remediation_layer:-unknown})" >&2
|
|
4131
|
+
echo "critical_gate_remediation_status=success-${critical_gate_remediation_layer:-layer1}" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4132
|
+
# Refresh gate outputs so downstream steps see gate_result=pass
|
|
4133
|
+
check_analysis_gate "$report_path" "$gate_mode" true >/dev/null 2>&1 || true
|
|
4134
|
+
else
|
|
4135
|
+
# Remediation failed — fall through to mode check
|
|
4136
|
+
echo "critical_gate_remediation_status=failed" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4137
|
+
if [[ "$gate_mode" == "draft" ]]; then
|
|
4138
|
+
echo "⚠ CRITICAL findings detected — draft mode: continuing to markdownlint" >&2
|
|
4139
|
+
else
|
|
4140
|
+
echo "Error: CRITICAL analysis gate failed — aborting (block mode)" >&2
|
|
4141
|
+
exit 1
|
|
4142
|
+
fi
|
|
4143
|
+
fi
|
|
4144
|
+
else
|
|
4145
|
+
echo "critical_gate_remediation_status=skipped" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4146
|
+
if [[ "$gate_mode" == "draft" ]]; then
|
|
4147
|
+
echo "⚠ CRITICAL findings detected — draft mode: continuing to markdownlint" >&2
|
|
4148
|
+
else
|
|
4149
|
+
echo "Error: CRITICAL analysis gate failed — aborting (block mode)" >&2
|
|
4150
|
+
exit 1
|
|
4151
|
+
fi
|
|
4152
|
+
fi
|
|
4153
|
+
elif [[ "$gate_rc" -eq 20 ]]; then
|
|
4154
|
+
echo "Error: CRITICAL analysis gate failed — report missing or malformed" >&2
|
|
4155
|
+
exit 1
|
|
4156
|
+
elif [[ "$gate_rc" -ne 0 ]]; then
|
|
4157
|
+
echo "Error: CRITICAL analysis gate failed — unexpected return code: $gate_rc" >&2
|
|
4158
|
+
exit 1
|
|
4159
|
+
fi
|
|
4160
|
+
|
|
4161
|
+
echo ""
|
|
4162
|
+
echo "=== Markdownlint Validation ==="
|
|
4163
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4164
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed" >&2; exit 1; }
|
|
4165
|
+
echo "✓ Markdownlint validation complete"
|
|
4166
|
+
;;
|
|
4167
|
+
*)
|
|
4168
|
+
echo "Error: Unknown phase '$phase'" >&2
|
|
4169
|
+
exit 1
|
|
4170
|
+
;;
|
|
4171
|
+
esac
|
|
4172
|
+
}
|
|
4173
|
+
|
|
4174
|
+
if [[ -n "$PHASE" ]]; then
|
|
4175
|
+
echo "=== SpecKit: Running Phase $PHASE Only ==="
|
|
4176
|
+
run_single_phase "$PHASE"
|
|
4177
|
+
else
|
|
4178
|
+
# Run all phases sequentially (backward compatible)
|
|
4179
|
+
# Phase-skip guards for hierarchy levels (#1859)
|
|
4180
|
+
# Epic: skip tasks (5/7) + FR/test-coverage validation
|
|
4181
|
+
# Task: skip specify (1/7), clarify (2/7), checklist (3/7), plan (4/7), analyze (6/7)
|
|
4182
|
+
_skip_specify=false; _skip_clarify=false; _skip_checklist=false
|
|
4183
|
+
_skip_plan=false; _skip_tasks=false; _skip_analyze=false
|
|
4184
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "epic" ]]; then
|
|
4185
|
+
_skip_tasks=true
|
|
4186
|
+
echo "Level-aware: Skipping Tasks phase (epic level — children ARE the tasks)"
|
|
4187
|
+
elif [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
4188
|
+
_skip_specify=true
|
|
4189
|
+
_skip_clarify=true
|
|
4190
|
+
_skip_checklist=true
|
|
4191
|
+
_skip_plan=true
|
|
4192
|
+
_skip_analyze=true
|
|
4193
|
+
echo "Level-aware: Running Tasks phase only (task level — inherits parent context)"
|
|
4194
|
+
fi
|
|
4195
|
+
|
|
4196
|
+
if [[ "$_skip_specify" == "false" ]]; then
|
|
4197
|
+
echo ""
|
|
4198
|
+
echo "=== Phase 1/7: Specify ==="
|
|
4199
|
+
SPEC_CONTENT=$(run_specify_phase_with_validation_retries) || exit 1
|
|
4200
|
+
|
|
4201
|
+
printf '%s\n' "$SPEC_CONTENT" > "$SPEC_DIR/spec.md"
|
|
4202
|
+
append_model_footer "$SPEC_DIR/spec.md"
|
|
4203
|
+
log_file_header "Phase 1" "$SPEC_DIR/spec.md"
|
|
4204
|
+
echo "✓ Phase 1 complete: spec.md"
|
|
4205
|
+
else
|
|
4206
|
+
echo ""
|
|
4207
|
+
echo "=== Phase 1/7: Specify === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4208
|
+
fi
|
|
4209
|
+
|
|
4210
|
+
if [[ "$_skip_clarify" == "false" ]]; then
|
|
4211
|
+
echo ""
|
|
4212
|
+
echo "=== Phase 2/7: Clarify ==="
|
|
4213
|
+
run_clarify_phase || { echo "Error: Clarify phase failed after retries" >&2; exit 1; }
|
|
4214
|
+
# Post-clarify re-validation (FR-009): warn if spec no longer passes quality checks
|
|
4215
|
+
if [[ -f "$SPEC_DIR/spec.md" ]]; then
|
|
4216
|
+
_post_clarify_failures=""
|
|
4217
|
+
if ! _post_clarify_failures=$(validate_spec_quality "$SPEC_DIR/spec.md"); then
|
|
4218
|
+
echo "[Specify] ⚠️ Post-clarify re-validation warning: spec.md no longer passes structural checks" >&2
|
|
4219
|
+
echo "[Specify] Failures: $(printf '%s' "$_post_clarify_failures" | tr '\n' '; ')" >&2
|
|
4220
|
+
fi
|
|
4221
|
+
fi
|
|
4222
|
+
log_file_header "Phase 2" "$SPEC_DIR/spec.md"
|
|
4223
|
+
echo "✓ Phase 2 complete: spec.md updated with clarifications"
|
|
4224
|
+
else
|
|
4225
|
+
echo ""
|
|
4226
|
+
echo "=== Phase 2/7: Clarify === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4227
|
+
fi
|
|
4228
|
+
|
|
4229
|
+
if [[ "$_skip_checklist" == "false" ]]; then
|
|
4230
|
+
echo ""
|
|
4231
|
+
echo "=== Phase 3/7: Checklist ==="
|
|
4232
|
+
run_checklist_phase || { echo "Error: Checklist phase failed after retries" >&2; exit 1; }
|
|
4233
|
+
log_file_header "Phase 3" "$SPEC_DIR/checklists/requirements.md"
|
|
4234
|
+
echo "✓ Phase 3 complete: checklists/requirements.md"
|
|
4235
|
+
else
|
|
4236
|
+
echo ""
|
|
4237
|
+
echo "=== Phase 3/7: Checklist === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4238
|
+
fi
|
|
4239
|
+
|
|
4240
|
+
if [[ "$_skip_plan" == "false" ]]; then
|
|
4241
|
+
echo ""
|
|
4242
|
+
echo "=== Phase 4/7: Plan ==="
|
|
4243
|
+
COPILOT_TIMEOUT=900 run_plan_phase || { echo "Error: Plan phase failed after retries" >&2; exit 1; }
|
|
4244
|
+
log_file_header "Phase 4" "$SPEC_DIR/plan.md"
|
|
4245
|
+
echo "✓ Phase 4 complete: plan.md (+ optional artifacts)"
|
|
4246
|
+
else
|
|
4247
|
+
echo ""
|
|
4248
|
+
echo "=== Phase 4/7: Plan === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4249
|
+
fi
|
|
4250
|
+
|
|
4251
|
+
if [[ "$_skip_tasks" == "false" ]]; then
|
|
4252
|
+
echo ""
|
|
4253
|
+
echo "=== Phase 5/7: Tasks ==="
|
|
4254
|
+
COPILOT_TIMEOUT=900 run_tasks_phase || { echo "Error: Tasks phase failed after retries" >&2; exit 1; }
|
|
4255
|
+
log_file_header "Phase 5" "$SPEC_DIR/tasks.md"
|
|
4256
|
+
echo "✓ Phase 5 complete: tasks.md"
|
|
4257
|
+
|
|
4258
|
+
if [[ "${HIERARCHY_LEVEL:-feature}" == "task" ]]; then
|
|
4259
|
+
echo "Skipping FR and E.2 validation for task-level tasks-only generation"
|
|
4260
|
+
else
|
|
4261
|
+
# FR coverage validation gate with retry loop (between tasks and analyze)
|
|
4262
|
+
fr_validation_rc=0
|
|
4263
|
+
run_fr_validation_with_retry || fr_validation_rc=$?
|
|
4264
|
+
if [[ "$fr_validation_rc" -ne 0 ]]; then
|
|
4265
|
+
echo "Error: FR coverage validation failed — tasks PR blocked" >&2
|
|
4266
|
+
exit "$fr_validation_rc"
|
|
4267
|
+
fi
|
|
4268
|
+
|
|
4269
|
+
# E.2 Test coverage validation (non-blocking — findings flow to analyze)
|
|
4270
|
+
run_test_coverage_validation
|
|
4271
|
+
fi
|
|
4272
|
+
else
|
|
4273
|
+
echo ""
|
|
4274
|
+
echo "=== Phase 5/7: Tasks === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4275
|
+
fi
|
|
4276
|
+
|
|
4277
|
+
if [[ "$_skip_analyze" == "false" ]]; then
|
|
4278
|
+
echo ""
|
|
4279
|
+
echo "=== Phase 6/7: Analyze ==="
|
|
4280
|
+
COPILOT_TIMEOUT=900 run_analyze_phase || { echo "Error: Analyze phase failed after retries" >&2; exit 1; }
|
|
4281
|
+
log_file_header "Phase 6" "$SPEC_DIR/analysis-report.md"
|
|
4282
|
+
echo "✓ Phase 6 complete: analysis-report.md"
|
|
4283
|
+
|
|
4284
|
+
# ── CRITICAL analysis gate (FR-009, monolithic path) ──────────
|
|
4285
|
+
echo ""
|
|
4286
|
+
echo "=== CRITICAL Analysis Gate ==="
|
|
4287
|
+
report_path="$SPEC_DIR/analysis-report.md"
|
|
4288
|
+
gate_mode="${SPECKIT_CRITICAL_GATE_MODE:-block}"
|
|
4289
|
+
gate_rc=0
|
|
4290
|
+
check_analysis_gate "$report_path" "$gate_mode" true || gate_rc=$?
|
|
4291
|
+
|
|
4292
|
+
if [[ "$gate_rc" -eq 10 ]]; then
|
|
4293
|
+
# Unresolved CRITICALs detected — attempt remediation
|
|
4294
|
+
if [[ "${SPECKIT_CRITICAL_GATE_REMEDIATION:-true}" == "true" ]]; then
|
|
4295
|
+
echo "=== CRITICAL Gate Remediation ===" >&2
|
|
4296
|
+
if _run_critical_gate_remediation "$SPEC_DIR" "$critical_findings_json"; then
|
|
4297
|
+
echo "✓ CRITICAL findings resolved via remediation (${critical_gate_remediation_layer:-unknown})" >&2
|
|
4298
|
+
echo "critical_gate_remediation_status=success-${critical_gate_remediation_layer:-layer1}" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4299
|
+
# Refresh gate outputs so downstream steps see gate_result=pass
|
|
4300
|
+
check_analysis_gate "$report_path" "$gate_mode" true >/dev/null 2>&1 || true
|
|
4301
|
+
else
|
|
4302
|
+
# Remediation failed — fall through to mode check
|
|
4303
|
+
echo "critical_gate_remediation_status=failed" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4304
|
+
if [[ "$gate_mode" == "draft" ]]; then
|
|
4305
|
+
echo "⚠ CRITICAL findings detected — draft mode: continuing to markdownlint" >&2
|
|
4306
|
+
else
|
|
4307
|
+
echo "Error: CRITICAL analysis gate failed — aborting (block mode)" >&2
|
|
4308
|
+
exit 1
|
|
4309
|
+
fi
|
|
4310
|
+
fi
|
|
4311
|
+
else
|
|
4312
|
+
echo "critical_gate_remediation_status=skipped" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4313
|
+
if [[ "$gate_mode" == "draft" ]]; then
|
|
4314
|
+
echo "⚠ CRITICAL findings detected — draft mode: continuing to markdownlint" >&2
|
|
4315
|
+
else
|
|
4316
|
+
echo "Error: CRITICAL analysis gate failed — aborting (block mode)" >&2
|
|
4317
|
+
exit 1
|
|
4318
|
+
fi
|
|
4319
|
+
fi
|
|
4320
|
+
elif [[ "$gate_rc" -eq 20 ]]; then
|
|
4321
|
+
echo "Error: CRITICAL analysis gate failed — report missing or malformed" >&2
|
|
4322
|
+
exit 1
|
|
4323
|
+
elif [[ "$gate_rc" -ne 0 ]]; then
|
|
4324
|
+
echo "Error: CRITICAL analysis gate failed — unexpected return code: $gate_rc" >&2
|
|
4325
|
+
exit 1
|
|
4326
|
+
fi
|
|
4327
|
+
|
|
4328
|
+
echo ""
|
|
4329
|
+
echo "=== Phase 7/7: Markdownlint Validation ==="
|
|
4330
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4331
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed — lint violations remain after remediation" >&2; exit 1; }
|
|
4332
|
+
echo "✓ Phase 7 complete: markdownlint validation finished"
|
|
4333
|
+
else
|
|
4334
|
+
echo ""
|
|
4335
|
+
echo "=== Phase 6/7: Analyze === [SKIPPED — $HIERARCHY_LEVEL level]"
|
|
4336
|
+
# Still run markdownlint on whatever was produced
|
|
4337
|
+
echo ""
|
|
4338
|
+
echo "=== Phase 7/7: Markdownlint Validation ==="
|
|
4339
|
+
quick_markdown_sanity_check "$SPEC_DIR"
|
|
4340
|
+
run_markdownlint_validation "$SPEC_DIR" || { echo "Error: Markdownlint validation failed — lint violations remain after remediation" >&2; exit 1; }
|
|
4341
|
+
echo "✓ Phase 7 complete: markdownlint validation finished"
|
|
4342
|
+
fi
|
|
4343
|
+
fi
|
|
4344
|
+
|
|
4345
|
+
# Output results (spec_dir as repo-relative path for portability)
|
|
4346
|
+
# Derive from SPEC_DIR by stripping REPO_ROOT prefix, so it stays correct
|
|
4347
|
+
# even if SPEC_BASE_PATH is set to an absolute-like path.
|
|
4348
|
+
if [[ "$SPEC_DIR" == "$REPO_ROOT"/* ]]; then
|
|
4349
|
+
SPEC_DIR_REL="${SPEC_DIR#"$REPO_ROOT"/}"
|
|
4350
|
+
else
|
|
4351
|
+
SPEC_DIR_REL="$SPEC_DIR"
|
|
4352
|
+
fi
|
|
4353
|
+
# Normalize to ensure SPEC_DIR_REL never starts with '/', even if SPEC_DIR was absolute.
|
|
4354
|
+
SPEC_DIR_REL="${SPEC_DIR_REL#/}"
|
|
4355
|
+
echo "branch_name=$BRANCH_NAME" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4356
|
+
echo "spec_file=$SPEC_FILE" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4357
|
+
echo "issue_number=$ISSUE_NUMBER" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4358
|
+
echo "spec_dir=$SPEC_DIR_REL" >> "${GITHUB_OUTPUT:-/dev/stdout}"
|
|
4359
|
+
|
|
4360
|
+
echo ""
|
|
4361
|
+
if [[ -n "$PHASE" ]]; then
|
|
4362
|
+
echo "=== Phase $PHASE Complete ==="
|
|
4363
|
+
else
|
|
4364
|
+
echo "=== Full Planning Artifact Suite Complete ==="
|
|
4365
|
+
fi
|
|
4366
|
+
echo "Branch: $BRANCH_NAME"
|
|
4367
|
+
echo "Spec File: $SPEC_FILE"
|
|
4368
|
+
echo "Spec Directory: $SPEC_DIR"
|
|
4369
|
+
echo ""
|
|
4370
|
+
echo "Artifacts produced:"
|
|
4371
|
+
shopt -s nullglob
|
|
4372
|
+
for f in "$SPEC_DIR"/*.md "$SPEC_DIR"/checklists/*.md "$SPEC_DIR"/contracts/*.md; do
|
|
4373
|
+
echo " - ${f#"$SPEC_DIR/"}"
|
|
4374
|
+
done
|
|
4375
|
+
shopt -u nullglob
|