2.4 KiB
2.4 KiB
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:
- Red: Write a failing test that describes the desired behavior
- Green: Write the minimum code necessary to make the test pass
- 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:
./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-formatvalidation before commit
Agent Responsibilities
When assisting with code changes, agents must:
- Respect the zero defects policy — all code must be tested and passing
- Follow the Red-Green-Refactor workflow — tests first, implementation second
- Enforce style compliance using clang-format standards
- Ensure all tests pass before considering work complete
- Maintain clarity and maintainability in all refactoring activities
Getting Started
- Read the failing test in
test/vending_machine_test.cpp - Implement the vending machine interface in
include/vending_machine.handsrc/files - Run
./run_tests.shfrequently to verify progress - Refactor once tests pass to improve code quality
- Repeat for each new requirement