teddy-cli 0.1.17.dev1277__tar.gz → 0.1.17.dev1279__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.
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/PKG-INFO +1 -1
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/pyproject.toml +1 -1
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/MRP.xml +1 -1
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/architect.xml +2 -2
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/assistant.xml +1 -1
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/debugger.xml +1 -1
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/developer.xml +5 -4
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/ARCHITECTURE.md +68 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/templates/PROJECT.md +18 -23
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/case-file.md +35 -0
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/component-design.md +38 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/templates/makefile.md +19 -12
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/milestone.md +17 -0
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/specification-document.md +12 -0
- teddy_cli-0.1.17.dev1279/src/teddy_executor/resources/templates/vertical-slice.md +76 -0
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/ARCHITECTURE.md +0 -57
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/case-file.md +0 -49
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/component-design.md +0 -45
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/milestone.md +0 -23
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/specification-document.md +0 -29
- teddy_cli-0.1.17.dev1277/src/teddy_executor/resources/templates/vertical-slice.md +0 -65
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/.gitignore +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/LICENSE +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/__main__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/suppressed_logging.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/terminal_quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/container.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/change_set.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/drift_report.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/plan.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/project_context.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/session.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/init.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/quit_key_listener.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_executor.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_factory.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/context_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/edit_simulator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/init_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/parser_metadata.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/parser_reporting.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/plan_validator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/planning_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/prompt_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_planner.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_replanner.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_repository.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/session_service.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/update_checker.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/diff.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/interrupt_guard.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/io.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/markdown.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/paths.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/serialization.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/stdin_ownership.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/string.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/core/utils/terminal.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/prompts.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/registries/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/registries/infrastructure.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/registries/reviewer.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/registries/validators.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/__init__.py +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/config.yaml +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/init.context +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/templates/ci.md +0 -0
- {teddy_cli-0.1.17.dev1277 → teddy_cli-0.1.17.dev1279}/src/teddy_executor/resources/templates/pre-commit.md +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "teddy-cli"
|
|
3
|
-
version = "0.1.17.
|
|
3
|
+
version = "0.1.17.dev1279"
|
|
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" }
|
|
@@ -51,7 +51,7 @@ NOTES:
|
|
|
51
51
|
3. Execution: Run `make commit '<type>(<scope>): <description>'`. This stages all local changes (`git add .`) and runs Git's local hooks before committing.
|
|
52
52
|
4. Post-conditions: All tests MUST pass: the post-commit hook reverts automatically on failure and cannot be bypassed.
|
|
53
53
|
5. Push at Conclusion: In the Conclusion phase, run `make push` to rebase and push.
|
|
54
|
-
6. If needed: to verify remote CI run `make ci-watch` to monitor workflow runs and to inspect results: use `make logs <run-id> '<step-name>'` for full logs.
|
|
54
|
+
6. If needed: to verify remote CI 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.
|
|
55
55
|
</rule>
|
|
56
56
|
|
|
57
57
|
<rule n="7" name="Standardized Plan Types">
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
|
|
18
18
|
<phase n="2" name="Design">
|
|
19
19
|
<goal>Codify strategic decisions and design the single next vertical slice.</goal>
|
|
20
|
-
<step n="1" name="Milestone Management">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
|
|
20
|
+
<step n="1" name="Milestone Management">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.</step>
|
|
21
21
|
<step n="2" name="Targeted Integrity Audit">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.</step>
|
|
22
22
|
<step n="3" name="Draft Component Designs">CREATE or EDIT draft design docs for affected components. Focus strictly on strategic intent, purpose, conceptual Port responsibilities, operations, and invariants. Enforce Test Double Integrity (Ban Global Patching) and avoid leaky abstractions. Leave concrete typing and internal implementation details to the Developer. Transition updated existing docs to Refactoring status.</step>
|
|
23
23
|
<step n="4" name="Architecture Maintenance">Update the Component and Boundary Map and Key Architectural Decisions in `docs/architecture/ARCHITECTURE.md` to reflect the design.</step>
|
|
24
24
|
<step n="5" name="Delta Analysis">Use EXECUTE `git grep` and READ on all targeted components, contracts, interfaces, and DTOs. Catalog the delta: skip work that already exists, note remaining work for partially implemented pieces, and add only truly missing pieces as deliverables. Never create deliverables for code that demonstrably exists.</step>
|
|
25
|
-
<step n="6" name="Create Slice">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.
|
|
25
|
+
<step n="6" name="Create Slice">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.</step>
|
|
26
26
|
<step n="7" name="Impact Audit">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.</step>
|
|
27
27
|
</phase>
|
|
28
28
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<phase n="1" name="Execution">
|
|
11
11
|
<goal>Execute the task immediately via an iterative loop: make minimal verifiable progress, verify, then repeat until the task is complete.</goal>
|
|
12
12
|
<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 prioritize incremental steps rather than implementing everything before verification.</step>
|
|
13
|
-
<step n="2" name="Verify">After each round of progress, verify correctness immediately. Use EXECUTE `git grep` to check upstream consumers and downstream dependencies.
|
|
13
|
+
<step n="2" name="Verify">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.</step>
|
|
14
14
|
<step n="3" name="Iterate">Assess whether the current task is complete. If more work is needed, return to Make Minimal Verifiable Progress. If the task is complete, advance to the Alignment phase.</step>
|
|
15
15
|
</phase>
|
|
16
16
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<phase n="1" name="Reproduction">
|
|
10
10
|
<goal>Gather context and build or verify an end-to-end Minimal Reproducible Example (MRE).</goal>
|
|
11
11
|
<step n="1" name="Case File Check">If a Case File was not provided in the initial context, READ `docs/templates/case-file.md` and CREATE one following that template.</step>
|
|
12
|
-
<step n="2" name="Context and History Gathering">Use EXECUTE `git grep`, EXECUTE `git log`, READ, and RESEARCH to understand the codebase, recent changes, and identify the last known green CI run or commit. For historical CI failures, do not try to read the entire log
|
|
12
|
+
<step n="2" name="Context and History Gathering">Use EXECUTE `git grep`, EXECUTE `git log`, READ, and RESEARCH to understand the codebase, recent changes, and identify the last known green CI run or commit. For historical CI failures, do not try to read the entire log: extract failed step logs by executing `make logs [ID]` (for all failed steps) or `make logs [ID] '[STEP_NAME]'` (for a specific step).</step>
|
|
13
13
|
<step n="3" name="Diagnostic MRE and Platform Check">
|
|
14
14
|
Trigger the symptom: if an existing command, test, or CI failure exists, execute it to observe the failure live. If the bug is reported verbally or without an existing test, write a targeted probe script in `spikes/debug/{scope-slug}/` to trigger the symptom.
|
|
15
15
|
|
|
@@ -24,10 +24,11 @@
|
|
|
24
24
|
<phase n="2" name="Implementation">
|
|
25
25
|
<goal>Satisfy the current deliverable requirements via Just-In-Time implementation without overbuilding.</goal>
|
|
26
26
|
<step n="1" name="Red">
|
|
27
|
-
Map the current deliverable type to its
|
|
28
|
-
Acceptance
|
|
29
|
-
Integration
|
|
30
|
-
Unit
|
|
27
|
+
Map the current deliverable type to its verification strategy:
|
|
28
|
+
1. Wiring (Acceptance, `tests/suites/acceptance/`): MUST establish the End-to-End Skeleton Wiring Tracer Bullet. Drive the public outermost entry point expecting final success.
|
|
29
|
+
2. Harness / Migration (Integration, `tests/suites/integration/`): Modifying shared test infrastructure (drivers, observers, fakes) or adapting callers.
|
|
30
|
+
3. Contract / Logic / Refactor / Cleanup (Unit, `tests/suites/unit/`): Isolated core logic covering granular edge cases and invariants.
|
|
31
|
+
4. Env (Declarative / Tooling): For purely declarative files (Makefile, CI workflows, hooks, .gitignore), do NOT write throwaway test scripts. The Red step is executing the target CLI command directly via EXECUTE to observe failure/absence; the Green step is applying the declarative change and observing it succeed.
|
|
31
32
|
|
|
32
33
|
Create or locate the appropriate test file. Set up the test function using the Test Harness (Setup: Fixtures and Arrange, Driver: Act, Observer: Assert). Use parameterized tests for data permutations.
|
|
33
34
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# System Architecture: {{project_name}}
|
|
2
|
+
|
|
3
|
+
## Conventions & Standards
|
|
4
|
+
|
|
5
|
+
This section defines foundational engineering practices. Each entry MUST be a specific, enforceable rule.
|
|
6
|
+
|
|
7
|
+
**Template format:** `- **Rule Name:** Description and enforcement mechanism.`
|
|
8
|
+
|
|
9
|
+
### Recommended: customize per project
|
|
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
|
+
- **Run Environment:** Designated runner (e.g., `uv run`, `poetry run`).
|
|
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.
|
|
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
|
+
- **Dependency Injection:** Constructor injection mandate; forbid Service Locator and global containers.
|
|
16
|
+
- **Centralized Configuration:** Config file location, prohibition of magic numbers.
|
|
17
|
+
- **Continuous Integration & Remote Diagnostics:** Parallel CI jobs: 1) Blocking OS matrix test suite. 2) Non-blocking (`continue-on-error: true`) quality checks running fast formatters, linters, security scanners, type checkers, and repository-wide structural checks. Platform-specific and CI-only issues are investigated via the Remote Probing Protocol (`make probe '<reason>'`). See [docs/templates/ci.md](docs/templates/ci.md).
|
|
18
|
+
- **Local Quality Gates (Pre-commit & Post-commit):** Local pre-commit hooks MUST stay fast, checking only staged files (formatters, secret detection, merge conflict markers). Heavy, false-positive-prone checks run non-blocking in CI. The full test suite runs via the post-commit hook (`.githooks/post-commit.py`) as an unskippable safety net, reverting automatically on failure. See [docs/templates/pre-commit.md](docs/templates/pre-commit.md).
|
|
19
|
+
- **Diagnostic Instrumentation:** High-value diagnostics MUST use zero-cost language-native dead-code elimination (e.g. `if __debug__:`) and Composition Root toggles; mid-logic environment checks are forbidden.
|
|
20
|
+
- **Experimental Code:** The `spikes/` directory is reserved for rapid, isolated experimentation (`debug/`, `prototypes/`, `showcases/`) and is explicitly excluded from all quality gates (linters, type checkers, test suites).
|
|
21
|
+
- **Directory Conventions:**
|
|
22
|
+
`docs/architecture/BOUNDARY/LAYER/TYPE/name.md` -> Source path: `src/{pkg}/BOUNDARY/LAYER/TYPE/name.ext` -> Test path: `tests/suites/TEST_TYPE/BOUNDARY/LAYER/TYPE/test_name.ext`
|
|
23
|
+
- **Makefile Commands:** The `Makefile` is the canonical entry point for the version control workflow and on-demand test runs: `make test` (full suite), `make commit '<msg>'` (local commit with advisory auto-fix and unskippable post-commit test gate), `make push` (rebase and push), `make ci-watch` (CI monitoring), and `make probe '<reason>'` (Remote Probing Protocol). See [docs/templates/makefile.md](docs/templates/makefile.md).
|
|
24
|
+
|
|
25
|
+
## Component & Boundary Map
|
|
26
|
+
|
|
27
|
+
Single source of truth for system structure, organized by architectural layer.
|
|
28
|
+
|
|
29
|
+
### Hexagonal Core
|
|
30
|
+
Domain entities, value objects, ports, and orchestrating services.
|
|
31
|
+
|
|
32
|
+
| Component | Description | Contract |
|
|
33
|
+
| ----------------- | ------------------------------- | -------------------------------------------- |
|
|
34
|
+
| **ComponentName** | One-line responsibility summary | [Link to design doc](./path/to/component.md) |
|
|
35
|
+
|
|
36
|
+
### Inbound Adapters (Driving)
|
|
37
|
+
Entry points initiating calls into the core (CLI, Web UI, API controllers, message consumers).
|
|
38
|
+
|
|
39
|
+
| Component | Description | Contract |
|
|
40
|
+
| ----------------- | ------------------------------- | -------------------------------------------- |
|
|
41
|
+
| **ComponentName** | One-line responsibility summary | [Link to design doc](./path/to/component.md) |
|
|
42
|
+
|
|
43
|
+
### Outbound Adapters (Driven)
|
|
44
|
+
Infrastructure implementations fulfilling outbound port contracts (file system, database, external APIs, shell).
|
|
45
|
+
|
|
46
|
+
| Component | Description | Contract |
|
|
47
|
+
| ----------------- | ------------------------------- | -------------------------------------------- |
|
|
48
|
+
| **ComponentName** | One-line responsibility summary | [Link to design doc](./path/to/component.md) |
|
|
49
|
+
|
|
50
|
+
### Test Harness
|
|
51
|
+
Test drivers, observers, shared fakes, and test setup fixtures.
|
|
52
|
+
|
|
53
|
+
| Component | Description | Contract |
|
|
54
|
+
| ----------------- | ------------------------------- | -------------------------------------------- |
|
|
55
|
+
| **ComponentName** | One-line responsibility summary | [Link to design doc](./path/to/component.md) |
|
|
56
|
+
|
|
57
|
+
Each Contract column links to the Component Design Document or Interface definition.
|
|
58
|
+
|
|
59
|
+
## Key Architectural Decisions
|
|
60
|
+
|
|
61
|
+
A living "System Law" document capturing explicit, prescriptive design decisions.
|
|
62
|
+
|
|
63
|
+
**Template format:** `- **Subject:** Strict Rule. (Rationale.)`
|
|
64
|
+
|
|
65
|
+
### Rules for this section:
|
|
66
|
+
- Each entry MUST be a single enforceable rule with a brief rationale.
|
|
67
|
+
- Add new entries as decisions are made; never remove without deprecation notice.
|
|
68
|
+
- Note exceptions explicitly with their rationale.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Project: {{project_name}}
|
|
1
|
+
# Project Dashboard: {{project_name}}
|
|
2
2
|
|
|
3
3
|
## Product Vision
|
|
4
4
|
The overarching goals, target audience, unique value proposition, and major future directions for the product.
|
|
@@ -23,8 +23,7 @@ Defines the high-level artifact lifecycle and conventions for project management
|
|
|
23
23
|
- **Case Files (Debugger):** `NN-name.md` — numbered sequentially.
|
|
24
24
|
- **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.
|
|
25
25
|
- **Archiving Policy:** When and how completed artifacts are archived or deleted.
|
|
26
|
-
- **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.
|
|
27
|
-
- **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`.
|
|
26
|
+
- **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.
|
|
28
27
|
- **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), `make push`, `make ci-watch` (CI monitoring), and `make probe '<reason>'` (Remote Probing Protocol).
|
|
29
28
|
- **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
29
|
|
|
@@ -32,18 +31,18 @@ Defines the high-level artifact lifecycle and conventions for project management
|
|
|
32
31
|
|
|
33
32
|
Before creating or modifying any documentation artifact, agents MUST read the corresponding template from `docs/templates/`. The bundled templates are:
|
|
34
33
|
|
|
35
|
-
| Template
|
|
36
|
-
|
|
|
37
|
-
| `specification-document.md` | Specification documents (permanent system invariants)
|
|
38
|
-
| `milestone.md`
|
|
39
|
-
| `vertical-slice.md`
|
|
40
|
-
| `component-design.md`
|
|
41
|
-
| `case-file.md`
|
|
42
|
-
| `PROJECT.md`
|
|
43
|
-
| `ARCHITECTURE.md`
|
|
44
|
-
| `makefile.md`
|
|
45
|
-
| `ci.md`
|
|
46
|
-
| `pre-commit.md`
|
|
34
|
+
| Template | Purpose |
|
|
35
|
+
| --------------------------- | --------------------------------------------------------------------- |
|
|
36
|
+
| `specification-document.md` | Specification documents (permanent system invariants) |
|
|
37
|
+
| `milestone.md` | Milestone documents |
|
|
38
|
+
| `vertical-slice.md` | Vertical slice definitions |
|
|
39
|
+
| `component-design.md` | Component design documents (ports and contracts) |
|
|
40
|
+
| `case-file.md` | Debugger case files |
|
|
41
|
+
| `PROJECT.md` | This project dashboard |
|
|
42
|
+
| `ARCHITECTURE.md` | System architecture document |
|
|
43
|
+
| `makefile.md` | Makefile (VCP commit + Remote Probing Protocol commands) |
|
|
44
|
+
| `ci.md` | CI workflow template (debug workflow for the Remote Probing Protocol) |
|
|
45
|
+
| `pre-commit.md` | Pre-commit framework setup (pre-commit + post-commit test gate) |
|
|
47
46
|
|
|
48
47
|
These files live in `docs/templates/` and are created or refreshed by `teddy init templates`.
|
|
49
48
|
|
|
@@ -65,13 +64,9 @@ A living list of upcoming Milestones and their high-level features.
|
|
|
65
64
|
```
|
|
66
65
|
|
|
67
66
|
### Milestone 0: Project Bootstrapping [PLANNED]
|
|
68
|
-
- **Core Goal:** Establish
|
|
67
|
+
- **Core Goal:** Establish foundational infrastructure for testing, quality gates, and automated delivery.
|
|
69
68
|
- **Specs:** N/A — Milestone 0 is self-defining.
|
|
70
69
|
- **Requirements:**
|
|
71
|
-
- **Testing
|
|
72
|
-
- **
|
|
73
|
-
- **
|
|
74
|
-
- **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.
|
|
75
|
-
- **Debug Workflow:** Create `.github/workflows/debug.yml` following [docs/templates/ci.md](docs/templates/ci.md) to enable the Remote Probing Protocol.
|
|
76
|
-
- **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.
|
|
77
|
-
- **`.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.
|
|
70
|
+
- **Testing & Tooling Entry Points:** Configure the test runner (`pytest`) exposed via `make test`, along with standard `Makefile` targets (`make commit`, `make push`, `make ci-watch`, `make probe`). Configure project `.gitignore` keeping `spikes/` tracked.
|
|
71
|
+
- **Local Quality Gates:** Install Pre-commit with fast local hooks (formatters, secret detection, merge conflict checks) and the unskippable post-commit test gate (`.githooks/post-commit.py`) that runs `make test` and reverts on failure.
|
|
72
|
+
- **CI/CD & Remote Diagnostics:** Set up parallel GitHub Actions jobs: 1) Blocking OS matrix test suite. 2) Non-blocking quality checks. Configure `.github/workflows/debug.yml` for the Remote Probing Protocol.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Bug: {{bug_title}}
|
|
2
|
+
- **Status:** Unresolved
|
|
3
|
+
- **Milestone:** [link or N/A]
|
|
4
|
+
- **Vertical Slice:** [link or N/A]
|
|
5
|
+
- **Specs:** [links or N/A]
|
|
6
|
+
|
|
7
|
+
## Symptoms
|
|
8
|
+
Expected vs. actual behavior and minimal reproduction steps.
|
|
9
|
+
|
|
10
|
+
## Context & Scope
|
|
11
|
+
### Regressing Delta
|
|
12
|
+
Git commit hash, file paths, and line numbers of the regressing change.
|
|
13
|
+
|
|
14
|
+
### Environmental Triggers
|
|
15
|
+
OS, runtime version, environment variables, or specific configurations required to reproduce.
|
|
16
|
+
|
|
17
|
+
### Ruled Out
|
|
18
|
+
Components, modules, or hypotheses definitively eliminated during investigation.
|
|
19
|
+
|
|
20
|
+
## Diagnostic Analysis
|
|
21
|
+
### Causal Model
|
|
22
|
+
Concise description of how the faulty system operates based strictly on verified observations.
|
|
23
|
+
|
|
24
|
+
### Discrepancies
|
|
25
|
+
<!-- Check off items and append `(Resolved: <explanation>)` ONLY once verified. Do NOT add resolution before proof. -->
|
|
26
|
+
- [ ] Discrepancy between expected and observed behavior.
|
|
27
|
+
- [x] Discrepancy between expected and observed behavior (Resolved: explanation of root cause).
|
|
28
|
+
|
|
29
|
+
### Investigation History
|
|
30
|
+
Continuously log diagnostic attempts and findings in chronological order:
|
|
31
|
+
1. Investigated whether [hypothesis] by [action/probe]; observed [outcome], which [conclusion].
|
|
32
|
+
2. Investigated whether [hypothesis] by [action/probe]; observed [outcome], which [conclusion].
|
|
33
|
+
|
|
34
|
+
## Solution
|
|
35
|
+
Root cause summary, verified sandbox fix, and systemic preventative measures to eliminate this bug class globally.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Component Design: {{component_name}}
|
|
2
|
+
- **Status:** [Planned | Implemented | Refactoring]
|
|
3
|
+
- **Source:** [`src/path/to/file.ext`](/src/path/to/file.ext)
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
1-2 sentences summarizing the core responsibility and boundary role of this component.
|
|
7
|
+
|
|
8
|
+
## Consumers
|
|
9
|
+
Upstream callers, controllers, or services that depend on or invoke this component:
|
|
10
|
+
- [`CallerComponent`](./path/to/caller.md): Invokes this component to execute [workflow/operation].
|
|
11
|
+
|
|
12
|
+
## Dependencies
|
|
13
|
+
Downstream components, outbound ports, or external libraries required by this component:
|
|
14
|
+
- [`DependencyComponent`](./path/to/dependency.md): Injected via constructor to fulfill [outbound operation].
|
|
15
|
+
|
|
16
|
+
## Class Invariants
|
|
17
|
+
Conditions that must hold true throughout the component lifecycle. If stateless, state: `None — stateless component.`
|
|
18
|
+
- `invariant_statement`: description of condition.
|
|
19
|
+
|
|
20
|
+
## Inbound Ports
|
|
21
|
+
Use-case interfaces or API signatures this component exposes to consumers:
|
|
22
|
+
- **`PortName`**: Signature and operations provided.
|
|
23
|
+
|
|
24
|
+
## Outbound Ports
|
|
25
|
+
Dependency contracts this component requires injected:
|
|
26
|
+
- **`PortName`**: Signature and operations consumed.
|
|
27
|
+
|
|
28
|
+
## Data Contracts
|
|
29
|
+
Data transfer objects, schemas, payloads, or immutable models managed or exchanged by this component:
|
|
30
|
+
- **`DtoOrPayloadName`**: Structure, fields, types, and constraints.
|
|
31
|
+
|
|
32
|
+
## Operations
|
|
33
|
+
Public method specifications. Avoid pseudocode; specify signatures, preconditions, postconditions, and error modes:
|
|
34
|
+
|
|
35
|
+
### `method_name(args) -> ReturnType`
|
|
36
|
+
- **Preconditions:** What must hold before calling (validated via guard clauses or runtime assertions).
|
|
37
|
+
- **Postconditions:** What is guaranteed upon successful return.
|
|
38
|
+
- **Exceptions:** Specific exceptions raised when preconditions or operations fail (never generic or swallowed errors).
|
|
@@ -46,11 +46,12 @@ The Remote Probing Protocol requires a reason string because it is passed as the
|
|
|
46
46
|
|
|
47
47
|
### Logs
|
|
48
48
|
```shell
|
|
49
|
-
make logs 12345
|
|
49
|
+
make logs 12345 # extract logs for ALL failed steps
|
|
50
|
+
make logs 12345 'Run tests' # extract logs for a specific step (substring match)
|
|
50
51
|
```
|
|
51
52
|
|
|
52
|
-
**
|
|
53
|
-
The first argument is the GitHub Actions run ID (as shown by `gh run list`)
|
|
53
|
+
**How does `make logs` work?**
|
|
54
|
+
The first argument is the GitHub Actions run ID (as shown by `gh run list`). If invoked without a second argument, it extracts and formats logs for **all failed steps** using `gh run view --log-failed`. An optional second argument filters down to a specific step using substring matching, stripping ANSI escapes and GitHub boilerplate so you see the failure without noise. See [CI Log Extraction](#ci-log-extraction).
|
|
54
55
|
|
|
55
56
|
## Probe Script
|
|
56
57
|
|
|
@@ -204,7 +205,8 @@ ci-watch:
|
|
|
204
205
|
if [ -n "$$NEWSTEPS" ]; then \
|
|
205
206
|
echo "$$WF: failing step(s): $$NEWSTEPS (run $$NEW)"; \
|
|
206
207
|
gh run view "$$NEW" --log-failed 2>/dev/null | awk -F'\t' '{ l=$$3; p=index(l,"Z "); if(p>0)l=substr(l,p+2); gsub(/\x1B\[[0-9;]*[a-zA-Z]/,"",l); gsub(/\^\[\[[0-9;]*[a-zA-Z]/,"",l); if(l ~ /^##\[group\]/ || l ~ /^##\[endgroup\]/) next; gsub(/^##\[error\]/,"Error: ",l); print l }' | tail -n $(DETAIL_LINES) | sed 's/^/ /'; \
|
|
207
|
-
echo "
|
|
208
|
+
echo " view all failed logs: make logs $$NEW"; \
|
|
209
|
+
echo " view specific step: make logs $$NEW '<step-name>'"; \
|
|
208
210
|
fi; \
|
|
209
211
|
if [ "$$NEWCONC" != "failure" ]; then \
|
|
210
212
|
if [ -n "$$NEWFAIL" ]; then \
|
|
@@ -267,7 +269,7 @@ probe:
|
|
|
267
269
|
|
|
268
270
|
## CI Log Extraction
|
|
269
271
|
|
|
270
|
-
The Debugger's Reproduction phase needs to read
|
|
272
|
+
The Debugger's Reproduction phase needs to read CI logs without drowning in the full run output. The `make logs` target wraps the `gh run view` pipeline, strips ANSI escapes, and removes GitHub's `##[group]`/`##[endgroup]` boilerplate.
|
|
271
273
|
|
|
272
274
|
### Example
|
|
273
275
|
|
|
@@ -276,21 +278,26 @@ logs: LOGS_RUN := $(word 2,$(MAKECMDGOALS))
|
|
|
276
278
|
logs: LOGS_STEP := $(wordlist 3,99,$(MAKECMDGOALS))
|
|
277
279
|
|
|
278
280
|
logs:
|
|
279
|
-
@[ -n "$(LOGS_RUN)" ] || { echo "Usage: make logs <run-id> '<step-name>'"; exit 1; }
|
|
280
|
-
@
|
|
281
|
+
@[ -n "$(LOGS_RUN)" ] || { echo "Usage: make logs <run-id> ['<step-name>']"; exit 1; }
|
|
282
|
+
@if [ -z "$(LOGS_STEP)" ]; then \
|
|
283
|
+
gh run view "$(LOGS_RUN)" --log-failed 2>/dev/null | awk -F'\t' '{ if(j!=$$1||s!=$$2){j=$$1;s=$$2;print "\n["j" > "s"]"} l=$$3; p=index(l,"Z "); if(p>0)l=substr(l,p+2); gsub(/\x1B\[[0-9;]*[a-zA-Z]/,"",l); gsub(/\^\[\[[0-9;]*[a-zA-Z]/,"",l); if(l ~ /^##\[group\]Run /){k=1;next} if(k && l ~ /^##\[endgroup\]/){k=0;next} if(k)next; if(l ~ /^##\[group\]/ || l ~ /^##\[endgroup\]/)next; gsub(/^##\[error\]/,"Error: ",l); print l }'; \
|
|
284
|
+
else \
|
|
285
|
+
gh run view "$(LOGS_RUN)" --log 2>/dev/null | awk -F'\t' -v step="$(LOGS_STEP)" 'index($$2, step) > 0 { if(j!=$$1||s!=$$2){j=$$1;s=$$2;print "\n["j" > "s"]"} l=$$3; p=index(l,"Z "); if(p>0)l=substr(l,p+2); gsub(/\x1B\[[0-9;]*[a-zA-Z]/,"",l); gsub(/\^\[\[[0-9;]*[a-zA-Z]/,"",l); if(l ~ /^##\[group\]Run /){k=1;next} if(k && l ~ /^##\[endgroup\]/){k=0;next} if(k)next; if(l ~ /^##\[group\]/ || l ~ /^##\[endgroup\]/)next; gsub(/^##\[error\]/, "Error: ", l); print l }'; \
|
|
286
|
+
fi
|
|
281
287
|
|
|
282
288
|
%:
|
|
283
289
|
@:
|
|
284
290
|
```
|
|
285
291
|
|
|
286
292
|
**Usage:**
|
|
287
|
-
- `make logs 12345
|
|
288
|
-
-
|
|
293
|
+
- `make logs 12345` — extract logs for ALL failed steps from run `12345`.
|
|
294
|
+
- `make logs 12345 'Run tests'` — extract logs for a specific step (substring match) from run `12345`.
|
|
289
295
|
|
|
290
296
|
**How it works:**
|
|
291
|
-
- `$(word 2,$(MAKECMDGOALS))` takes the run ID and `$(wordlist 3,99,$(MAKECMDGOALS))`
|
|
292
|
-
-
|
|
293
|
-
-
|
|
297
|
+
- `$(word 2,$(MAKECMDGOALS))` takes the run ID and `$(wordlist 3,99,$(MAKECMDGOALS))` captures any optional step name.
|
|
298
|
+
- When no step name is provided, `gh run view --log-failed` is used so only failed steps are fetched and printed with `[job > step]` headers.
|
|
299
|
+
- When a step name is supplied, `index($2, step) > 0` performs substring matching against column 2.
|
|
300
|
+
- Timestamps and ANSI escapes are stripped, and `##[error]` lines are prefixed with `Error: `.
|
|
294
301
|
|
|
295
302
|
## Implementation Notes
|
|
296
303
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Milestone: {{milestone_title}}
|
|
2
|
+
- **Status:** [Planned | In Progress | Completed]
|
|
3
|
+
- **Specs:** [links]
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
Problem definition and core objectives.
|
|
7
|
+
|
|
8
|
+
## Proposed Solution
|
|
9
|
+
Technical architecture, selected patterns, and trade-offs.
|
|
10
|
+
|
|
11
|
+
## Guidelines
|
|
12
|
+
Actionable strategy, architectural boundaries, and test harness considerations.
|
|
13
|
+
|
|
14
|
+
## Vertical Slices
|
|
15
|
+
<!-- Decompose into end-to-end vertical slices cutting across all layers; do not slice horizontally by technical layer. -->
|
|
16
|
+
- [ ] {{MM-NN}}: [Slice Title] — [Tackles Req X: brief scope statement]
|
|
17
|
+
- [ ] {{MM-NN}}: [Slice Title] — [Tackles Req Y: brief scope statement]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Spec: {{invariant}}
|
|
2
|
+
- **Status:** Active
|
|
3
|
+
|
|
4
|
+
## Overview
|
|
5
|
+
Context for the permanent system invariant, the contract it establishes, and the architectural risk it mitigates.
|
|
6
|
+
|
|
7
|
+
## Guiding Principles
|
|
8
|
+
Foundational rules and philosophical constraints governing this specification.
|
|
9
|
+
- **PrincipleName:** Description of constraint and how it binds design decisions.
|
|
10
|
+
|
|
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.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Slice: {{feature_name}}
|
|
2
|
+
- **Status:** [Planned | In Progress | Completed]
|
|
3
|
+
- **Milestone:** [link]
|
|
4
|
+
- **Specs:** [links]
|
|
5
|
+
- **Prototype:** [link]
|
|
6
|
+
- **Component Docs:** [links]
|
|
7
|
+
- **Scope Slug:** `feature-slug` <!-- 1-2 kebab-case words only. -->
|
|
8
|
+
|
|
9
|
+
## Business Goal
|
|
10
|
+
1-2 sentences describing the user need and measurable value delivered by this slice.
|
|
11
|
+
|
|
12
|
+
## Scenarios
|
|
13
|
+
> As a [user type], I want to [action] so that [benefit].
|
|
14
|
+
|
|
15
|
+
```gherkin
|
|
16
|
+
Given [precondition]
|
|
17
|
+
When [action]
|
|
18
|
+
Then [expected outcome]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Edge Cases
|
|
22
|
+
- **Title**: If [condition], then [behavior], because [reason/invariant].
|
|
23
|
+
|
|
24
|
+
## Key Unknowns
|
|
25
|
+
|
|
26
|
+
**Taxonomy:**
|
|
27
|
+
- `[Domain]` = Ambiguities in business rules, policy decisions, domain definitions, or scope boundaries. Resolve by asking the user directly.
|
|
28
|
+
- `[Technical]` = External dependencies, third-party libraries, APIs, runtime performance, concurrency, or data-storage feasibility. Resolve via automated assertion probes in `spikes/`.
|
|
29
|
+
- `[Functional]` = User-facing ergonomics, CLI flags, terminal rendering, interactive flows, or layout aesthetic. Resolve via interactive scenario runners in `spikes/`.
|
|
30
|
+
|
|
31
|
+
**Mandatory De-risking Triggers:**
|
|
32
|
+
1. Log any new or modified integration with an external system, library, API, storage layer, or performance constraint as `[Technical]`.
|
|
33
|
+
2. Log any new or modified user interaction, CLI flags, terminal formatting, or interactive UX flow as `[Functional]`.
|
|
34
|
+
3. Log any business rule, policy, or scope ambiguity as `[Domain]`.
|
|
35
|
+
|
|
36
|
+
**Design Sensitivity:** For every unknown, record a one-line Design Sensitivity stating how the design reacts to each resolution (e.g., "if this resolves as X → contracts hold; if Y → this port/DTO changes").
|
|
37
|
+
|
|
38
|
+
**Format:**
|
|
39
|
+
- [ ] [Tag] Title: Description of the unknown. Design Sensitivity.
|
|
40
|
+
|
|
41
|
+
## Scope & Impact
|
|
42
|
+
Surface of affected components classified by the Parallel Change model:
|
|
43
|
+
- `[NEW]` `ComponentOrModule` — role and responsibility
|
|
44
|
+
- `[EXPAND]` `ComponentOrModule.method` — additive/non-breaking extension
|
|
45
|
+
- `[MIGRATE]` `ConsumerComponent` — updating callers to new contract
|
|
46
|
+
- `[CONTRACT]` `ObsoleteComponentOrMethod` — removal of retired code/shims
|
|
47
|
+
|
|
48
|
+
## Deliverables
|
|
49
|
+
|
|
50
|
+
**Types:**
|
|
51
|
+
- **Env:** Declarative tooling, build files, CI workflows, hooks, or config templates.
|
|
52
|
+
- **Wiring:** Outermost boundary tracer bullet returning skeleton/fake data.
|
|
53
|
+
- **Contract:** Signatures, ports, interfaces, DTOs, domain models.
|
|
54
|
+
- **Harness:** Modifying or extending shared test infrastructure (Drivers, Observers, Fakes, Setup fixtures).
|
|
55
|
+
- **Logic:** Core domain logic and business rules driven by unit tests.
|
|
56
|
+
- **Migration:** Adapting existing consumers to new contracts.
|
|
57
|
+
- **Refactor:** Improving code design without altering behavior (DRY, SRP, extracting helpers).
|
|
58
|
+
- **Cleanup:** Removing deprecated methods, dead code, and temporary shims.
|
|
59
|
+
|
|
60
|
+
**Order:** Order deliverables to maintain a Continuous Green State (`make test` passes at every commit). `(Env)` is placed first whenever tooling or environment setup is a prerequisite:
|
|
61
|
+
`(Env) -> Wiring -> Contract -> Harness -> Logic -> Migration -> Refactor -> Cleanup`
|
|
62
|
+
|
|
63
|
+
**Format:**
|
|
64
|
+
- [ ] **Wiring** - Connect outermost boundaries with skeleton response.
|
|
65
|
+
- [ ] **Contract** - Define port interfaces and DTOs.
|
|
66
|
+
- [ ] **Logic** - Implement business logic replacing skeleton responses.
|
|
67
|
+
|
|
68
|
+
## Implementation Notes
|
|
69
|
+
Free-form notes recording decisions, deviations, or discoveries during implementation.
|
|
70
|
+
|
|
71
|
+
## Verification
|
|
72
|
+
Action-oriented black-box checks executed strictly from the outside as an end user would (e.g. CLI commands, flags, observable output, exit codes). All must pass before slice completion.
|
|
73
|
+
|
|
74
|
+
**Format:**
|
|
75
|
+
- [ ] Run `command <args>` and verify output contains `expected output` and exits with code 0.
|
|
76
|
+
- [ ] Run `command <invalid-args>` and verify error message and non-zero exit.
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
# System Architecture: {{project_name}}
|
|
2
|
-
|
|
3
|
-
## 1. Conventions & Standards
|
|
4
|
-
|
|
5
|
-
This section defines foundational engineering practices. Each entry MUST be a specific, enforceable rule.
|
|
6
|
-
|
|
7
|
-
**Template format:** `- **Rule Name:** Description and enforcement mechanism.`
|
|
8
|
-
|
|
9
|
-
### Recommended: customize per project
|
|
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
|
-
- **Run Environment:** Designated runner (e.g., `uv run`, `poetry run`).
|
|
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.
|
|
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
|
-
- **Dependency Injection:** Constructor injection mandate; forbid Service Locator and global containers.
|
|
16
|
-
- **Centralized Configuration:** Config file location, prohibition of magic numbers.
|
|
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).
|
|
18
|
-
- **Pre-commit Hooks:** Scope (staged files only) and keep the local loop fast — formatters, secret scanners, and merge-conflict checks only. Move heavy, false-positive-prone checks (type checkers, security scanners, repository-wide structural checkers) to the non-blocking CI quality job, scoped to a non-default pre-commit stage.
|
|
19
|
-
- **Post-commit Execution:** Full test suite run on commit, automatic revert on failure.
|
|
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 LOCAL-ONLY VCP commit (it runs the pre-commit hooks once as an advisory auto-fix pass and commits WITHOUT `--no-verify`, so Git's own pre-commit hook is the real local gate, while the post-commit test gate remains unskippable), `make push` rebases and pushes, `make ci-watch` watches remote CI and reports results (used by Developer at slice conclusion), and `make probe '<reason>'` runs the Remote Probing Protocol. See [docs/templates/makefile.md](docs/templates/makefile.md).
|
|
21
|
-
|
|
22
|
-
### Pre-commit Quick-Start
|
|
23
|
-
|
|
24
|
-
```shell
|
|
25
|
-
pre-commit install # install the pre-commit stage hook
|
|
26
|
-
pre-commit install --hook-type post-commit # install the post-commit test gate
|
|
27
|
-
pre-commit run --all-files # run all hooks manually against the repo
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## 2. Component & Boundary Map
|
|
31
|
-
|
|
32
|
-
Single source of truth for system structure, organized by architectural layer.
|
|
33
|
-
|
|
34
|
-
**Template format (table):**
|
|
35
|
-
|
|
36
|
-
| Component | Description | Contract |
|
|
37
|
-
| ----------------- | ------------------------------- | -------------------------------------------- |
|
|
38
|
-
| **ComponentName** | One-line responsibility summary | [Link to design doc](./path/to/component.md) |
|
|
39
|
-
|
|
40
|
-
### Required Layers:
|
|
41
|
-
- **Hexagonal Core:** Domain models, Ports (inbound/outbound), Services.
|
|
42
|
-
- **Primary Adapters:** CLI, web UI, API controllers.
|
|
43
|
-
- **Outbound Adapters:** File system, database, external APIs, shell.
|
|
44
|
-
- **Test Harness:** Drivers, Observers, Setup fixtures.
|
|
45
|
-
|
|
46
|
-
Each Contract column links to the Component Design Document or Interface definition.
|
|
47
|
-
|
|
48
|
-
## 3. Key Architectural Decisions
|
|
49
|
-
|
|
50
|
-
A living "System Law" document capturing explicit, prescriptive design decisions.
|
|
51
|
-
|
|
52
|
-
**Template format:** `- **Subject:** Strict Rule. (Rationale.)`
|
|
53
|
-
|
|
54
|
-
### Rules for this section:
|
|
55
|
-
- Each entry MUST be a single enforceable rule with a brief rationale.
|
|
56
|
-
- Add new entries as decisions are made; never remove without deprecation notice.
|
|
57
|
-
- Note exceptions explicitly with their rationale.
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# Bug: {{bug_title}}
|
|
2
|
-
- **Status:** Unresolved
|
|
3
|
-
- **Milestone:** [link or N/A]
|
|
4
|
-
- **Vertical Slice:** [link or N/A]
|
|
5
|
-
- **Specs:** [links or N/A]
|
|
6
|
-
|
|
7
|
-
## Symptoms
|
|
8
|
-
|
|
9
|
-
**Format:** Describe what should happen vs. what actually happens. Include concrete, reproducible steps to trigger the bug.
|
|
10
|
-
Expected vs. Actual behavior and minimal reproduction steps.
|
|
11
|
-
|
|
12
|
-
## Context & Scope
|
|
13
|
-
### Regressing Delta
|
|
14
|
-
|
|
15
|
-
**Format:** Git commit hash, file paths, and line numbers of the changes that introduced the bug.
|
|
16
|
-
[Identify the exact changes responsible for the regression to narrow the search space.]
|
|
17
|
-
|
|
18
|
-
### Environmental Triggers
|
|
19
|
-
|
|
20
|
-
**Format:** OS, Python version, config values, environment variables, or any other necessary conditions.
|
|
21
|
-
[Describe the specific OS, configurations, or state conditions required to reproduce the issue.]
|
|
22
|
-
|
|
23
|
-
### Ruled Out
|
|
24
|
-
|
|
25
|
-
**Format:** Bulleted list of investigated and ruled-out items.
|
|
26
|
-
[List any components, layers, or files definitively proven to be unrelated to the bug.]
|
|
27
|
-
|
|
28
|
-
## Diagnostic Analysis
|
|
29
|
-
### Causal Model
|
|
30
|
-
|
|
31
|
-
**Format:** 1-3 paragraphs explaining the chain of events leading to the bug. Continuously updated as investigation progresses.
|
|
32
|
-
A concise, causal description of how the faulty SUT operates.
|
|
33
|
-
|
|
34
|
-
### Discrepancies
|
|
35
|
-
|
|
36
|
-
**Format:** `- Observation. Conflict. (Resolved: Explanation)` — keep resolved items with their resolution.
|
|
37
|
-
A concise list of observations that contradict the current Causal Model.
|
|
38
|
-
- Observation. Conflict. (Resolved: Explanation)
|
|
39
|
-
|
|
40
|
-
### Investigation History
|
|
41
|
-
|
|
42
|
-
**Format:** `N. Hypothesis. Observation. Conclusion.`
|
|
43
|
-
A concise, numbered log of investigation attempts.
|
|
44
|
-
N. Hypothesis. Observation. Conclusion.
|
|
45
|
-
|
|
46
|
-
## Solution
|
|
47
|
-
|
|
48
|
-
**Format:** 1-2 paragraphs explaining the root cause, the specific fix applied, and any systemic changes needed to prevent this class of bug.
|
|
49
|
-
A high-level explanation of the root cause, the proven fix, and the systemic preventative measures to prevent this class of issue globally.
|