Skip to content

chore: S24.04 retire Linux SingleTask example binary#334

Merged
DavidCozens merged 1 commit into
mainfrom
chore/s24-04-drop-singletask
May 11, 2026
Merged

chore: S24.04 retire Linux SingleTask example binary#334
DavidCozens merged 1 commit into
mainfrom
chore/s24-04-drop-singletask

Conversation

@DavidCozens

@DavidCozens DavidCozens commented May 11, 2026

Copy link
Copy Markdown
Owner

Purpose

Closes #332.

Example/SingleTask/ (Linux, NullBuffer, direct UDP/TCP) and
Example/Threaded/ (Linux, PosixMessageQueueBuffer + service
thread, SwitchingSender) were two binaries doing overlapping jobs.
The Threaded binary's SwitchingSender + BlockStore wiring is a
strict superset since S15 introduced SwitchingSender. Windows
already collapsed to one binary in S13.20, FreeRTOS in S08.04 slice
2 — Linux was the last platform carrying two. This story retires
the SingleTask binary and points the Linux BDD harness at the
Threaded one. Renaming/moving the remaining binary is S24.05 #333.

Change Description

  • Bdd/features/environment.py — Linux default
    context.example_binary flips from
    build/debug/Example/SolidSyslogExample to
    build/debug/Example/SolidSyslogThreadedExample.
  • Bdd/features/steps/syslog_steps.py
    • run_threaded_example / run_buffered_example collapse into
      run_example. The three feature phrasings (the example
      program
      , the threaded example, the buffered example) stay
      distinct in .feature prose so scenario intent reads cleanly;
      their Python step decorators all dispatch to one helper.
    • run_example pins --app-name "SolidSyslogExample" on
      non-FreeRTOS targets so Linux records carry the same APP-NAME
      string Windows already does (binary basename differs across
      runners). FreeRTOS hardcodes the same string in its example
      main and has no getopt port, so the flag is skipped there.
    • THREADED_BINARY constant removed; build_threaded_command
      drops its oracle_format branch and uses
      context.example_binary directly.
  • Bdd/features/steps/target_driver.py — docstring updated to
    reflect single-binary-per-runner.
  • Example/SingleTask/ deleted (3 files); Example/CMakeLists.txt
    drops the add_executable(SolidSyslogExample …) block.
  • Tests/Example/SolidSyslogExampleTest.cpp deleted;
    Tests/Example/CMakeLists.txt drops its source-list entries and
    the SingleTask include directory.
  • .github/workflows/ci.yml — drops SolidSyslogExample from
    build targets, artifact uploads, and chmod +x steps.
  • README.md, Bdd/README.md, docs/bdd.md, CLAUDE.md
    rewritten where they enumerated SingleTask / Threaded as
    separate examples.

Pre-flip audit (per the story scope)

Every run_example caller routes through
_run_with_prompt_protocolwait_for_messages, which polls the
oracle for receipt before sending quit. NullBuffer's synchronous
send was never load-bearing on assertions; the prompt protocol
already coordinated the buffered drain on Windows since S13.18.
Confirmed by running the full Linux BDD suite — 44 scenarios pass
post-flip.

Test Evidence

Local CI presets (run inside the gcc / clang devcontainers):

  • debug (build-linux-gcc) — 1108 tests / 1105 ran (3 ignored,
    platform-skipped), 2393 checks, 0 failures
  • clang-debug (build-linux-clang) — same totals, ExampleTests
    re-run clean
  • sanitize — same totals, ASan + UBSan clean
  • coverage — overall 99.5% lines (2107 / 2117), 98.9% functions
    (449 / 454) — well above the 90% gate
  • tidy — clean (after dropping SingleTask sources)
  • cppcheck — clean
  • clang-format --dry-run --Werror over Core / Tests / Example — clean

Linux BDD:

behave --tags='not @wip and not @windows_wip and not @freertoswip and not @no_rtc' Bdd/features/
20 features passed, 0 failed, 1 skipped
44 scenarios passed, 0 failed, 5 skipped
236 steps passed, 0 failed, 25 skipped

Areas Affected

  • Example/SingleTask/ directory removed; Threaded/ is now
    the sole Linux example.
  • Tests/Example/SolidSyslogExampleTest.cpp removed;
    ExampleTests shrinks accordingly.
  • Bdd/ — Linux runner now drives the Threaded binary; step
    helpers collapse to one path.
  • CI workflow — Linux build steps + BDD artifact wiring no longer
    reference SolidSyslogExample.
  • Windows BDD path is unchanged (its binary's OUTPUT_NAME
    remains SolidSyslogExample); FreeRTOS unchanged.

🤖 Generated with Claude Code

Summary by CodeRabbit

Release Notes

  • Deprecated

    • Removed the Linux single-task example binary; the threaded example is now the default for all Linux deployments.
  • Documentation

    • Updated documentation and build configuration to reflect the threaded example as the standard implementation.

Review Change Stack

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 11, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ec495156-b14e-4e3f-82a6-9025c2cc749e

📥 Commits

Reviewing files that changed from the base of the PR and between be41cca and c23a5c6.

📒 Files selected for processing (15)
  • .github/workflows/ci.yml
  • Bdd/README.md
  • Bdd/features/environment.py
  • Bdd/features/steps/syslog_steps.py
  • Bdd/features/steps/target_driver.py
  • CLAUDE.md
  • DEVLOG.md
  • Example/CMakeLists.txt
  • Example/SingleTask/SolidSyslogExample.c
  • Example/SingleTask/SolidSyslogExample.h
  • Example/SingleTask/main.c
  • README.md
  • Tests/Example/CMakeLists.txt
  • Tests/Example/SolidSyslogExampleTest.cpp
  • docs/bdd.md
💤 Files with no reviewable changes (5)
  • Tests/Example/CMakeLists.txt
  • Example/SingleTask/SolidSyslogExample.c
  • Example/SingleTask/SolidSyslogExample.h
  • Example/SingleTask/main.c
  • Tests/Example/SolidSyslogExampleTest.cpp

📝 Walkthrough

Walkthrough

This PR consolidates Linux example binaries by retiring the SingleTask binary and moving all Linux BDD tests to use the Threaded binary. The change includes CI workflow narrowing, BDD helper refactoring, source removal, and documentation updates.

Changes

Example Binary Consolidation

Layer / File(s) Summary
BDD Configuration & Defaults
Bdd/features/environment.py, Bdd/README.md
Linux BDD now defaults to SolidSyslogThreadedExample; environment and documentation updated.
CI Build Targets
.github/workflows/ci.yml
Linux GCC and FreeRTOS jobs now build and upload only SolidSyslogThreadedExample; chmod step adjusted.
BDD Test Orchestration Refactoring
Bdd/features/steps/syslog_steps.py, Bdd/features/steps/target_driver.py
THREADED_BINARY constant removed; run_example, run_threaded_example, and run_buffered_example collapsed into unified dispatch; --app-name SolidSyslogExample pinned for non-FreeRTOS targets.
Example CMake Build Definition
Example/CMakeLists.txt
SingleTask executable target SolidSyslogExample removed; POSIX section comments updated.
Delete SingleTask Sources
Example/SingleTask/SolidSyslogExample.c, Example/SingleTask/SolidSyslogExample.h, Example/SingleTask/main.c
SingleTask implementation, header, and entry point deleted.
Remove Unit Tests
Tests/Example/CMakeLists.txt, Tests/Example/SolidSyslogExampleTest.cpp
SingleTask test file removed; CMake test sources and include dirs updated.
Documentation Updates
CLAUDE.md, DEVLOG.md, README.md, docs/bdd.md
Project structure, example count, DEVLOG S24.04 entry, and key files table updated to reflect retirement of SingleTask.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

  • DavidCozens/solid-syslog#332: This PR directly implements the requirements from the parent issue—removing SingleTask binary, collapsing BDD helpers, and updating Linux defaults.

Possibly related PRs

  • DavidCozens/solid-syslog#330: Both PRs modify BDD step driver and example-binary selection logic in Bdd/features/steps/syslog_steps.py and related wiring.
  • DavidCozens/solid-syslog#264: That PR introduced the prompt-protocol helpers and run_threaded_example/run_buffered_example that this PR now collapses.
  • DavidCozens/solid-syslog#305: Both PRs modify BDD example-selection and orchestration code in environment.py and syslog_steps.py.

Poem

🐰 One binary binds them all, the Threaded one shines,
The SingleTask fades where the Threaded one aligns,
No more fork, just one clean path to go,
BDD helpers collapse, the refactor aglow,
Linux leans lean, from duple to solo!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore: S24.04 retire Linux SingleTask example binary' clearly and specifically summarizes the main change: removing the SingleTask example and consolidating to the Threaded binary.
Description check ✅ Passed The PR description comprehensively covers Purpose (closes #332), Change Description (detailed updates to all affected files), Test Evidence (local CI + BDD results), and Areas Affected (module/subsystem impact).
Linked Issues check ✅ Passed All major objectives from issue #332 are met: Linux BDD points to Threaded binary, run_example helpers collapsed, Example/SingleTask deleted, Tests removed, Example/CMakeLists updated, CI references cleaned, docs updated. Pre-flip audit confirms BDD scenarios remain green (44 scenarios passed).
Out of Scope Changes check ✅ Passed All changes directly support issue #332 objectives. Documentation updates (README, CLAUDE.md, docs/bdd.md) are necessary housekeeping to reflect the removal. No unrelated changes or scope creep detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/s24-04-drop-singletask

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown
Contributor

☀️   Quality Summary

   🚦   build-linux-gcc: 100% successful (✔️ 1111 passed, 🙈 3 skipped)
   🚦   build-linux-clang: 100% successful (✔️ 1063 passed, 🙈 3 skipped)
   🚦   sanitize-linux-gcc: 100% successful (✔️ 1063 passed, 🙈 3 skipped)
   🚦   integration-linux-openssl: 100% successful (✔️ 9 passed)
   🚦   integration-windows-openssl: 100% successful (✔️ 9 passed)
   🚦   bdd-linux-syslog-ng: 94% successful (✔️ 46 passed, 🙈 3 skipped)
   🚦   bdd-windows-otel: 90% successful (✔️ 44 passed, 🙈 5 skipped)
   🚦   bdd-freertos-qemu: 53% successful (✔️ 26 passed, 🙈 23 skipped)
   🚦   build-windows-msvc: 100% successful (✔️ 975 passed, 🙈 1 skipped)
   ⚠️   Clang-Tidy: No warnings
   ⚠️   CPPCheck: No warnings


Created by Quality Monitor v1.14.0 (#f3859fd). More details are shown in the GitHub Checks Result.

@DavidCozens DavidCozens merged commit 27ca513 into main May 11, 2026
19 checks passed
@DavidCozens DavidCozens deleted the chore/s24-04-drop-singletask branch May 11, 2026 13:19
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.

S24.04: Migrate Linux BDD off Example/SingleTask; remove the SingleTask binary

1 participant