Story: Hotfix: rate_tree fails to compile on Windows
Table of Contents
This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
The Windows (MSVC) CI build fails on projects/ores.analytics.quant/src/math/rate_tree.cpp:70 with error C2039 — 'to_string' is not a member of 'std'. The file calls std::to_string but does not include the string header; GCC/Clang happen to pull it in transitively, MSVC does not. The fix restores a green Windows build by making the include explicit.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Fix shipped in PR #1967; Windows CI verifies on merge. |
| Waiting on | Nothing. |
| Next | Merge PR #1967. |
| Last touched | 2026-08-11 |
Acceptance
- The Windows (MSVC) build compiles rate_tree.cpp.
- The Linux build still compiles rate_tree.cpp.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: rate_tree fails to compile on Windows | DONE | 2026-08-11 | 2026-08-11 | Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR. |
| Implement Hotfix: rate_tree fails to compile on Windows | DONE | 2026-08-11 | 2026-08-11 | Initial task for: Hotfix: rate_tree fails to compile on Windows |
Decisions
- Every symbol used must be declared by a header the file includes directly. Transitive availability is not guaranteed — MSVC proved it with std::to_string — so the fix is an explicit string include, and the same discipline applies repo-wide.
- Include hygiene is enforced mechanically: a nightly clang-tidy misc-include-cleaner sweep (build/scripts/check_includes.sh + .github/workflows/nightly-includes.yml) runs like the clang-format check and opens a bot PR with fixes. Suggested fixes to generated files must land in the codegen templates, not in generated output — the codegen-drift check guards that boundary.