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:103make_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.

Emacs 29.3 (Org mode 9.6.15)