- Add detailed trade-offs analysis section
- Explicitly state what we gain and give up
- Define critical vs nice-to-have requirements
- Add cost-benefit analysis
- Document decision justification
- Provide migration path forward
- Include final trade-off summary table
- Update revision history with requirements analysis
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <[email protected]>
- Add ADR-0012 documenting the decision to format only staged Go files
- Update ADR README.md with new entry
- Document rationale, alternatives, and verification results
- Include future considerations for monitoring and CI/CD integration
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <[email protected]>
- Added /api/v2/greet POST endpoint with JSON request/response
- Implemented ServiceV2 with Hello my friend <name>! greeting format
- Added api.v2_enabled feature flag (default: false)
- Extended BDD tests to cover v2 scenarios
- Maintained full backward compatibility with v1 API
- Added DLC_API_V2_ENABLED environment variable support
- Created ADR 0010-api-v2-feature-flag.md
- Updated configuration system to support API versioning
Finalize BDD testing framework with:
- Unified step definitions using StepContext struct
- Proper server verification in theServerIsRunning step
- Robust JSON response handling with escaping and newline trimming
- Updated documentation reflecting current implementation
- Test validation script to ensure test quality
- All tests passing with proper black box testing
Key files updated:
- pkg/bdd/steps/steps.go: Unified step definitions
- pkg/bdd/testserver/client.go: Robust response validation
- pkg/bdd/README.md: Godog pattern guide
- doc/BDD_GUIDE.md: Updated usage guide
- adr/0008-bdd-testing.md: Updated ADR with current approach
- scripts/run-bdd-tests.sh: Test validation script
The BDD framework is now production-ready with comprehensive
documentation and proper testing practices.
Implement comprehensive BDD testing framework using Godog:
- Added feature files for greet and health endpoints
- Created test server that runs on port 9191
- Implemented step definitions using Godog's exact patterns
- Fixed undefined step warnings by following Godog conventions
- All tests passing with proper response validation
- Maintained black box testing principles
Key files:
- pkg/bdd/steps/steps.go - Step definitions using StepContext struct
- pkg/bdd/testserver/ - Test server implementation
- features/*.feature - BDD feature files
- pkg/bdd/README.md - Documentation for proper step patterns
The implementation follows Godog's exact pattern suggestions to avoid
undefined step warnings and provides comprehensive API testing.
Added detailed commit conventions section including:
- Conventional Commit types (feat, fix, docs, style, refactor, perf, test, chore)
- Practical examples for each commit type
- Comprehensive gitmoji reference table with 16 common emojis
- Emoji codes, types, and descriptions for quick reference
- Benefits of using the convention
This provides a complete indexed reference so we won't need to check
gitmoji.dev repeatedly for common emojis.
The time.Sleep(100ms) after OpenTelemetry shutdown was removed as it's
not necessary for proper log writing. Zerolog automatically flushes logs
on program exit, and the remaining 1-second sleep for readiness
propagation is sufficient.
Tested that all shutdown logs are properly written without the sleep.
- Add scripts/build.sh to compile binaries into bin/ directory
- Move all zerolog setup logic from cmd/server/main.go to pkg/config
- Add log level configuration support (trace, debug, info, warn, error, fatal, panic)
- Simplify cmd/server/main.go from 57 to 27 lines (53% reduction)
- Update .gitignore to use bin/ directory instead of individual files
- Document build process and bin directory in AGENTS.md
- Maintain backward compatibility with all existing functionality
- Simplify cmd/server/main.go from 158 to 57 lines (64% reduction)
- Move HTTP server creation, graceful shutdown, and context management to pkg/server
- Add Run() method to encapsulate server lifecycle management
- Maintain all existing functionality and OpenTelemetry integration
- Improve separation of concerns and code organization
This refactoring makes cmd/server/main.go a thin entrypoint while moving all server implementation details to the pkg/server package, following Go best practices for package organization.
Add server and greet binaries to .gitignore