walk-free B0: honest needs_legacy_walk=false on the 20 inert STM32 models#515
Merged
Conversation
Batch B0 of the walk-free STM32 campaign (docs/walk_free_plan.md). Assert needs_legacy_walk()==false on the 20 STM32 model types whose tick() is a structural no-op in every state (pure register banks / stubs / lazy-read models), so they no longer force the per-cycle legacy walk. Each override verified against the model's tick path: none of these types override tick()/tick_elapsed()/on_event()/sync_to()/uses_scheduler() — they use the trait defaults and emit nothing from the walk. Flash is marked too: its H5 erase/bank-swap ops drain via requires_cycle_accurate/drain_pending_op per instruction, never the walk, so tick() is the default no-op for all layouts. stub (syscfg) already carries the override. Structures marked: GpioPort, Lptim, Rcc, Pwr, Flash, Rng, Crc, Dac, Dbgmcu, Fmc, Quadspi, UsbOtg, Sdmmc, Comp, Tsc, Nvic, Iwdg, Wwdg, Rtc, Sai. New unit test (bus::tick::walk_free_campaign) pins the campaign's remaining walk-forcing surface on the runtime invaders bus (from_config + configure_cortex_m, flag stripped): the exact Class-B set awaiting scheduler migration plus the core DWT, and asserts derive_walk_deletable() stays false. Zero behaviour change: Class B still forces the walk, so the invaders bus does not flip walk-deletable.
w1ne
added a commit
that referenced
this pull request
Jul 18, 2026
walk-free B0: honest needs_legacy_walk=false on the 20 inert STM32 models
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Batch B0 of the walk-free campaign (plan: docs/walk-free-plan branch, PR #514). Mechanical, additive-only sweep:
needs_legacy_walk() = falseon the 20 STM32 models whose tick is verified structurally inert (trait-default no-op, no scheduler hooks): GpioPort, Lptim, Rcc, Pwr, Rng, Crc, Dac, Dbgmcu, Fmc, Quadspi, UsbOtg, Sdmmc, Comp, Tsc, Iwdg, Wwdg, Rtc, Sai, Nvic, and Flash (verified: H5 ops drain per-instruction via requires_cycle_accurate, not the walk — tick is no-op for all layouts).Two plan corrections found and encoded:
All lanes green: workspace lib, jit+event-scheduler lib (1840 passed), invaders e2e 5/5 both lanes incl. the interval and derived-vs-explicit differentials, clippy -D warnings both lanes, fmt.