Problem
A clean Release configure + build at 95aeb9c (GCC 13, Linux) emits 10 warnings. Repo-owned ones:
src/engine_fills.cpp:8045:35: warning: missing initializer for member 'pineforge::PyramidEntry::entry_comment' [-Wmissing-field-initializers]
src/engine_fills.cpp:8100:39: warning: missing initializer for member 'pineforge::PyramidEntry::entry_comment' [-Wmissing-field-initializers]
src/engine_orders.cpp:855:31: warning: missing initializer for member 'pineforge::PyramidEntry::entry_comment' [-Wmissing-field-initializers]
src/engine_orders.cpp:1028:31: warning: missing initializer for member 'pineforge::PyramidEntry::entry_comment' [-Wmissing-field-initializers]
src/session_time.cpp:156:13: warning: 'bool pineforge::{anonymous}::minute_in_window(int, int, int)' defined but not used [-Wunused-function]
tests/test_coof_open_recalc_context.cpp:132:42: warning: '%02d' directive output may be truncated ... [-Wformat-truncation=]
The remaining ones come from Eigen headers and stl_algobase.h (-Wmaybe-uninitialized, -Wnonnull) and should be silenced by marking Eigen as a SYSTEM include rather than fixed in-tree.
Formatting: the repo ships a .clang-format, but the sources do not conform. clang-format --dry-run src/engine_orders.cpp alone reports 213 diffs, and CI has no format step. A config that is neither enforced nor followed misleads contributors into either reformatting whole files in unrelated PRs or ignoring the file.
Proposal
- Fix the six repo-owned warnings (the
PyramidEntry ones are likely a single aggregate-init site pattern; add entry_comment explicitly or give it a default member initializer).
- Use
target_include_directories(... SYSTEM ...) / Eigen3::Eigen as system to suppress third-party warnings.
- Add
-Wall -Wextra to the existing PINEFORGE_STRICT_WARNINGS path or a new -Werror opt-in, and turn it on in one CI lane so the count cannot regress silently.
- Decide on formatting: either (a) run
clang-format once over src/, include/, tests/, runner/ in a dedicated no-logic commit and add a clang-format --dry-run --Werror CI step, or (b) delete .clang-format and say so in CONTRIBUTING.md. Option (a) is recommended; do it as a single isolated commit so git blame -w --ignore-rev can skip it.
Acceptance
cmake --build build in Release prints zero warnings from files under src/, include/, tests/.
- CI fails on new warnings or formatting drift, or
.clang-format is gone.
Problem
A clean Release configure + build at
95aeb9c(GCC 13, Linux) emits 10 warnings. Repo-owned ones:The remaining ones come from Eigen headers and
stl_algobase.h(-Wmaybe-uninitialized,-Wnonnull) and should be silenced by marking Eigen as aSYSTEMinclude rather than fixed in-tree.Formatting: the repo ships a
.clang-format, but the sources do not conform.clang-format --dry-run src/engine_orders.cppalone reports 213 diffs, and CI has no format step. A config that is neither enforced nor followed misleads contributors into either reformatting whole files in unrelated PRs or ignoring the file.Proposal
PyramidEntryones are likely a single aggregate-init site pattern; addentry_commentexplicitly or give it a default member initializer).target_include_directories(... SYSTEM ...)/Eigen3::Eigenas system to suppress third-party warnings.-Wall -Wextrato the existingPINEFORGE_STRICT_WARNINGSpath or a new-Werroropt-in, and turn it on in one CI lane so the count cannot regress silently.clang-formatonce oversrc/,include/,tests/,runner/in a dedicated no-logic commit and add aclang-format --dry-run --WerrorCI step, or (b) delete.clang-formatand say so inCONTRIBUTING.md. Option (a) is recommended; do it as a single isolated commit sogit blame -w --ignore-revcan skip it.Acceptance
cmake --build buildin Release prints zero warnings from files undersrc/,include/,tests/..clang-formatis gone.