Skip to content

C6: upload firmware artifacts from CI builds #234

Description

@Strycher

Recreated from Strycher/Field_Compass-archive#234 — originally opened by @Strycher on 2026-09-06. Credentials redacted where present.

Epic: #155

Raised by the adversarial review of C1 (#221), which noted the compiled .bin and .elf are discarded after every CI run.

Two concrete uses:

  1. Download and flash a build from a PR without setting up the toolchain. Field Compass requires human hardware verification before merge, so today the reviewer must build locally to test — the artifact removes that step.

  2. Symbol-level comparison. B4: src/ include/ lib/ layout - behaviour-neutral #186 established that identical size totals do NOT prove behaviour-neutrality: symbol set, sizes and types were identical across 14,958 symbols while 608 addresses shifted from link order alone. E4 (Epic E4: break src.ino into translation units #212) needs that comparison per extraction, and comparing against a CI artifact is more trustworthy than comparing against whatever a developer machine produced — the diagnosis measured a 3,616 byte flash difference between a clean core dir and the dev box on identical source.

Scope: upload firmware.elf and firmware.bin per env via actions/upload-artifact, with a retention period that does not accumulate cost.

Note the ELF is large (22 MB in local builds, mostly DWARF). Decide whether to upload both, or the .bin plus a stripped ELF, or gate the ELF behind a label.

Acceptance: a PR run produces downloadable artifacts per discovered env, and the retention setting is a recorded decision rather than the default.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions