Story: Hotfix: CI builds red across all OSs on value_or({}) in the generated result mapper

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.

1. Goal

Main's continuous GitHub Actions builds are red on every OS. The Linux (gcc 13) and macOS (Apple clang) jobs fail to compile projects/ores.compute/core/src/repository/result_mapper.cpp. The mapper-impl codegen template emits v.<field>.value_or({}) for nullable numeric fields, and a braced-init-list cannot deduce the template parameter of std::optional<T>::value_or on those compilers. MSVC and clang-cl accept the deduction: the Windows jobs compiled the same file in the same window and were red for separate reasons (a test-seed failure and a transient file-lock link error), both since addressed. The local toolchains (g++ 16.2, clang 21.1) also accept the idiom, which is why bind PR #2012 built green locally. The fix emits an explicit value_or(0) instead, retangles the mapper template, and regenerates the compute mapper. Zero is semantically identical to {} for the two nullable numerics in play: pgmq_msg_id (nullable bigint to std::int64_t) and outcome (nullable int to int, generator default 0), both read into non-optional domain scalars. The CI builds return to green.

2. Status

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

3. Acceptance

  • The mapper-impl codegen template emits value_or(0), never value_or({}), for nullable numeric fields.
  • Regenerating the compute mapper is the only drift the template change produces; the codegen drift checks pass.
  • The local build, ctest and site build stay green, and the continuous CI on every OS returns to green after the merge.

4. Tasks

Task State Start End Description
Implement Hotfix: CI builds red across all OSs on value_or({}) in the generated result mapper DONE 2026-09-06 2026-09-06 Edit the mapper-impl codegen template to emit value_or(0) for nullable numeric fields, retangle the templates and regenerate the compute mapper, verify codegen drift, the site build, the roundtrip and the full build with ctest, then raise the hotfix PR and roll the story and this task DONE. The story doc, the sprint Hotfixes row and this task ride this branch.

5. Decisions

6. Out of scope

Emacs 29.3 (Org mode 9.6.15)