backend-infra-engineer: Release v0.3.3 snapshot
This commit is contained in:
350
docs/internal/testing/MATRIX_TESTING_CHECKLIST.md
Normal file
350
docs/internal/testing/MATRIX_TESTING_CHECKLIST.md
Normal file
@@ -0,0 +1,350 @@
|
||||
# Matrix Testing Implementation Checklist
|
||||
|
||||
**Status**: COMPLETE
|
||||
**Date**: 2025-11-20
|
||||
**Next Steps**: Use and maintain
|
||||
|
||||
## Deliverables Summary
|
||||
|
||||
### Completed Deliverables
|
||||
|
||||
- [x] **Configuration Matrix Analysis** (`/docs/internal/configuration-matrix.md`)
|
||||
- All 18 CMake flags documented with purpose and dependencies
|
||||
- Dependency graph showing all flag interactions
|
||||
- Tested configuration matrix (Tier 1, 2, 3)
|
||||
- Problematic combinations identified and fixes documented
|
||||
- Reference guide for developers and maintainers
|
||||
|
||||
- [x] **GitHub Actions Matrix Workflow** (`/.github/workflows/matrix-test.yml`)
|
||||
- Nightly testing at 2 AM UTC
|
||||
- Manual dispatch capability
|
||||
- Commit message trigger (`[matrix]` tag)
|
||||
- 6-7 configurations per platform (Linux, macOS, Windows)
|
||||
- ~45 minute total runtime (parallel execution)
|
||||
- Clear result summaries and failure logging
|
||||
|
||||
- [x] **Local Matrix Tester Script** (`/scripts/test-config-matrix.sh`)
|
||||
- Pre-push validation for developers
|
||||
- 7 key configurations built-in
|
||||
- Platform auto-detection
|
||||
- Smoke test mode (30 seconds)
|
||||
- Verbose output with timing
|
||||
- Clear pass/fail reporting
|
||||
- Help text and usage examples
|
||||
|
||||
- [x] **Configuration Validator Script** (`/scripts/validate-cmake-config.sh`)
|
||||
- Catches problematic flag combinations before building
|
||||
- Validates dependency constraints
|
||||
- Provides helpful error messages
|
||||
- Suggests preset configurations
|
||||
- Command-line flag validation
|
||||
|
||||
- [x] **Testing Strategy Documentation** (`/docs/internal/testing/matrix-testing-strategy.md`)
|
||||
- Problem statement with real bug examples
|
||||
- Why "smart matrix" approach is better than exhaustive testing
|
||||
- Problematic pattern analysis (6 patterns)
|
||||
- Integration with existing workflows
|
||||
- Monitoring and maintenance guidelines
|
||||
- Future improvement roadmap
|
||||
|
||||
- [x] **Quick Start Guide** (`/docs/internal/testing/QUICKSTART.md`)
|
||||
- One-page reference for developers
|
||||
- Common commands and options
|
||||
- Available configurations summary
|
||||
- Error handling and troubleshooting
|
||||
- Links to full documentation
|
||||
|
||||
- [x] **Implementation Guide** (`/MATRIX_TESTING_IMPLEMENTATION.md`)
|
||||
- Overview of the complete system
|
||||
- Files created and their purposes
|
||||
- Configuration matrix overview
|
||||
- How it works (for developers, in CI)
|
||||
- Key design decisions
|
||||
- Getting started guide
|
||||
|
||||
## Quick Start for Developers
|
||||
|
||||
### Before Your Next Push
|
||||
|
||||
```bash
|
||||
# 1. Test locally
|
||||
./scripts/test-config-matrix.sh
|
||||
|
||||
# 2. If you see green checkmarks, you're good
|
||||
# 3. Commit and push
|
||||
git commit -m "feature: your change"
|
||||
git push
|
||||
```
|
||||
|
||||
### Testing Specific Configuration
|
||||
|
||||
```bash
|
||||
./scripts/test-config-matrix.sh --config minimal
|
||||
./scripts/test-config-matrix.sh --config full-ai --verbose
|
||||
```
|
||||
|
||||
### Validate Flag Combination
|
||||
|
||||
```bash
|
||||
./scripts/validate-cmake-config.sh \
|
||||
-DYAZE_ENABLE_GRPC=ON \
|
||||
-DYAZE_ENABLE_REMOTE_AUTOMATION=OFF # This will warn!
|
||||
```
|
||||
|
||||
## Testing Coverage
|
||||
|
||||
### Tier 1 (Every Commit - Standard CI)
|
||||
```
|
||||
✓ ci-linux (gRPC + Agent CLI)
|
||||
✓ ci-macos (gRPC + Agent UI + Agent CLI)
|
||||
✓ ci-windows (gRPC core features)
|
||||
```
|
||||
|
||||
### Tier 2 (Nightly - Feature Combinations)
|
||||
|
||||
**Linux** (6 configurations):
|
||||
```
|
||||
✓ minimal - No AI, no gRPC (core functionality)
|
||||
✓ grpc-only - gRPC without automation
|
||||
✓ full-ai - All features enabled
|
||||
✓ cli-no-grpc - CLI only, no networking
|
||||
✓ http-api - REST endpoints
|
||||
✓ no-json - Ollama mode (no JSON parsing)
|
||||
```
|
||||
|
||||
**macOS** (4 configurations):
|
||||
```
|
||||
✓ minimal - GUI, no AI
|
||||
✓ full-ai - All features
|
||||
✓ agent-ui - Agent UI panels
|
||||
✓ universal - ARM64 + x86_64 binary
|
||||
```
|
||||
|
||||
**Windows** (4 configurations):
|
||||
```
|
||||
✓ minimal - No AI
|
||||
✓ full-ai - All features
|
||||
✓ grpc-remote - gRPC + remote automation
|
||||
✓ z3ed-cli - CLI executable
|
||||
```
|
||||
|
||||
**Total**: 14 nightly configurations across 3 platforms
|
||||
|
||||
### Tier 3 (As Needed - Architecture-Specific)
|
||||
```
|
||||
• Windows ARM64 - Debug + Release
|
||||
• macOS Universal - arm64 + x86_64
|
||||
• Linux ARM - Cross-compile tests
|
||||
```
|
||||
|
||||
## Configuration Problems Fixed
|
||||
|
||||
### 1. GRPC Without Automation
|
||||
- **Symptom**: gRPC headers included but server never compiled
|
||||
- **Status**: FIXED - CMake auto-enforces constraint
|
||||
- **Test**: `grpc-only` config validates this
|
||||
|
||||
### 2. HTTP API Without CLI Stack
|
||||
- **Symptom**: REST endpoints defined but no dispatcher
|
||||
- **Status**: FIXED - CMake auto-enforces constraint
|
||||
- **Test**: `http-api` config validates this
|
||||
|
||||
### 3. Agent UI Without GUI
|
||||
- **Symptom**: ImGui panels in headless build
|
||||
- **Status**: FIXED - CMake auto-enforces constraint
|
||||
- **Test**: Local script tests this
|
||||
|
||||
### 4. AI Runtime Without JSON
|
||||
- **Symptom**: Gemini service can't parse responses
|
||||
- **Status**: DOCUMENTED - matrix tests edge case
|
||||
- **Test**: `no-json` config validates degradation
|
||||
|
||||
### 5. Windows GRPC ABI Mismatch
|
||||
- **Symptom**: Symbol errors with old gRPC on MSVC
|
||||
- **Status**: FIXED - preset pins stable version
|
||||
- **Test**: `ci-windows` validates version
|
||||
|
||||
### 6. macOS ARM64 Dependency Issues
|
||||
- **Symptom**: Silent failures on ARM64 architecture
|
||||
- **Status**: DOCUMENTED - `mac-uni` tests both
|
||||
- **Test**: `universal` config validates both architectures
|
||||
|
||||
## Files Created
|
||||
|
||||
### Documentation (3 files)
|
||||
|
||||
| File | Lines | Purpose |
|
||||
|------|-------|---------|
|
||||
| `/docs/internal/configuration-matrix.md` | 850+ | Complete flag reference & matrix definition |
|
||||
| `/docs/internal/testing/matrix-testing-strategy.md` | 650+ | Strategic guide with real bug examples |
|
||||
| `/docs/internal/testing/QUICKSTART.md` | 150+ | One-page quick reference for developers |
|
||||
|
||||
### Automation (2 files)
|
||||
|
||||
| File | Lines | Purpose |
|
||||
|------|-------|---------|
|
||||
| `/.github/workflows/matrix-test.yml` | 350+ | Nightly/on-demand CI testing |
|
||||
| `/scripts/test-config-matrix.sh` | 450+ | Local pre-push testing tool |
|
||||
|
||||
### Validation (2 files)
|
||||
|
||||
| File | Lines | Purpose |
|
||||
|------|-------|---------|
|
||||
| `/scripts/validate-cmake-config.sh` | 300+ | Configuration constraint checker |
|
||||
| `/MATRIX_TESTING_IMPLEMENTATION.md` | 500+ | Complete implementation guide |
|
||||
|
||||
**Total**: 7 files, ~3,500 lines of documentation and tools
|
||||
|
||||
## Integration Checklist
|
||||
|
||||
### CMake Integration
|
||||
- [x] No changes needed to existing presets
|
||||
- [x] Constraint enforcement already exists in `cmake/options.cmake`
|
||||
- [x] All configurations inherit from standard base presets
|
||||
- [x] Backward compatible with existing workflows
|
||||
|
||||
### CI/CD Integration
|
||||
- [x] New workflow created: `.github/workflows/matrix-test.yml`
|
||||
- [x] Existing workflows unaffected
|
||||
- [x] Matrix tests complement (don't replace) standard CI
|
||||
- [x] Results aggregation and reporting
|
||||
- [x] Failure logging and debugging support
|
||||
|
||||
### Developer Integration
|
||||
- [x] Local test script ready to use
|
||||
- [x] Platform auto-detection implemented
|
||||
- [x] Easy integration into pre-push workflow
|
||||
- [x] Clear documentation and examples
|
||||
- [x] Help text and usage instructions
|
||||
|
||||
## Next Steps for Users
|
||||
|
||||
### Immediate (Today)
|
||||
|
||||
1. **Read the quick start**:
|
||||
```bash
|
||||
cat docs/internal/testing/QUICKSTART.md
|
||||
```
|
||||
|
||||
2. **Run local matrix tester**:
|
||||
```bash
|
||||
./scripts/test-config-matrix.sh
|
||||
```
|
||||
|
||||
3. **Add to your workflow** (optional):
|
||||
```bash
|
||||
# Before pushing:
|
||||
./scripts/test-config-matrix.sh
|
||||
```
|
||||
|
||||
### Near Term (This Week)
|
||||
|
||||
1. **Use validate-config before experimenting**:
|
||||
```bash
|
||||
./scripts/validate-cmake-config.sh -DYAZE_ENABLE_GRPC=ON ...
|
||||
```
|
||||
|
||||
2. **Monitor nightly matrix tests**:
|
||||
- GitHub Actions > Configuration Matrix Testing
|
||||
- Check for any failing configurations
|
||||
|
||||
### Medium Term (This Month)
|
||||
|
||||
1. **Add matrix test to pre-commit hook** (optional):
|
||||
```bash
|
||||
# In .git/hooks/pre-commit
|
||||
./scripts/test-config-matrix.sh --smoke || exit 1
|
||||
```
|
||||
|
||||
2. **Review and update documentation as needed**:
|
||||
- Add new configurations to `/docs/internal/configuration-matrix.md`
|
||||
- Update matrix test script when flags change
|
||||
|
||||
### Long Term
|
||||
|
||||
1. **Monitor for new problematic patterns**
|
||||
2. **Consider Tier 3 testing when needed**
|
||||
3. **Evaluate performance improvements per configuration**
|
||||
4. **Plan future enhancements** (see MATRIX_TESTING_IMPLEMENTATION.md)
|
||||
|
||||
## Maintenance Responsibilities
|
||||
|
||||
### Weekly
|
||||
- Check nightly matrix test results
|
||||
- Alert if any configuration fails
|
||||
- Review failure patterns
|
||||
|
||||
### Monthly
|
||||
- Audit matrix configuration
|
||||
- Check if new flags need testing
|
||||
- Review binary size impact
|
||||
- Update documentation as needed
|
||||
|
||||
### When Adding New CMake Flags
|
||||
1. Update `cmake/options.cmake` (define + constraints)
|
||||
2. Update `/docs/internal/configuration-matrix.md` (document + dependencies)
|
||||
3. Add test config to `/scripts/test-config-matrix.sh`
|
||||
4. Add matrix job to `/.github/workflows/matrix-test.yml`
|
||||
5. Update validation rules in `/scripts/validate-cmake-config.sh`
|
||||
|
||||
## Support & Questions
|
||||
|
||||
### Where to Find Answers
|
||||
|
||||
| Question | Answer Location |
|
||||
|----------|-----------------|
|
||||
| How do I use this? | `docs/internal/testing/QUICKSTART.md` |
|
||||
| What's tested? | `docs/internal/configuration-matrix.md` Section 3 |
|
||||
| Why this approach? | `docs/internal/testing/matrix-testing-strategy.md` |
|
||||
| How does it work? | `MATRIX_TESTING_IMPLEMENTATION.md` |
|
||||
| Flag reference? | `docs/internal/configuration-matrix.md` Section 1 |
|
||||
| Troubleshooting? | Run with `--verbose`, check logs in `build_matrix/<config>/` |
|
||||
|
||||
### Getting Help
|
||||
|
||||
1. **Local test failing?**
|
||||
```bash
|
||||
./scripts/test-config-matrix.sh --verbose --config <name>
|
||||
tail -50 build_matrix/<config>/build.log
|
||||
```
|
||||
|
||||
2. **Don't understand a flag?**
|
||||
```
|
||||
See: docs/internal/configuration-matrix.md Section 1
|
||||
```
|
||||
|
||||
3. **Need to add new configuration?**
|
||||
```
|
||||
See: MATRIX_TESTING_IMPLEMENTATION.md "For Contributing"
|
||||
```
|
||||
|
||||
## Success Criteria
|
||||
|
||||
Matrix testing implementation is successful when:
|
||||
|
||||
- [x] Developers can run `./scripts/test-config-matrix.sh` and get clear results
|
||||
- [x] Problematic configurations are caught before submission
|
||||
- [x] Nightly tests validate all important flag combinations
|
||||
- [x] CI/CD has clear, easy-to-read test reports
|
||||
- [x] Documentation explains the "why" not just "how"
|
||||
- [x] No performance regression in standard CI (Tier 1 unchanged)
|
||||
- [x] Easy to add new configurations as project evolves
|
||||
|
||||
## Files for Review
|
||||
|
||||
Please review these files to understand the complete implementation:
|
||||
|
||||
1. **Start here**: `/docs/internal/testing/QUICKSTART.md` (5 min read)
|
||||
2. **Then read**: `/docs/internal/configuration-matrix.md` (15 min read)
|
||||
3. **Understand**: `/docs/internal/testing/matrix-testing-strategy.md` (20 min read)
|
||||
4. **See it in action**: `.github/workflows/matrix-test.yml` (10 min read)
|
||||
5. **Use locally**: `/scripts/test-config-matrix.sh` (just run it!)
|
||||
|
||||
---
|
||||
|
||||
**Status**: Ready for immediate use
|
||||
**Testing**: Local + CI automated
|
||||
**Maintenance**: Minimal, documented process
|
||||
**Future**: Many enhancement opportunities identified
|
||||
|
||||
Questions? Check the quick start or full implementation guide.
|
||||
Reference in New Issue
Block a user