FOUR PUBLIC SUBSETS · EXPLICIT BOUNDARIES

Controller status

A selectable profile is not a broad execution claim. Each compiler, runtime and peripheral boundary is listed separately.

Choose a tested controller

In the workbench, choose the broad Architecture / family first, then the exact Tested controller / board. This release contains exactly one tested profile in each displayed group: ATmega328P, RP2040 Pico, ESP32-C3 development module and STM32F429ZI. A family label never claims support for every controller in that family.

A profile lists three different things: source the compiler accepts, behavior the runtime executes, and the educational circuit model displayed on the canvas. Successful compilation does not prove every API, library or peripheral is simulated.

Public release support matrix

Controller profileCompileExecuteCurrent boundary
ATmega328P · 16 MHz · 5 VSupportedSupported subsetFixed AVR toolchain and deterministic browser worker. The thermostat starter runs four reset-isolated boundary scenarios on A1, D2 and D13; it is not broad control-system or physical-heater validation. Experiment guide.
ESP32-C3 development moduleSupported bounded sketchActual QEMU CPU/UART + separate GPIO2 modelStrict GPIO2 mode/level and uppercase-marker grammar → fixed network-disabled Arduino-ESP32 compiler → source-bound DIO flash → actual Espressif QEMU reset/UART. Its existing named GPIO2/resistor/LED/GND graph supports direct cable creation and endpoint reconnection. Executed GPIO MMIO stores feed a separately labelled project-owned LED model; QEMU pin state is not observed. First project guide.
RP2040 PicoSupported bounded sourceSupported GPIO0/UART0 subsetOne fixed C11 grammar → isolated Arm GNU 14.3.1 compiler → strict source-bound UF2 → rp2040js 1.4.0 browser worker. Its existing GP0 pin 1/resistor/LED/GND pin 3 graph supports direct cable creation and endpoint reconnection; no complete SDK, PIO, DMA, USB, multicore or physical-device claim. First project guide.
STM32F429ZISupported bounded sourceActual Renode PB0/USART3 subsetOne fixed C11 grammar → isolated Arm GNU 14.3.1 compiler → strict source-bound ELF32 → actual Renode 1.17.0 PB0/USART3/reset replay. Its existing named PB0 CN11 pin 34 → 220 Ω → LED → GND CN11 pin 19 graph supports direct cable creation and endpoint reconnection and remains an ideal teaching circuit, not analogue or physical-board equivalence. First project guide.

Exact peripheral capability matrix

Tested means the listed bounded path has release evidence. Project model means executed behavior feeds a separately labelled IntentForce model. Unavailable means this public profile has no accepted source/API or runtime path for that category.

ProfileGPIOADCPWMUARTTimersInterrupts
ATmega328PTested
D0–D13; input, output, pull-up
Tested
A0–A5; bounded ideal 0–5 V
Tested
D3, D5, D6, D9, D10, D11
Tested
USART0
Tested subset
deterministic timing and stepping, not complete timer equivalence
Tested subset
INT0, INT1 and implemented pin-change masks
RP2040 PicoTested
GPIO0 output only
UnavailableUnavailableTested
UART0 uppercase text
UnavailableUnavailable
ESP32-C3Project model
GPIO2 executed writes; QEMU pin state not observed
UnavailableUnavailableTested
uppercase marker from actual QEMU CPU/UART
Unavailable
fixed delay is not a timer-model claim
Unavailable
STM32F429ZITested
Renode-observed PB0
UnavailableUnavailableTested
Renode-observed USART3
UnavailableUnavailable

Language, API, headers and libraries

ATmega328P

Dialect: Arduino AVR sketch/C++ in the fixed isolated toolchain.

Files: main.ino plus up to seven project-local .h, .hpp, .c or .cpp files.

Headers: Arduino.h, standard bounded C headers, avr/io.h, avr/interrupt.h, avr/pgmspace.h, util/atomic.h and util/delay.h.

Libraries: Arduino AVR core 1.8.8 only; no user-installed or network-fetched library. Compiler acceptance does not expand the documented runtime subset.

RP2040 Pico

Dialect: strict bounded C11 in Arm GNU 14.3.1.

Files: main.c only.

API: one GPIO0 call, one UART0 uppercase-text call and halt in the fixed template.

Headers/libraries: no user-selectable headers, libraries or Pico SDK. A fixed internal contract header is injected by the worker.

ESP32-C3

Dialect: strict bounded Arduino sketch in Arduino-ESP32 3.3.10 / esp-rv32 2601.

Files: sketch.ino only.

API: fixed setup/loop template; only GPIO2 mode, level and one uppercase Serial marker may change.

Headers/libraries: no user-selectable headers or libraries, network install, Wi-Fi or Bluetooth SDK surface.

STM32F429ZI

Dialect: strict bounded freestanding C11 in Arm GNU 14.3.1.

Files: main.c only.

API: one PB0 call, one USART3 uppercase-text call and halt in the fixed template.

Headers/libraries: no user-selectable headers, HAL, CMSIS or broad STM32 SDK. Fixed startup, linker and runtime contracts remain internal.

A failed Build shows only sanitized diagnostics. When a returned error contains a trustworthy current file and line, its button focuses that exact editor location. Missing, out-of-range, stale and cross-profile locations stay visible but never navigate. See compiler diagnostic help.

Tested AVR subset

  • Digital GPIO D0–D13, input, output, and pull-up modes
  • Explicit X42 future-edge capture over retained native digital transitions: 16 before + trigger + 16 after
  • Complete-against-original-criterion X43 runtime profile: native cycles/instructions, exact 16 MHz virtual time and bounded stack-pointer/address-depth observations
  • Complete bounded X47 A1 ramp/seeded-noise/recorded temperature schedules and active-low D2 pulse on the exact validated graphs
  • Complete bounded X48 32-tick ideal-room loop on the exact thermostat source, graph, artifact, model and worker; independently recomputed instruction-boundary rows with HIGH/LOW coverage and zero drops
  • ADC A0–A5 against bounded 0–5 V sources
  • PWM on D3, D5, D6, D9, D10, and D11
  • USART0, bounded timing, deterministic reset, and instruction stepping
  • INT0/INT1 and the implemented pin-change masks

Tested Pico subset

  • One exact bounded main.c grammar
  • GPIO0 HIGH or LOW from compiled firmware
  • UART0 uppercase text from compiled firmware
  • Source-bound strict UF2 execution in a browser worker
  • GP0 physical pin 1 through 220 Ω and LED to GND physical pin 3

Tested ESP32-C3 subset

  • One exact bounded Arduino sketch grammar
  • GPIO2 OUTPUT/INPUT and HIGH/LOW source values
  • Uppercase UART marker from two actual QEMU boot epochs
  • Fixed 4 MiB DIO flash and exact runtime identity
  • GPIO2 → 220 Ω → LED → GND in a separate project-owned model, not QEMU pin readback

Tested STM32F429ZI subset

  • One exact bounded C11 main.c grammar
  • PB0 HIGH or LOW from a strict compiler-generated ELF
  • USART3 uppercase text observed in actual Renode 1.17.0
  • Two matching boot epochs prove reset replay
  • Editable named PB0 → 220 Ω → LED → GND ideal teaching path with movement, rotation, deletion and bounded history

Not claimed

Complete cycle-perfect hardware equivalence, physical-device upload, every library, SPI, I²C/TWI, EEPROM writes, watchdog activation, analogue-comparator use, and electrical-safety certification are not part of this release.

Parts and project files in the narrow profiles

Pico, ESP32-C3 and STM32 each expose only one fixed controller, resistor.fixed-v1 and led.basic-v1. The board cannot be removed. A deleted resistor or LED can be added back with its stable ID, but no cable is inferred: reconnect the named pins yourself and Build fresh. Select an existing cable to add an orthogonal bend, move an eligible snapped section or choose one of six colours; crossings remain separate unless a declared junction dot says otherwise. All four controllers save one common data-only envelope; its exact profile identity routes Open only after validation, and Open never restores executable authority. See the exact part limits and the recovery steps.

X42 profile boundary

Armed digital-edge capture is supported only for AVR's retained authoritative worker transitions. Pico's current source has no approved retention limit for this contract, ESP32-C3 exposes project-model GPIO rather than QEMU pin timing, and STM32 exposes a final observation rather than a waveform. No unavailable profile is inferred from a visual trace or final pin state.

X43 complete bounded profile

X43 is complete against its original precision criterion only for an already-current AVR worker. Start and Capture bind native cycles and executed-instruction counts to one exact source, artifact, model and worker lifecycle, with exact 16 MHz virtual time. Current, interval-minimum and since-reset minimum stack-pointer observations provide bounded address depth. Heap use, free SRAM, stack contents, live occupancy, non-AVR profiling and physical benchmarking remain unavailable; none is inferred. Generic heap was not an original X43 completion dependency.

X47 complete bounded profile

X47 is complete only for finite A1 temperature ramp, seeded-noise and recorded schedules on the exact AVR thermostat graph plus the active-low D2 pulse on the exact button-to-ground graph. Apply binds one exact paused worker; A1 never resumes execution and D2 Resume is explicit. Accepted native evidence covers ADC/D13 response, same-seed repeatability, D2 LOW/HIGH, fresh re-pause, pending events and Reset clearing. Arbitrary signals, CSV/network import, persistence/replay and Pico, ESP32-C3 or STM32 input injection remain unavailable. See usage and evidence limits.

X48 complete bounded ideal-room loop

X48 starts only from one fresh AVR thermostat Build whose exact source, authored graph, artifact, current model and paused cycle-zero worker identities join. Its 32 retained rows separate nominal schedule from actual completed instruction boundary, record cycle-zero input application, D13 observation, integer-model expectation, next input and drop counters, and are independently recomputed before a pass. Both HIGH and LOW phases and zero drops are required. This is one discrete educational model, not physical thermal calibration, wall-clock timing, a continuous solver, general process-model support or safety evidence.

Why the STM32 boundary is narrow

Only the fixed PB0/USART3 source grammar, strict ELF admission and reset-replayed Renode path are public. The reviewed current-tab experiment-budget path binds request, source, graph, ELF, model, compiler and runtime identities through natural completion and exact daemon-container absence. PB0 and USART3 are final Renode observations ordered by instruction ordinal; the external LED is an ideal teaching rendering, not physical timing or hardware evidence. Arbitrary C or ELF, broad peripherals, SDK compatibility, external hardware and full STM32 support remain explicitly outside this release.

What still needs a physical check?

The manual physical verification checklist lists the supply, noise, current/load, timing, input, serial and reset/boot facts that this virtual release does not measure. It keeps tested, project-model and unavailable support distinct. A typed observation remains an unverified user record, not a measurement verdict, hardware action or certification.