Story: Hotfix: Keep the build warning-free on every toolchain

Table of Contents

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

1. Goal

(Describe the user-visible outcome this story delivers.)

2. Status

Field Value
State DONE
Parent sprint Sprint 29
Now Nothing.
Waiting on Nothing.
Next Nothing.
Last touched 2026-11-08

3. Acceptance

The story closes on the tasks it finished:

  • Point the web reads at the feed catalogue.
  • Name the two types gcc refuses in a unity build.
  • Share one run builder per test suite.

4. Tasks

Task State Start End Description
Name the two types gcc refuses in a unity build DONE 2026-10-31 2026-10-31 gcc's -Wsubobject-linkage rejects a subobject whose type has no linkage. The nats client holds a latch from its anonymous namespace and the jwks coroutine holds a lambda from its own function scope, so the gcc nightly fails on ores.nats.lib and nothing in a clang build says so.
Point the web reads at the feed catalogue DONE 2026-10-31 2026-10-31 The source entity became the feed, and the generated market_data_source protocol module went with it. The BFF still imported that module, so the web target stopped building on every platform.
Share one run builder per test suite DONE 2026-11-02 2026-11-02 Two reporting tests and two marketdata tests each defined their own file-local run builder, which the unity build refuses; one marketdata copy had been renamed rather than shared.

5. Decisions

6. Out of scope

The same nightly reports two more failures, and neither belongs to this story.

  • The MSVC unity build runs out of template context. tenor_basis_swap_pay_receive_entity.hpp's columns() spells its 23 bindings as a |-chained expression, and std::tuple_cat over them exhausts MSVC's template context inside unity_60_cxx of ores.refdata.core. Unity batches 16 sources because 7f2c4f037a turned it on (2026-10-27), so the batch is the unit MSVC runs out on. Either the binding expression wants a flatter shape or the batch wants to be smaller; both are a decision about generated code and build cost rather than a typo, and a Windows runner is the only place to check the answer.

Emacs 29.3 (Org mode 9.6.15)