# Self-contained T2G seat-controller firmware `Seat_Controller_demo/` is the repository-owned IAR project used by the real seat-bench executor. It contains the 2026-07-30 heater, ventilation, four-axis motion, SMV8 position memory, Hall feedback and ADC current-diagnostic code. The matching Cypress 7.9.0 build dependencies are vendored beside it: ```text firmware/t2g/ ├── common/ ├── tviibh8m/ └── Seat_Controller_demo/ ``` This preserves the IAR project's `../../common` and `../../tviibh8m` paths and removes any dependency on the original Desktop SDK directory. The applicable vendor terms are retained in `CYPRESS_SDK_LICENSE.txt`. An IAR installation is still a toolchain prerequisite, just as the ZLG driver remains a CAN-adapter prerequisite; neither is project source data. Build without flashing: ```powershell powershell -ExecutionPolicy Bypass -File .\tools\build_seat_firmware.ps1 ``` Set `COGNITIVE_AGENT_IAR_BUILD` or pass `-IarBuild` when `iarbuild.exe` is not at a standard location. The script stages the project beside repository-local vendor junctions, copies the resulting HEX/OUT back, removes build products, and never opens a debug probe. The latest firmware uses periodic CAN `0x304`/`0x305` for motor and thermal current diagnostics. The backend therefore verifies it passively by observing `0x301` through `0x305`, `0x4FA`, all four motor IDs and MaxHall `480/374/917/647`; it sends no identity request and no actuator frame during verification. When real hardware execution is enabled, automatic programming defaults to enabled and uses `IAR/Seat_Controller_program.mac` to force outputs safe before download. A missing protocol signature triggers programming, a boot wait and passive re-verification before the original request continues. Set `COGNITIVE_AGENT_SEAT_AUTO_FLASH_ENABLED=false` to opt out explicitly; dry-run execution never programs hardware.