Skip to content

Fix standalone example headers and tick dispatch - #219

Merged
jcelerier merged 7 commits into
mainfrom
fix/color-display-unit-aliases
Oct 9, 2026
Merged

jcelerier merged 7 commits into
mainfrom
fix/color-display-unit-aliases

Conversation

@jcelerier

@jcelerier jcelerier commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

Summary

Fix the example compilation and dispatch failures exposed by score CI and this PR's Avendish CI runs:

  • ColorDisplay: explicitly include ossia/network/dataspace/dataspace_base_defs_fwd.hpp, which declares ossia::rgba8, ossia::rgba, and the other color value aliases. color.hpp alone provides the unit tags, not those aliases. This completes the standalone-header fix from Release audit: categories, descriptions, licenses and help text #217.
  • Minimal: replace the two halp_meta invocations with ordinary static consteval metadata methods, matching the other raw examples. Preserve the example's deliberately helper-free, standard-header-free design and restore the uninterrupted c_name comment.
  • Tick examples: declare the existing halp::tick, halp::tick_musical, and halp::tick_flicks types as each example's tick. This lets host dispatch construct the correct tick instead of selecting an integer frame-count call. The dispatch static assertion remains intact.

CI evidence

  • Windows, macOS, MinGW, and VS2026 first fail in Minimal.hpp:23 on the undefined halp_meta invocation.
  • The VS2026 log additionally fails the TestTick, TestTickMusical, and TestTickFlicks CLAP, VST3, and vintage targets with operator() cannot be called: if it takes a tick, declare using tick = <that type>; in the object.
  • ColorDisplay's missing-alias failure was observed in score Coverage CI.

Verification

  • Standalone ColorDisplay translation unit: compilation fails before the alias-header include and passes afterward, without a PCH, using score's configured compilation flags.
  • Minimal standalone translation unit: reproduced the pre-fix metadata parse error; passes after the fix with both Clang and GCC using -std=c++20 -nostdinc -nostdinc++.
  • Tick-dispatch smoke program: reproduced the pre-fix dispatch static assertion; after the fix, runs through get_tick_or_frames and invoke_effect and verifies observable frames, tempo, and relative-position outputs.
  • Tick smoke passes with Clang C++26 structured-binding reflection, Clang C++23 Boost.PFR, and GCC C++23 Boost.PFR.

Native Windows/macOS CI has not yet completed for the updated revision. Existing example build targets cover these compilation failures; no dispatch guard was weakened and no new external dependency was added.

Follow-up CI repairs

  • Normalize ticks at the default non-audio process_adapter boundary, matching the existing audio-adapter behavior. This fixes the example host as well as CLAP/VST3/vintage callers without weakening dispatch assertions.
  • Add an executable process-adapter regression covering integer frame counts, musical transport, relative position, and legacy frame-count processors. It fails before the fix and passes on Clang/GCC with both reflection backends.
  • Backport the Godot 4.5 allocation-header fix through an idempotent FetchContent source patch; keep the 4.5 API/runtime instead of changing Godot versions.
  • Preserve the original self-hosted sat-builder selections. The temporary hosted-runner migration and its bootstrap steps have been reverted.

Additional local verification: actual example host runs all three tick examples; patched Godot src/godot.cpp compiles; updated workflows pass actionlint. Native CI is running on the updated revision.

Standalone header/test follow-up

Remove an unused libossia value include from ArrayCombiner, include <cstdlib> where SampleAccurateGeneratorExample calls std::rand, and migrate ArrayBest tests to its existing event-driven optional-output contract. The complete array test executable passes 82 assertions in 7 cases; the generator compile/run smoke passes.

Full local verification

A full default standalone build with the dependencies available locally passed after correcting the optional GLFW link guard in the Qt standalone path. All 299 configured CTest cases passed, including Godot runtime smoke tests. No backend enable flag was turned off for that build. Native CI remains the acceptance gate for platform-specific SDK coverage.

Restored local builders

Revision 43103bdc passed all 23 checks. Revision 07ec34d2 restores the original local-builder workflows without changing the verified source fixes. Fresh checks on this revision remain pending; previous green checks are not claimed as verification of the restored routing.

@jcelerier jcelerier changed the title Fix standalone ColorDisplay compilation with explicit unit aliases Fix standalone example headers and tick dispatch Oct 9, 2026
@jcelerier

Copy link
Copy Markdown
Member Author

Windows exposed the same missing <cstdlib> declaration in the texture generator. Both std::rand users now include the defining header explicitly. The actual texture-generator Godot target builds and its runtime smoke passes locally. Full configured build/299-test verification was also completed before this final header-only follow-up.

@jcelerier
jcelerier merged commit 797b3c9 into main Oct 9, 2026
7 of 23 checks passed
jcelerier added a commit to ossia/score that referenced this pull request Oct 9, 2026
celtera/avendish#219 merged as 797b3c9d7e, so the ColorDisplay fix this
branch needs is on main and the pin no longer has to name
fix/color-display-unit-aliases. Pinned to main's tip a1f6471c53, which
also picks up #220.

Content is unchanged where it matters: the tree at the old pin and at
797b3c9d7e is byte-identical (`git diff` reports no files), and #220 on
top touches one line -- a Catch2 tag inside `if(BUILD_TESTING)` in
cmake/avendish.tests.cmake -- which score never evaluates.

Note `git cherry` is useless for checking this: #219 was squash-merged, so
its 7 commits collapsed into 1 and no patch-id matches. Compare trees, not
commits. A pin on a feature branch dies when that branch is tidied up,
which is why this matters beyond neatness.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
jcelerier added a commit to ossia/score that referenced this pull request Oct 9, 2026
celtera/avendish#219 merged as 797b3c9d7e, so the ColorDisplay fix this
branch needs is on main and the pin no longer has to name
fix/color-display-unit-aliases. Pinned to main's tip a1f6471c53, which
also picks up #220.

Content is unchanged where it matters: the tree at the old pin and at
797b3c9d7e is byte-identical (`git diff` reports no files), and #220 on
top touches one line -- a Catch2 tag inside `if(BUILD_TESTING)` in
cmake/avendish.tests.cmake -- which score never evaluates.

Note `git cherry` is useless for checking this: #219 was squash-merged, so
its 7 commits collapsed into 1 and no patch-id matches. Compare trees, not
commits. A pin on a feature branch dies when that branch is tidied up,
which is why this matters beyond neatness.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019QYyvhRXvSMSRQPaq12Teq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant