| name | quality-strict |
| description | Quality (Strict) skill for the ikigai project |
Quality (Strict)
Description
Strict testing, coverage, and quality requirements for coverage phase. 100% is mandatory.
Pre-Commit Requirements
BEFORE creating ANY commit (mandatory, no exceptions):
make fmt- Format codemake check- ALL tests pass (100%)make lint- ALL complexity/file size checks passmake check-coverage- ALL metrics (lines, functions, branches) at 100.0%make check-dynamic- ALL sanitizer checks pass (ASan, UBSan, TSan)
If ANY check fails: fix ALL issues, re-run ALL checks, repeat until everything passes.
Never commit with ANY known issue - even "pre-existing" or "in another file".
Test Execution
By Default: Tests run in parallel, with 24 parallel tests on this machine.
MAKE_JOBS=24- up to 24 concurrent testsPARALLEL=1- all 4 check-dynamic subtargets in parallel
When you need clear debug output (serialize execution):
PARALLEL=0 MAKE_JOBS=1 make check
PARALLEL=0 MAKE_JOBS=1 make check-valgrind
Best practice: Test individual files during development, run full suite before commits.
Example:
make build/tests/unit/array/basic_test && ./build/tests/unit/array/basic_test
Build Modes
make BUILD={debug|release|sanitize|tsan|coverage}
debug- Development builds with symbolsrelease- Optimized production buildssanitize- Address and undefined behavior sanitizerstsan- Thread sanitizercoverage- Code coverage analysis
Quality Gates
- Use
make checkto verify tests while working on code changes - Use
make lint && make check-coveragebefore commits - 100% coverage is MANDATORY - CRITICAL: Never run multiple
makecommands simultaneously. Different targets use incompatible compiler flags and will corrupt the build.
Coverage Phase Mindset
- Every uncovered line is a bug waiting to happen
- Every untested branch is a failure mode you haven't verified
- LCOV exclusions are a last resort, not a shortcut
- Zero tolerance for coverage gaps