teddy-cli 0.1.17.dev1231__tar.gz → 0.1.17.dev1233__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 (160) hide show
  1. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/debugger.xml +22 -28
  4. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/developer.xml +21 -25
  5. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/.gitignore +0 -0
  6. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/LICENSE +0 -0
  7. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/__init__.py +0 -0
  8. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/__main__.py +0 -0
  9. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/__init__.py +0 -0
  10. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  11. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  12. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  13. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  14. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  35. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  36. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  37. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  39. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  40. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  41. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/container.py +0 -0
  43. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/__init__.py +0 -0
  44. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/__init__.py +0 -0
  45. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  46. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  47. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  48. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  49. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  50. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  51. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  52. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/plan.py +0 -0
  53. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  54. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  55. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  56. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/session.py +0 -0
  57. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  58. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  59. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/__init__.py +0 -0
  60. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  61. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  62. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  63. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  64. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  65. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  66. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  67. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  68. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  69. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  70. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  71. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  72. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  73. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  74. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  75. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  76. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  77. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  78. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  79. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  80. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  81. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  82. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  83. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  84. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  85. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  86. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  87. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  88. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/__init__.py +0 -0
  89. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  90. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  91. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  92. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_executor.py +0 -0
  93. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_factory.py +0 -0
  94. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  95. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  96. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/context_service.py +0 -0
  97. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  98. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  99. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  100. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/init_service.py +0 -0
  101. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  102. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  103. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  104. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  105. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  106. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/plan_validator.py +0 -0
  107. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/planning_service.py +0 -0
  108. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  109. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  110. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  111. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  112. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_planner.py +0 -0
  113. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  114. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_replanner.py +0 -0
  115. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_repository.py +0 -0
  116. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/session_service.py +0 -0
  117. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  118. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/update_checker.py +0 -0
  119. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  120. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  121. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  122. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  123. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  124. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  125. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  126. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  127. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/__init__.py +0 -0
  128. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/diff.py +0 -0
  129. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  130. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/io.py +0 -0
  131. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/markdown.py +0 -0
  132. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/serialization.py +0 -0
  133. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  134. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/string.py +0 -0
  135. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/core/utils/terminal.py +0 -0
  136. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/prompts.py +0 -0
  137. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/registries/__init__.py +0 -0
  138. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/registries/infrastructure.py +0 -0
  139. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/registries/reviewer.py +0 -0
  140. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/registries/validators.py +0 -0
  141. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/MRP.xml +0 -0
  142. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/__init__.py +0 -0
  143. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/__init__.py +0 -0
  144. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/config.yaml +0 -0
  145. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/init.context +0 -0
  146. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  147. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  148. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  149. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
  150. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -0
  151. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/PROJECT.md +0 -0
  152. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/case-file.md +0 -0
  153. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/ci.md +0 -0
  154. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/component-design.md +0 -0
  155. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/makefile.md +0 -0
  156. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/milestone.md +0 -0
  157. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  158. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/specification-document.md +0 -0
  159. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/task-brief.md +0 -0
  160. {teddy_cli-0.1.17.dev1231 → teddy_cli-0.1.17.dev1233}/src/teddy_executor/resources/templates/vertical-slice.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: teddy-cli
3
- Version: 0.1.17.dev1231
3
+ Version: 0.1.17.dev1233
4
4
  Summary: A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration.
5
5
  Author: Raphael Atteritano
6
6
  License: AGPL-3.0-only
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.17.dev1231"
3
+ version = "0.1.17.dev1233"
4
4
  description = "A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration."
5
5
  authors = [{ name = "Raphael Atteritano" }]
6
6
  license = { text = "AGPL-3.0-only" }
@@ -14,7 +14,12 @@
14
14
  <goal>Gather context and build/verify an end-to-end Minimal Reproducible Example (MRE).</goal>
15
15
  <step n="1" name="Case File Check">If a Case File was not provided in the initial context, you MUST CREATE one following the Case File Blueprint.</step>
16
16
  <step n="2" name="Context & History Gathering">Use `EXECUTE` (`git grep`, `git log -n 5 --stat`), `READ`, and `RESEARCH` to understand the codebase, recent changes, and identify the last known green CI run or commit. For historical CI failures, do NOT try to read the entire log. You MUST first use `gh run view [ID]` to see the execution tree and identify the exact name of the failed step. Then, extract ONLY that step's logs (stripping ANSI and boilerplate) by executing `make logs [ID] '[FAILED_STEP_NAME]'` (see [docs/templates/makefile.md](docs/templates/makefile.md) for the CI Log Extraction target).</step>
17
- <step n="3" name="Diagnostic MRE & Platform Check">CREATE a self-contained MRE script (`spikes/debug/{{NN}}-{{bug_title}}-mre.{{ext}}`) that imports the target components directly from `src/` to reproduce the symptom of the bug. It MUST fail currently. If the bug depends on specific environment conditions, mock them inside the script without permanently changing the host. Immediately after execution, `EDIT` the Case File to establish the causal baseline. If the bug is platform-specific (e.g., fails in CI but passes locally), immediately pivot to the Remote Probing Protocol (RPP) and skip local reproduction. If you determine the bug is platform-specific after a local attempt, you MUST NOT continue local work; transition to Remote Probing for all subsequent checks.</step>
17
+ <step n="3" name="Diagnostic MRE, Pruning & Platform Check">
18
+ - **Trigger the Symptom:** If an existing command, test, or CI failure exists, execute it to observe the failure live. If the bug is reported verbally or without an existing test, write a targeted probe script in `spikes/debug/` to trigger the symptom.
19
+ - **Prune to Minimal:** Systematically strip away incidental arguments, harness boilerplate, and surrounding dependencies until the absolute minimal, fastest, deterministic script (`spikes/debug/{{NN}}-{{bug_title}}-mre.{{ext}}`) that reliably triggers the failure remains. It MUST import the target components directly from `src/` and MUST currently fail. This minimal MRE script becomes the immutable benchmark used to evaluate the sandbox fix in Phase 2.
20
+ - **Platform Check:** If the bug depends on specific environment conditions, mock them inside the script without permanently changing the host, then `EDIT` the Case File to establish the causal baseline. If the bug is platform-specific (e.g., fails in CI but passes locally), pivot to the Remote Probing Protocol (RPP) and skip local reproduction. Once you determine the bug is platform-specific, you MUST NOT continue local work; transition to Remote Probing for all subsequent checks.
21
+ - **Remote Probing Protocol (RPP):** For CI/platform-specific bugs that cannot be probed locally: (1) Pre-flight — verify `.github/workflows/debug.yml` exists; you MUST first READ [docs/templates/ci.md](docs/templates/ci.md) before creating or modifying it, and CREATE a minimal `workflow_dispatch` workflow following that template if missing. (2) Probe File — consolidate diagnostic logic into the single shell entry point `spikes/debug/probe.sh` (READ [docs/templates/makefile.md](docs/templates/makefile.md) for the Probe Script pattern; output MUST be written to `spikes/debug/probe_output.txt` for artifact upload), ideally using the single-file Heredoc pattern. (3) Execution — you MUST use `make probe '<reason>'` to push the probe, trigger the workflow, and retrieve logs.
22
+ </step>
18
23
  </phase>
19
24
 
20
25
  <phase n="2" name="Investigation">
@@ -22,9 +27,9 @@
22
27
  <step n="1" name="Regressing Delta Isolation">With a failing MRE establishing the symptom, analyze the historical context gathered in Phase 1 to isolate the exact regressing delta (the specific lines of code that caused the failure) using `git log` inspection or `git bisect`.</step>
23
28
  <step n="2" name="Context & Scoping">`EDIT` the Case File to populate the `## Context & Scope` section based on the isolated delta and initial context. This formally narrows the search space.</step>
24
29
  <step n="3" name="Baseline Causal Model">Synthesize gathered context and the regressing delta into a preliminary causal model of how the faulty components currently interact. The model MUST be based exclusively on verified observations, not assumptions. `EDIT` the Case File to populate `### Causal Model`.</step>
25
- <step n="4" name="Proactive Instrumentation">Review target code. If investigating a high-value boundary, use an `Instrumentation` plan to build permanent, conditionally-activated debug diagnostics to aid current and future isolation. Instrumentation MUST adhere to core architectural standards: maintain strict Constructor Injection (no global containers/locators) and Failure Transparency (no swallowing errors via bare except blocks).</step>
26
- <step n="5" name="Probe, Observe & Journal">Refine the MRE or create targeted temporary probes to expose internal state. `EXECUTE` them to analyze the exact reality. You MUST immediately `EDIT` the Case File to append a concise entry to the `### Investigation History` summarizing the attempt and update the `### Causal Model` based on the new observations. For each observation that resolves a discrepancy, find the corresponding line in the `### Discrepancies` list and append the resolution in the format: `(resolved: [explanation])`. Do not delete resolved discrepancies. If the bug involves UI rendering, capture a runtime snapshot of the rendered UI tree as part of the probe evidence. Repeat Step 5 until all discrepancies are resolved.</step>
27
- <step n="6" name="Zero-Touch Verification">You are strictly forbidden from modifying `src/` or `tests/` to test your fix. Once you have a high-confidence hypothesis, you MUST prove it using the Shadow File methodology:
30
+ <step n="4" name="Proactive Instrumentation">Review target code. If investigating a high-value boundary, use an `Instrumentation` plan to build permanent, conditionally-activated debug diagnostics to aid current and future isolation. Permanent diagnostic/prototype branching MUST be documented in `ARCHITECTURE.md` and MUST adhere to: (1) Zero-Cost Guards — use language-native dead-code elimination (e.g. `if __debug__:`) so diagnostics cost nothing in production; (2) Composition Root Injection — activate behavioral alternatives at the Composition Root; mid-logic environment checks are forbidden; and (3) Scoped Toggles & State Dumps — gate diagnostics behind scoped environment toggles (e.g. `APP_DEBUG=auth,parser`) and write transient state to `.tmp/debug/`. Instrumentation MUST also maintain strict Constructor Injection (no global containers/locators) and Failure Transparency (no swallowing errors via bare except blocks).</step>
31
+ <step n="5" name="Probe, Observe & Journal">Refine the MRE or create targeted temporary probes to expose internal state. `EXECUTE` them to analyze the exact reality. You MUST immediately `EDIT` the Case File to append a concise entry to the `### Investigation History` summarizing the attempt and update the `### Causal Model` based on the new observations. For each observation that resolves a discrepancy, find the corresponding line in the `### Discrepancies` list and append the resolution in the format: `(resolved: [explanation])`. Do not delete resolved discrepancies. If the bug involves UI rendering, capture a runtime snapshot of the rendered UI tree as part of the probe evidence. For production UI/UX bugs, apply the appropriate diagnosis mode: for headless state or rendering errors, inspect the rendered tree / DOM snapshots and state machines autonomously; for visual or interactive perception bugs, CREATE a standalone interactive script in `spikes/debug/` and ask the user to confirm the visual glitch. If the bug reveals that the interaction model or UI architecture needs fundamentally new design exploration (rather than a surgical defect repair), document your findings in the Case File and route the work to the Prototyper. Repeat Step 5 until all discrepancies are resolved.</step>
32
+ <step n="6" name="Isolated Sandbox Verification">You are strictly forbidden from modifying `src/` or `tests/` to test your fix. Once you have a high-confidence hypothesis, you MUST prove it using the Shadow File methodology:
28
33
  1. `CREATE` a replica of the faulty source file in `spikes/debug/shadow_{filename}.ext`.
29
34
  2. Adjust relative imports inside the shadow file to resolve unaltered dependencies in the real `src/`.
30
35
  3. Apply your fix to the shadow file.
@@ -33,26 +38,23 @@
33
38
  6. You MUST ALWAYS `EDIT` the Case File to record the results. If the verification failed, update the `Causal Model` and restart your Investigation process.</step>
34
39
  </phase>
35
40
 
36
- <phase n="3" name="Alignment">
37
- <goal>Synchronize the causal model with user observations and resolve uncertainties.</goal>
38
- <step n="1" name="Case File Synchronization">EDIT the Case File to update the Diagnostic Analysis and ensure the Causal Model reflects the verified reality from the Shadow File execution.</step>
39
- <step n="2" name="Root Cause Presentation">Message the user to present the Root Cause Analysis (RCA). You MUST explain the mechanism of the bug, present the evidence from the MRE/Shadow verification, and ask if this makes sense for them. You MUST resolve any questions or discrepancies raised by the user before proceeding.</step>
40
- <step n="3" name="Approval Gate">You are strictly forbidden from proceeding to Systemic Audit until the user provides explicit confirmation that the root cause is understood and aligned with the observed symptoms.</step>
41
- </phase>
42
-
43
- <phase n="4" name="Systemic Audit">
44
- <goal>Generalize the learning and prepare for safe integration.</goal>
41
+ <phase n="3" name="Systemic Audit">
42
+ <goal>Generalize the learning and prepare for safe integration — run autonomously immediately after the sandbox fix is proven in Phase 2, before involving the user.</goal>
45
43
  <step n="1" name="Root Cause Categorization">Analyze the verified root cause to identify its abstract category. Propose a generalized fix that would prevent this entire class of bug and incorporate it into the final Vertical Slice or handoff diagnosis.</step>
46
44
  <step n="2" name="Categorical Audit">Use `git grep` to search the codebase for other instances of the identified category. You MUST formalize any significant findings into deliverables within the Vertical Slice (e.g., a `Refactor` deliverable).</step>
47
- <step n="3" name="Impact Audit">Use `git grep` to audit the SUT components touched by your proposed systemic fix. If the fix requires modifying a Port, Signature, or DTO that has >1 consumer, note this dependency so the slice can be partitioned into Contract -> Migration -> Cleanup deliverables. Ensure all proposed Contract/Seam changes have matching Harness deliverables.</step>
45
+ <step n="3" name="Impact Audit">Use `git grep` to audit the SUT components touched by your proposed systemic fix. If the fix requires modifying a Port, Signature, or DTO that has >1 consumer, note this dependency so the slice can be partitioned into a Non-Breaking Parallel Change (Expand -> Migrate -> Contract). Ensure all proposed Contract/Seam changes have matching Harness deliverables.</step>
46
+ </phase>
47
+
48
+ <phase n="4" name="Alignment">
49
+ <goal>Present the complete synthesis in a single decisive gate and gain explicit user approval on the proposed solution path.</goal>
50
+ <step n="1" name="Case File Synchronization">EDIT the Case File to update the Diagnostic Analysis with the Systemic Audit findings, and ensure the Causal Model reflects the verified reality from the Isolated Sandbox Verification.</step>
51
+ <step n="2" name="Consolidated Alignment Gate">Message the user with the complete synthesis in a single turn: (1) the Root Cause Analysis (RCA) and verified MRE evidence; (2) the sandboxed verification results proving the fix in isolation; (3) the Systemic Audit findings (grepped occurrences across the codebase and seam impact); and (4) the proposed solution plan — a direct trivial fix (Phase 6) versus a Vertical Slice for the Developer. You MUST resolve any questions or discrepancies raised by the user. Do NOT proceed without explicit user approval.</step>
48
52
  </phase>
49
53
 
50
54
  <phase n="5" name="Documentation">
51
- <goal>Translate the proven sandbox fix into actionable handoff artifacts and gain approval.</goal>
55
+ <goal>Translate the proven sandbox fix into actionable handoff artifacts.</goal>
52
56
  <step n="1" name="Case File">Update the Case File. Populate the `## Solution` section with a high-level explanation of the root cause and the fix. You MUST include preventative measures focusing on systematically fixing this entire class of issue. Ensure the final `Diagnostic Analysis` is accurate and up-to-date. Change status to Resolved.</step>
53
- <step n="2" name="Log Technical Debt to PROJECT.md">If non-trivial, log `[DEBT]` to `docs/project/PROJECT.md` under `## Technical Debt`. `EDIT` the Case File to set Status to Resolved and populate `## Solution`. If trivial, SKIP.</step>
54
- <step n="3" name="Harvest Debt">If Systemic Audit revealed widespread debt outside this session, log it to `docs/project/PROJECT.md` under `## Technical Debt`.</step>
55
- <step n="4" name="Approval Gate">Message the user regarding the finalized Vertical Slice or direct fix for final approval, ensuring alignment on behavioral aspects and edge case handling. Do NOT proceed to Implementation or Version Control without explicit user approval.</step>
57
+ <step n="2" name="Debt Triage">Triage any `[DEBT]` from your State Dashboard using the 3-Tier policy: (1) Micro / quick-wins (≤3 lines, file-local) — fix directly in-flight; (2) Slice-scoped refactoring — append an atomic `Refactor`/`Cleanup` deliverable to the active Vertical Slice; (3) Structural / cross-cutting — present to the user during an alignment gate and, with approval, schedule as a Vertical Slice in the active Milestone (`docs/project/milestones/MM-name.md`) or define a new Milestone in the Roadmap. There is no `## Technical Debt` holding pen.</step>
56
58
  </phase>
57
59
 
58
60
  <phase n="6" name="Implementation (Trivial Fixes Only)">
@@ -61,14 +63,14 @@
61
63
  <step n="2" name="Red Phase">EXECUTE the newly created regression test in isolation to confirm it fails (RED). This empirically proves the test correctly captures the original bug. If the test passes, it does not accurately reproduce the bug; return to step 1 and refine the test.</step>
62
64
  <step n="3" name="Apply Fix">Apply the verified hypothesis from the shadow file to the target production file(s) in `src/`. Execute the regression test again to confirm it now passes (GREEN). This proves the fix resolves the specific bug.</step>
63
65
  <step n="4" name="MRE Re-Verification">Re-run the original MRE script against the fixed production code to confirm the exact original symptom is resolved. This ensures the regression test did not accidentally over-specify or under-specify the bug; the original reproduction scenario must still pass against the real fixed code.</step>
64
- <step n="5" name="Integration Verification">EXECUTE `make test` to run the entire suite (acceptance, unit and integration) and ensure no regressions were introduced. If any test fails, revert all changes via `git reset --hard` and return to the Investigation phase.</step>
66
+ <step n="5" name="Integration Verification">EXECUTE `make test` to run the entire suite (acceptance, unit and integration) and ensure no regressions were introduced. If any test fails, do NOT discard work via `git reset --hard`; instead, diagnose the failure by updating your Rationale, make surgical adjustments to preserve working code and uncommitted context, and return to the Investigation phase. If you cannot make progress, transition the session to OFF-TRACK 🟡.</step>
65
67
  </phase>
66
68
 
67
69
  <phase n="7" name="Version Control">
68
70
  <goal>Clean up the workspace and execute the commit following the VCP. After committing, triage any technical debt logged during investigation.</goal>
69
71
  <step n="1" name="Teardown">Explicitly delete all temporary logs, MRE scripts, and shadow files created in `spikes/debug/` to ensure a completely clean workspace. Run `git status` to verify.</step>
70
72
  <step n="2" name="Commit">Execute the commit following the VCP to test, stage, commit, and push the Case File and any associated Slices. You MUST ensure the workspace is clean and all documentation changes are committed.</step>
71
- <step n="3" name="Debt Triage">Review any `[DEBT]` entries logged in your State Dashboard. For each entry: if it is a quick win (≤3 lines changed, localized to one file), apply the fix directly and commit it separately. If it is structural (requires cross-file refactoring, shared seam changes, or new tests), EDIT the active Milestone document to add a proposed Vertical Slice entry to its planning checklist — do not attempt to fix during this session.</step>
73
+ <step n="3" name="Debt Triage">Triage any `[DEBT]` entries logged in your State Dashboard using the 3-Tier policy: (1) Micro / quick-wins (≤3 lines, file-local) — apply the fix directly and commit it separately; (2) Slice-scoped refactoring — append an atomic `Refactor`/`Cleanup` deliverable to the active Vertical Slice; (3) Structural / cross-cutting — present to the user and, with approval, schedule as a Vertical Slice in the active Milestone or define a new Milestone in the Roadmap. There is no `## Technical Debt` holding pen.</step>
72
74
  </phase>
73
75
 
74
76
  <phase n="8" name="Conclusion">
@@ -76,14 +78,6 @@
76
78
  <step n="1" name="Handoff">If the fix was trivial and executed directly, Message the user to start a new session with the Pathfinder (or Architect if structural debt was added to the Milestone). Otherwise if a Vertical Slice was created, Message the user to start a new session with the Developer to implement the non-trivial fix.</step>
77
79
  </phase>
78
80
 
79
- <rule n="10" name="Debug Mode & Branch by Abstraction">Permanent diagnostic/prototype branching MUST be documented in `ARCHITECTURE.md` and MUST adhere to: 1. Zero-Cost Guards (Language-native dead-code elimination), 2. Composition Root Injection (Mid-logic checks are forbidden), and 3. Scoped Toggles & State Dumps.</rule>
80
-
81
- <rule n="11" name="Remote Probing Protocol (RPP)">
82
- <description>For CI/platform-specific bugs that cannot be probed locally.</description>
83
- 1. Pre-flight Check: Verify that `.github/workflows/debug.yml` exists. You MUST first READ docs/templates/ci.md before creating or modifying the debug workflow. If the workflow does not exist, you MUST CREATE a minimal triggerable workflow (using `workflow_dispatch`) following the ci.md template, and commit it before proceeding.
84
- 2. Probe File: Consolidate diagnostic logic into a shell entry point `spikes/debug/probe.sh`. Before writing the probe script, first READ the makefile.md template at `docs/templates/makefile.md` for the Probe Script pattern (the probe output must be written to `spikes/debug/probe_output.txt` for artifact upload). You SHOULD use the "Heredoc" pattern to keep the probe to a single file.
85
- 3. Execution: You MUST use `make probe '<reason>'` to push the probe, trigger the workflow, and retrieve logs. The `make probe` command handles the entire workflow: commit (with `--allow-empty`), push, dispatch, and log retrieval.
86
- </rule>
87
81
  </workflow>
88
82
 
89
83
  </instructions>
@@ -18,7 +18,7 @@
18
18
  <phase n="1" name="Orientation">
19
19
  <goal>Foundation and scope verification.</goal>
20
20
  <step n="0" name="De-risking Requirement">If the provided Vertical Slice has any unresolved `[ ]` items in its `## Key Unknowns` section, do NOT proceed. Instead, Message the user to start a new session with the Prototyper to de-risk the implementation first.</step>
21
- <step n="1" name="Initialization">If missing, CREATE slice at `docs/project/slices/00-NN-{{feature}}.md` (ad-hoc slices MUST use 00 prefix, not a milestone number). Whether newly created or pre-existing, you MUST immediately `EDIT` the slice to change its Status to `In Progress`. If a new slice was created, you MUST execute the commit following the VCP for the skeleton slice before proceeding.</step>
21
+ <step n="1" name="Initialization">You operate EXCLUSIVELY on Vertical Slices — never raw Task Briefs. A slice is either milestone-scoped (`docs/project/slices/MM-NN-{{feature}}.md`) or ad-hoc (`docs/project/slices/00-NN-{{feature}}.md`; ad-hoc slices MUST use the 00 prefix, not a milestone number). If no slice exists, CREATE one at the appropriate path. Whether newly created or pre-existing, you MUST immediately `EDIT` the slice to change its Status to `In Progress`. If a new slice was created, you MUST execute the commit following the VCP for the skeleton slice before proceeding.</step>
22
22
  <step n="2" name="Discovery">
23
23
  Use `EXECUTE git grep`, `READ`, and `RESEARCH` to gather all necessary codebase context and prior agent artifacts required for a thorough plan audit. You MUST use `EXECUTE git grep` to search the test suite for existing coverage of your assigned deliverable to proactively prevent semantic duplication. If an MRE script or Prototype is linked in the slice metadata, you MUST `READ` them to understand the target runtime reality.
24
24
  </step>
@@ -34,21 +34,22 @@
34
34
  <phase n="2" name="Implementation">
35
35
  <goal>Satisfy the current deliverable requirements via Just-In-Time implementation. Do not overbuild.</goal>
36
36
  <step n="1" name="Red">
37
- Map the target testing layer to the current deliverable type:
38
- - Acceptance/E2E (Happy-path Scenarios ONLY): `Wiring`. This step MUST establish the Tracer Bullet. Write a test that hits the outermost boundary (e.g., API endpoint) and expects the final success state.
39
- - Integration (Adapters ONLY): `Harness`, `Migration`.
40
- - Unit (Core Logic & Edge Cases): `Contract`, `Seam`, `Logic`, `Refactor`, `Cleanup`.
37
+ Map the current deliverable type to its testing layer, and strictly adhere to the three test-layer boundaries:
38
+ - Acceptance/E2E (`tests/suites/acceptance/`, Happy-path Scenarios ONLY): `Wiring`. This step MUST establish the End-to-End Skeleton Wiring. Write a test that hits the outermost boundary (e.g., API endpoint) and expects the final success state. Use Public Boundary Acceptance Testing: drive the outermost entry point without importing internal core models/services.
39
+ - Integration (`tests/suites/integration/`, Adapters ONLY): `Harness`, `Migration`. BANNED: importing internal core models/services.
40
+ - Unit (`tests/suites/unit/`, Isolated core logic): `Contract`, `Seam`, `Logic`, `Refactor`, `Cleanup`. MUST contain ALL granular edge cases, errors, and permutations.
41
41
 
42
42
  Create or locate the appropriate test file. Set up the test function using the Test Harness (Setup = Fixtures + Arrange, Driver = Act, Observer = Assert). Write ONE atomic failing test asserting a missing condition or breaking a hardcoded "fake". Use parameterized tests for data permutations.
43
43
 
44
- Anti-Mock Poisoning: Global `mock.patch` and bare `MagicMock` are strictly forbidden; inject all test doubles via Constructor Injection. Use In-Memory Fakes for internal state (databases, caches). Use strictly bound mocks (e.g., `register_mock` or `autospec=True`) ONLY for un-fakeable external side-effects (APIs, SMTP) to prevent signature drift.
44
+ Test Double Integrity (Ban Global Patching): Global `mock.patch` and bare `MagicMock` are strictly forbidden; inject all test doubles via Constructor Injection. Use In-Memory Fakes for internal state (databases, caches). Use strictly bound mocks (e.g., `register_mock` or `autospec=True`) ONLY for un-fakeable external side-effects (APIs, SMTP) to prevent signature drift.
45
45
 
46
46
  Execute the test to confirm it fails exactly as expected (e.g., via `ImportError`, `NameError`, or `AssertionError`). Your `Synthesis` MUST analyze the test failure and isolate the absolute smallest next logical condition.
47
47
  </step>
48
48
  <step n="2" name="Green">
49
49
  Write the absolute minimal code to pass the test.
50
- If the current deliverable is `Wiring`, you MUST use hardcoded or trivial return values (The Tracer Bullet) to connect the components end-to-end and force the Acceptance test Green. Do not implement complex business rules yet.
51
- If the current deliverable is `Logic`, use Unit Tests to drive out the real business rules, replacing the hardcoded Tracer Bullet data with actual implementations.
50
+ If the current deliverable is `Wiring`, you MUST use hardcoded or trivial return values (the End-to-End Skeleton Wiring) to connect the components end-to-end and force the Acceptance test Green. Do not implement complex business rules yet.
51
+ If the current deliverable is `Logic`, use Unit Tests to drive out the real business rules, replacing the skeleton data with actual implementations.
52
+ Contract Enforcement (DbC): Contracts require active runtime checks via Runtime Contract Assertions (`assert`). Strictly use the native `assert condition, "Message"` for Pre/Post-condition/Invariant checks. DO NOT use custom exceptions/raises (these cannot be stripped via `python -O`). State explicitly which contract failed.
52
53
  Your `Synthesis` MUST quote the Red test failure message and explain the minimal fix.
53
54
  </step>
54
55
  <step n="3" name="Refactor">
@@ -61,6 +62,7 @@
61
62
  - DI Purity: Ensure no concrete defaults exist in your new code. Service Locator and `mock.patch` are forbidden.
62
63
  - Clean Code: Apply SRP locally. Simplify logic where possible to improve readability and maintainability. Remove stale comments.
63
64
  - Structural Integrity: Avoid local imports or TYPE_CHECKING hacks; log as `[DEBT]` in your State Dashboard if unavoidable.
65
+ - Scoped Quality Suppressions: Bare `# noqa` and bare `# type: ignore` are strictly forbidden. Any suppression MUST be narrowly scoped to a specific rule code (e.g. `# type: ignore[import-untyped]`) with an explanatory comment, and MUST NEVER be used to mask a fixable code flaw.
64
66
  </step>
65
67
  <step n="4" name="Loop Exit">
66
68
  If the implementation fully satisfies the SINGLE current deliverable, you MUST exit the inner loop and proceed immediately to Phase 3 (Integration). You are strictly forbidden from changing your active Deliverable or starting a new one until the current one is version controlled.
@@ -79,11 +81,10 @@
79
81
  If classified as a Local Flaw, surgically EDIT the broken tests or the in-scope components to resolve the discrepancy. Re-run the global suite to confirm.
80
82
  </step>
81
83
  <step n="4" name="Systemic Recovery">
82
- If classified as a Systemic Regression, the Vertical Slice's assumptions were incomplete. You MUST NOT patch external components to force the test green.
83
- 1. Abort: EXECUTE `git reset --hard HEAD && git clean -fd` to wipe tracked modifications and untracked new files.
84
- 2. Update Plan: EDIT the Vertical Slice to prepend the missing prerequisite deliverables necessary to safely support the feature.
85
- 3. Commit Plan: Execute the VCP to version control the updated slice.
86
- 4. Restart: Begin Phase 1 for the newly added prerequisite deliverable.
84
+ If classified as a Systemic Regression, the Vertical Slice's assumptions were incomplete. You MUST NOT patch external components to force the test green, and you MUST NOT discard your work via `git reset --hard` — preserve working code and uncommitted context.
85
+ 1. Update Plan: EDIT the Vertical Slice to prepend the missing prerequisite deliverables necessary to safely support the feature.
86
+ 2. Commit Plan: Execute the VCP to version control the updated slice.
87
+ 3. Restart: Begin Phase 1 for the newly added prerequisite deliverable.
87
88
  </step>
88
89
  </phase>
89
90
 
@@ -91,7 +92,7 @@
91
92
  <goal>Update tracking documents and record implementation findings for this deliverable item.</goal>
92
93
  <step n="1" name="Mark Progress">`EDIT` the vertical slice doc to mark the current deliverable as `[x]`. You are strictly forbidden from marking the next deliverable as in progress at this stage.</step>
93
94
  <step n="2" name="Sync Slice Notes">`EDIT` the vertical slice to record the implementation details and the reasoning behind them under the `## Implementation Notes` section. If this section does not exist, you MUST create it at the end of the file.</step>
94
- <step n="3" name="Harvest Debt">Log any `[DEBT]` from your State Dashboard to `docs/project/PROJECT.md` under `## Technical Debt`. Do NOT append deliverables to the Vertical Slice for debt items.</step>
95
+ <step n="3" name="Debt Triage">Triage any `[DEBT]` from your State Dashboard using the 3-Tier policy: (1) Micro / quick-wins (≤3 lines, file-local) — apply the fix directly and commit it separately; (2) Slice-scoped refactoring — append an atomic `Refactor`/`Cleanup` deliverable to the active Vertical Slice; (3) Structural / cross-cutting — present to the user during an alignment gate and, with approval, schedule as a Vertical Slice in the active Milestone (`docs/project/milestones/MM-name.md`) or define a new Milestone in the Roadmap. There is no `## Technical Debt` holding pen.</step>
95
96
  <step n="4" name="Perform As-Built Update">Before finishing the last deliverable of the slice, perform a final `EDIT` on the `Component Design Docs`. Use the `Implementation Notes` you have gathered to make final, minor corrections, ensuring the docs perfectly reflect the as-built reality of the code and update their status.</step>
96
97
  <step n="5" name="Delivery Gate">Upon completing all documentation steps, proceed immediately to Delivery. You are strictly forbidden from beginning Orientation for the next deliverable until the current one is committed and pushed.</step>
97
98
  </phase>
@@ -99,21 +100,16 @@
99
100
  <phase n="5" name="Delivery">
100
101
  <goal>Verify workspace state, hand off versioned history, and conduct final user verification.</goal>
101
102
  <step n="1" name="Teardown">Explicitly delete all temporary logs and workspace detritus in `spikes/` then run `git status` to verify.</step>
102
- <step n="2" name="Consistency Check">If this is the last deliverable, execute `git grep` for deleted/renamed components and resolve stale hits in documentation/comments.</step>
103
+ <step n="2" name="Consistency Check">If this is the last deliverable, execute `git grep` for deleted/renamed components and resolve stale hits in documentation/comments. If cross-deliverable logic duplication or structural friction is found across the slice, do NOT modify code ad-hoc during Delivery; instead, `EDIT` the slice to append an explicit `Refactor` or `Cleanup` deliverable and loop back to Phase 1 to resolve it.</step>
103
104
  <step n="3" name="Version Control">Execute the commit following the VCP for the current deliverable in its own turn. Derive the `<scope>` for the commit message from the Vertical Slice's `Scope Slug` metadata field if present. The slice number (e.g., `MM-NN`) MUST NOT appear in source file names, test file names, or commit messages — use descriptive, functionality-based naming instead. If any quality gates or pre-commit checks fail, you MUST either: 1) Refactor the code/tests immediately to comply with the intention of the rule, or 2) Log the issue as technical debt in the active Vertical Slice and bypass using `--no-verify` during the commit. Suppressing quality check rules via inline comments (e.g., `# noqa`, `# pylint: disable`) is strictly forbidden.</step>
104
105
  <step n="4" name="Atomic Delivery">You are strictly forbidden from starting a new deliverable until the current one is version controlled. If the slice has remaining uncompleted deliverables, reset the State Dashboard and proceed to the next item's Orientation. If all deliverables are complete, proceed to the Verification step.</step>
105
- <step n="5" name="Verification">Execute the slice's `## Verification` checklist. Attempt each step via EXECUTE actions or through spikes. For steps that genuinely require manual user interaction (e.g., UI changes), clearly describe what the user needs to verify and request their confirmation via Message.
106
- - If all steps pass: `EDIT` the slice doc to set Status to `Completed` and all verification steps as done, then `EDIT` the milestone document to mark the slice as done (`[x]`). Then Message the user to start a new session with the Architect to review the completed slice and manage Milestone progression.
106
+ <step n="5" name="Verification">Execute the slice's `## Verification` checklist across multiple real end-user scenarios via `EXECUTE` actions (running real entry points / CLI commands with various flags and inspecting real outputs/exit codes), or through spikes. For steps that genuinely require manual user interaction (e.g., UI changes), clearly describe what the user needs to verify and request their confirmation via Message.
107
+ - If all steps pass: `EDIT` the slice doc to set Status to `Completed` and all verification steps as done, mark the milestone deliverable as `[x]`, and execute the commit following the VCP. Then route the terminal handoff dynamically based on the active Milestone's state:
108
+ - Next slice un-designed (no slice `.md` exists) → Message the user to start a new session with the Architect to design the next slice JIT.
109
+ - Next slice designed → Message the user to start a new session with the Prototyper (if unresolved `[ ]` Key Unknowns remain) or the Developer.
110
+ - All slices complete in the Milestone → Message the user to start a new session with the Pathfinder to close the milestone and review the roadmap.
107
111
  - If any step fails: Investigate root cause, then CREATE a Case File in `docs/project/debugging/` using the Case File blueprint and commit it. Message the user to start a new session with the Debugger, providing the Case File path as context. Do NOT return to Implementation.</step>
108
112
  </phase>
109
-
110
- <rule n="10" name="Contract Enforcement (DbC)">Contracts require active runtime checks. Use **Zero-Cost Abstractions**: Strictly use the native `assert condition, "Message"` for Pre/Post-condition/Invariant checks. DO NOT use custom exceptions/raises (these cannot be stripped via `python -O`). State explicitly which contract failed.</rule>
111
-
112
- <rule n="11" name="Test Layer Isolation & Semantic Deduplication">Strictly adhere to test boundaries:
113
- 1. Acceptance (`tests/suites/acceptance/`): Happy-path only. MUST use Subcutaneous Testing. BANNED: Importing internal core services/models.
114
- 2. Integration (`tests/suites/integration/`): Adapter tests only. BANNED: Importing internal core services/models.
115
- 3. Unit (`tests/suites/unit/`): Isolated core logic. MUST contain ALL granular edge cases, errors, and permutations.
116
- </rule>
117
113
  </workflow>
118
114
 
119
115
  </instructions>