# ADR 007: Portable Core and Hardware Adapters

- HTML version: https://robbiepalmer.me/projects/autonomic-satellite-swarm/adrs/007-portable-core-and-hardware-adapters
- Project: Autonomic Satellite Swarm (https://robbiepalmer.me/projects/autonomic-satellite-swarm.md)
- Status: Accepted
- Date: 2026-09-04

# Context

The original proof of concept intertwined Arduino APIs, infrared details, health checks, orbital
scoring, message ownership, and swarm state. That made the research hypothesis inseparable from the
three boards used to demonstrate it.

The exact three-board bench setup from 2016 is no longer available. The useful artifact is therefore
the behavior and the ability to test alternatives, not a frozen pin-level implementation.

# Decision

Keep the coordination library free of Arduino and operating-system dependencies. Place physical
integration behind three ports:

* a transport for semantic messages;
* a health monitor for platform-specific evidence; and
* a candidacy scorer for the research policy.

The core uses bounded storage, value semantics, explicit state, and caller-supplied monotonic time.
It must not allocate dynamically.

Maintain two reference adapters: Arduino Uno with infrared as the historical target, and ESP32 with
ESP-NOW as a modern benchtop target. Neither adapter defines the domain model.

# Consequences

The core can run in a deterministic host simulation and can accept future radios, sensors, or score
models. Hardware integration needs a small amount of adapter boilerplate. The core rejects
platform-specific behavior added only because one board supports it.

---

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