From 3f01a9b280ef8ac577a8acbcb506d96c0a47fb84 Mon Sep 17 00:00:00 2001 From: Dario Gabriel Lipicar Date: Wed, 19 Aug 2026 13:34:33 -0300 Subject: [PATCH] ci(doctests): skip the qt-api-events spec, which builds a provider module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR removes `logos-cpp-generator --provider-header`. The watcher fixture in doctests/cpp-sdk-qt-api-events.test.yaml is `interface: "provider"`, so logos-module-builder reaches "generating provider dispatch (qt_watcher_module)" and the generator refuses: Error: --provider-header was removed. That one build failure cascades through the rest of the spec (install, load, subscriptionAccepted, greetThrough, greetedCount, lastGreeted), which is the whole of the red on both ubuntu-latest and macos-latest. notifier_module is `interface: universal` and builds fine. Skipped rather than rewritten. The replacement shape that keeps the Qt-typed dependency wrappers without the retired provider dispatch is `interface: universal` + `codegen.consumer_api_style: "qt"`, and logos-module-builder master does not carry that key yet — while this spec pins the builder to master. It arrives with the B4 stack. The spec file is kept and annotated, not deleted, because it covers two things nothing else does: the Qt-TYPED wrapper emission (separately generated code from the lp path, so lp-path specs cannot catch a bug in it) and a subscription made from onInit() before the dependency is reachable. Both are UNTESTED until this is restored — a known, accepted gap recorded in the spec header and in the workflow. Co-Authored-By: Claude Opus 5 --- .github/workflows/doctests.yml | 28 +++++++++++++++++++----- doctests/cpp-sdk-qt-api-events.test.yaml | 23 +++++++++++++++++++ 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/.github/workflows/doctests.yml b/.github/workflows/doctests.yml index 852d871..9930cf3 100644 --- a/.github/workflows/doctests.yml +++ b/.github/workflows/doctests.yml @@ -109,16 +109,33 @@ jobs: # failed; this only changes whether we stop early. # # Every spec runs back-to-back into one combined report (one dropdown - # entry each). cpp-sdk-qt-api-events is the only one whose modules are - # NOT `interface: universal`, so it is the only one that compiles and - # runs the Qt-typed dependency-wrapper emission. + # entry each). + # + # TEMPORARILY SKIPPED: doctests/cpp-sdk-qt-api-events.test.yaml. + # It was the only spec whose modules are NOT `interface: universal`, + # and so the only one compiling the Qt-typed dependency-wrapper + # emission. Its watcher fixture is `interface: "provider"`, the path + # this SDK removed together with `--provider-header`, so the fixture + # can no longer build and every later step of that spec cascades. + # + # It is skipped rather than rewritten because the replacement shape -- + # `interface: universal` + `codegen.consumer_api_style: "qt"`, which + # keeps the Qt-typed wrappers without the retired provider dispatch -- + # does not exist on logos-module-builder master yet (the spec pins the + # builder to master). It arrives with the B4 stack. + # + # RESTORE IN B4: once module-builder carries consumer_api_style, + # rewrite the watcher fixture as universal + consumer_api_style: "qt" + # and add this spec back to BOTH lists below and here. Until then the + # Qt-typed emission path and the deferred onInit() event subscription + # it covers are UNTESTED -- that is a known, accepted gap, not an + # oversight. nix run github:logos-co/logos-doctest -- run \ doctests/cpp-sdk-module-runtime.test.yaml \ doctests/cpp-sdk-module-composition.test.yaml \ doctests/cpp-sdk-worker-thread-http.test.yaml \ doctests/cpp-sdk-concurrent-dispatch.test.yaml \ doctests/cpp-sdk-generator-roundtrip.test.yaml \ - doctests/cpp-sdk-qt-api-events.test.yaml \ --verbose \ --continue-on-fail \ --release-for logos-cpp-sdk=${{ steps.commit.outputs.sha }} \ @@ -146,7 +163,8 @@ jobs: - name: Verify markdown generation run: | - for spec in cpp-sdk-module-runtime cpp-sdk-module-composition cpp-sdk-worker-thread-http cpp-sdk-qt-api-events; do + # cpp-sdk-qt-api-events omitted while its fixture is skipped above. + for spec in cpp-sdk-module-runtime cpp-sdk-module-composition cpp-sdk-worker-thread-http; do nix run github:logos-co/logos-doctest -- generate \ "doctests/$spec.test.yaml" \ --release-for logos-cpp-sdk=${{ steps.commit.outputs.sha }} \ diff --git a/doctests/cpp-sdk-qt-api-events.test.yaml b/doctests/cpp-sdk-qt-api-events.test.yaml index c24c09e..cfaa002 100644 --- a/doctests/cpp-sdk-qt-api-events.test.yaml +++ b/doctests/cpp-sdk-qt-api-events.test.yaml @@ -1,3 +1,26 @@ +# ───────────────────────────────────────────────────────────────────────────── +# SKIPPED — not run by .github/workflows/doctests.yml. +# +# The watcher fixture below is `interface: "provider"`. That path was removed +# from this SDK along with `logos-cpp-generator --provider-header`, so the +# fixture no longer builds: logos-module-builder reaches "generating provider +# dispatch (qt_watcher_module)" and the generator refuses. Every later step of +# this spec cascades from that one failure. +# +# It is kept, not deleted, because what it covers is not covered anywhere else: +# the Qt-TYPED dependency-wrapper emission (a bug in that path cannot be caught +# by the lp-path specs, which are separately generated code) and a subscription +# made from onInit(), before the dependency is reachable. +# +# TO RESTORE (B4): logos-module-builder master does not yet carry +# `codegen.consumer_api_style`, and this spec pins the builder to master. Once +# it does, rewrite the watcher as `"interface": "universal"` + +# `"codegen": {"consumer_api_style": "qt"}` — which keeps the Qt-typed wrappers +# without the retired provider dispatch — drop the LOGOS_PROVIDER/LOGOS_METHOD +# markers and the PROVIDER_HEADER prose, and re-add this file to both spec +# lists in .github/workflows/doctests.yml. +# ───────────────────────────────────────────────────────────────────────────── + name: "A Qt-typed Consumer Subscribing to Another Module's Event" output: cpp-sdk-qt-api-events.md release: ""