Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -703,6 +703,11 @@ jobs:
# expected greeting. timeout returns 124 when it kills QEMU, which is
# the success path here — we want the scheduler to keep idling so GDB
# can attach in interactive use.
#
# -icount shift=auto,sleep=off,align=off advances the virtual clock by
# retired guest instructions rather than wall-clock, decoupling guest
# timing from host load. Forward-compatibility groundwork for the BDD
# timing scenarios in S08.03+; no behavioural change at this story.
- name: Run ELF under QEMU mps2-an385
shell: bash
run: |
Expand All @@ -711,6 +716,7 @@ jobs:
OUT=$(timeout 5 qemu-system-arm \
-M mps2-an385 -m 16M -nographic \
-semihosting-config enable=on,target=native \
-icount shift=auto,sleep=off,align=off \
-kernel build/freertos-cross/Example/FreeRtos/HelloWorld/SolidSyslogFreeRtosHelloWorld.elf \
2>&1)
RC=$?
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ becomes the single commit message — so the PR title must follow Conventional C

**Branch protection rules (configured on GitHub):**
- Direct pushes to `main` are blocked
- PRs require all status checks to pass before merging: build-linux-gcc, build-linux-clang, build-windows-msvc, sanitize-linux-gcc, coverage-linux-gcc, analyze-tidy, analyze-cppcheck, analyze-format, integration-linux-openssl, bdd-linux-syslog-ng, bdd-windows-otel, summary
- PRs require all status checks to pass before merging: build-linux-gcc, build-linux-clang, build-windows-msvc, sanitize-linux-gcc, coverage-linux-gcc, analyze-tidy, analyze-cppcheck, analyze-format, analyze-iwyu, integration-linux-openssl, integration-windows-openssl, bdd-linux-syslog-ng, bdd-windows-otel, build-freertos-host-tdd, build-freertos-target, summary
- Squash merge only — other merge strategies are disabled
- Branches are deleted automatically after merge

Expand Down
44 changes: 44 additions & 0 deletions DEVLOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,49 @@
# Dev Log

## 2026-05-07 — S08.02 — QEMU determinism groundwork + analyze-iwyu pin

### Context

S08.01 already wired the `build-freertos-target` and `build-freertos-host-tdd`
CI jobs and (out-of-band) someone added them to branch protection. So the
substantive plumbing the story asks for is already in place. Two things were
left to tidy:

### What landed

- **`-icount shift=auto,sleep=off,align=off`** added to the `qemu-system-arm`
invocation in `build-freertos-target`. Decouples FreeRTOS scheduler timing
from CI runner load. No behavioural change for the current hello-world
smoke (it still races to print the greeting and gets killed by `timeout 5`),
but it is the determinism mode the timing-sensitive BDD scenarios coming in
S08.03+ will need, and it costs nothing to enable now.
- **`analyze-iwyu` added to required status checks on `main`.** S24.01 added
the job but the branch-protection update was missed. `build-freertos-target`
/ `build-freertos-host-tdd` were also already pinned but undocumented in
CLAUDE.md.
- **CLAUDE.md required-checks list** now reflects the actual GitHub state:
`analyze-iwyu`, `integration-windows-openssl`, `build-freertos-host-tdd`,
`build-freertos-target` added to the documented list.

### Deliberately not done

- **No 10×-loop determinism harness.** The story's "ten consecutive runs
without flake" criterion was aimed at the binary that BDD will eventually
drive against. The current hello-world is a stepping stone; subsequent
E08 stories replace or evolve it. Real flake hardening belongs with S08.03
where the BDD scenarios become the determinism evidence.
- **Streaming-greeting detection rewrite.** Same reason. The existing
`timeout 5` / `grep` shape is fine for a stepping-stone smoke.
- **No changes to `Example/FreeRtos/HelloWorld/`.** Keeping the CI ELF
identical to the dev-tested ELF stays load-bearing.

### Verified

- `gh api repos/.../branches/main/protection/required_status_checks` now lists
`analyze-iwyu` alongside the existing contexts.
- CI workflow change is a one-line addition to a single QEMU invocation;
no other jobs touched.

## 2026-05-07 — S12.16 — TCP keepalive + TCP_USER_TIMEOUT

### Decision
Expand Down
Loading