Story: Fix missing ORES_REFDATA_CORE_EXPORT on refdata/scheduler service classes

Table of Contents

This page documents a story in Sprint 22. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

Every *_service class meant to be called across .so boundaries (party_service, portfolio_service, and 17 other refdata services, plus scheduler's job_definition_service) is missing its ORES_<COMPONENT>_CORE_EXPORT annotation. With the project's -fvisibility=hidden default, this makes their methods unresolvable from any other shared library or executable, surfacing as undefined-reference linker errors (discovered via ores.iam.core.tests failing to link against party_service::get_party_at_version and counterparty_service::get_counterparty_at_version, and counterparty_repository::read_at_version needing a stale .o recompile). Add the export.hpp include and EXPORT macro to every affected class; leave *_mapper classes alone since those are internal-only, never called cross-.so.

Status

Field Value
State DONE
Parent sprint Sprint 22
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-07-09

Acceptance

  • All 19 ores.refdata.core service classes and ores.scheduler.core's job_definition_service carry their EXPORT macro.
  • ores.iam.core.tests and a full project build link cleanly with no undefined-reference errors.

Tasks

Task State Start End Description
Scaffold story: Fix missing ORES_REFDATA_CORE_EXPORT on refdata/scheduler service classes DONE 2026-07-09 2026-07-09 Story scaffolding rides this task: documents, sprint wiring, and the scaffold PR. Close it before merging that PR.
Add missing EXPORT macros to service classes DONE 2026-07-09 2026-07-09 Initial task for: Fix missing ORES_REFDATA_CORE_EXPORT on refdata/scheduler service classes

Decisions

  • Deliberately excluded *_mapper classes from the EXPORT sweep since they are internal-only, never called across a .so boundary.
  • Also touched counterparty_repository.cpp (no content change) to force recompilation of a stale .o that predated read_at_version being added.

Out of scope

Emacs 29.3 (Org mode 9.6.15)