pdd-cli 0.0.238__tar.gz → 0.0.239__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (676) hide show
  1. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/PKG-INFO +3 -3
  2. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/README.md +6 -5
  3. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_checkup.py +7 -1
  4. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_common.py +20 -0
  5. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_sync.py +82 -6
  6. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/checkup_review_loop.py +355 -20
  7. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/ci_drift_heal.py +243 -18
  8. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/checkup.py +16 -1
  9. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/metadata_sync.py +7 -5
  10. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pdd_completion.fish +1 -0
  11. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pdd_completion.sh +2 -2
  12. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pdd_completion.zsh +1 -0
  13. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/PKG-INFO +3 -3
  14. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/SOURCES.txt +1 -0
  15. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pypi_description.rst +2 -2
  16. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pyproject.toml +2 -2
  17. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_common.py +134 -0
  18. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_sync.py +230 -0
  19. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_checkup_review_loop.py +1389 -0
  20. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_ci_drift_heal.py +160 -22
  21. pdd_cli-0.0.239/tests/test_issue_1021_reproduction.py +584 -0
  22. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/LICENSE +0 -0
  23. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/__init__.py +0 -0
  24. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/__main__.py +0 -0
  25. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/_keyring_timeout.py +0 -0
  26. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_architecture.py +0 -0
  27. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_architecture_orchestrator.py +0 -0
  28. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_bug.py +0 -0
  29. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_bug_orchestrator.py +0 -0
  30. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_change.py +0 -0
  31. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_change_orchestrator.py +0 -0
  32. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_checkup_orchestrator.py +0 -0
  33. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_common_worktree.py +0 -0
  34. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_crash.py +0 -0
  35. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_e2e_fix.py +0 -0
  36. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_e2e_fix_orchestrator.py +0 -0
  37. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_fix.py +0 -0
  38. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_langtest.py +0 -0
  39. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_split.py +0 -0
  40. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_split_orchestrator.py +0 -0
  41. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_sync_runner.py +0 -0
  42. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_test.py +0 -0
  43. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_test_generate.py +0 -0
  44. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_test_orchestrator.py +0 -0
  45. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_update.py +0 -0
  46. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/agentic_verify.py +0 -0
  47. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/api_key_scanner.py +0 -0
  48. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/architecture_include_validation.py +0 -0
  49. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/architecture_registry.py +0 -0
  50. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/architecture_sync.py +0 -0
  51. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/architecture_sync_helper.py +0 -0
  52. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/auth_service.py +0 -0
  53. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/auto_deps_architecture.py +0 -0
  54. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/auto_deps_main.py +0 -0
  55. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/auto_include.py +0 -0
  56. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/auto_update.py +0 -0
  57. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/bug_main.py +0 -0
  58. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/bug_to_unit_test.py +0 -0
  59. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/change.py +0 -0
  60. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/change_main.py +0 -0
  61. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/ci_detect_changed_modules.py +0 -0
  62. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/ci_validation.py +0 -0
  63. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/cli.py +0 -0
  64. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/cli_detector.py +0 -0
  65. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/cmd_test_main.py +0 -0
  66. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/code_generator.py +0 -0
  67. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/code_generator_main.py +0 -0
  68. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/__init__.py +0 -0
  69. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/analysis.py +0 -0
  70. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/auth.py +0 -0
  71. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/connect.py +0 -0
  72. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/extracts.py +0 -0
  73. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/firecrawl.py +0 -0
  74. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/fix.py +0 -0
  75. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/generate.py +0 -0
  76. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/maintenance.py +0 -0
  77. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/misc.py +0 -0
  78. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/modify.py +0 -0
  79. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/report.py +0 -0
  80. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/sessions.py +0 -0
  81. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/templates.py +0 -0
  82. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/utility.py +0 -0
  83. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/commands/which.py +0 -0
  84. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/comment_line.py +0 -0
  85. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/config_resolution.py +0 -0
  86. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/conflicts_in_prompts.py +0 -0
  87. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/conflicts_main.py +0 -0
  88. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/construct_paths.py +0 -0
  89. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/content_selector.py +0 -0
  90. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/context_generator.py +0 -0
  91. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/context_generator_main.py +0 -0
  92. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/continue_generation.py +0 -0
  93. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/__init__.py +0 -0
  94. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/cli.py +0 -0
  95. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/cloud.py +0 -0
  96. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/dump.py +0 -0
  97. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/duplicate_cli_guard.py +0 -0
  98. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/errors.py +0 -0
  99. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/llm_trace.py +0 -0
  100. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/remote_session.py +0 -0
  101. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/core/utils.py +0 -0
  102. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/crash_main.py +0 -0
  103. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/data/arena_elo_manifest.json +0 -0
  104. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/data/language_format.csv +0 -0
  105. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/data/llm_model.csv +0 -0
  106. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/detect_change.py +0 -0
  107. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/detect_change_main.py +0 -0
  108. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/docs/prompting_guide.md +0 -0
  109. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/durable_sync_runner.py +0 -0
  110. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/edit_file.py +0 -0
  111. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/embed_retrieve.py +0 -0
  112. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/extracts_prune.py +0 -0
  113. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/failure_classification.py +0 -0
  114. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/find_section.py +0 -0
  115. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/firecrawl_cache.py +0 -0
  116. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_code_loop.py +0 -0
  117. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_code_module_errors.py +0 -0
  118. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_error_loop.py +0 -0
  119. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_errors_from_unit_tests.py +0 -0
  120. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_main.py +0 -0
  121. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_verification_errors.py +0 -0
  122. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_verification_errors_loop.py +0 -0
  123. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/fix_verification_main.py +0 -0
  124. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/generate_model_catalog.py +0 -0
  125. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/generate_output_paths.py +0 -0
  126. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/generate_test.py +0 -0
  127. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/generation_completion.py +0 -0
  128. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_comment.py +0 -0
  129. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_extension.py +0 -0
  130. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_jwt_token.py +0 -0
  131. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_language.py +0 -0
  132. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_lint_commands.py +0 -0
  133. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_run_command.py +0 -0
  134. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/get_test_command.py +0 -0
  135. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/git_update.py +0 -0
  136. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/include_query_extractor.py +0 -0
  137. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/increase_tests.py +0 -0
  138. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/incremental_code_generator.py +0 -0
  139. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/incremental_prd_architecture.py +0 -0
  140. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/insert_includes.py +0 -0
  141. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/install_completion.py +0 -0
  142. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/json_atomic.py +0 -0
  143. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/list_drift_detection.py +0 -0
  144. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/llm_invoke.py +0 -0
  145. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/load_prompt_template.py +0 -0
  146. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/logo_animation.py +0 -0
  147. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/mcp_config.json +0 -0
  148. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/model_tester.py +0 -0
  149. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/one_session_sync.py +0 -0
  150. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/operation_log.py +0 -0
  151. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/path_resolution.py +0 -0
  152. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pddrc_initializer.py +0 -0
  153. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pin_example_hack.py +0 -0
  154. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/postprocess.py +0 -0
  155. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/postprocess_0.py +0 -0
  156. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/preprocess.py +0 -0
  157. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/preprocess_main.py +0 -0
  158. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/process_csv_change.py +0 -0
  159. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step10_completeness_LLM.prompt +0 -0
  160. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step11_sync_LLM.prompt +0 -0
  161. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step12_deps_LLM.prompt +0 -0
  162. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step13_fix_LLM.prompt +0 -0
  163. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step1_analyze_prd_LLM.prompt +0 -0
  164. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step1b_complexity_LLM.prompt +0 -0
  165. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step2_analyze_LLM.prompt +0 -0
  166. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step2b_codebase_scan_LLM.prompt +0 -0
  167. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step3_research_LLM.prompt +0 -0
  168. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step4_data_model_LLM.prompt +0 -0
  169. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step5_design_LLM.prompt +0 -0
  170. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step5b_completeness_gate_LLM.prompt +0 -0
  171. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step5b_fix_LLM.prompt +0 -0
  172. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step6_research_deps_LLM.prompt +0 -0
  173. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step7_generate_LLM.prompt +0 -0
  174. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step7b_review_LLM.prompt +0 -0
  175. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step8_5_context_docs_LLM.prompt +0 -0
  176. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step8_pddrc_LLM.prompt +0 -0
  177. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step9_prompts_LLM.prompt +0 -0
  178. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_arch_step9b_cross_audit_LLM.prompt +0 -0
  179. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step10_verify_LLM.prompt +0 -0
  180. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step11_e2e_test_LLM.prompt +0 -0
  181. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step12_pr_LLM.prompt +0 -0
  182. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step1_duplicate_LLM.prompt +0 -0
  183. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step2_docs_LLM.prompt +0 -0
  184. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step3_triage_LLM.prompt +0 -0
  185. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step4_api_research_LLM.prompt +0 -0
  186. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step5_reproduce_LLM.prompt +0 -0
  187. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step6_root_cause_LLM.prompt +0 -0
  188. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step7_prompt_classification_LLM.prompt +0 -0
  189. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step8_test_plan_LLM.prompt +0 -0
  190. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_bug_step9_generate_LLM.prompt +0 -0
  191. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step10_architecture_update_LLM.prompt +0 -0
  192. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step11_identify_issues_LLM.prompt +0 -0
  193. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step12_fix_issues_LLM.prompt +0 -0
  194. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step13_create_pr_LLM.prompt +0 -0
  195. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step1_duplicate_LLM.prompt +0 -0
  196. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step2_docs_LLM.prompt +0 -0
  197. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step3_research_LLM.prompt +0 -0
  198. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step4_clarify_LLM.prompt +0 -0
  199. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step5_docs_change_LLM.prompt +0 -0
  200. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step6_devunits_LLM.prompt +0 -0
  201. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step7_architecture_LLM.prompt +0 -0
  202. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step8_analyze_LLM.prompt +0 -0
  203. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_change_step9_implement_LLM.prompt +0 -0
  204. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step1_discover_LLM.prompt +0 -0
  205. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step2_deps_LLM.prompt +0 -0
  206. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step3_build_LLM.prompt +0 -0
  207. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step4_interfaces_LLM.prompt +0 -0
  208. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step5_test_LLM.prompt +0 -0
  209. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step6_1_fix_LLM.prompt +0 -0
  210. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step6_2_regression_tests_LLM.prompt +0 -0
  211. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step6_3_e2e_tests_LLM.prompt +0 -0
  212. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step7_verify_LLM.prompt +0 -0
  213. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_checkup_step8_create_pr_LLM.prompt +0 -0
  214. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_crash_explore_LLM.prompt +0 -0
  215. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step10_ci_validation_LLM.prompt +0 -0
  216. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step11_code_cleanup_LLM.prompt +0 -0
  217. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step1_unit_tests_LLM.prompt +0 -0
  218. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step2_e2e_tests_LLM.prompt +0 -0
  219. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step3_root_cause_LLM.prompt +0 -0
  220. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step4_fix_e2e_tests_LLM.prompt +0 -0
  221. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step5_identify_devunits_LLM.prompt +0 -0
  222. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step6_create_unit_tests_LLM.prompt +0 -0
  223. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step7_verify_tests_LLM.prompt +0 -0
  224. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step8_run_pdd_fix_LLM.prompt +0 -0
  225. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_e2e_fix_step9_verify_all_LLM.prompt +0 -0
  226. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_fix_explore_LLM.prompt +0 -0
  227. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_fix_nonpython_LLM.prompt +0 -0
  228. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_fix_primary_LLM.prompt +0 -0
  229. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step0_intent_LLM.prompt +0 -0
  230. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step1_survey_LLM.prompt +0 -0
  231. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step2_diagnose_LLM.prompt +0 -0
  232. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step3_investigate_LLM.prompt +0 -0
  233. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step4_propose_options_LLM.prompt +0 -0
  234. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step6_extract_LLM.prompt +0 -0
  235. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step6a_phase_extract_LLM.prompt +0 -0
  236. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step7_assess_LLM.prompt +0 -0
  237. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step8_repair_LLM.prompt +0 -0
  238. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_split_step9_refine_check_LLM.prompt +0 -0
  239. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_sync_fix_dry_run_LLM.prompt +0 -0
  240. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_sync_identify_modules_LLM.prompt +0 -0
  241. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_generate_LLM.prompt +0 -0
  242. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step10_validate_LLM.prompt +0 -0
  243. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step11_loop_LLM.prompt +0 -0
  244. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step15_plan_validation_LLM.prompt +0 -0
  245. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step16_run_tests_LLM.prompt +0 -0
  246. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step1_duplicate_LLM.prompt +0 -0
  247. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step2_docs_LLM.prompt +0 -0
  248. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step3_clarify_LLM.prompt +0 -0
  249. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step4_detect_frontend_LLM.prompt +0 -0
  250. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step5_test_plan_LLM.prompt +0 -0
  251. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step5b_enhance_plan_LLM.prompt +0 -0
  252. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step6_coverage_LLM.prompt +0 -0
  253. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step6_generate_tests_LLM.prompt +0 -0
  254. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step7_checklist_LLM.prompt +0 -0
  255. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step7_run_tests_LLM.prompt +0 -0
  256. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step8_fix_iterate_LLM.prompt +0 -0
  257. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step8_manual_test_LLM.prompt +0 -0
  258. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step9_regression_LLM.prompt +0 -0
  259. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_test_step9_submit_pr_LLM.prompt +0 -0
  260. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_update_LLM.prompt +0 -0
  261. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/agentic_verify_explore_LLM.prompt +0 -0
  262. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/arrange_graph_layout_LLM.prompt +0 -0
  263. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/auto_include_LLM.prompt +0 -0
  264. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/bug_to_unit_test_LLM.prompt +0 -0
  265. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/change_LLM.prompt +0 -0
  266. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/code_patcher_LLM.prompt +0 -0
  267. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/conflict_LLM.prompt +0 -0
  268. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/continue_generation_LLM.prompt +0 -0
  269. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/core_dump_requirements_LLM.prompt +0 -0
  270. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/cross_issue_reconcile_LLM.prompt +0 -0
  271. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/detect_change_LLM.prompt +0 -0
  272. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/diff_analyzer_LLM.prompt +0 -0
  273. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/example_generator_LLM.prompt +0 -0
  274. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_code_LLM.prompt +0 -0
  275. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_conflict_LLM.prompt +0 -0
  276. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_detect_change_LLM.prompt +0 -0
  277. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_program_code_fix_LLM.prompt +0 -0
  278. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_prompt_change_LLM.prompt +0 -0
  279. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_prompt_split_LLM.prompt +0 -0
  280. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_prompt_update_LLM.prompt +0 -0
  281. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_promptline_LLM.prompt +0 -0
  282. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_unit_code_fix_LLM.prompt +0 -0
  283. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/extract_xml_LLM.prompt +0 -0
  284. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/find_verification_errors_LLM.prompt +0 -0
  285. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/fix_code_module_errors_LLM.prompt +0 -0
  286. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/fix_errors_from_unit_tests_LLM.prompt +0 -0
  287. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/fix_verification_errors_LLM.prompt +0 -0
  288. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/generate_test_LLM.prompt +0 -0
  289. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/generate_test_from_example_LLM.prompt +0 -0
  290. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/include_query_extractor_LLM.prompt +0 -0
  291. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/increase_tests_LLM.prompt +0 -0
  292. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/incremental_prd_architecture_patch_LLM.prompt +0 -0
  293. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/insert_includes_LLM.prompt +0 -0
  294. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/one_session_agent_LLM.prompt +0 -0
  295. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/post_gen_verify_LLM.prompt +0 -0
  296. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/prompt_code_diff_LLM.prompt +0 -0
  297. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/prompt_diff_LLM.prompt +0 -0
  298. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/split_LLM.prompt +0 -0
  299. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/summarize_file_LLM.prompt +0 -0
  300. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/sync_analysis_LLM.prompt +0 -0
  301. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/trace_LLM.prompt +0 -0
  302. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/trim_results_LLM.prompt +0 -0
  303. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/trim_results_start_LLM.prompt +0 -0
  304. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/unfinished_prompt_LLM.prompt +0 -0
  305. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/update_prompt_LLM.prompt +0 -0
  306. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/prompts/xml_convertor_LLM.prompt +0 -0
  307. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/provider_manager.py +0 -0
  308. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/pytest_output.py +0 -0
  309. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/python_env_detector.py +0 -0
  310. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/reasoning.py +0 -0
  311. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/remote_session.py +0 -0
  312. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/render_mermaid.py +0 -0
  313. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/__init__.py +0 -0
  314. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/app.py +0 -0
  315. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/click_executor.py +0 -0
  316. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/executor.py +0 -0
  317. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/jobs.py +0 -0
  318. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/models.py +0 -0
  319. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/__init__.py +0 -0
  320. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/architecture.py +0 -0
  321. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/auth.py +0 -0
  322. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/commands.py +0 -0
  323. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/config.py +0 -0
  324. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/extracts.py +0 -0
  325. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/files.py +0 -0
  326. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/prompts.py +0 -0
  327. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/routes/websocket.py +0 -0
  328. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/security.py +0 -0
  329. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/terminal_spawner.py +0 -0
  330. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/server/token_counter.py +0 -0
  331. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/setup_tool.py +0 -0
  332. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/split.py +0 -0
  333. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/split_main.py +0 -0
  334. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/split_validation.py +0 -0
  335. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/summarize_directory.py +0 -0
  336. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_animation.py +0 -0
  337. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_determine_operation.py +0 -0
  338. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_graph_order_consistency.py +0 -0
  339. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_main.py +0 -0
  340. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_orchestration.py +0 -0
  341. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_order.py +0 -0
  342. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/sync_tui.py +0 -0
  343. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/template_expander.py +0 -0
  344. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/template_registry.py +0 -0
  345. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/architecture/architecture_json.prompt +0 -0
  346. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/architecture/example_nextjs_task_notes.prompt +0 -0
  347. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/architecture/example_python_backend.prompt +0 -0
  348. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/architecture/pdd_path_construction_guide.prompt +0 -0
  349. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/generic/generate_pddrc_YAML.prompt +0 -0
  350. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/templates/generic/generate_prompt.prompt +0 -0
  351. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/test_result.py +0 -0
  352. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/trace.py +0 -0
  353. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/trace_main.py +0 -0
  354. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/track_cost.py +0 -0
  355. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/unfinished_prompt.py +0 -0
  356. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/update_main.py +0 -0
  357. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/update_model_costs.py +0 -0
  358. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/update_prompt.py +0 -0
  359. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/user_story_tests.py +0 -0
  360. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/validate_prompt_includes.py +0 -0
  361. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd/xml_tagger.py +0 -0
  362. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/dependency_links.txt +0 -0
  363. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/entry_points.txt +0 -0
  364. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/requires.txt +0 -0
  365. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/pdd_cli.egg-info/top_level.txt +0 -0
  366. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/setup.cfg +0 -0
  367. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_739_complete.py +0 -0
  368. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_739_e2e_synthetic.py +0 -0
  369. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_739_fixtures.py +0 -0
  370. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_arch_complexity_prompt.py +0 -0
  371. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_architecture.py +0 -0
  372. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_architecture_orchestrator.py +0 -0
  373. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug.py +0 -0
  374. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_orchestrator.py +0 -0
  375. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_orchestrator_1.py +0 -0
  376. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_orchestrator_step_comments.py +0 -0
  377. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_step10_prompt.py +0 -0
  378. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_step11_prompt.py +0 -0
  379. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_bug_step7_prompt.py +0 -0
  380. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_change.py +0 -0
  381. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_change_orchestrator.py +0 -0
  382. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_checkup.py +0 -0
  383. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_checkup_orchestrator.py +0 -0
  384. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_common_issue_813_anthropic_api_key_oauth_shadow.py +0 -0
  385. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_common_worktree.py +0 -0
  386. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_crash.py +0 -0
  387. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_e2e_fix.py +0 -0
  388. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_e2e_fix_orchestrator.py +0 -0
  389. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_e2e_fix_step10_prompt.py +0 -0
  390. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_fix.py +0 -0
  391. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_langtest.py +0 -0
  392. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_split.py +0 -0
  393. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_split_orchestrator.py +0 -0
  394. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_split_real.py +0 -0
  395. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_split_v2.py +0 -0
  396. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_sync_nearest_config.py +0 -0
  397. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_sync_runner.py +0 -0
  398. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_test.py +0 -0
  399. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_test_generate.py +0 -0
  400. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_test_orchestrator.py +0 -0
  401. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_update.py +0 -0
  402. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_agentic_verify.py +0 -0
  403. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_api_key_scanner.py +0 -0
  404. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_architecture_include_validation.py +0 -0
  405. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_architecture_registry.py +0 -0
  406. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_architecture_sync.py +0 -0
  407. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auth_service.py +0 -0
  408. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_deps_architecture.py +0 -0
  409. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_deps_entry_wipe.py +0 -0
  410. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_deps_lock.py +0 -0
  411. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_deps_main.py +0 -0
  412. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_heal_workflow.py +0 -0
  413. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_include.py +0 -0
  414. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_auto_update.py +0 -0
  415. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_bug_main.py +0 -0
  416. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_bug_to_unit_test.py +0 -0
  417. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_change.py +0 -0
  418. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_change_call_site_and_retry.py +0 -0
  419. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_change_main.py +0 -0
  420. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_checkup_pr_mode.py +0 -0
  421. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_ci_detect_changed_modules.py +0 -0
  422. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_ci_validation.py +0 -0
  423. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_circular_includes.py +0 -0
  424. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cli.py +0 -0
  425. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cli_binary_isolation.py +0 -0
  426. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cli_detector.py +0 -0
  427. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cloud_noninteractive_auth.py +0 -0
  428. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cmd_test_main.py +0 -0
  429. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_code_generator.py +0 -0
  430. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_code_generator_main.py +0 -0
  431. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_code_patcher_prompt_json_example.py +0 -0
  432. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_auth.py +0 -0
  433. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_firecrawl.py +0 -0
  434. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_fix.py +0 -0
  435. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_generate.py +0 -0
  436. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_maintenance.py +0 -0
  437. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_modify.py +0 -0
  438. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_templates.py +0 -0
  439. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_commands_utility.py +0 -0
  440. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_comment_line.py +0 -0
  441. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_conflicts_in_prompts.py +0 -0
  442. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_conflicts_main.py +0 -0
  443. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_construct_paths.py +0 -0
  444. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_content_selector.py +0 -0
  445. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_context_example_isolation.py +0 -0
  446. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_context_generator.py +0 -0
  447. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_context_generator_main.py +0 -0
  448. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_continue_generation.py +0 -0
  449. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_copy_package_data_to_public.py +0 -0
  450. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_core_dump.py +0 -0
  451. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_core_errors.py +0 -0
  452. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_core_utils.py +0 -0
  453. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_crash_main.py +0 -0
  454. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_cross_step_consistency_prompts.py +0 -0
  455. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_detect_change.py +0 -0
  456. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_detect_change_main.py +0 -0
  457. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_discover_associated_documents.py +0 -0
  458. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_duplicate_cli_guard.py +0 -0
  459. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_durable_sync_runner.py +0 -0
  460. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_auto_deps_pipeline.py +0 -0
  461. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_bug_step9_verification.py +0 -0
  462. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_219_duplicate_includes.py +0 -0
  463. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_295_openai_schema.py +0 -0
  464. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_296_custom_csv.py +0 -0
  465. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_305_false_success.py +0 -0
  466. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_309_oauth_rate_limit.py +0 -0
  467. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_319_json_braces.py +0 -0
  468. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_340_report_core_no_default.py +0 -0
  469. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_342_syspath_isolation.py +0 -0
  470. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_349_sys_modules_pollution.py +0 -0
  471. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_357_step9_keyerror.py +0 -0
  472. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_358_jwt_cache_null.py +0 -0
  473. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_364_cumulative_cost.py +0 -0
  474. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_373_step5_keyerror.py +0 -0
  475. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_375_malformed_json.py +0 -0
  476. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_379_auth_null_expires.py +0 -0
  477. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_383_commit_intermediate_files.py +0 -0
  478. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_399_ssh_url_message.py +0 -0
  479. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_419_cli_unpushed_commits.py +0 -0
  480. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_419_unpushed_commits.py +0 -0
  481. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_426_include_path_validation.py +0 -0
  482. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_429_prompt_files_in_pr.py +0 -0
  483. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_445_worktree_resume.py +0 -0
  484. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_448_change_orchestrator.py +0 -0
  485. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_448_step5_keyerror.py +0 -0
  486. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_449_auth_logout_message.py +0 -0
  487. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_467_false_cached_steps.py +0 -0
  488. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_468_not_a_bug_early_exit.py +0 -0
  489. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_469_cleanup_messages.py +0 -0
  490. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_469_duplicate_unresolved.py +0 -0
  491. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_470_sessions_cleanup_auth_message.py +0 -0
  492. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_481_pagination.py +0 -0
  493. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_485_warning_false_negative.py +0 -0
  494. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_493_update_output_subdir.py +0 -0
  495. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_508_budget_test_cost.py +0 -0
  496. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_508_sync_budget_tracking.py +0 -0
  497. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_509_retry_cost.py +0 -0
  498. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_521_circular_includes.py +0 -0
  499. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_522_include_fingerprint.py +0 -0
  500. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_545_no_changes_to_commit.py +0 -0
  501. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_549_format_double_escaping.py +0 -0
  502. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_549_other_orchestrators.py +0 -0
  503. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_553_circular_includes_non_recursive.py +0 -0
  504. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_557_codex_ndjson.py +0 -0
  505. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_566_code_fence_tags.py +0 -0
  506. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_579_bug_worktree_rerun.py +0 -0
  507. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_579_orchestrator_rerun.py +0 -0
  508. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_594_preamble_imports.py +0 -0
  509. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_604_handler_wiring.py +0 -0
  510. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_620_hallucinated_imports.py +0 -0
  511. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_626_nextjs_rendering_model.py +0 -0
  512. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_686_anthropic_cost_double_count.py +0 -0
  513. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_687_postprocess_model_name.py +0 -0
  514. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_737_step_completion_markers.py +0 -0
  515. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_745_initial_cost_tracking.py +0 -0
  516. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_773_hard_stop.py +0 -0
  517. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_791_e2e_timeout_retry.py +0 -0
  518. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_796_typescript_python_validation.py +0 -0
  519. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_797_typescript_verification.py +0 -0
  520. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_817_step5_degenerate_cli.py +0 -0
  521. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_824_artifact_filtering.py +0 -0
  522. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_825_param_drop.py +0 -0
  523. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_830_workflow_stall.py +0 -0
  524. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_894.py +0 -0
  525. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_902_provider_fallback.py +0 -0
  526. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_issue_903_convergence.py +0 -0
  527. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_openai_required_array.py +0 -0
  528. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_pattern_verification.py +0 -0
  529. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_selective_includes.py +0 -0
  530. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_selective_includes_integration.py +0 -0
  531. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_step11_cleanup_revert.py +0 -0
  532. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_subprocess_issue_399_ssh_url_message.py +0 -0
  533. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_subprocess_issue_541_quiet_flag.py +0 -0
  534. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_e2e_subprocess_issue_593_bug_exit_code.py +0 -0
  535. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_embed_retrieve.py +0 -0
  536. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_example_error_detection.py +0 -0
  537. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_explicit_output_paths.py +0 -0
  538. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_extracts_prune.py +0 -0
  539. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_failure_classification.py +0 -0
  540. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_find_prompt_file.py +0 -0
  541. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_find_section.py +0 -0
  542. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_firecrawl_cache.py +0 -0
  543. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_code_loop.py +0 -0
  544. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_code_module_errors.py +0 -0
  545. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_error_loop.py +0 -0
  546. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_error_loop_failure_aware.py +0 -0
  547. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_errors_from_unit_tests.py +0 -0
  548. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_main.py +0 -0
  549. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_main_issue_232.py +0 -0
  550. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_verification_errors.py +0 -0
  551. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_verification_errors_loop.py +0 -0
  552. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_fix_verification_main.py +0 -0
  553. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_generate_model_catalog.py +0 -0
  554. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_generate_output_paths.py +0 -0
  555. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_generate_output_paths_regression.py +0 -0
  556. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_generate_test.py +0 -0
  557. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_generation_completion.py +0 -0
  558. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_comment.py +0 -0
  559. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_extension.py +0 -0
  560. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_jwt_token.py +0 -0
  561. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_language.py +0 -0
  562. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_lint_commands.py +0 -0
  563. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_run_command.py +0 -0
  564. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_get_test_command.py +0 -0
  565. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_git_update.py +0 -0
  566. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_include_query_extractor.py +0 -0
  567. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_increase_tests.py +0 -0
  568. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_incremental_code_generator.py +0 -0
  569. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_incremental_prd_architecture.py +0 -0
  570. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_incremental_prd_architecture_real.py +0 -0
  571. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_insert_includes.py +0 -0
  572. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_install_completion.py +0 -0
  573. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_1049_reproduction.py +0 -0
  574. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_1240_generate_prompt_meta_framing.py +0 -0
  575. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_1272_cloud_timeout.py +0 -0
  576. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_225_paths_and_includes.py +0 -0
  577. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_237.py +0 -0
  578. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_467_all_orchestrators.py +0 -0
  579. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_469_duplicate_unresolved.py +0 -0
  580. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_592_failing_case.py +0 -0
  581. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_600_agentic_weaknesses.py +0 -0
  582. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_633_reproduction.py +0 -0
  583. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_686_post_process_args_braces.py +0 -0
  584. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_737_step_completion_markers.py +0 -0
  585. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_791_reproduction.py +0 -0
  586. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_794_anti_tdd_and_test_discovery.py +0 -0
  587. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_794_repro.py +0 -0
  588. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_830_remaining_fixes.py +0 -0
  589. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_865_reproduction.py +0 -0
  590. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_894_pytest_output_deadlock.py +0 -0
  591. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_902.py +0 -0
  592. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_902_prompt_sync.py +0 -0
  593. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_926_preserve_comments_directive.py +0 -0
  594. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_issue_953_directory_scan_regression.py +0 -0
  595. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_jobs_sync_failure_detection.py +0 -0
  596. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_list_drift_detection.py +0 -0
  597. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke.py +0 -0
  598. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke_csv_model_registration.py +0 -0
  599. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke_integration.py +0 -0
  600. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke_nested_schema.py +0 -0
  601. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke_retry_cost.py +0 -0
  602. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_llm_invoke_vertex_retry.py +0 -0
  603. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_load_prompt_template.py +0 -0
  604. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_logo_animation.py +0 -0
  605. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_metadata_sync.py +0 -0
  606. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_mock_vs_production_fix.py +0 -0
  607. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_model_tester.py +0 -0
  608. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_nextjs_rendering_model.py +0 -0
  609. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_one_session_eval.py +0 -0
  610. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_one_session_sync.py +0 -0
  611. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_opencode_provider.py +0 -0
  612. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_operation_log.py +0 -0
  613. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_operation_logging_e2e.py +0 -0
  614. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_path_resolution.py +0 -0
  615. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_pattern_completeness_verification.py +0 -0
  616. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_pddrc_initializer.py +0 -0
  617. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_pddrc_true_e2e.py +0 -0
  618. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_pin_example_hack.py +0 -0
  619. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_postprocess.py +0 -0
  620. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_postprocess_0.py +0 -0
  621. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_preprocess.py +0 -0
  622. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_preprocess_main.py +0 -0
  623. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_preprocess_main_pdd_tags.py +0 -0
  624. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_process_csv_change.py +0 -0
  625. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_prompt_contract_validation.py +0 -0
  626. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_provider_env_isolation.py +0 -0
  627. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_provider_manager.py +0 -0
  628. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_pytest_output.py +0 -0
  629. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_quiet_flag.py +0 -0
  630. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_reasoning.py +0 -0
  631. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_remote_command_completion.py +0 -0
  632. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_remote_session.py +0 -0
  633. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_render_mermaid.py +0 -0
  634. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_report.py +0 -0
  635. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_research_prompt_web_tools.py +0 -0
  636. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_server_routes_prompts.py +0 -0
  637. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_server_spawn.py +0 -0
  638. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_setup_tool.py +0 -0
  639. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_split.py +0 -0
  640. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_split_main.py +0 -0
  641. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_split_seam_resolution.py +0 -0
  642. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_split_validation.py +0 -0
  643. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_step11_api_mocking_guidance.py +0 -0
  644. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_structural_test_guard.py +0 -0
  645. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_structural_test_guard_integration.py +0 -0
  646. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_summarize_directory.py +0 -0
  647. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_animation.py +0 -0
  648. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_animation_0.py +0 -0
  649. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_backward_compat.py +0 -0
  650. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_code_main.py +0 -0
  651. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_contract_matrix.py +0 -0
  652. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_determine_operation.py +0 -0
  653. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_graph_order_consistency.py +0 -0
  654. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_main.py +0 -0
  655. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_orchestration.py +0 -0
  656. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_order.py +0 -0
  657. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_target_coverage_infinite_loop.py +0 -0
  658. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_template_prompt_discovery.py +0 -0
  659. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_sync_tui.py +0 -0
  660. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_template_expander.py +0 -0
  661. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_template_registry.py +0 -0
  662. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_thread_safe_redirector.py +0 -0
  663. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_time_reasoning_effort_env.py +0 -0
  664. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_trace.py +0 -0
  665. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_trace_main.py +0 -0
  666. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_track_cost.py +0 -0
  667. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_unfinished_prompt.py +0 -0
  668. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_update_command.py +0 -0
  669. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_update_main.py +0 -0
  670. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_update_model_costs.py +0 -0
  671. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_update_prompt.py +0 -0
  672. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_user_story_tests.py +0 -0
  673. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_version.py +0 -0
  674. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_which.py +0 -0
  675. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_xml_tagger.py +0 -0
  676. {pdd_cli-0.0.238 → pdd_cli-0.0.239}/tests/test_z3_prompt_test_correspondence.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pdd-cli
3
- Version: 0.0.238
3
+ Version: 0.0.239
4
4
  Summary: PDD (Prompt-Driven Development) Command Line Interface
5
5
  Author: Greg Tanaka
6
6
  Author-email: glt@alumni.caltech.edu
@@ -65,7 +65,7 @@ Requires-Dist: twine; extra == "dev"
65
65
  Requires-Dist: httpx==0.28.1; extra == "dev"
66
66
  Dynamic: license-file
67
67
 
68
- .. image:: https://img.shields.io/badge/pdd--cli-v0.0.238-blue
68
+ .. image:: https://img.shields.io/badge/pdd--cli-v0.0.239-blue
69
69
  :alt: PDD-CLI Version
70
70
 
71
71
  .. image:: https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord&logoColor=white&link=https://discord.gg/Yp4RTh8bG7
@@ -142,7 +142,7 @@ After installation, verify:
142
142
 
143
143
  pdd --version
144
144
 
145
- You'll see the current PDD version (e.g., 0.0.238).
145
+ You'll see the current PDD version (e.g., 0.0.239).
146
146
 
147
147
  Getting Started with Examples
148
148
  -----------------------------
@@ -1,6 +1,6 @@
1
1
  # PDD (Prompt-Driven Development) Command Line Interface
2
2
 
3
- ![PDD-CLI Version](https://img.shields.io/badge/pdd--cli-v0.0.238-blue) [![Discord](https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord&logoColor=white)](https://discord.gg/Yp4RTh8bG7)
3
+ ![PDD-CLI Version](https://img.shields.io/badge/pdd--cli-v0.0.239-blue) [![Discord](https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord&logoColor=white)](https://discord.gg/Yp4RTh8bG7)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -362,7 +362,7 @@ For proper model identifiers to use in your custom configuration, refer to the [
362
362
 
363
363
  ## Version
364
364
 
365
- Current version: 0.0.238
365
+ Current version: 0.0.239
366
366
 
367
367
  To check your installed version, run:
368
368
  ```
@@ -864,7 +864,7 @@ Options:
864
864
  - `--skip-verify`: Skip the functional verification step
865
865
  - `--skip-tests`: Skip unit test generation and fixing
866
866
  - `--target-coverage FLOAT`: Desired code coverage percentage (default is 90.0)
867
- - `--dry-run`: Display real-time sync analysis instead of running sync operations. For no-argument project-wide sync, this prints the dependency-ordered module list and estimated cost without executing any module syncs. For single-module sync, it performs the same state analysis as a normal sync run but without acquiring exclusive locks or executing operations.
867
+ - `--dry-run`: Display real-time sync analysis instead of running sync operations. For no-argument project-wide sync, this prints the dependency-ordered module list and estimated cost without executing any module syncs, plus a single compact roll-up of modules outside the Tier 1 (`generate` / `auto-deps`) scope — bucketed by reason (e.g. `Out of Tier 1 scope: 42 example, 31 test, 18 verify, 12 update, 74 no-prompt fixture`) instead of one warning line per skipped entry. When zero modules are stale, the `0 stale module(s)` fragment is rendered in green so the success signal is visually unambiguous. Actionable architecture-graph warnings (ambiguous or unresolved cross-arch dependencies) are still printed individually in yellow. For single-module sync, it performs the same state analysis as a normal sync run but without acquiring exclusive locks or executing operations. Passing the top-level `pdd --verbose` flag (see above) restores the legacy per-module enumeration after the compact roll-up — one yellow warning line per module outside the Tier 1 scope — for debugging.
868
868
  - `--one-session / --no-one-session`: Run sync in a single agentic session instead of separate sessions for each step. Cannot be combined with `--skip-tests` or `--skip-verify`.
869
869
  - `--no-steer`: Disable interactive steering of sync operations.
870
870
  - `--steer-timeout FLOAT`: Timeout in seconds for steering prompts (default: 8.0).
@@ -2745,8 +2745,9 @@ Options:
2745
2745
  - `--fixer ROLE`: Fixer role for `--review-loop` (for example, `claude`). The fixer must be different from the reviewer unless `--review-only` is used.
2746
2746
  - `--reviewers ROLES`: Legacy comma-separated review-loop role order, interpreted as `reviewer,fixer` (default: `codex,claude`).
2747
2747
  - `--reviewer-fallback ROLE`: Optional secondary reviewer role to invoke once if the primary reviewer cannot complete (for example, because of auth, network, sandbox, or CLI failures). The fallback must resolve to a role different from the reviewer and fixer; if it succeeds, it becomes the active reviewer for the remaining loop and the superseded primary's row in the final report is annotated `(optional, superseded by <fallback>)` so downstream verdict adapters drop the failed primary from the required-reviewer set and resolve to `ship_degraded` instead of `unknown`.
2748
+ - `--fixer-fallback ROLE`: Optional secondary fixer role to invoke once if the primary fixer cannot complete (for example, Claude Code subscription-tier `credential-limit` failures). Role aliases are normalized so `claude` and `anthropic` resolve to the same identity; the fallback must resolve to a role different from the active fixer, the active reviewer, AND the originally configured reviewer (so `--reviewer codex --reviewer-fallback gemini --fixer-fallback codex` is skipped even after gemini takes over reviewing). Before the fallback runs the worktree is reset so the primary fixer's partial edits do not leak; on success the fallback takes over as the active fixer for the remaining rounds.
2748
2749
  - `--max-review-rounds INT`: Maximum primary-reviewer/fixer rounds (default: 5).
2749
- - `--max-review-cost FLOAT`: Maximum review-loop LLM cost in USD (default: 10.0).
2750
+ - `--max-review-cost FLOAT`: Maximum review-loop LLM cost in USD (default: 50.0).
2750
2751
  - `--max-review-minutes FLOAT`: Maximum review-loop wall-clock minutes (default: 90.0).
2751
2752
  - `--blocking-severities LIST`: Comma-separated severity names used for review-loop reporting and prompt guidance (default: `blocker,critical,medium`). The fixer still receives every valid reviewer finding.
2752
2753
  - `--continue-on-reviewer-limit`: Report provider, rate, context-window, timeout, auth, network, sandbox, permission, and non-zero-exit reviewer failures as `degraded` instead of `failed`. Degraded reviewers are still not clean unless a configured fallback reviewer completes successfully and takes over as the active reviewer.
@@ -3512,7 +3513,7 @@ PDD can be integrated into various development workflows. Here are the conceptua
3512
3513
  4. Stage and commit healed files with a descriptive message — partial metadata state (any stage reporting `failed`) blocks the commit/checkpoint in PR mode. `skipped` is permitted for legitimate cases (no `architecture.json`, unregistered modules, LLM-first tag generation pending #870) and does not block.
3513
3514
  5. Push changes to the current branch
3514
3515
 
3515
- **Metadata Finalization**: The CI auto-heal `update` branch and the preflight drift-heal path both call the same `run_metadata_sync` orchestrator that `pdd update --sync-metadata` uses, so all three workflows share one finalization surface. The orchestrator runs in a fixed order — prompt → tags → architecture → run-report cleanup → fingerprint last. **Within `run_metadata_sync`** a `failed` upstream stage gates every later write-bearing stage (architecture, run_report, fingerprint), so a tags failure cannot drag architecture or fingerprint state out of sync. `skipped` upstream (no `architecture.json`, unregistered modules, LLM-first tag refresh pending #870) is acceptable and does not gate later stages. **The orchestrator is not transactional across stages**: if e.g. tags + architecture succeed and fingerprint then fails, the prompt and `architecture.json` writes have already landed on disk and `run_metadata_sync` itself does not roll them back. End-to-end rollback for a failing module is handled by the CI auto-heal layer — on a sync failure, `pdd.ci_drift_heal` calls `_revert_prompt_file` and the module-scoped `_snapshot_metadata_state_for(drift)` / `_restore_metadata_state_for(snapshot)` pair (which captures this module's `architecture.json` bytes + `.pdd/meta/<basename>_<language>.json` pre-sync and writes them back on failure, never touching other modules' state). A repo-scoped `git restore -- .pdd` / `git restore -- architecture.json` is explicitly NOT used because in a multi-module push-to-main heal it would wipe earlier successful modules' writes from the same run; the legacy `_cleanup_metadata_artifacts` symbol is kept only as a no-op import shim. The combined invariant: `git add -A` on push-to-main cannot publish a failed module's partial metadata alongside another module's successful heal. The combined invariant: auto-heal never commits a half-synced state, and preflight never leaves stale fingerprints after a successful update.
3516
+ **Metadata Finalization**: The CI auto-heal `update` branch and the preflight drift-heal path both call the same `run_metadata_sync` orchestrator that `pdd update --sync-metadata` uses, so all three workflows share one finalization surface. The orchestrator runs in a fixed order — prompt → tags → architecture → run-report cleanup → fingerprint last. **Within `run_metadata_sync`** a `failed` upstream stage gates every later write-bearing stage (architecture, run_report, fingerprint), so a tags failure cannot drag architecture or fingerprint state out of sync. `skipped` upstream (no `architecture.json`, unregistered modules, LLM-first tag refresh pending #870) is acceptable and does not gate later stages. **The orchestrator is not transactional across stages**: if e.g. tags + architecture succeed and fingerprint then fails, the prompt and `architecture.json` writes have already landed on disk and `run_metadata_sync` itself does not roll them back. End-to-end rollback for a failing module is handled by the CI auto-heal layer — on a sync failure, `pdd.ci_drift_heal` calls `_revert_prompt_file` and the module-scoped `_snapshot_metadata_state_for(drift)` / `_restore_metadata_state_for(snapshot)` pair (which captures this module's `architecture.json` bytes + `.pdd/meta/<basename>_<language>.json` pre-sync and writes them back on failure, never touching other modules' state). A repo-scoped `git restore -- .pdd` / `git restore -- architecture.json` is explicitly NOT used because in a multi-module push-to-main heal it would wipe earlier successful modules' writes from the same run; the legacy `_cleanup_metadata_artifacts` symbol is kept only as a no-op import shim. **Staging is scoped, not blanket** — `commit_and_push` runs `git add -u` for tracked updates plus explicit per-module pathspecs (computed from each `DriftInfo`'s `prompt_path`/`code_path`/`example_path`/`test_path` and `_operation_log_metadata_relpaths(basename, language)`), filters out gitignored paths via `git check-ignore`, and adds `project_dependencies.csv` only when a healed module ran `auto-deps`; `git add -A` is explicitly rejected because it sweeps unrelated `.pdd/meta/*.json` fingerprints from out-of-scope modules into the heal commit (issue #1021) and could publish a failed module's partial metadata alongside another module's successful heal. The combined invariant: auto-heal never commits a half-synced state, and preflight never leaves stale fingerprints after a successful update.
3516
3517
 
3517
3518
  **Usage:**
3518
3519
  ```bash
@@ -321,8 +321,9 @@ def run_agentic_checkup(
321
321
  reviewer: Optional[str] = None,
322
322
  fixer: Optional[str] = None,
323
323
  reviewer_fallback: Optional[str] = None,
324
+ fixer_fallback: Optional[str] = None,
324
325
  max_review_rounds: int = 5,
325
- max_review_cost: float = 10.0,
326
+ max_review_cost: float = 50.0,
326
327
  max_review_minutes: float = 90.0,
327
328
  require_all_reviewers_clean: bool = True,
328
329
  continue_on_reviewer_limit: bool = False,
@@ -349,6 +350,10 @@ def run_agentic_checkup(
349
350
  reviewer first pass and do not invoke the fixer or push changes.
350
351
  reviewer_fallback: Optional secondary reviewer role to try once when
351
352
  the primary reviewer cannot complete.
353
+ fixer_fallback: Optional secondary fixer role to try once when the
354
+ primary fixer cannot address the reviewer's findings (e.g. a
355
+ subscription-tier credential is exhausted). Must differ from
356
+ both the primary fixer and the active reviewer.
352
357
 
353
358
  Returns:
354
359
  Tuple of (success, message, total_cost, model_used).
@@ -452,6 +457,7 @@ def run_agentic_checkup(
452
457
  reviewer=reviewer,
453
458
  fixer=fixer,
454
459
  reviewer_fallback=reviewer_fallback,
460
+ fixer_fallback=fixer_fallback,
455
461
  review_only=review_only,
456
462
  max_rounds=max_review_rounds,
457
463
  max_cost=max_review_cost,
@@ -388,6 +388,26 @@ _PERMANENT_ERROR_CLASSES: Tuple[Tuple[str, Tuple[str, ...]], ...] = (
388
388
  r"model\s+not\s+found(?!\s+in\s+provider)",
389
389
  ),
390
390
  ),
391
+ (
392
+ # Issue (this PR): Claude Code subscription-tier weekly limit ("You've
393
+ # hit your limit · resets [TIME]"). Distinct from API-tier 429 because
394
+ # the reset window is hours-to-days, not seconds-to-minutes — retrying
395
+ # on the 60s rate-limit floor wastes minutes. Stable token
396
+ # `credential-limit` lets pdd_cloud's OAuth-token waterfall detect this
397
+ # and rotate to a different credential instead of retrying the dead one.
398
+ "credential-limit",
399
+ (
400
+ # Proximity + time-token guard. Requires "hit your limit" and
401
+ # "resets" within 40 chars (typical envelope is "... limit ·
402
+ # resets May 18, 11pm (UTC) ...") AND requires a time-token
403
+ # OR delimiter immediately after "resets" so distant prose
404
+ # like "if you hit your limit, nothing resets automatically"
405
+ # does NOT classify as credential-limit. Without the time
406
+ # token, any sentence stringing both phrases together would
407
+ # short-circuit the rate-limit retry path on benign text.
408
+ r"hit\s+your\s+limit[^\n]{0,40}?\bresets?\b\s*(?:[·:|\-]|in\s|at\s|on\s|\d|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)",
409
+ ),
410
+ ),
391
411
  (
392
412
  # Issue #1072: quota exhaustion (permanent even when 429 is present)
393
413
  "quota",
@@ -725,9 +725,14 @@ def _analyze_global_sync_modules(
725
725
 
726
726
  if not quiet:
727
727
  skipped_count = len(modules) - len(modules_to_sync)
728
+ stale_count = len(modules_to_sync)
729
+ if stale_count == 0:
730
+ stale_fragment = f"[green]0 stale module(s)[/green]"
731
+ else:
732
+ stale_fragment = f"{stale_count} stale module(s)"
728
733
  console.print(
729
- f"[bold]Global sync analysis:[/bold] {len(modules_to_sync)} stale "
730
- f"module(s), {skipped_count} already synced or skipped."
734
+ f"[bold]Global sync analysis:[/bold] {stale_fragment}, "
735
+ f"{skipped_count} already synced or skipped."
731
736
  )
732
737
 
733
738
  return GlobalSyncAnalysis(
@@ -839,15 +844,79 @@ def _build_scoped_global_dep_graph(
839
844
  return graph, warnings
840
845
 
841
846
 
847
+ _SKIPPED_BUCKET_ORDER: Tuple[str, ...] = (
848
+ "example",
849
+ "test",
850
+ "verify",
851
+ "update",
852
+ "fix",
853
+ "crash",
854
+ "no-prompt fixture",
855
+ "other",
856
+ )
857
+ _SKIPPED_OPERATION_BUCKETS: Tuple[str, ...] = (
858
+ "example",
859
+ "test",
860
+ "verify",
861
+ "update",
862
+ "fix",
863
+ "crash",
864
+ )
865
+
866
+
867
+ def _bucket_skipped_reasons(skipped_modules: List[str]) -> Dict[str, int]:
868
+ """Bucket skipped-module entries by reason for the dry-run roll-up.
869
+
870
+ Entries flagged "no syncable prompt file found" go into `no-prompt fixture`;
871
+ entries shaped "{key}: {language} requires {operation}; outside Tier 1 ..."
872
+ bucket by `operation` when it matches a known Tier-1-out-of-scope op,
873
+ otherwise into `other`.
874
+ """
875
+ buckets: Dict[str, int] = {name: 0 for name in _SKIPPED_BUCKET_ORDER}
876
+ for entry in skipped_modules:
877
+ lower = entry.lower()
878
+ if "no syncable prompt file found" in lower:
879
+ buckets["no-prompt fixture"] += 1
880
+ continue
881
+ matched = False
882
+ for op in _SKIPPED_OPERATION_BUCKETS:
883
+ if f"requires {op}" in lower:
884
+ buckets[op] += 1
885
+ matched = True
886
+ break
887
+ if not matched:
888
+ buckets["other"] += 1
889
+ return buckets
890
+
891
+
892
+ def _format_skipped_bucket_summary(skipped_modules: List[str]) -> Optional[str]:
893
+ """Return a stable single-line roll-up of skipped buckets, or None if empty."""
894
+ if not skipped_modules:
895
+ return None
896
+ buckets = _bucket_skipped_reasons(skipped_modules)
897
+ parts = [
898
+ f"{count} {name}"
899
+ for name in _SKIPPED_BUCKET_ORDER
900
+ if (count := buckets.get(name, 0)) > 0
901
+ ]
902
+ if not parts:
903
+ return None
904
+ return "Out of Tier 1 scope: " + ", ".join(parts)
905
+
906
+
842
907
  def _print_global_sync_plan(
843
908
  analysis: GlobalSyncAnalysis,
844
909
  ordered_modules: List[str],
845
910
  warnings: List[str],
846
911
  budget: Optional[float] = None,
912
+ verbose: bool = False,
847
913
  ) -> None:
848
914
  """Render a concise global sync dry-run plan."""
849
915
  console.print("[bold]Global sync dry run:[/bold]")
850
- console.print(f" Tier 1 (prompt staleness): {len(ordered_modules)} module(s) stale")
916
+ if len(ordered_modules) == 0:
917
+ console.print(" Tier 1 (prompt staleness): [green]0 module(s) stale[/green]")
918
+ else:
919
+ console.print(f" Tier 1 (prompt staleness): {len(ordered_modules)} module(s) stale")
851
920
  console.print(f" Total architecture modules scanned: {len(analysis.all_modules)}")
852
921
  console.print(f" Estimated cost: ${analysis.estimated_cost:.2f}")
853
922
  if budget is not None:
@@ -870,8 +939,13 @@ def _print_global_sync_plan(
870
939
  for warning in warnings:
871
940
  console.print(f"[yellow]Warning: {warning}[/yellow]")
872
941
 
873
- for skipped in analysis.skipped_modules:
874
- console.print(f"[yellow]Warning: {skipped}[/yellow]")
942
+ if analysis.skipped_modules:
943
+ summary = _format_skipped_bucket_summary(analysis.skipped_modules)
944
+ if summary is not None:
945
+ console.print(f" [dim]{summary}[/dim]")
946
+ if verbose:
947
+ for skipped in analysis.skipped_modules:
948
+ console.print(f"[yellow]Warning: {skipped}[/yellow]")
875
949
 
876
950
 
877
951
  def run_global_sync(
@@ -930,7 +1004,9 @@ def run_global_sync(
930
1004
 
931
1005
  if dry_run:
932
1006
  if not quiet:
933
- _print_global_sync_plan(analysis, ordered_modules, dep_warnings, budget)
1007
+ _print_global_sync_plan(
1008
+ analysis, ordered_modules, dep_warnings, budget, verbose=verbose
1009
+ )
934
1010
  return (
935
1011
  True,
936
1012
  f"Global sync dry run: {len(ordered_modules)} module(s) would sync.",