Story: Audit ores.synthetic.service headers for missing export macro
Table of Contents
This page documents a story in Product backlog — inbox, carried unfinished from Sprint 24 at close. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
Audit projects/ores.synthetic/service/src/*.hpp for free
functions/classes called across the DLL boundary (from
ores.synthetic.service.tests or another component) that don't
carry ORES_SYNTHETIC_SERVICE_EXPORT. A Claude review pass on PR
#1656 flagged make_ir_curve_feed() (ir_curve_feed.hpp:103) as a
concrete instance: same missing-macro shape as
resolve()=/=build_ir_curve_refdata_context()=/=price_ir_curve_entry()
(fixed in that PR for ir_curve_template_resolver.hpp), just not
currently called cross-boundary so it hasn't tripped Windows CI yet.
Only add the macro where a symbol is genuinely called across the
boundary — not a blanket export-everything pass.
This is a latent, not yet triggered, instance of the exact bug PR #1656 hotfixed: invisible on Linux/macOS (default ELF/Mach-O symbol visibility exports everything), but will resurface as a fresh "undefined symbol" Windows link failure the moment any test or cross-component caller reaches an unexported symbol in this header set directly. Auditing proactively now, while the pattern and root cause are fresh, is cheaper than waiting for the next one-off hotfix cycle.
Status
| Field | Value |
|---|---|
| State | BACKLOG |
| Carried from | Sprint 24 (unfinished at close) |
| Now | Not yet started. |
| Waiting on | Nothing. |
| Next | Audit headers, starting with ir_curve_feed.hpp's make_ir_curve_feed(). |
| Last touched | 2026-07-21 |
Acceptance
- Every free function/class in ores.synthetic.service's src/*.hpp headers that is genuinely called across the DLL boundary carries ORES_SYNTHETIC_SERVICE_EXPORT.
- make_ir_curve_feed() specifically confirmed exported (or confirmed not cross-boundary, if that turns out to be the case).
- No blanket export-everything change — only symbols with a real cross-boundary caller.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
Decisions
Out of scope
References
projects/ores.synthetic/service/src/ir_curve_feed.hpp:103—make_ir_curve_feed().projects/ores.synthetic/service/include/ores.synthetic.service/export.hpp— the ORES_SYNTHETIC_SERVICE_EXPORT macro.- PR #1656 — the fix this pattern mirrors.