Skip to content

[Conformance Test Framework] Slice 3: AcCCS-box Pi as self-hosted runner for pre-merge E2E #20

Description

@JakeMG-INL

What to build

Activate the AcCCS-box Raspberry Pi as a GitHub Actions self-hosted runner so substantial PRs can be label-triggered to execute the conformance suite on real Pi hardware. This catches Pi-specific issues (smbus, PWM PCB I/O, scapy on the Devolo NICs) that veth-only CI cannot, without requiring a full hardware-in-the-loop session against a real EV/EVSE.

ADR-0003 calls this the pre-merge Pi gate. It is not a hard gate on every PR — it's label-triggered (e.g., needs-pi-run) so reviewers can request it when a change is likely to touch Pi-specific paths.

End-to-end behavior delivered:

  • A reviewer adds the needs-pi-run label (or comparable trigger) to a PR.
  • A CI job runs pytest tests/conformance/ on the AcCCS-box Pi.
  • The result reports back on the PR as a check.

In scope:

  • Configure the AcCCS-box Pi as a GitHub Actions self-hosted runner (registration, service installation, restart policy).
  • Add a GitHub Actions workflow that triggers on the agreed label and runs the conformance suite on the Pi runner.
  • Document the operator workflow in tests/conformance/README.md: when to request a Pi run, how to read the result, what to do if the Pi runner is offline.
  • Ensure the runner has CAP_NET_ADMIN (or equivalent permissions) to bring up the veth pair.
  • Document Pi runner maintenance: rotating the runner token, restarting the service, where logs live.

Out of scope:

  • Real hardware-in-the-loop testing against an actual EV or EVSE (that's the major-release acceptance gate, manual).
  • Making the Pi run a hard gate on every PR — it stays label-triggered.
  • Hardening for multi-PR concurrency on a single Pi (queue / serialize at GitHub's runner level; revisit if it becomes a bottleneck).

Acceptance criteria

  • AcCCS-box Pi is registered and active as a self-hosted runner in the GitHub repo.
  • A workflow exists that runs the conformance suite on the Pi when the agreed trigger label is applied.
  • tests/conformance/README.md documents how a reviewer requests a Pi run and how to interpret the result.
  • Pi runner maintenance steps (token rotation, service restart, log location) are documented.
  • At least one PR has been used to verify the workflow end-to-end (smoke set green on the Pi).
  • Human verification: maintainer has confirmed the Pi runner is stable across at least three runs before closing this issue.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions