Story: Hotfix: ores.shell tests fail to link on Windows
Table of Contents
This page documents a story in Sprint 20. It captures the goal, current status, acceptance criteria, and the tasks that compose it.
Goal
The Continuous Windows workflow fails linking ores.shell.tests.exe
(windows-clang-release-ninja): the test binary references
parse_args, parsed_args::flag_set and the rest of the new
command_args / command_feedback / script_runner surface, but those
declarations were added (PR #1121) without ORES_SHELL_EXPORT, so
the ores.shell DLL does not export them. Linux builds pass because
symbols are visible by default there. The fix exports the new public
surface, restoring a green Windows build.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 20 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-06-07 |
Acceptance
ores.shell.tests.exelinks on bothwindows-clang-release-ninjaandwindows-msvc-release-ninja.- Linux build and the shell test suite remain green.
Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Scaffold story: Hotfix: ores.shell tests fail to link on Windows | DONE | 2026-06-07 | 2026-06-07 | Story documents and sprint wiring; rode PR #1166. |
| Export the new ores.shell public surface | DONE | 2026-06-07 | 2026-06-07 | Add ORES_SHELL_EXPORT to command_args/command_feedback/script_runner surface; fixes windows-clang-release-ninja. PR #1166. |
| Inline flag_set and flag to fix MSVC linker error | DONE | 2026-06-07 | 2026-06-07 | Make flag_set/flag inline in header; removes dllimport issue that MSVC enforces strictly. PR #1179. |
Decisions
- Export strategy for trivial methods: struct-level
__declspec(dllexport)does not reliably carry to member functions under MSVC; prefer inlining trivial one-liners (flag_set,flag) rather than applying the macro at struct scope. Out-of-line methods that must cross the DLL boundary get individualORES_SHELL_EXPORTdecorators.