diff --git a/CLAUDE.md b/AGENTS.md similarity index 60% rename from CLAUDE.md rename to AGENTS.md index 56d4366..8c823cc 100644 --- a/CLAUDE.md +++ b/AGENTS.md @@ -36,6 +36,18 @@ When your changes create orphans: The test: Every changed line should trace directly to the user's request. +## Test-Driven Development + +**Red, green, refactor — never write implementation code first.** + +1. **Red** — write a failing test that captures the desired behaviour. Run it and confirm it fails for the right reason. +2. **Green** — write the minimum code needed to make that test pass. Run the test and confirm it passes. +3. **Refactor** — clean up while keeping all tests green. Re-run the full test suite after every step. + +- No production code without a failing test that demands it. +- If a test passes on the first run, verify it actually exercises the new behaviour — it may be a false green. +- Run the full suite (`dotnet test`) before declaring any task done. + ## Goal-Driven Execution **Define success criteria. Loop until verified.** @@ -57,3 +69,16 @@ For multi-step tasks, state a brief plan: ``` Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification. + +## Keep the Regression Test Cases Up to Date + +**Every code change must be reflected in `RegressionTests.md`.** + +After making any change — new feature, behaviour change, bug fix, or removed functionality — update `RegressionTests.md` before considering the task done: + +- Add a new case (following the existing `-NN` ID and table format) for any new or changed user-visible behaviour. +- Amend the relevant existing case when behaviour changes. +- Remove or mark obsolete any case that no longer applies. +- Keep the Contents list in sync when a whole section is added or removed. + +If a change genuinely affects no manual test case, say so explicitly instead of silently skipping this step.