Skip to content

Guardrails

Mutating actions do not run unchecked. Every action is routed through the brain gate, and destructive operations pass additional guardrails that are live-proven on the scoped board pair.

Flashing validates its input before touching the board:

  • A valid tracked baseline, an explicit valid .elf, or an explicit valid .hex succeeds.
  • A missing path or an invalid suffix refuses deterministically.

Recovery is board-policy aware:

  • On a board with a supported recover_mode (for example Nordic APPROTECT via nrf_pyocd_unlock), recover succeeds only with explicit confirmation.
  • On a board with no supported recover mode tracked, recover refuses deterministically.

Watchers stop a run from thrashing against a broken operation. They are scoped, so a failure in one area does not block unrelated actions:

  • Repeated flash failures block only flash_firmware.
  • Repeated UART misses block only read_serial.
  • Repeated recover failures block only unlock_recover.

Disconnecting and reconnecting clears the block state.

These gates are what make it safe to hand a model direct control of a debug probe: it can iterate on a fix, but it cannot silently loop on a destructive action or brick a board without an explicit, validated request.