Skip to content

7.14.3 Bitcoin-only product tests never execute: CI builds but does not test the stripped emulator #608

Description

@BitHighlander

Affected target

release/7.14.3-bitcoin-only at 2c4b7021041bd14667dd6d9c1ac282974e24d6c0 / draft PR #604.

Finding

The release builds a Bitcoin-only ARM image, but neither native CI nor Python integration CI executes the Bitcoin-only emulator as a product:

  • .github/workflows/ci.yml matrices only build-arm-firmware over full and Bitcoin-only.
  • build-emulator, unit-tests, and python-integration-tests use the regular image only.
  • deps/python-keepkey/tests/test_msg_bitcoin_only_variant.py::setUp() calls requires_firmware("7.15.0").
  • This fork identifies as firmware 7.14.3, so all Bitcoin-only Python product tests skip even if pointed at the correct binary.

The clean Docker baseline recorded 448 passed / 219 skipped / 1 unrelated full-image failure. JUnit shows every TestBitcoinOnlyVariant case skipped with “Firmware version 7.15.0 or higher is required,” including handler exclusion, coin-table restriction, product identity, Bitcoin signing survival, OP_RETURN behavior, and Zcash exclusion.

Security impact

CI proves only that the stripped ARM image links. It does not prove that excluded protocol handlers are unreachable, that only Bitcoin/Testnet remain in the coin table, that Bitcoin signing works, or that Bitcoin-only OP_RETURN/refusal behavior matches the trusted display. A gating or message-map regression can ship green.

Required remediation

  1. Run a Bitcoin-only emulator/native test leg with KK_BITCOIN_ONLY=ON.
  2. Run the Python Bitcoin-only product suite against that image.
  3. Move the companion test gate to 7.14.3 for the backported product, preferably using an explicit machine-readable variant capability rather than version alone.
  4. Make the aggregate CI gate require this leg and publish its JUnit/screenshots.

Discovered by the audit SOP added in PR #604.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions