67 lines
2.4 KiB
Markdown
67 lines
2.4 KiB
Markdown
# Agentic Coding Standards
|
|
|
|
This repository follows strict agentic coding practices to ensure high-quality, maintainable C++ implementations.
|
|
|
|
## Zero Defects Policy
|
|
|
|
All code changes must maintain a **zero defects policy**:
|
|
- Every feature or bug fix must be validated by passing tests before merge
|
|
- Code reviews focus on correctness, clarity, and adherence to style guidelines
|
|
- No known issues or technical debt should be introduced
|
|
- When defects are discovered, they are fixed immediately before proceeding with new work
|
|
|
|
## Test-Driven Development (TDD)
|
|
|
|
We follow the **Red-Green-Refactor** cycle strictly. You must invoke `./run_tests.sh` in each phase:
|
|
|
|
1. **Red**: Write a failing test that describes the desired behavior
|
|
2. **Green**: Write the minimum code necessary to make the test pass
|
|
3. **Refactor**: Improve the code while keeping tests passing
|
|
|
|
All development must start with a test. The repository includes one intentional failing test as a starting point for TDD workflow.
|
|
|
|
## Test Execution
|
|
|
|
Run the test suite using:
|
|
|
|
```bash
|
|
./run_tests.sh
|
|
```
|
|
|
|
This script:
|
|
- Configures the CMake build
|
|
- Compiles the vending machine library and test executable
|
|
- Executes all Google Test cases
|
|
- Reports results with clear pass/fail status
|
|
|
|
The test suite must pass entirely before any code is merged.
|
|
|
|
## Code Quality Standards
|
|
|
|
### Testing Framework
|
|
- **Test Framework**: Google Test (gtest) + Google Mock (gmock)
|
|
- **Coverage**: All public API functions must have test coverage
|
|
- **Organization**: Tests are located in `test/vending_machine_test.cpp`
|
|
|
|
### Code Style
|
|
- **Language Standard**: C++23
|
|
- **Style Tool**: clang-format (configuration in `.clang-format`)
|
|
- **Enforcement**: All code must pass `clang-format` validation before commit
|
|
|
|
## Agent Responsibilities
|
|
|
|
When assisting with code changes, agents must:
|
|
1. Respect the zero defects policy — all code must be tested and passing
|
|
2. Follow the Red-Green-Refactor workflow — tests first, implementation second
|
|
3. Enforce style compliance using clang-format standards
|
|
4. Ensure all tests pass before considering work complete
|
|
5. Maintain clarity and maintainability in all refactoring activities
|
|
|
|
## Getting Started
|
|
|
|
1. Read the failing test in `test/vending_machine_test.cpp`
|
|
2. Implement the vending machine interface in `include/vending_machine.h` and `src/` files
|
|
3. Run `./run_tests.sh` frequently to verify progress
|
|
4. Refactor once tests pass to improve code quality
|
|
5. Repeat for each new requirement
|