• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 35192540237
73%

Build:
DEFAULT BRANCH: development
Ran 17 Sep 2026 07:56AM UTC
Jobs 1
Files 779
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Sep 2026 07:01AM UTC coverage: 62.186% (-0.7%) from 62.884%
35192540237

push

github

web-flow
feat(ledger): drive and assert the device's review screen (#8027)

## Description

Spec 3 of seven — UI automation for the Ledger Speculos harness. Builds
the `Approver` and the screen assertions; the scenario suite that uses
them is Spec 4, and the CI workflow is Spec 5.

`GetOneSidedMetadataSignature` is the only instruction that puts a
screen in front of a human, and until now nothing checked what that
screen said. A wrong key bricks a wallet; a wrong *displayed* address
steals funds, because the screen is the only thing a user can trust when
the host cannot be.

Adds, in `comms_testing`:

* `speculos_api` — a hand-rolled client for Speculos' HTTP control API,
including its Server-Sent Events stream. Four endpoints, no TLS, a
dependency budget small enough to read.
* `review` — `ExpectedReview`, and the comparison between what a
scenario says the device will show and what it showed.
* `approver` — the `Approver` trait, `SpeculosApprover`,
`HumanApprover`, and `while_reviewing`, which runs the blocking
instruction on one thread while the review is answered on another.
* `tests/speculos_review.rs` — five scenarios, `#[ignore]`d like the
rest of the device tests, passing on `nanosplus` and `stax` under both
seeds.
* `examples/human_review.rs` — the same scenario against real hardware,
with an operator as the assertion oracle.

The comparison is an **equality**, not a containment. Containment passes
a device that shows the expected address followed by something else, and
that is exactly the difference the screen exists to reveal; equality
also makes an unasked-for `Payment ID` row impossible to miss.

Every wait blocks on the event stream. No `sleep`, no retry loop: the
nonce store and the script-offset context are precisely the state a
second attempt disturbs, so a retry-green test has usually destroyed the
evidence it was ever red. A wait that runs out dumps the full event log,
the last screen, and a PNG of it. The simulator is not restarted between
... (continued)

2 of 2 new or added lines in 1 file covered. (100.0%)

1012 existing lines in 31 files now uncovered.

85530 of 137540 relevant lines covered (62.19%)

318029.51 hits per line

Coverage Regressions

Lines Coverage ∆ File
266
34.14
-46.1% base_layer/core/src/base_node/rpc/query_service.rs
233
49.85
-5.3% base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
223
51.76
-6.01% base_layer/core/src/chain_storage/blockchain_database.rs
67
90.14
-9.57% base_layer/core/src/validation/block_body/test.rs
39
71.12
-4.17% base_layer/core/src/base_node/sync/horizon_state_sync/synchronizer.rs
28
90.08
-1.19% base_layer/transaction_components/src/transaction_builder/builder.rs
23
70.18
-2.99% base_layer/core/src/test_helpers/blockchain.rs
17
71.7
-16.04% base_layer/transaction_components/src/transaction_components/side_chain/validator_node_registration.rs
15
90.6
-3.36% base_layer/core/src/base_node/sync/header_sync/validator.rs
15
25.76
-21.21% base_layer/core/src/chain_storage/block_add_result.rs
12
85.65
-1.38% base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs
11
50.0
-50.0% base_layer/core/src/chain_storage/smt_hasher.rs
9
75.76
-13.64% base_layer/common_types/src/types/fixed_hash.rs
9
94.92
-0.82% base_layer/transaction_components/src/consensus/consensus_constants.rs
8
90.87
-3.65% base_layer/transaction_components/src/validation/helpers.rs
6
60.47
-13.95% base_layer/node_components/src/blocks/historical_block.rs
6
23.29
-8.22% base_layer/transaction_components/src/transaction_components/side_chain/sidechain_feature.rs
5
80.7
-0.8% base_layer/core/src/chain_storage/lmdb_db/lmdb.rs
4
91.73
-1.57% base_layer/core/src/validation/header/header_full_validator.rs
3
58.44
-3.9% base_layer/core/src/validation/mocks.rs
2
79.85
-0.51% base_layer/core/src/validation/aggregate_body/aggregate_body_chain_validator.rs
2
60.59
-0.49% base_layer/core/src/validation/helpers.rs
1
93.81
-0.19% base_layer/core/src/proof_of_work/monero_rx/merkle_tree.rs
1
82.22
-2.22% base_layer/core/src/proof_of_work/sha3x_pow.rs
1
92.86
-2.38% base_layer/core/src/validation/chain_balance.rs
1
89.82
-0.18% base_layer/p2p/src/services/liveness/service.rs
1
99.26
-0.19% base_layer/transaction_components/src/test_helpers/test_helpers_functions.rs
1
84.0
-0.2% comms/core/src/connection_manager/dialer.rs
1
67.98
-0.49% comms/core/src/connectivity/requester.rs
1
49.06
-0.94% comms/core/src/connectivity/selection.rs
1
91.45
-0.29% comms/core/src/multiplexing/yamux.rs
Jobs
ID Job ID Ran Files Coverage
1 35192540237.1 17 Sep 2026 07:56AM UTC 779
62.19
GitHub Action Run
Source Files on build 35192540237
  • Tree
  • List 779
  • Changed 42
  • Source Changed 1
  • Coverage Changed 42
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35192540237
  • 51b3c834 on github
  • Prev Build on development (#35102703514)
  • Next Build on development (#35322960161)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc