You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Should land before:#333 (S24.05 moves Example/FreeRtos/SingleTask/ → Bdd/Targets/FreeRtos/. Retiring HelloWorld first lets that story relocate a clean single-child tree instead of a two-child one that needs splitting mid-move.)
Overview
Example/FreeRtos/HelloWorld/ is a minimal QEMU bring-up smoke ELF
— one task printing one line over the CMSDK UART, no IP stack, no
syslog. It was the right shape during S08 bring-up when the
cross-compile / scheduler / UART / newlib chain was the unknown.
After S08.03 + S08.04 closed out, Example/FreeRtos/SingleTask/
exercises every layer HelloWorld did, plus FreeRTOS-Plus-TCP, plus
the full library, plus the BDD scenarios. The diagnostic separation
HelloWorld provided is no longer load-bearing.
Why
SingleTask is a strict superset of HelloWorld at runtime. If
SingleTask hangs before the SolidSyslog> prompt, the
toolchain/scheduler/UART/newlib chain is suspect — same signal
HelloWorld gave. After the prompt, IP/syslog is in play.
The HelloWorld retirement was already flagged as a slice-3 gate
in the S08.04 plan (see DEVLOG 2026-05-11 "S08.04 slice 2" Deferred to slice 3 — HelloWorld retirement decision).
Pre-launch (v0.0.0); no external readers.
Carrying both means two QEMU smoke steps in CI's build-freertos-target job and two VS Code launch/task entries
to keep in sync.
In scope
Delete Example/FreeRtos/HelloWorld/ (directory + its add_subdirectory(HelloWorld) line in Example/FreeRtos/CMakeLists.txt).
Drop SolidSyslogFreeRtosHelloWorld from the cmake --build --target ... list.
Drop the HelloWorld QEMU smoke step that runs the ELF and
asserts on its stdout.
The SingleTask cross-build remains; it is itself the smoke.
.vscode/tasks.json — the freertos-cross branch of the
build-and-test task currently builds SolidSyslogFreeRtosHelloWorld. Switch to SolidSyslogFreeRtosSingleTask. The "run on QEMU (FreeRTOS)"
task's -kernel ...HelloWorld.elf path becomes ...SingleTask/SolidSyslogFreeRtosSingleTask.elf.
.vscode/launch.json — rename / repoint the Debug FreeRTOS HelloWorld (QEMU) launch config to the
SingleTask ELF. (Bikeshed: "Debug FreeRTOS SingleTask (QEMU)".)
Example/FreeRtos/README.md — rewrite the table (one row,
SingleTask) and update the VS Code Ctrl+Shift+B / Run-task /
command-line / GDB sections to reference the SingleTask ELF
path.
docs/ci.md — update the build-freertos-target row (the
"QEMU bring-up smoke for HelloWorld" wording).
docs/containers.md — update the Debug FreeRTOS HelloWorld (QEMU) reference to match the renamed launch config.
Example/FreeRtos/Common/CMSDK_UART.md — strip the "HelloWorld"
contextual references (the doc is still useful for SingleTask).
Example/FreeRtos/cmake/arm-none-eabi.cmake — comment-only
cleanup of the HelloWorld / SingleTask mention.
Acceptance criteria
Example/FreeRtos/HelloWorld/ no longer exists.
build-freertos-target CI job is green, builds only the
SingleTask ELF, and still serves the artefact to bdd-freertos-qemu.
bdd-freertos-qemu is green.
No references to SolidSyslogFreeRtosHelloWorld or HelloWorld.elf remain in CMakeLists, CI workflow, VS Code
config, or live docs (DEVLOG history is exempt).
VS Code build/run/debug tasks under the freertos-target
service drive SingleTask end-to-end.
Any change to the BDD harness, the SingleTask main, or the
Common/ shared infrastructure.
Risks
After deletion, the only thing that exercises the cross-compile
QEMU boot path under CI is SingleTask. If SingleTask fails to
build before reaching main, CI will surface the same failure
HelloWorld would have — but the diff is one toolchain bring-up
vs. a binary that also pulls in FreeRTOS-Plus-TCP and the
library. If the toolchain regressions we've actually hit in CI
history were FreeRTOS-Plus-TCP-aware, this is a net-zero. If
any were lower-layer (linker script, vector table, newlib
retargeting), SingleTask still catches them — but with a longer
"where in the boot did it fail" investigation window.
Mitigation: SingleTask's main boots a Service task before
the IP stack is up, and the BDD harness times out on a missing
prompt — same human-readable signal HelloWorld's stdout gave.
References
Memory: project_freertos_helloworld_retirement (watching
brief carried through S08.04).
DEVLOG 2026-05-11 "S08.04 slice 2: FreeRTOS example switches
to CircularBuffer + FreeRtosMutex" — Deferred to slice 3
flagged the retirement gate.
E24 E24: Code Hygiene #254 charter — "Other code-quality work that doesn't
belong under a capability-focused epic".
Parent epic: #254 (E24: Code Hygiene)
Should land before: #333 (S24.05 moves
Example/FreeRtos/SingleTask/→Bdd/Targets/FreeRtos/. Retiring HelloWorld first lets that story relocate a clean single-child tree instead of a two-child one that needs splitting mid-move.)Overview
Example/FreeRtos/HelloWorld/is a minimal QEMU bring-up smoke ELF— one task printing one line over the CMSDK UART, no IP stack, no
syslog. It was the right shape during S08 bring-up when the
cross-compile / scheduler / UART / newlib chain was the unknown.
After S08.03 + S08.04 closed out,
Example/FreeRtos/SingleTask/exercises every layer HelloWorld did, plus FreeRTOS-Plus-TCP, plus
the full library, plus the BDD scenarios. The diagnostic separation
HelloWorld provided is no longer load-bearing.
Why
SingleTask hangs before the
SolidSyslog>prompt, thetoolchain/scheduler/UART/newlib chain is suspect — same signal
HelloWorld gave. After the prompt, IP/syslog is in play.
in the S08.04 plan (see DEVLOG 2026-05-11 "S08.04 slice 2"
Deferred to slice 3 — HelloWorld retirement decision).
build-freertos-targetjob and two VS Code launch/task entriesto keep in sync.
In scope
Example/FreeRtos/HelloWorld/(directory + itsadd_subdirectory(HelloWorld)line inExample/FreeRtos/CMakeLists.txt)..github/workflows/ci.yml—build-freertos-targetjob:SolidSyslogFreeRtosHelloWorldfrom thecmake --build --target ...list.asserts on its stdout.
.vscode/tasks.json— thefreertos-crossbranch of thebuild-and-test task currently builds
SolidSyslogFreeRtosHelloWorld. Switch toSolidSyslogFreeRtosSingleTask. The "run on QEMU (FreeRTOS)"task's
-kernel ...HelloWorld.elfpath becomes...SingleTask/SolidSyslogFreeRtosSingleTask.elf..vscode/launch.json— rename / repoint theDebug FreeRTOS HelloWorld (QEMU)launch config to theSingleTask ELF. (Bikeshed: "Debug FreeRTOS SingleTask (QEMU)".)
Example/FreeRtos/README.md— rewrite the table (one row,SingleTask) and update the VS Code Ctrl+Shift+B / Run-task /
command-line / GDB sections to reference the SingleTask ELF
path.
docs/ci.md— update thebuild-freertos-targetrow (the"QEMU bring-up smoke for HelloWorld" wording).
docs/containers.md— update theDebug FreeRTOS HelloWorld (QEMU)reference to match the renamed launch config.Example/FreeRtos/Common/CMSDK_UART.md— strip the "HelloWorld"contextual references (the doc is still useful for SingleTask).
Example/FreeRtos/cmake/arm-none-eabi.cmake— comment-onlycleanup of the
HelloWorld / SingleTaskmention.Acceptance criteria
Example/FreeRtos/HelloWorld/no longer exists.build-freertos-targetCI job is green, builds only theSingleTask ELF, and still serves the artefact to
bdd-freertos-qemu.bdd-freertos-qemuis green.SolidSyslogFreeRtosHelloWorldorHelloWorld.elfremain in CMakeLists, CI workflow, VS Codeconfig, or live docs (DEVLOG history is exempt).
freertos-targetservice drive SingleTask end-to-end.
Out of scope
Example/FreeRtos/SingleTask/→Bdd/Targets/FreeRtos/move — that's S24.05 S24.05: Move BDD-target binaries from Example/ to Bdd/Targets/<platform>/ #333.
Common/ shared infrastructure.
Risks
build before reaching
main, CI will surface the same failureHelloWorld would have — but the diff is one toolchain bring-up
vs. a binary that also pulls in FreeRTOS-Plus-TCP and the
library. If the toolchain regressions we've actually hit in CI
history were FreeRTOS-Plus-TCP-aware, this is a net-zero. If
any were lower-layer (linker script, vector table, newlib
retargeting), SingleTask still catches them — but with a longer
"where in the boot did it fail" investigation window.
mainboots a Service task beforethe IP stack is up, and the BDD harness times out on a missing
prompt — same human-readable signal HelloWorld's stdout gave.
References
project_freertos_helloworld_retirement(watchingbrief carried through S08.04).
to CircularBuffer + FreeRtosMutex" — Deferred to slice 3
flagged the retirement gate.
belong under a capability-focused epic".