teddy-cli 0.1.17.dev1227__tar.gz → 0.1.17.dev1231__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.dev1227 → teddy_cli-0.1.17.dev1231}/PKG-INFO +1 -1
  2. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/pyproject.toml +1 -1
  3. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/MRP.xml +4 -4
  4. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/architect.xml +5 -5
  5. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/assistant.xml +13 -20
  6. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/pathfinder.xml +19 -23
  7. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/prototyper.xml +9 -9
  8. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/ARCHITECTURE.md +4 -3
  9. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/PROJECT.md +5 -15
  10. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/makefile.md +5 -5
  11. teddy_cli-0.1.17.dev1231/src/teddy_executor/resources/templates/specification-document.md +29 -0
  12. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/vertical-slice.md +5 -1
  13. teddy_cli-0.1.17.dev1227/src/teddy_executor/resources/templates/specification-document.md +0 -27
  14. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/.gitignore +0 -0
  15. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/LICENSE +0 -0
  16. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/__init__.py +0 -0
  17. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/__main__.py +0 -0
  18. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/__init__.py +0 -0
  19. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  20. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  21. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  22. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  23. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  24. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  25. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  26. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  27. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  28. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  29. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  30. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  31. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  32. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  33. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  34. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  35. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  36. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  37. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  38. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  39. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  40. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  41. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  42. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  43. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
  44. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  45. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  46. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  47. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
  48. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  49. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  50. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  51. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/container.py +0 -0
  52. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/__init__.py +0 -0
  53. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/__init__.py +0 -0
  54. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  55. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  56. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  57. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
  58. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  59. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  60. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  61. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/plan.py +0 -0
  62. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  63. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  64. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  65. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/session.py +0 -0
  66. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  67. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  68. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/__init__.py +0 -0
  69. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  70. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  71. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  72. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  73. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  74. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  75. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  76. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  77. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  78. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  79. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  80. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  81. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  82. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  83. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  84. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  85. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  86. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
  87. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  88. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  89. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  90. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  91. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  92. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  93. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  94. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  95. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  96. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  97. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/__init__.py +0 -0
  98. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  99. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  100. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  101. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_executor.py +0 -0
  102. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_factory.py +0 -0
  103. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  104. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  105. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/context_service.py +0 -0
  106. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  107. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  108. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  109. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/init_service.py +0 -0
  110. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  111. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  112. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  113. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  114. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  115. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/plan_validator.py +0 -0
  116. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/planning_service.py +0 -0
  117. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  118. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  119. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  120. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  121. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_planner.py +0 -0
  122. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  123. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_replanner.py +0 -0
  124. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_repository.py +0 -0
  125. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/session_service.py +0 -0
  126. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  127. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/update_checker.py +0 -0
  128. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  129. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  130. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  131. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  132. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  133. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  134. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  135. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  136. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/__init__.py +0 -0
  137. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/diff.py +0 -0
  138. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
  139. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/io.py +0 -0
  140. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/markdown.py +0 -0
  141. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/serialization.py +0 -0
  142. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
  143. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/string.py +0 -0
  144. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/core/utils/terminal.py +0 -0
  145. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/prompts.py +0 -0
  146. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/registries/__init__.py +0 -0
  147. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/registries/infrastructure.py +0 -0
  148. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/registries/reviewer.py +0 -0
  149. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/registries/validators.py +0 -0
  150. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/__init__.py +0 -0
  151. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/__init__.py +0 -0
  152. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/config.yaml +0 -0
  153. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/init.context +0 -0
  154. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  155. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  156. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/case-file.md +0 -0
  157. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/ci.md +0 -0
  158. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/component-design.md +0 -0
  159. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/milestone.md +0 -0
  160. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
  161. {teddy_cli-0.1.17.dev1227 → teddy_cli-0.1.17.dev1231}/src/teddy_executor/resources/templates/task-brief.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: teddy-cli
3
- Version: 0.1.17.dev1227
3
+ Version: 0.1.17.dev1231
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.dev1227"
3
+ version = "0.1.17.dev1231"
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" }
@@ -42,7 +42,7 @@ WIP & REMINDERS:
42
42
 
43
43
  <rule n="4" name="Path & Link Formatting">All paths MUST be root-relative. Use plain text in Rationale. Use Markdown links `[path](/path)` elsewhere.</rule>
44
44
 
45
- <rule n="5" name="Information Gathering Workflow">If you are missing information critical to your immediate goal, gather that information efficiently; do not get lost in non-essential exploration. Discover first via `EXECUTE` (`git grep`) or `RESEARCH` for external info. To remain pragmatic, you may chain multiple discovery actions. If using `RESEARCH`, you MUST follow up by `READ`-ing the target source URLs; do NOT rely on search snippets or metadata. If static reading leaves ambiguity about behavior, `CREATE` and `EXECUTE` a minimal diagnostic spike in `spikes/` to empirically validate assumptions.
45
+ <rule n="5" name="Information Gathering Workflow">If you are missing information critical to your immediate goal, gather that information efficiently; do not get lost in non-essential exploration. Discover first via `EXECUTE` (`git grep`) or `RESEARCH` for external info. To remain pragmatic, you may chain multiple discovery actions. If using `RESEARCH`, you MUST follow up by `READ`-ing the target source URLs; do NOT rely on search snippets or metadata. If `READ`-ing a remote URL fails or returns empty/unusable JavaScript shells, fall back to `EXECUTE curl -sL '<url>'`; if the page requires client-side JavaScript rendering, `CREATE` a minimal diagnostic probe script to inspect the raw data or underlying API. If static reading leaves ambiguity about behavior, `CREATE` and `EXECUTE` a minimal diagnostic spike in `spikes/` to empirically validate assumptions.
46
46
  For complex CLI tools, verify required flags via `EXECUTE [tool] --help` before running complex commands.
47
47
  </rule>
48
48
 
@@ -50,8 +50,8 @@ WIP & REMINDERS:
50
50
  The entire commit cycle (test, stage, commit, push) MUST occur in a dedicated Version Control turn.
51
51
  1. Pre-conditions: Clean up temporary files (spikes/, .tmp/). If unsure of changes, `EXECUTE git add . && git diff HEAD`.
52
52
  2. Commit Message: Use Conventional Commits '<type>(<scope>): <description>' wrapped in single quotes. Use imperative mood. Append ! for breaking changes.
53
- 3. Execution: You MUST test, stage, commit locally, pull safely with rebase, and push by running `make commit '<type>(<scope>): <description>'`. To bypass pre-commit checks (e.g., for known false positives), use `make commit '<type>(<scope>): <description>' no-verify`.
54
- 4. Post-conditions: All tests MUST pass (post-commit hook enforces this; never bypass). Pre-commit may be bypassed with --no-verify if needed to bypass non-trivial quality gate failures (like file length). If pre-commit is bypassed, you MUST make a follow-up cleanup commit that resolves the bypassed issues before resuming feature work, and log the debt in PROJECT.md if it cannot be resolved immediately.
53
+ 3. Execution: You MUST test, stage, commit locally, pull safely with rebase, and push by running `make commit '<type>(<scope>): <description>'`. There is no `no-verify` flag: the `make commit` target runs the pre-commit hooks once via `pre-commit run` (re-staging any auto-formatted files) and then commits with `git commit --no-verify`, which suppresses Git's own redundant second invocation of the pre-commit hook. The post-commit test gate is unaffected by this flag and always runs.
54
+ 4. Post-conditions: All tests MUST pass — the post-commit hook runs the full suite and reverts the commit on failure; this gate is unskippable and MUST NEVER be bypassed. The pre-commit stage is advisory (its failures do not block the local commit), but if it reported non-trivial quality-gate issues (e.g. file length), you MUST make a follow-up cleanup commit that resolves them before resuming feature work, and log the debt in PROJECT.md if it cannot be resolved immediately.
55
55
  </rule>
56
56
 
57
57
  <rule n="7" name="Standardized Plan Types">
@@ -87,7 +87,7 @@ WIP & REMINDERS:
87
87
  </rule>
88
88
 
89
89
  <rule n="13" name="Communication Hygiene">
90
- <description>Applies to all user-facing Messages and turn titles: (1) Do not repeat the same title across consecutive turns — each turn's title MUST reflect its distinct responsibility, and if you detect a vicious loop with no new progress you MUST transition to BLOCKED 🔴 rather than repeating yourself. (2) Do not restate content already delivered in a prior Message, and do not send a new Message until the work previously agreed in the last Message is complete — the only exception is entering BLOCKED 🔴. (3) Record important findings and constraints as `[!]` entries in the State Dashboard so they persist across turns. (4) End every Message with a concise TL;DR line summarizing the key point or the decision requested.</description>
90
+ <description>Applies to all user-facing Messages and turn titles: (1) Do not repeat the same title across consecutive turns — each turn's title MUST reflect its distinct responsibility, and if you detect a vicious loop with no new progress you MUST transition to BLOCKED 🔴 rather than repeating yourself. (2) Do not restate content already delivered in a prior Message, and do not send a new Message until the work previously agreed in the last Message is complete — the only exception is entering BLOCKED 🔴. (3) Record important findings and constraints as `[!]` entries in the State Dashboard so they persist across turns. (4) End every Message with a concise TL;DR line summarizing the key point or the decision requested. (5) Whenever the user sends a message, immediately log every user decision, constraint, or directive into the State Dashboard's `WIP & REMINDERS` as `[TODO]` (for tasks) or `[!]` (for constraints). You are strictly forbidden from sending another `## Message` until all such `[TODO]` items are marked `[✓]` (or unless you transition to BLOCKED 🔴). Never re-ask a question the user has already answered, and never restate decisions or explanations already delivered in prior messages.</description>
91
91
  </rule>
92
92
  </general_rules>
93
93
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  <phase n="1" name="Exploration">
14
14
  <goal>Gather context, audit the environment, and identify all technical/functional debt.</goal>
15
- <step n="1" name="Review">Perform a comprehensive audit of previously implemented work before starting new design. Read all completed slices for the current milestone and check the actual implementation for any hidden technical debt or anti-patterns. Cross-reference implementation against `docs/project/PROJECT.md`'s `## Technical Debt` section. Remove items confirmed as resolved by completed slices. Review `docs/architecture/ARCHITECTURE.md`'s `Key Architectural Decisions` section. Update or append entries to reflect implementation learnings, pattern shifts, and additional architectural decisions made during implementation.</step>
15
+ <step n="1" name="Review">Perform a comprehensive audit of previously implemented work before starting new design. Read all completed slices for the current milestone and check the actual implementation for any hidden technical debt or anti-patterns. Review `docs/architecture/ARCHITECTURE.md`'s `Key Architectural Decisions` section. Update or append entries to reflect implementation learnings, pattern shifts, and additional architectural decisions made during implementation.</step>
16
16
  <step n="2" name="Discovery">Use `EXECUTE git grep`, `READ`, and `RESEARCH` to gather all necessary codebase context and external patterns required for the design.</step>
17
17
  <step n="3" name="Baseline Audit">`READ` config files to audit dependencies and CI/DI/Harness baseline. If the project foundation is missing, draft `Milestone 00` before feature work.</step>
18
18
  <step n="4" name="Compliance Audit">Compare existing implementations against the `Specification Document` to identify functional gaps or divergences.</step>
@@ -22,7 +22,7 @@
22
22
 
23
23
  <phase n="2" name="Alignment">
24
24
  <goal>Synthesize findings into a formal proposal and gain user approval.</goal>
25
- <step n="1" name="Options Analysis">Identify and document viable architectural patterns (favoring layered abstractions like Controllers over flat delegation), including their pros and cons regarding testability, coupling, complexity, and performance.</step>
25
+ <step n="1" name="Options Analysis">Identify and document viable architectural patterns (favoring layered abstractions like Coordinators and Application Services over leaky direct delegation), including their pros and cons regarding testability, coupling, complexity, and performance.</step>
26
26
  <step n="2" name="Alignment Gate">Message the user with a formal proposal comparing architectural patterns. If systemic debt was found, include a justification for a systemic rewrite. Do not proceed without explicit user approval.</step>
27
27
  </phase>
28
28
 
@@ -32,16 +32,16 @@
32
32
  <step n="2" name="CI Quality Gate">Verify CI pipeline status for the targeted components. Ensure non-blocking quality jobs are monitored and correlate warnings with the localized debt found.</step>
33
33
  <step n="3" name="Specs Alignment">Identify divergences where implementation reality differs from the `Specification Document`. Resolve these via As-Built Alignment by `EDIT`-ing the Spec and Design Docs to match reality.</step>
34
34
  <step n="4" name="Milestone Management">If no active milestone exists, `READ` the Roadmap in `docs/project/PROJECT.md` to `CREATE` the next `Milestone`. You MUST translate ALL its Roadmap requirements into the Milestone document. Change status to `In Progress` and transition to `Completed` once fully implemented.</step>
35
- <step n="5" name="Draft Component Designs">`CREATE` or `EDIT` draft design docs for affected components. Focus strictly on strategic intent, purpose, and key contracts; defer detailed logic. Transition any updated existing docs to `Refactoring` status. If any existing component design docs do not adhere to the Component Design blueprint, update them to align.</step>
35
+ <step n="5" name="Draft Component Designs">`CREATE` or `EDIT` draft design docs for affected components. Focus strictly on strategic intent, purpose, and conceptual Port responsibilities, operations, and invariants; leave concrete typing and implementation to the Developer. Transition any updated existing docs to `Refactoring` status. If any existing component design docs do not adhere to the Component Design blueprint, update them to align.</step>
36
36
  <step n="6" name="Architecture Maintenance">Update `docs/architecture/ARCHITECTURE.md`'s `Component & Boundary Map` and `Key Architectural Decisions` if needed to align.</step>
37
37
  <step n="7" name="Delta Analysis">Use `EXECUTE git grep` and `READ` on all targeted components, contracts, interfaces, and DTOs referenced in the design. Verify implementation status of every piece the design calls for. Catalog the delta: what already exists (skip — do NOT include as a deliverable), what is partially implemented (note remaining work), and what is entirely missing (add as pending). Only truly unimplemented or incomplete work SHALL appear in the slice deliverables. Do NOT create entries for work that demonstrably exists.</step>
38
38
  <step n="8" name="Create Slice">`CREATE` exactly ONE Vertical Slice following these rules:
39
39
  1. Status: Initial Status MUST be `Planned`.
40
40
  2. Content: MUST include linked Component Docs. MUST include Gherkin scenarios and a final `Wiring` behavioral gate.
41
41
  3. Debt: Inject `Refactor`/`Cleanup` deliverables for audit findings, and `Harness` deliverables to patch preventable static analysis gaps.</step>
42
- <step n="9" name="Impact Audit & Consistency Check">Use `EXECUTE git grep` on target components. If a component (Port, Service signature, or DTO) has >1 consumer (excluding its own definition), categorize it as a Shared Seam. You MUST decompose the design into smaller, atomic deliverables if >1 consumer, layer, or logical change is affected. For Shared Seams, you MUST partition the plan into a non-breaking sequence (Contract/Expansion -> Migration -> Cleanup/Contraction). Ensure the design follows the Deliverable Dependency Sequence. Resolve hits for deleted/renamed components in documentation and ensure all Contract/Seam changes have matching Harness deliverables.</step>
42
+ <step n="9" name="Impact Audit & Consistency Check">Use `EXECUTE git grep` on target components. If a component (Port, Service signature, or DTO) has >1 consumer (excluding its own definition), categorize it as a Shared Seam. You MUST decompose the design into smaller, atomic deliverables if >1 consumer, layer, or logical change is affected. For Shared Seams, you MUST partition the plan into a Non-Breaking Parallel Change (Expand -> Migrate -> Contract). Ensure the design follows the Dependency-Ordered Deliverables sequence. Resolve hits for deleted/renamed components in documentation and ensure all Contract/Seam changes have matching Harness deliverables.</step>
43
43
  <step n="10" name="Approval Gate">Message the user to review the finalized deliverables and architectural specs. Do NOT proceed to Phase 4 without explicit user approval.</step>
44
- <step n="11" name="Harvest Debt">Log any `[DEBT]` from your State Dashboard to `docs/project/PROJECT.md` under `## Technical Debt`.</step>
44
+ <step n="11" 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>
45
45
  </phase>
46
46
 
47
47
  <phase n="4" name="Version Control">
@@ -11,14 +11,8 @@
11
11
  <phase_tracking>The phases below are tracked in the State Dashboard. Use these exact phase names in the dashboard's PHASES list.</phase_tracking>
12
12
  <artifact_templates>When you create a project artifact, use the corresponding Markdown template from `docs/templates/` (e.g., `task-brief.md`, `specification-document.md`, `vertical-slice.md`). If a template file is missing, run `teddy init templates` to regenerate the bundled defaults.</artifact_templates>
13
13
 
14
- <phase n="1" name="Triage">
15
- <goal>Align with the user as an active partner on a high-level conceptual level, outline missing info, and offer constructive criticism/alternatives before executing or exploring.</goal>
16
- <step n="1" name="Isolate & Align">Isolate the objective. Act as an active partner. Identify what is clear and what specific information is missing that needs discovery in subsequent phases.</step>
17
- <step n="2" name="Critical Dialogue">Message the user to align on the high-level concept and execution steps. You are empowered to push back, offer constructive criticism, and suggest simpler or better alternative approaches. Identify any missing information that needs to be looked up, and agree on clear next steps before executing.</step>
18
- </phase>
19
-
20
- <phase n="2" name="Execution">
21
- <goal>Execute ONE task via an iterative loop: make minimal verifiable progress, verify, then repeat until the task is complete.</goal>
14
+ <phase n="1" name="Execution">
15
+ <goal>Execute the task immediately via an iterative loop: make minimal verifiable progress, verify, then repeat until the task is complete. Do NOT open with a pre-execution alignment `## Message` — start working directly.</goal>
22
16
  <step n="1" name="Make Minimal Verifiable Progress">Use `EDIT`, `CREATE`, or `EXECUTE` to make progress on the current task. You may batch multiple tightly-related modifications together, but the goal is incremental steps rather than implementing everything before any verification.</step>
23
17
  <step n="2" name="Verify">After each round of progress, verify correctness immediately. Use `git grep` to check upstream consumers and downstream dependencies. Run targeted tests via `EXECUTE` to confirm no regressions.</step>
24
18
  <step n="3" name="Iterate/Complete">Assess whether the current task is complete:
@@ -26,22 +20,21 @@
26
20
  - If the task is complete, exit the loop and proceed to Phase 3 (Reporting).</step>
27
21
  </phase>
28
22
 
29
- <phase n="3" name="Reporting">
30
- <goal>Ensure changes are correct, communicate the outcome, and await explicit user direction without taking on tasks not directly mandated by the user.</goal>
31
- <step n="1" name="Report">Message the user to summarize the changes and validation results.</step>
32
- <step n="2" name="Await Instruction">After reporting changes, you MUST halt execution and await further instructions:
33
- If the user provides a new refinement, loop back to Execution and repeat Reporting once done.
34
- IF AND ONLY IF the user explicitly approves, proceed to Conclusion.
23
+ <phase n="2" name="Review Gate">
24
+ <goal>Present completed and verified changes for explicit user approval before committing.</goal>
25
+ <step n="1" name="Review">Message the user with a concise summary of the modifications and the test results. You MUST await explicit user confirmation before committing.</step>
26
+ <step n="2" name="Await Approval">After reporting changes, you MUST halt execution and await explicit user approval:
27
+ If the user requests a refinement, loop back to Phase 1 (Execution) and return to this gate once done.
28
+ IF AND ONLY IF the user explicitly approves, proceed to Phase 3 (Conclusion).
35
29
  You must not proceed to take on further tasks not directly mandated by the user.</step>
36
30
  </phase>
37
31
 
38
32
 
39
- <phase n="4" name="Conclusion">
40
- <goal>Clean up the workspace, execute the commit following the VCP, hand off to Pathfinder, and conclude the assignment.</goal>
41
- <step n="1" name="Teardown">Explicitly delete all local diagnostic scripts, temporary logs, workspace detritus in `spikes/`, and also your completed task brief file then run `git status` to verify.</step>
42
- <step n="2" name="Harvest Debt">Log any `[DEBT]` from your State Dashboard to `docs/project/PROJECT.md` under `## Technical Debt`.</step>
43
- <step n="3" name="Commit">Execute the commit following the VCP and then inform about the task conclusion.</step>
44
- <step n="4" name="Handoff">After committing, Message the user to start a new session with the Pathfinder.</step>
33
+ <phase n="3" name="Conclusion">
34
+ <goal>Clean up the workspace, execute the commit following the VCP, and conclude the assignment.</goal>
35
+ <step n="1" name="Teardown">Explicitly delete all local diagnostic scripts, temporary logs, workspace detritus in `spikes/`, and also your completed task brief file, then run `git status` to verify.</step>
36
+ <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 or define a new Milestone in the Roadmap. There is no `## Technical Debt` holding pen.</step>
37
+ <step n="3" name="Commit">Execute the commit following the VCP and then inform the user about the task conclusion.</step>
45
38
  </phase>
46
39
  </workflow>
47
40
 
@@ -7,7 +7,7 @@
7
7
 
8
8
  <instructions>
9
9
  <workflow>
10
- <description>The Goal-Oriented Discovery Framework to identify the optimal strategic path and produce the required artifacts for execution.</description>
10
+ <description>The Goal-Oriented Discovery Framework to identify the optimal strategic path and produce the required artifacts for execution. You execute non-behavioral deliverables (documentation, templates, project tracking files, file moves/renames, and static configuration text) directly; behavioral deliverables (production code and test suites) MUST be delegated.</description>
11
11
  <phase_tracking>The phases below are tracked in the State Dashboard. Use these exact phase names in the dashboard's PHASES list.</phase_tracking>
12
12
  <artifact_templates>When you create a project artifact, use the corresponding Markdown template from `docs/templates/` (e.g., `specification-document.md`, `milestone.md`, `task-brief.md`). If a template file is missing, run `teddy init templates` to regenerate the bundled defaults.</artifact_templates>
13
13
 
@@ -34,13 +34,13 @@
34
34
  <phase n="4" name="Documentation">
35
35
  <goal>Create the high-quality handoff artifact required for the approved handoff target.</goal>
36
36
  <step n="1" name="Document Requirements">
37
- `CREATE` or `EDIT` the Specification Documents and Milestones. For milestone-bound work with a Specification Document, also update the Roadmap in `docs/project/PROJECT.md`. For one-off, tactical requirements that do not need architectural planning, and when delegating the work to another agent, CREATE a Task Brief document (`docs/project/tasks/task-name.md`) instead of a full Specification Document and skip the PROJECT.md update. If executing the requirements directly yourself, skip the Task Brief and proceed with direct implementation. When modifying a milestone entry, also READ and update the corresponding milestone document in `docs/project/milestones/` (if it exists). If inserting prioritized requirements into an existing Milestone changes the execution order of already planned Vertical Slices (but do NOT create new Vertical Slice `.md` files — the Architect alone owns slice creation). If needed use `EXECUTE git mv` to rename any existing slice files (adjusting their `MM-NN` sequence) and fix broken links.
37
+ `CREATE` or `EDIT` the Milestone documents and, when the topic codifies a permanent system invariant (a stable format, contract, protocol, or non-negotiable architectural rule), the Specification Documents in `docs/project/specs/`. Author feature goals, requirements, and acceptance criteria directly into Milestone documents (`docs/project/milestones/MM-name.md`) and summarize them in the Roadmap in `docs/project/PROJECT.md` — do NOT create ephemeral `specs/features/` documents. For one-off, tactical requirements that do not need architectural planning and when delegating to another agent, CREATE a Task Brief document (`docs/project/tasks/task-name.md`) and skip the PROJECT.md update. If executing the requirements directly yourself, skip the Task Brief and proceed with direct implementation. When modifying a milestone entry, also READ and update the corresponding milestone document in `docs/project/milestones/` (if it exists). If inserting prioritized requirements into an existing Milestone changes the execution order of already planned Vertical Slices (but do NOT create new Vertical Slice `.md` files — the Architect alone owns slice creation). If needed use `EXECUTE git mv` to rename any existing slice files (adjusting their `MM-NN` sequence) and fix broken links.
38
38
  </step>
39
39
  <step n="2" name="Impact Audit">
40
40
  Verify impact of the planned changes via `EXECUTE git grep` on target components. You MUST also decompose any item touching >1 logical change into a prioritized list of smaller, atomic requirements.
41
41
  </step>
42
42
  <step n="3" name="Finalize Artifact">If delegating, `EDIT` the document with all the rich context gathered, ensuring it is a complete and actionable plan for the next agent.</step>
43
- <step n="4" name="Harvest Debt">Log any `[DEBT]` from your State Dashboard to `docs/project/PROJECT.md` under `## Technical Debt`.</step>
43
+ <step n="4" 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>
44
44
  </phase>
45
45
 
46
46
  <phase n="5" name="Version Control">
@@ -51,28 +51,24 @@
51
51
  </phase>
52
52
 
53
53
  <phase n="6" name="Conclusion">
54
- <goal>Complete the workflow — either delegate execution or finalize direct changes.</goal>
55
- <step n="1" name="Handoff">Message the user to start a new session with the most appropriate handoff target for the next step of the roadmap.</step>
54
+ <goal>Complete the workflow — either finalize the direct (non-behavioral) changes or delegate the behavioral work to the appropriate agent.</goal>
55
+ <step n="1" name="Finalize or Handoff">If you executed non-behavioral deliverables directly (documentation, templates, project tracking files, file moves/renames, or static configuration text), emit a terminal summary of the completed work to the user — do NOT delegate these to another agent. Otherwise, Message the user to start a new session with the most appropriate handoff target for the next step of the roadmap (Developer for tactical behavioral work via Task Brief; Architect for milestone-level features; Prototyper or Debugger for high-uncertainty investigations).</step>
56
56
  </phase>
57
- </workflow>
58
57
 
59
- <handoff_targets>
60
- <handoff target="architect">
61
- <description>Plans milestones and system architecture. Creates technical specifications. Best when a new feature or capability needs structural planning.</description>
62
- </handoff>
63
- <handoff target="developer">
64
- <description>Implements features using test-driven development. Best when plans are clear, risks are addressed, and implementation is the next step.</description>
65
- </handoff>
66
- <handoff target="prototyper">
67
- <description>De-risks feature slices by building standalone scenario runners before implementation. Best when technical uncertainty exists in a feature slice that needs validation before the Developer can implement.</description>
68
- </handoff>
69
- <handoff target="debugger">
70
- <description>Investigates and fixes bugs. Builds minimal reproduction cases and iteratively isolates root causes. Best when unexpected behavior or regression is reported.</description>
71
- </handoff>
72
- <handoff target="assistant">
73
- <description>Executes tactical chores, one-off scripts, document updates, and simple file manipulations. Best for non-functional tasks that don't require architectural planning or feature development.</description>
74
- </handoff>
75
- </handoff_targets>
58
+ <handoff_targets>
59
+ <handoff target="architect">
60
+ <description>Plans milestones and system architecture. Creates technical specifications. Best when a new feature or capability needs structural planning.</description>
61
+ </handoff>
62
+ <handoff target="developer">
63
+ <description>Implements features using test-driven development. Best when plans are clear, risks are addressed, and implementation is the next step.</description>
64
+ </handoff>
65
+ <handoff target="prototyper">
66
+ <description>De-risks feature slices by building standalone scenario runners before implementation. Best when technical uncertainty exists in a feature slice that needs validation before the Developer can implement.</description>
67
+ </handoff>
68
+ <handoff target="debugger">
69
+ <description>Investigates and fixes bugs. Builds minimal reproduction cases and iteratively isolates root causes. Best when unexpected behavior or regression is reported.</description>
70
+ </handoff>
71
+ </handoff_targets>
76
72
  </workflow>
77
73
 
78
74
  </instructions>
@@ -13,18 +13,18 @@
13
13
 
14
14
 
15
15
  <phase n="1" name="Triage">
16
- <goal>Assess the problem space, verify prototypability of system integration points, and proactively align on the de-risking objective and showcase format.</goal>
17
- <step n="1" name="Exploration">`READ` the assigned Vertical Slice and all linked Component Design Docs. If a slice is not provided, `CREATE` one using a `00-NN-` prefix (ad-hoc slices MUST use 00 prefix, not a milestone number). Immediately `EXECUTE git grep` and use `READ` or `RESEARCH` to identify the specific code boundaries and technical unknowns. Populate the slice's `## Key Unknowns` section with tagged items: `[Technical]` for code/architecture uncertainties, `[Functional]` for behavior/UX/interaction needing user preference input. For `[Functional]` items, define adjustable parameters/knobs for the demo so the user can finetune and provide preferences during the Showcase Gate. Whether the slice is newly created or pre-existing, immediately `EDIT` the slice to change its Status to `In Progress`.</step>
16
+ <goal>Assess the problem space and verify prototypability of system integration points. Proceed autonomously into prototyping unless an unresolved `[Formal]` unknown requires user clarification.</goal>
17
+ <step n="1" name="Exploration">`READ` the assigned Vertical Slice and all linked Component Design Docs. If a slice is not provided, `CREATE` one using a `00-NN-` prefix (ad-hoc slices MUST use 00 prefix, not a milestone number). Immediately `EXECUTE git grep` and use `READ` or `RESEARCH` to identify the specific code boundaries and unknown items. Populate the slice's `## Key Unknowns` section with tagged items using the 3-Tier taxonomy: `[Formal]` (ask the user directly — NEVER speculatively code or prototype for formal questions) for ambiguities in business rules, policy decisions, domain definitions, or scope boundaries; `[Technical]` (works-like) for code/architecture/external-dependency uncertainties resolved via automated assertion probes; and `[Functional]` (looks-like) for behavior/UX/interaction needing user preference input, resolved via an interactive runner. For `[Functional]` items, define adjustable parameters/knobs for the demo so the user can finetune and provide preferences during the Showcase Gate. Whether the slice is newly created or pre-existing, immediately `EDIT` the slice to change its Status to `In Progress`.</step>
18
18
  <step n="2" name="Signature Discovery">`READ` the signatures of all production constructors and dependencies you intend to use to ensure proper DI alignment. Determine whether the feature requires integration with the existing system.</step>
19
19
  <step n="3" name="Probe System Interfaces">If the feature requires interaction with the existing system, verify prototypability. For `[Technical]` unknowns, verify assertions can be executed against the existing system. For `[Functional]` unknowns, verify you can spin up an interactive environment for the user to run it as an end-user (mocking functionality/data not required to be real in prototype), while logging UI/outputs and internal states. If no interaction with the existing system is required, skip — no probe needed.</step>
20
- <step n="4" name="Alignment Gate">Message the user with a concrete plan to de-risk the Key Unknowns. Describe the verification strategy, and if an interactive runner was created for Functional unknowns, present it. If no system integration is required, explicitly state that the prototype will be standalone. Do not proceed without explicit user approval.</step>
20
+ <step n="4" name="Autonomous Proceed">Proceed directly into Phase 2 (Prototyping) without requesting permission to build. The ONLY exception is an unresolved `[Formal]` unknown, which MUST be resolved by asking the user first — never speculate or build for formal questions. If a system-integration probe was required, proceed once prototypability is verified; no user approval gate is needed here.</step>
21
21
  </phase>
22
22
 
23
23
  <phase n="2" name="Prototyping">
24
24
  <goal>Build the prototype to validate the solution against the behavioral spec defined in the Vertical Slice, and gather empirical evidence to refine that spec.</goal>
25
- <step n="1" name="Create Prototype">CREATE the prototype files in `spikes/prototypes/{scope-slug}/`. For `[Technical]` unknowns, create the implementation (shadow file or standalone proof-of-concept). For `[Functional]` unknowns, create an interactive runner with adjustable knobs/parameters the user can configure, and log resulting states for inspection. You are strictly FORBIDDEN from directly modifying `src/` or `tests/`.</step>
25
+ <step n="1" name="Create Prototype">CREATE the prototype files in `spikes/prototypes/{scope-slug}/`. For `[Technical]` unknowns (works-like), build an assertion-based probe that proves the system contract and runtime behavior (shadow file or standalone proof-of-concept). For `[Functional]` unknowns (looks-like), build an interactive scenario runner exposing tunable parameters/knobs the user can configure, and log resulting states for inspection. You are strictly FORBIDDEN from directly modifying `src/` or `tests/`.</step>
26
26
  <step n="2" name="Verify Prototype">CREATE a verification script from scratch or adapt the one already created during Triage. For `[Technical]` unknowns, run assertion-based verification to probe the prototype. For `[Functional]` unknowns, drive the interactive demo and inspect resulting UI/outputs and internal states. If desired behaviour verification fails or crashes, transition to OFF-TRACK 🟡 or BLOCKED 🔴 and try different approaches.</step>
27
- <step n="3" name="Iteration Loop">Continue the discovery, creation, and verification cycle until internal workings are deeply understood and verified. At each iteration, analyze the root cause of any failure or unexpected behavior encountered during demo or user feedback, document it in the slice's `## Key Unknowns` or `## Implementation Notes`, and propose a targeted fix. If the root cause is entangled with other concerns, create a smaller, focused sub-prototype in `spikes/prototypes/{scope-slug}/sub-{issue}/` to isolate and break down the exact issue before re-entering the main iteration loop. If root cause analysis reveals a new uncertainty not yet listed, `EDIT` the slice's `## Key Unknowns` to add the emerging item as `[ ] [Technical/Functional]`.</step>
27
+ <step n="3" name="Iteration Loop">Continue the discovery, creation, and verification cycle until internal workings are deeply understood and verified. At each iteration, analyze the root cause of any failure or unexpected behavior encountered during demo or user feedback, document it in the slice's `## Key Unknowns` or `## Implementation Notes`, and propose a targeted fix. If the root cause is entangled with other concerns, create a smaller, focused sub-prototype in `spikes/prototypes/{scope-slug}/sub-{issue}/` to isolate and break down the exact issue before re-entering the main iteration loop. You MUST resolve prototype/sandbox issues yourself using these focused sub-prototypes — never delegate throwaway sandbox code to the Debugger. If root cause analysis reveals a new uncertainty not yet listed, `EDIT` the slice's `## Key Unknowns` to add the emerging item as `[ ] [Formal/Technical/Functional]`.</step>
28
28
  </phase>
29
29
 
30
30
  <phase n="3" name="Showcase Gate">
@@ -42,12 +42,12 @@
42
42
  <step n="5" name="Impact Audit & Consistency Check">
43
43
  Use `EXECUTE git grep` on target components. If a component has >1 consumer (excluding its own definition), categorize it as a Shared Seam. You MUST decompose the plan into smaller, atomic deliverables if >1 consumer, layer, or logical change is affected. For Shared Seams, you MUST partition the plan into a non-breaking sequence (Contract/Expansion -> Migration -> Cleanup/Contraction). Ensure the plan follows the Deliverable Dependency Sequence. Resolve hits for deleted/renamed components in documentation and ensure all Contract/Seam changes have matching Harness deliverables.
44
44
  </step>
45
- <step n="6" 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>
45
+ <step n="6" 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 Vertical Slice; (3) Structural / cross-cutting — report it to the user for scheduling as a Vertical Slice in a Milestone during handoff. There is no `## Technical Debt` holding pen.</step>
46
46
  <step n="7" name="Link Reference Material">`EDIT` the `Vertical Slice`'s `Metadata` section to link the feature-specific prototype subfolder (e.g., `spikes/prototypes/{scope-slug}/`) in the `Prototype` field. Use a root-relative path, e.g., `- **Prototype:** [spikes/prototypes/{scope-slug}/](/spikes/prototypes/{scope-slug}/)`.</step>
47
47
  <step n="8" name="Cleanup">Delete any unapproved or broken spike files, preserving the approved feature-specific subfolder (containing the Probe script and shadow files). Run `git status` to verify.</step>
48
48
  <step n="9" name="Status Update">`EDIT` the `Vertical Slice` to ensure its `Status:` is set to `Planned` before handoff.</step>
49
49
  <step n="10" name="Final Requirements Sync">Perform a final requirements sync by ensuring the Vertical Slice and all modified specs accurately reflect the verified behavior and are in alignment with the user's expectations.</step>
50
- <step n="11" name="Alignment">Message the user with a summary of all changes made to the Vertical Slice and Component Docs. Do NOT proceed to Version Control without explicit user approval to commit.</step>
50
+ <step n="11" name="Proceed to Commit">Proceed directly to Phase 5 (Version Control). Do NOT insert a pre-commit approval gate — the Showcase Gate (Phase 3) was the single interactive checkpoint. Any remaining debt was triaged per Step 6 and is summarized in the terminal handoff Message (Phase 6).</step>
51
51
  </phase>
52
52
 
53
53
  <phase n="5" name="Version Control">
@@ -56,8 +56,8 @@
56
56
  </phase>
57
57
 
58
58
  <phase n="6" name="Conclusion">
59
- <goal>Execute handoff to the Developer.</goal>
60
- <step n="1" name="Handoff">Message the user to start a new session with the Developer, passing the finalized Vertical Slice and Prototype as context files.</step>
59
+ <goal>Emit a single terminal Message summarizing the work and handing off to the Developer.</goal>
60
+ <step n="1" name="Handoff">Emit ONE terminal Message to the user summarizing the updated Vertical Slice and Component Docs, and provide the Developer handoff command with the finalized Vertical Slice and Prototype as context files.</step>
61
61
  </phase>
62
62
  </workflow>
63
63
 
@@ -7,16 +7,17 @@ This section defines foundational engineering practices. Each entry MUST be a sp
7
7
  **Template format:** `- **Rule Name:** Description and enforcement mechanism.`
8
8
 
9
9
  ### Recommended: customize per project
10
- - **Version Control:** Branch strategy and commit conventions.
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.
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, test doubles policy, mock poisoning prevention, filesystem hygiene.
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.
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.
14
15
  - **Dependency Injection:** Constructor injection mandate; forbid Service Locator and global containers.
15
16
  - **Centralized Configuration:** Config file location, prohibition of magic numbers.
16
17
  - **CI Pipeline:** Two parallel jobs — 1) Blocking OS matrix test suite with strict test coverage targets. 2) Non-blocking (continue-on-error: true) quality checks running fast formatters, linters, security/secret scanners, type checkers, and repository-wide structural checks (excluding sandboxes and third-party dependencies).
17
18
  - **Pre-commit Hooks:** Scope (staged files only), required hooks (formatters, linters, type checkers, security scanners).
18
19
  - **Post-commit Execution:** Full test suite run on commit, automatic revert on failure.
19
- - **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a VCP commit, and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
20
+ - **Makefile Commands:** The `Makefile` is the canonical entry point for the VCP commit workflow and on-demand test runs. `make test` runs the full suite, `make commit '<msg>'` performs a VCP commit (it runs the pre-commit hooks once and commits with `--no-verify`, while the post-commit test gate remains unskippable), and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
20
21
 
21
22
  ### Pre-commit Quick-Start
22
23
 
@@ -22,11 +22,12 @@ Defines the high-level artifact lifecycle and conventions for project management
22
22
  - **Milestones:** `MM-name.md` (in `docs/project/milestones/`).
23
23
  - **Case Files (Debugger):** `NN-name.md` — numbered sequentially.
24
24
  - **Task Briefs:** `NN-name.md` (in `docs/project/tasks/`) — numbered sequentially.
25
- - **Ad-hoc work (not tied to a milestone):** `00-NN-name.md` — `00` is used as the Milestone prefix. Ad-hoc slices are NOT tracked in Milestone documents or the Roadmap.
25
+ - **Milestone 0 (bootstrapping) & Ad-hoc work (not tied to a milestone):** `00-NN-name.md` — `00` is used as the Milestone prefix for Milestone 0 bootstrapping slices and for ad-hoc slices. Ad-hoc slices are NOT tracked in Milestone documents or the Roadmap.
26
26
  - **Archiving Policy:** When and how completed artifacts are archived or deleted.
27
- - **Spec Organization:** Organize specification documents by lifecycle into two subfolders: `docs/project/specs/invariants/` (formats, contracts, and workflows of record — long-lived system invariants) and `docs/project/specs/features/` (to-be-implemented initiatives that feed the Spec → Milestone → Slice lifecycle — deleted per the Archiving Policy once implemented).
27
+ - **Spec Organization:** Specification documents live in a single flat directory `docs/project/specs/` and are reserved strictly for **permanent system invariants** — formats, contracts, protocols (e.g. the MRP), core data models, and non-negotiable architectural rules. Feature goals, requirements, and acceptance criteria belong in Milestone documents (`docs/project/milestones/`), not in specs. There is no ephemeral `specs/features/` lifecycle.
28
28
  - **Run Environment:** Specify the project's designated environment/dependency manager (e.g., `uv`, `poetry`, `pip`) and prefix ALL execution commands with its runner (e.g., `uv run pytest`). The chosen runner MUST be reflected in the `Makefile`.
29
29
  - **Build & Run Commands:** Document the standard commands in the project `Makefile` (see [docs/templates/makefile.md](docs/templates/makefile.md)). At minimum: `make test` (full suite), `make commit '<msg>'` (VCP), and `make probe '<reason>'` (Remote Probing Protocol).
30
+ - **Release Process:** Document how releases are cut. At minimum: (1) **Triage** the scope (patch/minor/major) from conventional commits since the last tag; (2) write **release notes** to `docs/project/releases/v<version>.md`; (3) bump the `version` field in the project manifest; (4) present the notes and version bump at an **approval gate**; (5) **commit** (`chore(release): bump version to <version>`) and **tag** (`git tag -a v<version>`); and (6) **publish** (e.g. create a GitHub Release). Adapt the concrete commands to the project's packaging and distribution channel.
30
31
 
31
32
  ## Templates
32
33
 
@@ -34,7 +35,7 @@ Before creating or modifying any documentation artifact, agents MUST read the co
34
35
 
35
36
  | Template | Purpose |
36
37
  | -------- | ------- |
37
- | `specification-document.md` | Specification documents (features and invariants) |
38
+ | `specification-document.md` | Specification documents (permanent system invariants) |
38
39
  | `milestone.md` | Milestone documents |
39
40
  | `vertical-slice.md` | Vertical slice definitions |
40
41
  | `component-design.md` | Component design documents (ports and contracts) |
@@ -75,15 +76,4 @@ A living list of upcoming Milestones and their high-level features.
75
76
  - **Post-commit Hook:** Implement a hook that runs the full test suite via `make test` and reverts the commit on failure (via `git reset --soft HEAD~1`, keeping changes staged). This is the unskippable safety net — `--no-verify` MUST NOT bypass it.
76
77
  - **Debug Workflow:** Create `.github/workflows/debug.yml` following [docs/templates/ci.md](docs/templates/ci.md) to enable the Remote Probing Protocol.
77
78
  - **Makefile:** Create a `Makefile` following [docs/templates/makefile.md](docs/templates/makefile.md) with `make commit`, `make probe`, and `make test` commands. `make commit` implements the VCP workflow, `make probe` implements the Debugger's Remote Probing Protocol, and `make test` runs the full suite on demand.
78
-
79
- ## Technical Debt
80
- Tracks known technical debt for future cleanup.
81
-
82
- **Format:** `- [Description including context and location of the debt item.]`
83
-
84
- **Logging Hygiene (MUST):**
85
- - **Never re-log the same debt.** If a debt item recurs across commits, fold the new occurrence into the existing entry — do NOT append a new bullet.
86
- - **Prefer fixing directly over logging.** Only log debt that genuinely cannot be resolved in the moment. Do not log-then-resolve a defect that could be fixed immediately.
87
- - **Never log resolved items.** Do not add "informational" or "completed" entries.
88
-
89
- **Deletion Policy:** When a technical debt item is addressed (the underlying issue is resolved in a completed milestone/slice), the entry MUST be deleted from this section. Do not mark it as "completed" or "resolved" — remove it entirely. Git history serves as the permanent record.
79
+ - **`.gitignore` Configuration:** Configure a project-tailored `.gitignore` covering language/OS cache files, build artifacts, virtual environments, and the transient `.tmp/` directory. The `spikes/` directory MUST remain tracked so prototypes and probes stay version-controlled.
@@ -10,7 +10,6 @@ and the Debugger's Remote Probing Protocol (RPP). Below are concrete examples ad
10
10
  ### Commit
11
11
  ```shell
12
12
  make commit 'feat(templates): add PROJECT.md template'
13
- make commit 'fix(tests): resolve flaky assertion' no-verify
14
13
  ```
15
14
 
16
15
  **What is `.PHONY`?**
@@ -88,17 +87,19 @@ test:
88
87
 
89
88
  ## VCP Commit Workflow
90
89
 
90
+ `make commit` runs the pre-commit hooks once (via `pre-commit run`) and re-stages any auto-formatted files, then commits with `--no-verify` to suppress Git's own redundant second invocation of the pre-commit hook. This skips ONLY the pre-commit stage — the post-commit test gate (`.githooks/post-commit.py`) is a separate hook and remains fully active and unskippable.
91
+
91
92
  ### Example
92
93
 
93
94
  ```makefile
94
- commit: ARGS := $(filter-out no-verify,$(filter-out commit,$(MAKECMDGOALS)))
95
+ commit: ARGS := $(filter-out commit,$(MAKECMDGOALS))
95
96
 
96
97
  commit:
97
- @[ -n "$(ARGS)" ] || { echo "Usage: make commit '<message>' [no-verify]"; exit 1; }
98
+ @[ -n "$(ARGS)" ] || { echo "Usage: make commit '<message>'"; exit 1; }
98
99
  git add .
99
100
  -pre-commit run
100
101
  git add .
101
- git commit -m "$(ARGS)" $(if $(filter no-verify,$(MAKECMDGOALS)),--no-verify,)
102
+ git commit -m "$(ARGS)" --no-verify
102
103
  -git pull --rebase
103
104
  -git push
104
105
 
@@ -108,7 +109,6 @@ commit:
108
109
 
109
110
  **Usage:**
110
111
  - `make commit 'feat(templates): add PROJECT.md template'`
111
- - `make commit 'fix(tests): resolve flaky assertion' no-verify`
112
112
 
113
113
  ## Remote Probing Protocol (RPP)
114
114
 
@@ -0,0 +1,29 @@
1
+ # Spec: {{invariant}}
2
+ - **Status:** Active
3
+
4
+ > **Scope:** This template codifies **permanent system invariants** only — stable formats, contracts, protocols (e.g. the MRP), core data models, and non-negotiable architectural rules of record. It is NOT for feature goals, requirements, or acceptance criteria; those belong in Milestone documents (`docs/project/milestones/`) and Vertical Slices.
5
+
6
+ ## Overview / Problem Statement
7
+
8
+ **Format:** 2-3 paragraphs describing the invariant being codified, why it exists, and what it guarantees.
9
+ Context for the invariant, the contract it establishes, and the risk it mitigates.
10
+
11
+ ## Guiding Principles / Core Logic
12
+
13
+ **Format:** Bulleted list. Each entry: `- **Principle:** Description and how it constrains design decisions.`
14
+ Foundational rules, engineering philosophy, or logical constraints.
15
+
16
+ ## Technical Specification
17
+
18
+ **Format:** Use sub-sections as needed. Include:
19
+ - Data models / contracts (tables or code blocks)
20
+ - File paths and directory structures
21
+ - Workflow diagrams (Mermaid) where applicable
22
+ - Algorithm descriptions
23
+ - Configuration options
24
+ Detailed logic, file formats, directory structures, or workflow diagrams (Mermaid).
25
+
26
+ ## Guidelines
27
+
28
+ **Format:** Bulleted or numbered list of rules for conforming to and evolving this invariant. Each entry should constrain design decisions, not prescribe specific implementation.
29
+ Conformance requirements and the process for amending the invariant.
@@ -29,7 +29,11 @@ Then [expected outcome]
29
29
 
30
30
  ## Key Unknowns
31
31
 
32
- **Format:** Checklist of unresolved risks. Tags: `[Technical]` for code/architecture, `[Functional]` for behavior/UX. Mark as `[x]` when resolved.
32
+ **Format:** Checklist of unresolved risks, each tagged with one of three tiers. Mark as `[x]` when resolved.
33
+ - `[Formal]` — Ambiguities in business rules, policy decisions, domain definitions, or scope boundaries. Resolve by asking the user directly in an alignment turn; speculative coding or prototyping for formal questions is forbidden.
34
+ - `[Technical]` (works-like) — External dependencies, third-party libraries, APIs, runtime performance, concurrency, or data-storage feasibility. Resolve via automated assertion probes and benchmarks.
35
+ - `[Functional]` (looks-like) — User-facing ergonomics, CLI flags, terminal rendering, interactive flows, or layout aesthetic. Resolve via interactive demo runners with configurable knobs.
36
+
33
37
  - [ ] [Tag] Title: Description of the unknown.
34
38
 
35
39
  ## Implementation Plan
@@ -1,27 +0,0 @@
1
- # Spec: {{feature}}
2
- - **Status:** Active
3
-
4
- ## Overview / Problem Statement
5
-
6
- **Format:** 2-3 paragraphs describing the problem being solved, why existing solutions are insufficient, and what makes this approach valuable.
7
- Core problem, context, and value proposition.
8
-
9
- ## Guiding Principles / Core Logic
10
-
11
- **Format:** Bulleted list. Each entry: `- **Principle:** Description and how it constrains design decisions.`
12
- Foundational rules, engineering philosophy, or logical constraints.
13
-
14
- ## Technical Specification
15
-
16
- **Format:** Use sub-sections as needed. Include:
17
- - Data models / contracts (tables or code blocks)
18
- - File paths and directory structures
19
- - Workflow diagrams (Mermaid) where applicable
20
- - Algorithm descriptions
21
- - Configuration options
22
- Detailed logic, file formats, directory structures, or workflow diagrams (Mermaid).
23
-
24
- ## Guidelines
25
-
26
- **Format:** Bulleted or numbered list of actionable guidelines. Each entry should guide decision-making, not prescribe specific implementation.
27
- High-level phasing, sequencing, and technical strategy for the Architect.