BB
← All projectsBitBox

BitBox02 firmware

Firmware and bootloader for BitBox02 signing devices.

BitcoinHardware walletsNormal
Repository coverage

647 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

193security candidates127second-pass queue119AI analyses
28commits · 30 days
47commits · 60 days
312commits · 180 days
647commits · 365 days
Backfill bands
Aug 5 → Feb 6335 seen28 candidatesComplete
Feb 6 → Jun 6265 seen19 candidatesComplete
Jun 6 → Jul 619 seen5 candidatesComplete
Jul 6 → Aug 526 seen3 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

59/100 average clarity
65Strong · 80–100
281Adequate · 60–79
230Thin · 40–59
71Opaque · 0–39
23security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Marko Bencun39011773258
Niklas Dusenlund1112914059
benma's agent892818062
cedwies1254063
Tomas Vrba944074
Cedric Wiese1232049
Jad811062
thisconnect210072
benma211074
Niklas111035
Yasser Aziza111070
Patrick Steiger110045
Analysis record

Published AI watches

Last scanned 2 minutes ago

Low 39 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

rust: initialize C output buffers

This commit fixes a class of low-level memory-safety bugs where Rust code was given buffers containing uninitialized bytes. Rust's rules require every byte of a slice to be initialized, even if the function will overwrite them. Passing uni…

Undefined behavior at C/Rust FFI due to uninitialized buffers being treated as Rust slicesPotential optimizer-dependent behavior from violating Rust slice initialization rulesHardening of cryptographic output paths (SHA-256, HMAC-SHA256, HMAC-SHA512)
511018eaby benma's agent+52−2713 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

py: extract bootloader connection

This commit is a minor code cleanup in a Python helper script. It moves existing bootloader connection logic into a small nested helper function to satisfy a style checker (pylint's limit on the number of return statements). No behavior ch…

886113d0by benma's agent+10−61 file
No security note in commit
Moderate 59 AI analysisMessage 69 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Limit SD erase file size

This commit fixes a bug in how the BitBox02 hardware wallet wipes files from its SD card. Before erasing a file, the device now checks the file's reported size against a safe maximum. Without this check, a tampered SD card could claim a fi…

CVE-2026-6682 referenced in commit messageMalformed FAT directory entry could cause excessive overwrite loopDenial-of-service via SD card tampering
2453f528by Marko Bencun+4−01 file
Vendor flagged security relevance
High 70 AI analysisMessage 66 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Validate mounted FAT geometry

This update adds a safety check when the BitBox02 hardware wallet mounts a microSD card. A malicious or deliberately malformed FAT filesystem could trick the device's file-system library into placing user data inside attacker-controlled bo…

Fixes integer-wrap / geometry confusion in FAT mount logicAdds explicit post-mount validation of filesystem metadataPrevents data area from landing inside attacker-controlled FAT sectors
01c017d6by Marko Bencun+21−01 file
Vendor flagged security relevance
Low 34 AI analysisMessage 59 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

api: add BitBoxSync

This commit adds a brand-new firmware feature called BitBoxSync, which lets the BitBox02 hardware wallet participate in a sync service by proving its identity, signing login/admin intents, and decrypting namespace encryption keys. The code…

New cryptographic API surface added to the hardware wallet (Ed25519, X25519, HKDF, AEAD)Vendored third-party crate `hkdf` introduced into the firmware supply chainNew user-confirmation flow for signing sync intents; one operation (UnwrapNamespaceDek) deliberately skips confirmation
54cdb54dby Marko Bencun+2883−2230 files
No security note in commit
Informational 0 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: update stage1 binaries to v1.2.2

This commit simply swaps in newer pre-built bootloader stage1 binary files (version 1.2.2 replacing 1.2.1) for four BitBox02 hardware variants and updates the corresponding checksum list. The actual code inside the new binary files is not …

5940a800by Marko Bencun+8−86 files
No security note in commit
Moderate 59 AI analysisMessage 50 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader/stage1: fix erase handling for partially erased blocks

This update fixes the BitBox02 bootloader's firmware-erase routine. Previously, when erasing leftover padding after a firmware update, the bootloader started erasing at the exact page where the firmware ended. Because flash memory can only…

Bootloader firmware erase routine could erase a flash block containing both firmware and paddingFix aligns erase start to erase-block boundary and re-checks erased state before erasingChangelog describes the change as a fix for 'partially erased flash blocks'
b31206a8by Marko Bencun+23−83 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: add stage0/stage1 production binaries

This commit adds production bootloader upgrade files for the BitBox02 hardware wallet and updates build scripts to use them. It is a routine asset-management change: replacing placeholder development hashes with real signed production bina…

8db4b0dcby Marko Bencun+26−1720 files
No security note in commit
Informational 20 AI analysisMessage 83 · Strong
BB BitBoxBitBox02 firmware BitcoinHardware wallets

blupgrade: keep dev stage1 unsigned

This commit fixes a build script used only for development/testing versions of the BitBox02 bootloader upgrade. It makes the development-stage1 bootloader images unsigned again, while keeping production images fully signature-verified. The…

Signature verification relaxed only for development buildsProduction payload validation still requires signaturesDevelopment stage0 already skipped stage1 signature verification per commit message
476b90e3by Marko Bencun+9−69 files
No security note in commit
High 76 AI analysisMessage 23 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

security improvements

This BitBox02 firmware update is a broad security patch that fixes several independent bugs: it prevents a maliciously oversized USB report from overflowing memory, stops a corrupted Bluetooth pairing database from being read or written wi…

Bounds check added to USB HID Set Report input lengthBLE bond DB length validation hardened against negative and oversized valuesBootloader firmware image size limit relaxed to intended maximum
cbb40634by Marko Bencun+1117−25021 files
Vendor flagged security relevance
Low 46 AI analysisMessage 60 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: allow full sized images

This commit fixes a bootloader bug where the device rejected firmware updates that used the maximum allowed size. The off-by-one check meant legitimate full-sized firmware images could not be installed, potentially blocking updates. The fi…

Off-by-one input validation in firmware-update pathBootloader change affecting firmware chunk count acceptanceCHANGELOG labels the change as a bugfix for full-sized firmware upgrades
f60b93ccby Marko Bencun+5−33 files
No security note in commit
Moderate 59 AI analysisMessage 28 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add bootloader update

This is a large firmware commit that adds a new two-stage bootloader update mechanism for the BitBox02 hardware wallet. It replaces the old single bootloader with a small, fixed 'stage0' plus a separately signed 'stage1', and ships a speci…

Bootloader architecture changed from monolithic to two-stage (stage0 + signed stage1).Firmware signature hash now includes a 16-bit product_id, binding firmware to product variant.Root public keys were rotated/replaced with a single set across all products.
3f1f3172by Marko Bencun+5003−52379 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 73 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Add flash data backup scripts

This commit adds two helper scripts for developers to back up and restore BitBox02 flash memory areas using a Segger J-Link debugger. The scripts require physical hardware access and a debugging probe, and they are not part of the firmware…

285fa768by Niklas Dusenlund+383−03 files
No security note in commit
Informational 15 AI analysisMessage 40 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bb03 UI: placeholder BTC signing workflows

This commit replaces unfinished placeholder code (which would crash with 'todo!()') with simple working user-interface placeholders for Bitcoin signing demonstrations. It adds basic on-screen prompts to confirm a recipient/amount and a tot…

f7b0b082by Jad+24−121 file
No security note in commit
Informational 17 AI analysisMessage 78 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

Bump Rust toolchain to 1.96

This commit is a routine maintenance update for the BitBox02 hardware wallet firmware. It upgrades the pinned Rust compiler toolchain from an older version to Rust 1.96.0, updates the project's Docker build container and related developer …

Routine toolchain and dependency upgradeVendored libc updated across many platform bindingsNo first-party security-relevant code changes
55e3dd30by Niklas Dusenlund+14839−13798360 files
No security note in commit
Informational 18 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: reduce snprintf

This commit removes the use of the standard snprintf formatting function from the BitBox02 bootloader's developer menu and replaces it with a small, fixed-format helper. The main goal is to reduce the bootloader's binary size and make the …

Removes snprintf/printf usage from bootloader code, reducing binary bloat and eliminating a complex formatting library from a privileged execution contextExtends automated CI check to detect stdio/Rust formatting symbols in regular development and production bootloader outputs, not just production buildsAdds unit test coverage for the new fixed-format helper
2fb9d57fby Marko Bencun+59−106 files
No security note in commit
Informational 12 AI analysisMessage 68 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: hash BLE firmware in C

This commit is a code-size optimization for the BitBox02 bootloader. It switches the Bluetooth Low Energy (BLE) firmware hash verification from a Rust SHA-256 implementation to an existing C-based SHA-256 implementation already used by the…

Change is described by the vendor as a size optimization, not a security fix.No functional change to the hash verification logic: SHA-256 digest is still computed and compared against metadata.allowed_firmware_hash.CI check added to enforce use of the smaller PUKCC SHA-256 path in production bootloaders.
1d82b8a4by Marko Bencun+18−02 files
No security note in commit
Low 35 AI analysisMessage 63 · Adequate
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: avoid snprintf formatting

This commit removes the use of standard string-formatting functions (like snprintf and Rust's format!) from the bootloader and related low-level code, replacing them with smaller, fixed-size string builders. The stated goal is to reduce bi…

Removal of stdio formatting (snprintf family) from bootloader codeRemoval of Rust format!/write! formatting from bootloader-linked codeAddition of CI gate rejecting stdio and Rust formatting symbols in production bootloader ELFs
33434fa9by Marko Bencun+298−6314 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: extract formatting helpers

This commit is a simple code cleanup: it moves a handful of string-formatting helpers (for pairing codes, progress percentages, hash display, timers, and unknown-command messages) out of the main bootloader file into a new dedicated file, …

1a1de3b5by Marko Bencun+147−126 files
No security note in commit
Informational 17 AI analysisMessage 58 · Thin
BB BitBoxBitBox02 firmware BitcoinHardware wallets

bootloader: render messages directly

This commit removes a 100-character stack buffer and passes bootloader messages straight to the screen-drawing function. The old code used snprintf to copy the message into a fixed-size buffer, which could silently truncate very long strin…

Removal of fixed-size stack buffer in bootloader display pathElimination of snprintf with potentially attacker-influenced format string argumentBootloader code touched, which is a security-sensitive component
c0bc7b92by Marko Bencun+1−31 file
No security note in commit
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Security candidatereleases: add v9.26.1by Marko Bencun · 87f283b6 · Apr 19, 2026 · 5 filesMessage 38 · OpaqueTriage 12Details
Commit message · Marko Bencun

releases: add v9.26.1

38/100 · OpaqueMessage clarity
✓ Subject identifies a change✓ Names a concrete action or component! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
boot or update path
Lower-prioritysecurechip: cache ATECC serial numberby Marko Bencun · d8a2df30 · Apr 19, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

securechip: cache ATECC serial number

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityFix timer interrupt raceby Marko Bencun · f816475c · Apr 18, 2026 · 5 filesMessage 51 · ThinTriage 0Details
Commit message · Marko Bencun

Fix timer interrupt race

The production timer future shared its state through a RefCell, but
that state is touched from two different contexts: the poll_fn closure
runs in normal Rust task context, while the timer callback can run
from the hardware timer interrupt path.

If the interrupt fired while the future was polling, both sides could
try to take a mutable RefCell borrow at the same time. RefCell only
protects against reentrant borrowing within one thread of execution;
it is not a synchronization primitive for interrupt-vs-task access.
That made the timer future racy and able to fail nondeterministically
even with only one delay future in flight.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
Lower-priorityrust: put critical-section into workspace depsby Marko Bencun · 6c2c9c09 · Apr 18, 2026 · 3 filesMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

rust: put critical-section into workspace deps

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Security candidatesimulator: fix factory_randomnessby Marko Bencun · cee5bdb3 · Apr 17, 2026 · 1 fileMessage 58 · ThinTriage 15Details
Commit message · Marko Bencun

simulator: fix factory_randomness

The C simulator still uses the BitBox02 Hal. The newly introduced
factory_randomness method there dereferenced the same static address
as on the device, leading to a segfault.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
seed or entropy path
Lower-priorityreset: do not loop forever in C simulatorby Marko Bencun · 61f86480 · Apr 17, 2026 · 1 fileMessage 78 · AdequateTriage 0Details
Commit message · Marko Bencun

reset: do not loop forever in C simulator

A simulator regression from when we put `reboot` into the HAL. Before,
it was a no-op, and then it became a busy loop in bitbox02's System
HAL. This broke simulator tests in bitbox02-api-go.

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI review queuedbump versionby Marko Bencun · 9f557715 · Apr 16, 2026 · 2 filesMessage 18 · OpaqueTriage 0Details
Commit message · Marko Bencun

bump version

18/100 · OpaqueMessage clarity
✓ Subject identifies a change! Too few words to establish purpose! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityrust: tweak Cargo flags for faster `cargo test`by Marko Bencun · a7081cdb · Apr 16, 2026 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Marko Bencun

rust: tweak Cargo flags for faster `cargo test`

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Security candidatesecurechip: make kdf asyncby Marko Bencun · 3b36eb77 · Apr 16, 2026 · 46 filesMessage 58 · ThinLow 27Details
Commit message · Marko Bencun

securechip: make kdf async

Expose the OPTIGA crypt instance to Rust and route the\nKDF through the async command bridge. The higher-level\nsecurechip and application callers now await the operation\ninstead of relying on the synchronous C wrapper.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathboot or update path
AI analysis · Low 27/100

This commit rewrites how the BitBox02 hardware wallet performs a key-derivation operation inside its secure chip (OPTIGA). Previously the operation was synchronous and wrapped in C; now it is asynchronous and called from Rust through the existing async command bridge. The change touches many files because every caller of the KDF/keystore functions had to be updated to `await` the result. The diff itself is a large refactoring with no obvious security bug, but it introduces new async machinery around a sensitive cryptographic operation, so it warrants careful review for memory-safety and concurrency issues.

Security candidatebitbox-core-utils: make salt::hash_data return 32 bytesby Marko Bencun · 385f1773 · Apr 16, 2026 · 3 filesMessage 65 · AdequateTriage 12Details
Commit message · Marko Bencun

bitbox-core-utils: make salt::hash_data return 32 bytes

For better clarity and to remove needless try_into().unwrap().

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
boot or update path
Lower-priorityhal/securechip: make kdf output 32 bytesby Marko Bencun · 6ea21ad5 · Apr 16, 2026 · 8 filesMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

hal/securechip: make kdf output 32 bytes

For better clarity.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityhal/securechip: make kdf input 32 bytesby Marko Bencun · d509583f · Apr 16, 2026 · 9 filesMessage 60 · AdequateTriage 0Details
Commit message · Marko Bencun

hal/securechip: make kdf input 32 bytes

It is only used with that size, and simplifies the async port of that
function later.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Lower-priorityoptiga: add async bridge and counter readby Marko Bencun · 503ee06f · Apr 16, 2026 · 16 filesMessage 68 · AdequateTriage 0Details
Commit message · Marko Bencun

optiga: add async bridge and counter read

Expose the shared OPTIGA util instance to Rust and route\nmonotonic_increments_remaining() through the async command\nbridge. This keeps the first async step small while exercising\nthe bridge with one real read operation.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Security candidaterust: rename bitbox02-noise -> bitbox-noiseby Marko Bencun · 6a206d68 · Apr 15, 2026 · 15 filesMessage 45 · ThinTriage 15Details
Commit message · Marko Bencun

rust: rename bitbox02-noise -> bitbox-noise

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
Security candidateUse HAL random for noise key generationby Marko Bencun · 4e982183 · Apr 15, 2026 · 11 filesMessage 85 · StrongLow 27Details
Commit message · Marko Bencun

Use HAL random for noise key generation

bitbox02-rust should not depend on bitbox02-specific random types just
to initialize the Noise responder state. Move Noise key generation
onto bitbox_hal::Random and let bitbox02-noise initialize the
responder handshake from HAL-provided randomness.

This removes the old Random32/BB02Random32 plumbing. That trait
existed only because the handshake state was generic over a DH type
whose genkey() path generated the responder ephemeral internally. Once
the responder ephemeral is treated as explicit init input instead, the
state no longer needs a device-specific RNG type parameter. In the
final API, init() takes a HAL random source and derives that ephemeral
key there, which keeps the dependency boundary at bitbox-hal while
preserving the same handshake flow.

85/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnessseed or entropy path
AI analysis · Low 27/100

This commit is a code cleanup in the BitBox02 firmware's Rust code. It changes how random numbers are supplied when creating cryptographic keys for the Noise protocol, moving from a device-specific random type to a more generic hardware abstraction layer (HAL) random source. The commit message and diff do not describe this as fixing a security bug; it reads as an architectural refactor to simplify dependencies. There is no direct evidence in the commit that the old code was exploitable or that any vulnerability was fixed.

Lower-priorityremove cmake run-rust-unit-tests custom targetby Marko Bencun · 32779ab1 · Apr 15, 2026 · 3 filesMessage 55 · ThinTriage 0Details
Commit message · Marko Bencun

remove cmake run-rust-unit-tests custom target

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Lower-priorityhal: put noise key functions into Memory HALby Marko Bencun · 567efc40 · Apr 15, 2026 · 5 filesMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

hal: put noise key functions into Memory HAL

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityAGENTS.md: remove run-rust-unit-testsby Marko Bencun · e3e2d3f7 · Apr 15, 2026 · 1 fileMessage 55 · ThinTriage 0Details
Commit message · Marko Bencun

AGENTS.md: remove run-rust-unit-tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityAGENTS.md: no dev-exec.sh for `cargo` commandsby Marko Bencun · 50b264a2 · Apr 15, 2026 · 1 fileMessage 60 · AdequateTriage 0Details
Commit message · Marko Bencun

AGENTS.md: no dev-exec.sh for `cargo` commands

They run on the host without ARM toolchain.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI review queuedeth/sign: add missing mock_unlock in testsby Marko Bencun · 0d7cabab · Apr 14, 2026 · 1 fileMessage 55 · ThinTriage 12Details
Commit message · Marko Bencun

eth/sign: add missing mock_unlock in tests

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI review queuedapi/payment_request: serialize ETH value as little endianby Marko Bencun · be2d62c8 · Apr 14, 2026 · 2 filesMessage 73 · AdequateTriage 12Details
Commit message · Marko Bencun

api/payment_request: serialize ETH value as little endian

SLIP-24:

> amount (coinType-dependent length): fixed-length encoding of the amount of the requested output in little-endian byte order, expressed in the smallest unit of the given cryptocurrency (satoshis, wei, etc.). The length of the encoding is equal to the length used natively for the given coinType to encode amounts, e.g. 8 bytes for Bitcoin-like coins and 32 bytes for EVM assets.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
Lower-priorityethereum/amount: fix typo in docstringby Marko Bencun · e9f51e00 · Apr 13, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Marko Bencun

ethereum/amount: fix typo in docstring

And switch to a more realistic unit :)

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityhal/securechip: mark monotonic_increments_remaining asyncby Marko Bencun · 40b3c548 · Apr 13, 2026 · 6 filesMessage 50 · ThinTriage 0Details
Commit message · Marko Bencun

hal/securechip: mark monotonic_increments_remaining async

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI review queuedCHANGELOG: add swapsby Marko Bencun · a200c9bf · Apr 13, 2026 · 1 fileMessage 28 · OpaqueTriage 0Details
Commit message · Marko Bencun

CHANGELOG: add swaps

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
Lower-prioritypayment_request: truncate long swap-to amountsby Marko Bencun · 8d362ffc · Apr 13, 2026 · 1 fileMessage 68 · AdequateTriage 0Details
Commit message · Marko Bencun

payment_request: truncate long swap-to amounts

Same as amount.rs in Ethereum.

We apply it regardless of the coin target, as we can't enumerate
them (any ERC20 token etc. is possible).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context