RULES:
- IMPORTANT: One file per folder
- IMPORTANT: One function per file
- IMPORTANT: File / folder naming: grand_parent/parent/
/ .c (folder name = file name = function name) - Test driven: write the full test for the whole desired system first -> write logic code for system later
- Maximum line of code per file: 200 lines
- Reusable logic: no duplicated code
- Real implementation: no mock, no “simplified”, no “TODO”, no tech debts
- Write note before working: docs/notes/
.md -> no more than 100 lines - No external dependencies
- Always comment code in Doxygen compatible style with metas @brief, @struct, @param, @return etc…
- Always update docs, and update tests, before implementation -> first steps of any plan.
- Planning before any implementation: docs/plans/
/ /phase-instructions.md -> each plan has phases separated into each folder with short comprehensive doc. - Error handling: all functions must return meaningful error codes and handle edge cases
- Memory management: always free allocated memory, check for null pointers
- Use Cmake -> auto generate Makefile -> do not manually edit Makefile
- All build artifacts in build/
- All official tests must be in test/ (not sandbox, not trash test, not temporary test)
- All temporary tests must be in sandbox/ (not official test, will be deleted without announcements)