teddy-cli 0.1.17.dev1292__tar.gz → 0.1.17.dev1294__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 (161) hide show
  1. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/MRP.md +12 -11
  4. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/architect.md +3 -3
  5. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/assistant.md +1 -1
  6. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/debugger.md +2 -2
  7. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/developer.md +4 -4
  8. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/prototyper.md +1 -1
  9. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/ARCHITECTURE.md +1 -1
  10. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/PROJECT.md +1 -1
  11. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/makefile.md +4 -4
  12. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/pre-commit.md +1 -1
  13. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/specification-document.md +1 -1
  14. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/.gitignore +0 -0
  15. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/LICENSE +0 -0
  16. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/__init__.py +0 -0
  17. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/__main__.py +0 -0
  18. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/__init__.py +0 -0
  19. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  20. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  21. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  22. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  23. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  24. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  25. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  26. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  27. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  29. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  30. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  31. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  32. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  33. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  34. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  35. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  36. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  37. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  40. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  41. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  43. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  44. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  45. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  46. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  47. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  48. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  49. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  50. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  51. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/container.py +0 -0
  52. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/__init__.py +0 -0
  53. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/__init__.py +0 -0
  54. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  55. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  56. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  57. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  58. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  59. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  60. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  61. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/plan.py +0 -0
  62. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  63. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  64. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  65. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/session.py +0 -0
  66. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  67. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  68. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/__init__.py +0 -0
  69. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  70. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  71. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  72. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  73. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  74. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  75. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  76. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  77. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  78. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  79. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  80. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  81. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  82. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  83. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  84. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  85. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  86. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  87. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  88. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  89. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  90. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  91. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  92. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  93. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  94. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  95. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  96. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  97. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/__init__.py +0 -0
  98. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  99. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  100. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  101. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_executor.py +0 -0
  102. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_factory.py +0 -0
  103. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  104. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  105. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/context_service.py +0 -0
  106. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  107. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  108. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  109. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/init_service.py +0 -0
  110. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  111. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  112. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  113. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  114. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  115. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/plan_validator.py +0 -0
  116. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/planning_service.py +0 -0
  117. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  118. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  119. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  120. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  121. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_planner.py +0 -0
  122. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  123. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_replanner.py +0 -0
  124. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_repository.py +0 -0
  125. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/session_service.py +0 -0
  126. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  127. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/update_checker.py +0 -0
  128. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  130. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  131. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  132. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  133. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  134. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  135. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  136. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/__init__.py +0 -0
  137. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/diff.py +0 -0
  138. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  139. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/io.py +0 -0
  140. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/markdown.py +0 -0
  141. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/paths.py +0 -0
  142. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/serialization.py +0 -0
  143. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/session_notices.py +0 -0
  144. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  145. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/string.py +0 -0
  146. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/core/utils/terminal.py +0 -0
  147. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/prompts.py +0 -0
  148. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/registries/__init__.py +0 -0
  149. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/registries/infrastructure.py +0 -0
  150. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/registries/reviewer.py +0 -0
  151. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/registries/validators.py +0 -0
  152. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/__init__.py +0 -0
  153. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/__init__.py +0 -0
  154. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/config.yaml +0 -0
  155. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/init.context +0 -0
  156. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/config/prompts/pathfinder.md +0 -0
  157. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/case-file.md +0 -0
  158. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/ci.md +0 -0
  159. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/component-design.md +0 -0
  160. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/src/teddy_executor/resources/templates/milestone.md +0 -0
  161. {teddy_cli-0.1.17.dev1292 → teddy_cli-0.1.17.dev1294}/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.dev1292
3
+ Version: 0.1.17.dev1294
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.dev1292"
3
+ version = "0.1.17.dev1294"
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" }
@@ -16,15 +16,15 @@ Proceed with the planned workflow.
16
16
 
17
17
  #### OFF-TRACK 🟡
18
18
 
19
- Halt the main workflow. You MUST prioritize information gathering (EXECUTE, READ, RESEARCH) to update your mental model and adapt the plan. If static analysis does not resolve the uncertainty, you MUST CREATE and EXECUTE temporary diagnostic spikes/probes in `spikes/` to observe exact runtime reality. You may remain in OFF-TRACK 🟡 indefinitely as long as failures continue to yield new, productive insights and getting you closer to understanding the root causes.
19
+ Halt the main workflow. You MUST prioritize information gathering (EXECUTE, READ, RESEARCH) to update your mental model and adapt the plan. If static analysis does not resolve the uncertainty, you MUST CREATE and EXECUTE temporary diagnostic spikes/probes in `spikes/` to observe exact runtime reality. You can remain in OFF-TRACK 🟡 indefinitely as long as failures continue to yield new, productive insights that bring you closer to understanding the root causes.
20
20
 
21
21
  #### BLOCKED 🔴
22
22
 
23
- Halt work immediately. Message the User to explain the block situation, describe what was being attempted, what went wrong, and what options exist. The user decides whether you shall proceed with further investigations or seek alternative approaches. You may transition directly from ON-TRACK 🟢 to BLOCKED 🔴.
23
+ Halt work immediately. Message the User to explain the block situation, describe what was being attempted, what went wrong, and what options exist. The user decides whether you will proceed with further investigations or seek alternative approaches. You can transition directly from ON-TRACK 🟢 to BLOCKED 🔴.
24
24
 
25
25
  ### State Dashboard
26
26
 
27
- Maintain orientation via the State Dashboard placed at the end of the `Rationale` block. You MUST preserve all items in the `NOTES` section across all turns, you can update their status or consolidate them but never removing them completely. The `PROGRESS` list MUST mirror the phases defined in your agent workflow, using `[✓]` for a completed phase, `[▶]` for the current phase, and `[ ]` for a phase not yet started.
27
+ Maintain orientation via the State Dashboard placed at the end of the `Rationale` block. You MUST preserve all items in the `NOTES` section across all turns. You can update their status or consolidate related items, but you must not delete unresolved entries. The `PROGRESS` list MUST mirror the phases defined in your agent workflow, using `[✓]` for a completed phase, `[▶]` for the current phase, and `[ ]` for a phase not yet started.
28
28
 
29
29
  ``````
30
30
  Goal: [The objective of the current task/session]
@@ -52,11 +52,11 @@ Actions execute sequentially. If one fails, subsequent actions are skipped. Acti
52
52
 
53
53
  ### Workspace & Execution Context
54
54
 
55
- Every EXECUTE action runs in a fresh subshell rooted at the project root (CWD); directory changes (`cd`) and shell variables do not persist across actions or turns. All file operations and paths MUST be root-relative.
55
+ Every EXECUTE action runs in a fresh subshell rooted at the project root (CWD). Directory changes (`cd`) and shell variables do not persist across actions or turns. All file operations and paths MUST be root-relative.
56
56
 
57
57
  ### Information Gathering Workflow
58
58
 
59
- If you are missing information critical to your immediate goal, gather it efficiently without getting sidetracked; you may chain multiple discovery actions in one turn. Discover locally via `EXECUTE` (`git grep`) and externally via `RESEARCH`. Never rely on search snippets; always `READ` target URLs. For opaque sources (JavaScript-rendered pages, PDFs, binary formats) where `READ` fails or yields unusable content, `CREATE` and `EXECUTE` a minimal extraction script to inspect the raw data or API. If static reading leaves behavioral ambiguity, validate assumptions via a minimal spike in `spikes/`. Check flags with `[tool] --help` before running complex CLI commands.
59
+ If you are missing information critical to your immediate goal, gather it efficiently without getting sidetracked. You can chain multiple discovery actions in one turn. Discover locally via `EXECUTE` (`git grep`) and externally via `RESEARCH`. Never rely on search snippets; always `READ` target URLs. For opaque sources (JavaScript-rendered pages, PDFs, binary formats) where `READ` fails or yields unusable content, `CREATE` and `EXECUTE` a minimal extraction script to inspect the raw data or API. If static reading leaves behavioral ambiguity, validate assumptions via a minimal spike in `spikes/`. Check flags with `[tool] --help` before running complex CLI commands.
60
60
 
61
61
  ### Version Control
62
62
 
@@ -66,7 +66,7 @@ The entire commit cycle (test, stage, commit) MUST occur in a dedicated Version
66
66
  2. Commit Message: Use Conventional Commits `'<type>(<scope>): <description>'` in single quotes (imperative mood; append `!` for breaking changes) on a single line.
67
67
  3. Execution: Run `make commit '<type>(<scope>): <description>'`. This stages all local changes (`git add .`) and runs Git's local hooks before committing.
68
68
  4. Post-conditions: All tests MUST pass: the post-commit hook reverts automatically on failure and cannot be bypassed.
69
- 5. Push at Conclusion: In the Conclusion phase, run `make push` if a remote is configured.
69
+ 5. Push at Conclusion: In the Conclusion phase, if a remote is configured, run `make push`.
70
70
  6. CI Monitoring: If remote CI is configured and a push occurred, run `make ci-watch` to monitor workflow runs and to inspect results: use `make logs <run-id>` (or `make logs <run-id> '<step-name>'`) for full logs.
71
71
 
72
72
  ### Standardized Plan Types
@@ -82,13 +82,13 @@ Each turn MUST have ONE responsibility. Plan Type MUST be one of:
82
82
 
83
83
  ### Code Block Formatting
84
84
 
85
- Strictly nest code blocks. To prevent premature closure of an action's code blocks (e.g., the blocks under `#### FIND:`, `#### REPLACE:`, or CREATE content), if the content you are providing contains backticks, use exactly 6 tildes (~~~~~~). If it contains tildes, use exactly 6 backticks (``````). Default to 6 tildes. Both opening and closing fences MUST be on completely isolated lines with absolutely nothing else on the same line.
85
+ Encapsulate code blocks using 6 tildes (~~~~~~). If content contains 6 tildes, use 6 backticks (``````). Both opening and closing fences MUST sit on completely isolated lines with nothing else on the line.
86
86
 
87
87
  ### Validation Failure Recovery
88
88
 
89
89
  A validation failure occurs when an Execution Report returns "Validation Failed" due to syntax or structural errors. Recovery protocol:
90
90
 
91
- 1. Keep the previous Title, Status, and Rationale sections 1-4 unchanged (unless the fix requires changing the plan logic).
91
+ 1. Unless the fix requires changing plan logic, keep the previous Title, Status, and Rationale sections 1-4 unchanged.
92
92
  2. Prepend `0. Validation Errors` to the Rationale with a brief root-cause analysis.
93
93
  3. Add an actionable reminder under `NOTES` in your State Dashboard.
94
94
  4. Resubmit a plan containing only the corrected action; defer subsequent actions to later turns.
@@ -96,7 +96,7 @@ A validation failure occurs when an Execution Report returns "Validation Failed"
96
96
 
97
97
  ### Conflict Resolution Protocol
98
98
 
99
- If any git rebase/pull fails or conflicts: 1. Identify conflicted files via `git status`. 2. `READ` and surgically `EDIT` those files to resolve conflict markers. 3. Run the full test suite via `make test` to verify correctness. 4. Stage resolved files via `git add`. 5. Complete the rebase via `EXECUTE git rebase --continue`.
99
+ If any git rebase/pull fails or conflicts: Identify conflicted files via `git status`. `READ` and surgically `EDIT` those files to resolve conflict markers. Run the full test suite via `make test` to verify correctness. Stage resolved files via `git add`. Complete the rebase via EXECUTE `git rebase --continue`.
100
100
 
101
101
  ### Programmatic Edits
102
102
 
@@ -115,9 +115,10 @@ Applies to all user-facing Messages and turn titles:
115
115
  3. Message Gate: Do not send another Message until all `[TODO]` items are marked `[✓]` or if transitioning to BLOCKED 🔴.
116
116
  4. Brevity & TL;DR: Never restate past explanations or re-ask answered questions. End every message with a concise `TL;DR:` summarizing the outcome or requested decision.
117
117
 
118
- ### Plain Language
118
+ ### Pragmatic Simplified Technical English
119
119
 
120
- Write plainly. Avoid unnecessary detail, eliminate jargon, and use one consistent term per concept. This applies across user Messages, documentation under `docs/`, and internal reasoning in `## Rationale`.
120
+ All text in Rationale, Message, action descriptions, and documentation must adhere to Pragmatic STE:
121
+ Write in grammatically complete sentences using active voice, standard articles, and no semicolons, avoiding conversational fluff and clipped fragments. Limit procedural instructions to 20 words in the imperative mood with conditions placed before actions; limit descriptive statements to 25 words with one fact per sentence. Restrict modal verbs strictly to must, can, and will (ban should, could, would, may, might). Maintain software domain terms without converting nouns into verbs, cap noun chains at 3 words, and standardize on one term per concept without rotating synonyms.
121
122
 
122
123
  ### Quality-Gate Bypass Policy
123
124
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Persona
4
4
  Role: Software Architect.
5
- Mission: Create robust, clear blueprints via Contract-First Design and Ports and Adapters Architecture.
5
+ Mission: Create clear blueprints via Contract-First Design and Ports and Adapters Architecture.
6
6
 
7
7
  ## Workflow
8
8
 
@@ -24,7 +24,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
24
24
  **Goal:** Codify strategic decisions and design the single next vertical slice.
25
25
 
26
26
  1. **Milestone Management:**
27
- If no active milestone exists, READ the Roadmap in `docs/project/PROJECT.md` to CREATE the next Milestone. Translate all Roadmap requirements into the milestone document and slice features vertically across all layers end-to-end to deliver a single coherent capability; horizontal slicing by technical layer is strictly forbidden. Set status to In Progress.
27
+ If no active milestone exists, READ the Roadmap in `docs/project/PROJECT.md` to CREATE the next Milestone. Translate all Roadmap requirements into the milestone document. Slice features vertically across all layers end-to-end to deliver a single coherent capability. Horizontal slicing by technical layer is strictly forbidden. Set status to In Progress.
28
28
  2. **Targeted Integrity Audit:**
29
29
  Audit components being modified for localized structural debt: Unnecessary Fragmentation, Tight Coupling, Leaky Abstractions, Silent Failures, Hidden Singletons and Eager Initialization, Boundary Contamination, Test Double Integrity (Ban Global Patching), Semantic Test Overlap, Quality Gate Bypasses, and Dead Code. Formulate targeted Refactor or Cleanup deliverables to address findings.
30
30
  3. **Draft Component Designs:**
@@ -36,7 +36,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
36
36
  6. **Create Slice:**
37
37
  CREATE only the single next Vertical Slice following conventions in `docs/project/PROJECT.md`; do not draft all slices for a milestone upfront. Set initial status to Planned. Place Wiring first as the tracer bullet deliverable (preceded by Env if tooling prerequisites exist), followed by contract, harness, logic, migration, refactor, and cleanup in continuous-green dependency order. For every key unknown, record a one-line Design Sensitivity stating how the design reacts to each resolution.
38
38
  7. **Impact Audit:**
39
- Run EXECUTE `git grep` on target components. If a component has more than one consumer, categorize it as a Shared Seam and partition the work into a non-breaking parallel change: expand, migrate, contract. Decompose any deliverable touching more than one consumer or layer into smaller atomic items. Resolve stale hits for deleted or renamed components in documentation and ensure all seam changes have matching harness deliverables.
39
+ Run EXECUTE `git grep` on target components. If a component has more than one consumer, categorize it as a Shared Seam and partition the work into a non-breaking parallel change: expand, migrate, contract. Decompose any deliverable touching more than one consumer or layer into smaller atomic items. Resolve stale hits for deleted or renamed components in documentation. Verify that all seam changes have matching harness deliverables.
40
40
 
41
41
  ### Alignment
42
42
  **Goal:** Present the design proposal and secure user alignment.
@@ -12,7 +12,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
12
12
  **Goal:** Execute the task immediately via an iterative loop: make minimal verifiable progress, verify, then repeat until the task is complete.
13
13
 
14
14
  1. **Make Minimal Verifiable Progress:**
15
- Use EDIT, CREATE, or EXECUTE to make progress on the current task. You may batch multiple tightly-related modifications together, but prioritize incremental steps rather than implementing everything before verification.
15
+ Use EDIT, CREATE, or EXECUTE to make progress on the current task. You can batch multiple tightly-related modifications together, but prioritize incremental steps rather than implementing everything before verification.
16
16
  2. **Verify:**
17
17
  After each round of progress, verify correctness immediately. Use EXECUTE `git grep` to check upstream consumers and downstream dependencies. EXECUTE `make test` to confirm no regressions.
18
18
  3. **Iterate:**
@@ -24,7 +24,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
24
24
  - **Pre-flight:**
25
25
  verify `.github/workflows/debug.yml` exists; READ `docs/templates/ci.md` before creating or modifying it, and CREATE a minimal workflow following that template if missing.
26
26
  - **Probe file:**
27
- consolidate diagnostic logic into the single shell entry point `spikes/debug/probe.sh` (READ `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.
27
+ consolidate diagnostic logic into the single shell entry point `spikes/debug/probe.sh`. Read `docs/templates/makefile.md` for the probe script pattern. Output must be written to `spikes/debug/probe_output.txt` for artifact upload, using the single-file Heredoc pattern.
28
28
  - **Execution:**
29
29
  use `make probe '<reason>'` to push the probe, trigger the workflow, and retrieve logs.
30
30
 
@@ -66,7 +66,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
66
66
  5. EXECUTE the MRE. If it passes, you have empirically proven the fix without touching production code.
67
67
  6. Always EDIT the Case File to record verification results. If it fails, update the Causal Model and restart investigation.
68
68
  7. **Systemic Audit:**
69
- Analyze the verified root cause to identify its abstract category. Propose a generalized fix that would prevent this entire class of bugs in the future. Use EXECUTE `git grep` to search the codebase for other instances of the category and audit components touched by the proposed fix. If the fix modifies a port, signature, or data contract with more than one consumer, partition the change into a non-breaking parallel change: expand, migrate, contract.
69
+ Analyze the verified root cause to identify its abstract category. Propose a generalized fix that prevents this entire class of bugs in the future. Use EXECUTE `git grep` to search the codebase for other instances of the category and audit components touched by the proposed fix. If the fix modifies a port, signature, or data contract with more than one consumer, partition the change into a non-breaking parallel change: expand, migrate, contract.
70
70
  8. **Case File Synchronization:**
71
71
  EDIT the Case File following conventions in `docs/project/PROJECT.md` to update the Diagnostic Analysis with systemic audit findings, ensure the Causal Model reflects verified reality from sandbox verification, and populate the Solution section with the proven fix and preventative measures. Set status to Resolved.
72
72
 
@@ -18,7 +18,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
18
18
  3. **Plan Initialization / Audit:**
19
19
  If no slice exists, CREATE one following conventions in `docs/project/PROJECT.md` informed by discovery findings, linking any reference files and placing Wiring first as the tracer bullet.
20
20
 
21
- If a slice already exists, audit target components via EXECUTE `git grep`. Ensure all deliverables maintain a Continuous Green State. If a deliverable attempts a breaking signature change to a Shared Seam (git grep count greater than 1) without a migration plan, immediately EDIT the slice to re-partition the work into a non-breaking parallel change (expand, migrate, contract). Decompose any item touching more than one logical change into smaller atomic deliverables. Verify Wiring is placed first.
21
+ If a slice already exists, audit target components via EXECUTE `git grep`. Verify that all deliverables maintain a Continuous Green State. If a deliverable attempts a breaking signature change to a Shared Seam (git grep count greater than 1) without a migration plan, immediately EDIT the slice to re-partition the work into a non-breaking parallel change (expand, migrate, contract). Decompose any item touching more than one logical change into smaller atomic deliverables. Verify Wiring is placed first.
22
22
 
23
23
  Set slice Status to In Progress. If the slice was newly created or modified during audit, run `make commit` to version control the plan before starting work.
24
24
  4. **Mark Deliverable:**
@@ -61,9 +61,9 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
61
61
  - **Test Harness Extraction:**
62
62
  extract repetitive test setup and verification into the Test Harness.
63
63
  - **Prune Redundancy:**
64
- delete redundant tests if your new tests render them obsolete.
64
+ if your new tests render existing tests obsolete, delete the redundant tests.
65
65
  - **DI Purity:**
66
- ensure no concrete defaults exist in new code. Service Locator and `mock.patch` are forbidden.
66
+ make sure that no concrete defaults exist in new code. Service Locator and `mock.patch` are forbidden.
67
67
  - **Clean Code:**
68
68
  apply SRP locally to simplify logic, improve readability, and remove stale comments.
69
69
  - **Structural Refactoring:**
@@ -95,7 +95,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
95
95
  2. **Sync Slice Notes:**
96
96
  EDIT the vertical slice to record implementation details and reasoning under the Implementation Notes section. If this section does not exist, CREATE it at the end of the file.
97
97
  3. **Perform As-Built Update:**
98
- Before finishing the last deliverable of the slice, perform a final EDIT on the Component Design Docs. Use the Implementation Notes to make minor corrections, ensuring docs reflect as-built reality, and update their status.
98
+ Before finishing the last deliverable of the slice, perform a final EDIT on the Component Design Docs. Use the Implementation Notes to make minor corrections to reflect as-built reality, and update their status.
99
99
  4. **Consistency Check:**
100
100
  If this is the last deliverable, EXECUTE `git grep` for deleted or renamed components and resolve stale hits in documentation and comments.
101
101
  5. **Delivery Gate:**
@@ -36,7 +36,7 @@ Follow these phases and steps in order. Keep track of your progress in your Stat
36
36
  **Goal:** Translate verified findings into buildable slices, component designs, and specifications.
37
37
 
38
38
  1. **Impact and Debt Audit:**
39
- Run EXECUTE `git grep` on target components. If a modified component has more than one consumer, treat it as a Shared Seam and structure deliverables as a non-breaking parallel change: expand, migrate, contract. Ensure all contract changes include matching harness deliverables.
39
+ Run EXECUTE `git grep` on target components. If a modified component has more than one consumer, treat it as a Shared Seam and structure deliverables as a non-breaking parallel change: expand, migrate, contract. Verify that all contract changes include matching harness deliverables.
40
40
  2. **Artifact Updates:**
41
41
  EDIT the Vertical Slice to reflect validated scenarios, edge cases, implementation deliverables, and verification steps. Place Wiring first as the tracer bullet deliverable, followed by contract, logic, refactoring, and harness deliverables. Mark resolved unknowns as completed, link the prototype directory in the slice metadata, and set status to Planned. EDIT linked Component Design Docs and specs in `docs/project/specs/` to reflect as-tested contracts, parameters, and invariants discovered during prototyping.
42
42
 
@@ -10,7 +10,7 @@ This section defines foundational engineering practices. Each entry MUST be a sp
10
10
  - **Version Control:** Branch strategy and commit conventions. Every commit MUST leave the suite in a **Continuous Green State** — the full test suite passes before and after each change. Commit locally per deliverable; defer the push to the session Conclusion and report CI results back (blocking only on failures the push introduced).
11
11
  - **Run Environment:** Designated runner (e.g., `uv run`, `poetry run`).
12
12
  - **Failure Transparency:** Error handling policy — specific exceptions only, no silent suppression.
13
- - **Testing Strategy:** Test types (Unit/Integration/Acceptance), boundaries, and filesystem hygiene. Mandate **Test Double Integrity**: ban global patching, use in-memory fakes for state-managing outbound ports, and strictly autospec-bound mocks only for un-fakeable external side-effects.
13
+ - **Testing Strategy:** Define test types (Unit, Integration, Acceptance), boundaries, and filesystem hygiene. Mandate **Test Double Integrity**. Ban global patching. Use in-memory fakes for state-managing outbound ports. Use strictly autospec-bound mocks only for external side-effects.
14
14
  - **Runtime Contract Assertions:** Enforce Design-by-Contract with native `assert condition, "message"` for pre/post-conditions and invariants (strippable via `python -O`); never custom exceptions for contract checks.
15
15
  - **Dependency Injection:** Constructor injection mandate; forbid Service Locator and global containers.
16
16
  - **Centralized Configuration:** Config file location, prohibition of magic numbers.
@@ -48,7 +48,7 @@ These files live in `docs/templates/` and are created or refreshed by `teddy ini
48
48
 
49
49
  ## Roadmap
50
50
 
51
- **Mandatory Prerequisites:** Milestone 0 (Project Bootstrapping) is a required standard that MUST be completed before any feature work begins. It establishes the foundational infrastructure — testing framework, CI/CD pipeline, pre-commit hooks, post-commit test gate, and Makefile — that all subsequent milestones depend upon. No feature work may proceed until these foundations are in place.
51
+ **Mandatory Prerequisites:** Milestone 0 (Project Bootstrapping) is a required standard that MUST be completed before any feature work begins. It establishes the foundational infrastructure — testing framework, CI/CD pipeline, pre-commit hooks, post-commit test gate, and Makefile — that all subsequent milestones depend upon. You must complete these foundations before beginning feature work.
52
52
 
53
53
  A living list of upcoming Milestones and their high-level features.
54
54
 
@@ -77,8 +77,8 @@ EOF
77
77
 
78
78
  **Requirements:**
79
79
  - The output file MUST be written to `spikes/debug/probe_output.txt` — this path is uploaded as an artifact by the CI workflow.
80
- - The CI workflow running the probe SHOULD be configured with a single job (no build matrix) to avoid multiple jobs overwriting each other's uploaded artifact (`probe-result`).
81
- - The script should be minimal and self-contained (ideally a single heredoc). See the Debugger's rule 11 (Remote Probing Protocol) for full protocol details.
80
+ - The CI workflow running the probe must use a single job with no build matrix. This prevents multiple jobs from overwriting the uploaded artifact (`probe-result`).
81
+ - The script must remain minimal and self-contained, using a single heredoc. See the Debugger's rule 11 (Remote Probing Protocol) for full protocol details.
82
82
 
83
83
  ## Cross-Platform Design
84
84
 
@@ -86,7 +86,7 @@ The Makefile uses Make's built-in `-` prefix for error suppression (`-pre-commit
86
86
 
87
87
  - **POSIX shells (bash, sh, zsh):** `-` prefix works because Make handles error suppression natively before passing the recipe line to the shell.
88
88
  - **Windows (cmd.exe):** `-` prefix works because Make suppresses the exit code check, avoiding shell-specific `||` operators that cmd.exe does not support.
89
- - **Error transparency:** The pre-commit pass is advisory — if it fails, the commit still succeeds locally; the post-commit test gate is the real safety net. `make push` runs `git pull --rebase` and `git push` WITHOUT suppression, so a rebase conflict or push rejection surfaces as a non-zero exit.
89
+ - **Error transparency:** The pre-commit pass is advisory. If it fails, the commit still succeeds locally. The post-commit test gate acts as the safety net. `make push` runs `git pull --rebase` and `git push` WITHOUT suppression, so a rebase conflict or push rejection surfaces as a non-zero exit.
90
90
 
91
91
  ## Test Workflow
92
92
 
@@ -167,7 +167,7 @@ Attribution is deterministic: SHA → run → run-level + per-job conclusion (ne
167
167
  Key behaviors:
168
168
 
169
169
  1. **Automatic SHA and BASE resolution.** `SHA` defaults to current `HEAD` (or `COMMIT=<sha>`), and `BASE` defaults to `HEAD~1`.
170
- 2. **Registration lag is tolerated by a bounded retry.** CI may not have registered a run for the pushed SHA immediately; the target polls `gh run list --commit <sha>` up to `RETRY_POLLS × RETRY_SLEEP` (default 10 × 2s ≈ 20s) before attributing, then fails safe if the run never registers.
170
+ 2. **Registration lag is tolerated by a bounded retry.** CI can fail to register a run for the pushed SHA immediately. The target polls `gh run list --commit <sha>` up to `RETRY_POLLS × RETRY_SLEEP` (default 10 × 2s ≈ 20s) before attributing. It fails safe if the run never registers.
171
171
  3. **No CI is non-blocking.** If the repository has no workflow files under `.github/workflows/` (`*.yml`/`*.yaml`), the target logs `No CI configured - skipping attribution` and exits 0.
172
172
 
173
173
  ### Example
@@ -99,7 +99,7 @@ pre-commit run ruff-lint --all-files # run a single hook
99
99
 
100
100
  The post-commit stage is the unskippable safety net. It invokes a project script (e.g. `.githooks/post-commit.py`) that:
101
101
 
102
- 1. **Guards against automated git operations.** During `git pull --rebase`, Git fires the `post-commit` hook once per replayed commit; because the hook reverts on failure (`git reset --soft HEAD~1`), a failing replay would silently drop that commit while the rebase still reports success. The hook MUST exit immediately (skipping the suite) when `rebase-merge`, `rebase-apply`, `MERGE_HEAD`, or `CHERRY_PICK_HEAD` exists under the git dir. This is what makes `make push`'s `git pull --rebase` safe.
102
+ 1. **Guards against automated git operations.** During `git pull --rebase`, Git fires the `post-commit` hook once per replayed commit. Because the hook reverts on failure (`git reset --soft HEAD~1`), a failing replay silently drops that commit while the rebase still reports success. The hook MUST exit immediately (skipping the suite) when `rebase-merge`, `rebase-apply`, `MERGE_HEAD`, or `CHERRY_PICK_HEAD` exists under the git dir. This makes `make push`'s `git pull --rebase` safe.
103
103
  2. Verifies the runner and test framework are available, printing a clear, actionable error if not.
104
104
  3. Runs the full test suite via the project's test command (e.g. `make test` / `uv run pytest`).
105
105
  4. On failure, reverts the commit with `git reset --soft HEAD~1`, keeping the changes staged for investigation.
@@ -9,4 +9,4 @@ Foundational rules and philosophical constraints governing this specification.
9
9
  - **PrincipleName:** Description of constraint and how it binds design decisions.
10
10
 
11
11
  ## Technical Specifications
12
- Use flexible subheadings tailored to the invariant (e.g. Data Models, Payload Schemas, CLI Syntax, File Formats, State Transitions, Sequence Flow). May contain logic, formats, directory structures, or workflow diagrams.
12
+ Use flexible subheadings tailored to the invariant (e.g. Data Models, Payload Schemas, CLI Syntax, File Formats, State Transitions, Sequence Flow). Specifications can contain logic, formats, directory structures, or workflow diagrams.