# ADR 004: Host-First Verification with Firmware Compile Gates

- HTML version: https://robbiepalmer.me/projects/autonomic-satellite-swarm/adrs/004-host-first-verification
- Project: Autonomic Satellite Swarm (https://robbiepalmer.me/projects/autonomic-satellite-swarm.md)
- Status: Accepted
- Date: 2026-09-04

# Context

The original hardware no longer exists. Requiring devices for every behavioral test would make the
project difficult to maintain, while compiling a sketch alone cannot verify electrical, radio, or
timing behavior.

# Decision

Put coordination, scoring, and codec behavior under fast host-side Catch2 tests. Add a deterministic
in-memory three-node simulation for the main negotiation path. Run warnings, clang-tidy, AddressSanitizer,
UndefinedBehaviorSanitizer, formatting, spelling, and workflow linting in CI.

Compile both Arduino reference targets from pinned profiles. Describe those results as compile gates,
not hardware verification.

# Consequences

Most changes receive quick, reproducible feedback without devices. Adapter API drift is caught by
cross-compilation. Physical integration risk remains visible and requires a future hardware-in-the-
loop suite with documented boards, wiring, observations, and failure injection.

---

Markdown index of this site: https://robbiepalmer.me/llms.txt
