From 5854ff5593f82499405ae227d9089762d2fa7814 Mon Sep 17 00:00:00 2001 From: Dave Date: Tue, 17 Feb 2026 13:42:59 +0000 Subject: [PATCH] Consolidate upcoming TDD stories --- .../upcoming/26_define_tdd_workflow_rules.md | 16 ---------------- .../26_establish_tdd_workflow_and_gates.md | 15 +++++++++++++++ .../stories/upcoming/27_enforce_test_first.md | 14 -------------- .../upcoming/27_protect_tests_and_coverage.md | 14 ++++++++++++++ .../28_require_unit_and_integration_tests.md | 12 ------------ .../28_standardize_acceptance_tests_and_todos.md | 16 ++++++++++++++++ ...age.md => 29_backfill_tests_high_coverage.md} | 2 +- .../29_block_acceptance_on_test_failures.md | 14 -------------- .../upcoming/30_protect_against_test_deletion.md | 13 ------------- ...ow_test_todos.md => 30_ui_show_test_todos.md} | 2 +- .../31_standardize_acceptance_test_layout.md | 14 -------------- .../32_add_coverage_regression_guardrail.md | 13 ------------- .../upcoming/33_test_result_summary_ui.md | 14 -------------- 13 files changed, 47 insertions(+), 112 deletions(-) delete mode 100644 .story_kit/stories/upcoming/26_define_tdd_workflow_rules.md create mode 100644 .story_kit/stories/upcoming/26_establish_tdd_workflow_and_gates.md delete mode 100644 .story_kit/stories/upcoming/27_enforce_test_first.md create mode 100644 .story_kit/stories/upcoming/27_protect_tests_and_coverage.md delete mode 100644 .story_kit/stories/upcoming/28_require_unit_and_integration_tests.md create mode 100644 .story_kit/stories/upcoming/28_standardize_acceptance_tests_and_todos.md rename .story_kit/stories/upcoming/{34_backfill_tests_high_coverage.md => 29_backfill_tests_high_coverage.md} (91%) delete mode 100644 .story_kit/stories/upcoming/29_block_acceptance_on_test_failures.md delete mode 100644 .story_kit/stories/upcoming/30_protect_against_test_deletion.md rename .story_kit/stories/upcoming/{35_ui_show_test_todos.md => 30_ui_show_test_todos.md} (85%) delete mode 100644 .story_kit/stories/upcoming/31_standardize_acceptance_test_layout.md delete mode 100644 .story_kit/stories/upcoming/32_add_coverage_regression_guardrail.md delete mode 100644 .story_kit/stories/upcoming/33_test_result_summary_ui.md diff --git a/.story_kit/stories/upcoming/26_define_tdd_workflow_rules.md b/.story_kit/stories/upcoming/26_define_tdd_workflow_rules.md deleted file mode 100644 index db20965..0000000 --- a/.story_kit/stories/upcoming/26_define_tdd_workflow_rules.md +++ /dev/null @@ -1,16 +0,0 @@ -# Story 26: Define the TDD Workflow Rules - -## User Story -As a user, I want a clear TDD workflow (unit + integration), so the system enforces test-first development. - -## Acceptance Criteria -- The workflow explicitly requires tests before implementation. -- Both unit tests and integration tests are required for feature work. -- The concrete test frameworks to use are defined in `specs/tech/STACK.md`. -- Code changes are not accepted unless all required tests pass. -- Test removal requires explicit user approval. - -## Out of Scope -- Migrating existing tests to new frameworks. -- Backfilling missing tests for legacy code unless part of a new story. -- Defining project-specific test frameworks beyond what is documented in `specs/tech/STACK.md`. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/26_establish_tdd_workflow_and_gates.md b/.story_kit/stories/upcoming/26_establish_tdd_workflow_and_gates.md new file mode 100644 index 0000000..48a759b --- /dev/null +++ b/.story_kit/stories/upcoming/26_establish_tdd_workflow_and_gates.md @@ -0,0 +1,15 @@ +# Story 26: Establish the TDD Workflow and Gates + +## User Story +As a user, I want a clear, enforceable TDD workflow with quality gates, so development is test-first and regressions are blocked. + +## Acceptance Criteria +- A test-first workflow is defined and enforced before implementation begins. +- Each story requires both unit tests and integration tests (standard Rust `tests/` layout). +- A test plan is produced and approved before any code changes. +- Stories cannot be accepted unless all required tests pass. +- Only one failing test is allowed at a time during red-green-refactor. + +## Out of Scope +- Backfilling tests for legacy code (covered by a separate story). +- Adding new test frameworks beyond those defined in `specs/tech/STACK.md`. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/27_enforce_test_first.md b/.story_kit/stories/upcoming/27_enforce_test_first.md deleted file mode 100644 index 77e8fd7..0000000 --- a/.story_kit/stories/upcoming/27_enforce_test_first.md +++ /dev/null @@ -1,14 +0,0 @@ -# Story 27: Enforce Test-First Before Implementation - -## User Story -As a user, I want the workflow to block implementation until tests are written, so test-first development is enforced. - -## Acceptance Criteria -- The system prevents implementation work until required tests are created. -- The system prompts for missing tests before allowing code changes. -- The enforcement applies to both unit and integration tests. -- The user can explicitly acknowledge when tests are intentionally deferred. - -## Out of Scope -- Automated test generation. -- Converting legacy code to test-first. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/27_protect_tests_and_coverage.md b/.story_kit/stories/upcoming/27_protect_tests_and_coverage.md new file mode 100644 index 0000000..3dbc23f --- /dev/null +++ b/.story_kit/stories/upcoming/27_protect_tests_and_coverage.md @@ -0,0 +1,14 @@ +# Story 27: Protect Tests and Coverage + +## User Story +As a user, I want explicit safeguards around test deletion and coverage regression, so quality guardrails cannot be weakened silently. + +## Acceptance Criteria +- Any deletion of test files requires explicit user approval. +- Any change that disables or neuters a test (e.g., commenting out assertions) requires explicit user approval. +- The workflow fails if coverage drops below the defined threshold. +- Coverage regression is reported clearly before acceptance. + +## Out of Scope +- Introducing new test frameworks beyond those listed in `specs/tech/STACK.md`. +- Large refactors solely to improve coverage. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/28_require_unit_and_integration_tests.md b/.story_kit/stories/upcoming/28_require_unit_and_integration_tests.md deleted file mode 100644 index 1576de1..0000000 --- a/.story_kit/stories/upcoming/28_require_unit_and_integration_tests.md +++ /dev/null @@ -1,12 +0,0 @@ -# Story 28: Require Unit and Integration Tests per Story - -## User Story -As a user, I want every story to include both unit and integration tests, so behavior is verified at multiple levels. - -## Acceptance Criteria -- Each story includes at least one unit test and one integration test, with integration tests using the standard Rust `tests/` layout. -- The required test types are defined by the frameworks listed in `specs/tech/STACK.md`. -- A story cannot be accepted if either test type is missing. - -## Out of Scope -- Retrofitting legacy features without an active story. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/28_standardize_acceptance_tests_and_todos.md b/.story_kit/stories/upcoming/28_standardize_acceptance_tests_and_todos.md new file mode 100644 index 0000000..25e297f --- /dev/null +++ b/.story_kit/stories/upcoming/28_standardize_acceptance_tests_and_todos.md @@ -0,0 +1,16 @@ +# Story 28: Standardize Acceptance Tests and TODO Flow + +## User Story +As a user, I want a consistent acceptance test layout and TODO workflow, so acceptance criteria are translated into tests in a predictable, toolable way. + +## Acceptance Criteria +- A single, documented folder structure exists for acceptance tests and story TODO files. +- Each story must have a `tests/todo/story-XX.todo` file with one comment per Acceptance Criterion using the format `// AC: story-XX#N - ...`. +- Acceptance tests and integration tests follow the standard Rust `tests/` layout. +- The workflow requires consuming TODOs one at a time: write a failing test, delete the TODO line, make it pass, then refactor. +- The test plan references the frameworks and commands in `specs/tech/STACK.md`. + +## Out of Scope +- Building UI surfaces for TODO visibility. +- Migrating existing tests to the new layout. +- Introducing new test frameworks beyond those listed in `specs/tech/STACK.md`. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/34_backfill_tests_high_coverage.md b/.story_kit/stories/upcoming/29_backfill_tests_high_coverage.md similarity index 91% rename from .story_kit/stories/upcoming/34_backfill_tests_high_coverage.md rename to .story_kit/stories/upcoming/29_backfill_tests_high_coverage.md index 66eadfd..01bde73 100644 --- a/.story_kit/stories/upcoming/34_backfill_tests_high_coverage.md +++ b/.story_kit/stories/upcoming/29_backfill_tests_high_coverage.md @@ -1,4 +1,4 @@ -# Story 34: Backfill Tests for Maximum Coverage +# Story 29: Backfill Tests for Maximum Coverage ## User Story As a user, I want us to backfill tests across existing code so overall coverage is as high as we can reasonably achieve. diff --git a/.story_kit/stories/upcoming/29_block_acceptance_on_test_failures.md b/.story_kit/stories/upcoming/29_block_acceptance_on_test_failures.md deleted file mode 100644 index 5dbd2d1..0000000 --- a/.story_kit/stories/upcoming/29_block_acceptance_on_test_failures.md +++ /dev/null @@ -1,14 +0,0 @@ -# Story 29: Block Acceptance When Tests Fail - -## User Story -As a user, I want the workflow to block story acceptance when tests fail, so regressions cannot be accepted. - -## Acceptance Criteria -- The system runs all required tests before acceptance. -- If any test fails, the story cannot be accepted. -- The failure output is shown clearly to the user. -- A successful test run is required immediately before acceptance. - -## Out of Scope -- Adding new test frameworks beyond those in `specs/tech/STACK.md`. -- Retrying tests automatically without user confirmation. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/30_protect_against_test_deletion.md b/.story_kit/stories/upcoming/30_protect_against_test_deletion.md deleted file mode 100644 index 2c9c62a..0000000 --- a/.story_kit/stories/upcoming/30_protect_against_test_deletion.md +++ /dev/null @@ -1,13 +0,0 @@ -# Story 30: Protect Against Test Deletion - -## User Story -As a user, I want explicit approval required before tests are deleted or weakened, so guardrails cannot be removed silently. - -## Acceptance Criteria -- Any deletion of test files requires explicit user approval. -- Any change that disables or neuters a test (e.g., commenting out assertions) requires explicit user approval. -- The system reports all test deletions or weakenings clearly before acceptance. - -## Out of Scope -- Refactoring tests without behavioral changes. -- Removing obsolete tests as part of a broader system rewrite. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/35_ui_show_test_todos.md b/.story_kit/stories/upcoming/30_ui_show_test_todos.md similarity index 85% rename from .story_kit/stories/upcoming/35_ui_show_test_todos.md rename to .story_kit/stories/upcoming/30_ui_show_test_todos.md index 9bd073b..6855bfe 100644 --- a/.story_kit/stories/upcoming/35_ui_show_test_todos.md +++ b/.story_kit/stories/upcoming/30_ui_show_test_todos.md @@ -1,4 +1,4 @@ -# Story 35: Show Remaining Test TODOs in the UI +# Story 30: Show Remaining Test TODOs in the UI ## User Story As a user, I want the UI to show the remaining test TODOs for the current story, so I can track which Acceptance Criteria are still untested. diff --git a/.story_kit/stories/upcoming/31_standardize_acceptance_test_layout.md b/.story_kit/stories/upcoming/31_standardize_acceptance_test_layout.md deleted file mode 100644 index 0f9d187..0000000 --- a/.story_kit/stories/upcoming/31_standardize_acceptance_test_layout.md +++ /dev/null @@ -1,14 +0,0 @@ -# Story 31: Standardize Acceptance Test Layout - -## User Story -As a user, I want a consistent acceptance test layout, so tests are easy to locate, review, and run across stories. - -## Acceptance Criteria -- A single, documented folder structure for acceptance tests is established. -- The naming convention for acceptance tests is consistent across stories. -- The chosen test frameworks are defined in `specs/tech/STACK.md`. -- The layout is used for all new acceptance tests. - -## Out of Scope -- Migrating existing tests to the new layout. -- Introducing new test frameworks beyond those listed in `specs/tech/STACK.md`. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/32_add_coverage_regression_guardrail.md b/.story_kit/stories/upcoming/32_add_coverage_regression_guardrail.md deleted file mode 100644 index a9029fa..0000000 --- a/.story_kit/stories/upcoming/32_add_coverage_regression_guardrail.md +++ /dev/null @@ -1,13 +0,0 @@ -# Story 32: Add Coverage Regression Guardrail - -## User Story -As a user, I want coverage regression to block acceptance, so test quality cannot quietly degrade. - -## Acceptance Criteria -- The workflow fails if coverage drops below the defined threshold. -- Coverage regression is reported clearly before acceptance. -- The coverage threshold is defined in `specs/tech/STACK.md`. - -## Out of Scope -- Selecting or adding new coverage tools beyond those listed in `specs/tech/STACK.md`. -- Retrofitting coverage reports for legacy test suites. \ No newline at end of file diff --git a/.story_kit/stories/upcoming/33_test_result_summary_ui.md b/.story_kit/stories/upcoming/33_test_result_summary_ui.md deleted file mode 100644 index 4a3dda3..0000000 --- a/.story_kit/stories/upcoming/33_test_result_summary_ui.md +++ /dev/null @@ -1,14 +0,0 @@ -# Story 33: Add Test Result Summaries in the UI - -## User Story -As a user, I want test results summarized in the UI, so I can quickly review pass/fail status before acceptance. - -## Acceptance Criteria -- The UI displays a summary of unit test results. -- The UI displays a summary of integration test results. -- Failed tests show clear error output in the UI. -- A passing test summary is required immediately before acceptance. - -## Out of Scope -- Adding new test frameworks beyond those listed in `specs/tech/STACK.md`. -- Persisting historical test results across sessions. \ No newline at end of file