fix(core): raise `NotInitialized` on BTC-only seed derivation
What changed, and why it matters
This update fixes a bug in Bitcoin-only Trezor firmware where the device would try to derive a cryptographic seed even when the device had not been set up yet. Now it correctly returns a 'NotInitialized' error instead. A test was added to confirm the behavior.
Treat as a low-severity hardening fix. Verify the new test passes on all affected models and include in the next firmware release.
Security signals we found
Missing initialization check in seed derivation path
Adds explicit NotInitialized error for uninitialized Bitcoin-only devices
New regression test for uninitialized public-key request behavior
Evidence from the diff
In core/src/apps/common/seed.py, the Bitcoin-only (BITCOIN_ONLY) variant of get_seed() under the v1 protocol was missing a call to raise_if_not_initialized(). The patch adds that guard so that seed derivation requests on an uninitialized device raise NotInitialized. A device test and UI test fixtures were also added.
Changed components
core/src/apps/common/seed.pyBitcoin-only firmware buildsv1 protocol seed derivationInspect captured patch +43 / −1
diff --git a/core/.changelog.d/6941.fixed b/core/.changelog.d/6941.fixed
new file mode 100644
index 00000000..0e367e98
--- /dev/null
+++ b/core/.changelog.d/6941.fixed
@@ -0,0 +1 @@
+[T2B1,T2T1,T3B1,T3T1] Return an explicit error when try to derive seed on Bitcoin-only firmware.
diff --git a/core/src/apps/common/seed.py b/core/src/apps/common/seed.py
index 835d508b..cd77ace6 100644
--- a/core/src/apps/common/seed.py
+++ b/core/src/apps/common/seed.py
@@ -120,13 +120,16 @@ if utils.USE_THP:
ctx.cache.set_bool(APP_COMMON_DERIVE_CARDANO, True)
derive_and_store_secrets(ctx, passphrase)
-else:
+else: # v1 protocol
+
if utils.BITCOIN_ONLY:
# === Bitcoin-only variant ===
# We use the simple version of `get_seed` that never needs to derive anything else.
@cache.stored_async(APP_COMMON_SEED)
async def get_seed() -> bytes:
+ raise_if_not_initialized()
+
passphrase = await get_passphrase_legacy()
return mnemonic.get_seed(passphrase=passphrase)
diff --git a/tests/device_tests/test_basic.py b/tests/device_tests/test_basic.py
index 55ea020e..9980ad8a 100644
--- a/tests/device_tests/test_basic.py
+++ b/tests/device_tests/test_basic.py
@@ -14,6 +14,8 @@
# You should have received a copy of the License along with this library.
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
+import pytest
+
from trezorlib import messages, models
from trezorlib.debuglink import DebugSession as Session
from trezorlib.debuglink import TrezorTestContext as Client
@@ -59,3 +61,14 @@ def test_device_id_different(client: Client):
# Device ID must be fresh after every reset
assert id1 != id2
+
+
+@pytest.mark.setup_client(uninitialized=True)
+def test_not_initialized(session: Session):
+ resp = session.call_raw(messages.GetPublicKey(address_n=[0]))
+ resp = messages.Failure.ensure_isinstance(resp)
+ expected = (
+ messages.FailureType.NotInitialized,
+ messages.FailureType.InvalidSession,
+ )
+ assert resp.code == expected[session.test_ctx.is_thp()]
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index 6b637dec..0c3a1be9 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -780,6 +780,7 @@
"T1B1_en_test_basic.py::test_capabilities": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_test_basic.py::test_device_id_different": "9f7416570bbc983e5c3e78026731599b59f86dfab09e88d922948c3cd2b0715b",
"T1B1_en_test_basic.py::test_device_id_same": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+"T1B1_en_test_basic.py::test_not_initialized": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_test_basic.py::test_ping": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"T1B1_en_test_bip32_speed.py::test_cache": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b",
"T1B1_en_test_bip32_speed.py::test_private_ckd": "55f043b3e286b778a02baea8f7c3547208849e2e18f90837bd9374a4a14c5c0b",
@@ -2762,6 +2763,7 @@
"T2T1_cs_test_basic.py::test_capabilities": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
"T2T1_cs_test_basic.py::test_device_id_different": "4deac7bf4da5b298a09f166c71506b3a8e82fb9d37ce2ef8e4218d765132c511",
"T2T1_cs_test_basic.py::test_device_id_same": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
+"T2T1_cs_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_cs_test_basic.py::test_ping": "f2b80196c81ce473b7f24f16f6192ac76d9d2ca23fb0b40053c00d02b53d5111",
"T2T1_cs_test_busy_state.py::test_busy_expiry_core": "4076a550537ddfede0f0a89447cb083befc383cff510b65d093efb100b7bc676",
"T2T1_cs_test_busy_state.py::test_busy_state": "1822644f4ac40df794ca293b7507fa033dae9a3cfd0a57cc73e867e8d961a63d",
@@ -4539,6 +4541,7 @@
"T2T1_de_test_basic.py::test_capabilities": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
"T2T1_de_test_basic.py::test_device_id_different": "c2346f3c6fa8c74d9a0b4965f56495c4fad41f9bf2c1fe72b806155d6725ae07",
"T2T1_de_test_basic.py::test_device_id_same": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
+"T2T1_de_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_de_test_basic.py::test_ping": "efeaf51fe18b983e9b1a6947a939ad305a92e57798fe07110bb61c0f65755881",
"T2T1_de_test_busy_state.py::test_busy_expiry_core": "365ad7ce8d183cd9c530433fb1502d43dbba0d5233ac9ef059160c03dc429403",
"T2T1_de_test_busy_state.py::test_busy_state": "cbe6b17c9151917212c750ab048ae63e6b492fa9e535783d43b62fbc5695d9f5",
@@ -6316,6 +6319,7 @@
"T2T1_en_test_basic.py::test_capabilities": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
"T2T1_en_test_basic.py::test_device_id_different": "fc0f865ca461cee420e4a3772159e662d38711582d67b4a2180e9b378b0ef794",
"T2T1_en_test_basic.py::test_device_id_same": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
+"T2T1_en_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_en_test_basic.py::test_ping": "8aa7c68cd09e700e8c6903dcfc39c4a66214481c12c34dc56762829478399b79",
"T2T1_en_test_busy_state.py::test_busy_expiry_core": "1de6e0224b15aa14e63f5a0bb25d3f1fe5971241e05aa533b11349d5adcfa168",
"T2T1_en_test_busy_state.py::test_busy_state": "616b96e67942074b3a2700803c33aab090960d383e823846253fe13665678ff3",
@@ -8111,6 +8115,7 @@
"T2T1_es_test_basic.py::test_capabilities": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
"T2T1_es_test_basic.py::test_device_id_different": "632f03df29ec617ced116c51138d25df97c36dc12445e96690c87991f0c3d8b6",
"T2T1_es_test_basic.py::test_device_id_same": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
+"T2T1_es_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_es_test_basic.py::test_ping": "17d836396f272c01cafa175aa87b0c076aedf7698c935d1921c7d3d7e8911903",
"T2T1_es_test_busy_state.py::test_busy_expiry_core": "a44eacb28554e1dc6bd22a154efef487405ffbd39f1f719cb16e9b11789d75f7",
"T2T1_es_test_busy_state.py::test_busy_state": "bb8df08e8d37e8409f214a2060e231c292a8fbdd562b1caa3a05887d0930280e",
@@ -9888,6 +9893,7 @@
"T2T1_fr_test_basic.py::test_capabilities": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
"T2T1_fr_test_basic.py::test_device_id_different": "a3d9587c740f993ccbe0fd10743837b177aa5c269c85700457af41dc0010a54b",
"T2T1_fr_test_basic.py::test_device_id_same": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
+"T2T1_fr_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_fr_test_basic.py::test_ping": "7e5a99a4b6aad4cdf7a9f9aecf483faa381108ee2108efaba88f261e29ac1f8a",
"T2T1_fr_test_busy_state.py::test_busy_expiry_core": "5015fbdf2653a91e9790c4a88693bbfa4a3f9cb91cc6b9a9f5fc0e022b36fa68",
"T2T1_fr_test_busy_state.py::test_busy_state": "65dd66e7c5ed0b19f21e856be096d576bff21e244eb1b2a61b6156b27d782504",
@@ -11665,6 +11671,7 @@
"T2T1_pt_test_basic.py::test_capabilities": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
"T2T1_pt_test_basic.py::test_device_id_different": "40d7ed6da4212e7405fb3ada52e4851593841e8a5b4dc3688861ff44a597896d",
"T2T1_pt_test_basic.py::test_device_id_same": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
+"T2T1_pt_test_basic.py::test_not_initialized": "15a782d367c2eee82cacfcafdc198225cb8e3297487003f5ab71b79fe9b436c1",
"T2T1_pt_test_basic.py::test_ping": "020b255e04b59e53d2aa87ae960038f4538d350de28df15a1ac41b376e9d04f2",
"T2T1_pt_test_busy_state.py::test_busy_expiry_core": "b0f3727ea18ff888d30c91590f5dcb13bf3651df959f6da9944500cdeb31a23d",
"T2T1_pt_test_busy_state.py::test_busy_state": "8824613274500e9a48bf5790edae7641543b0c82cb038baa1b2efea6b96d016c",
@@ -13699,6 +13706,7 @@
"T3B1_cs_test_basic.py::test_capabilities": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
"T3B1_cs_test_basic.py::test_device_id_different": "0d7bd0747ba855306466a8f23c0bd326d196c5a92fe7f256a65e80a307ce2f6e",
"T3B1_cs_test_basic.py::test_device_id_same": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
+"T3B1_cs_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_cs_test_basic.py::test_ping": "aec89f6952811bcfa54db3842b2e2e24d7ae162a65bf19424b4e6b6620fe70bb",
"T3B1_cs_test_busy_state.py::test_busy_expiry_core": "63a7c15479e43221bc44742c6e5366b1df3056d0f9f2fcd041a9258cdc9d01b1",
"T3B1_cs_test_busy_state.py::test_busy_state": "4d8f203e7ac2539643616ef1d967b691518794a5d0e877d3bd5283b6e8fd2da2",
@@ -15417,6 +15425,7 @@
"T3B1_de_test_basic.py::test_capabilities": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
"T3B1_de_test_basic.py::test_device_id_different": "3e1dd6e8660b6391217b1f7068273df9d425313c2f8dd341c2003e31a254a4b5",
"T3B1_de_test_basic.py::test_device_id_same": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
+"T3B1_de_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_de_test_basic.py::test_ping": "14dfefb39e3707b5294815085c5d94626e4e632f7fd9ca60df4b28e57d015dde",
"T3B1_de_test_busy_state.py::test_busy_expiry_core": "da4e7b3ca55b96ec5021a520dbdd40ce7a31f45aa6b4b8e85d7416e9f837bffb",
"T3B1_de_test_busy_state.py::test_busy_state": "08fd862d63cf7a8d5ce5704ba153f32f581a8740c1c9a0cc7b8cab1b724982a2",
@@ -17135,6 +17144,7 @@
"T3B1_en_test_basic.py::test_capabilities": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
"T3B1_en_test_basic.py::test_device_id_different": "c03e5e82d3154fccddc947abc709da8f67cf55b2da4ae3e8b066f915a6756f1e",
"T3B1_en_test_basic.py::test_device_id_same": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
+"T3B1_en_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_en_test_basic.py::test_ping": "7945fdf0623a34efada654fe62a57fa06c6ab0cf4383bc14c6b7acd594b10596",
"T3B1_en_test_busy_state.py::test_busy_expiry_core": "c61769cc9da63808d8faf2b78cb694715e0df07ad1f6a05210ca963562b13165",
"T3B1_en_test_busy_state.py::test_busy_state": "820ab7e4542b5723952f6be0eedcdd9f0e83f1c038b0900f4165a2d8c4aeaac9",
@@ -18853,6 +18863,7 @@
"T3B1_es_test_basic.py::test_capabilities": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
"T3B1_es_test_basic.py::test_device_id_different": "148240900c1720b77495b447e55dab512f2d1b6e21592cab725abea71983cbc8",
"T3B1_es_test_basic.py::test_device_id_same": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
+"T3B1_es_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_es_test_basic.py::test_ping": "1c43a01a3864c17b781e3a68121bb7c4378f858ab5c4db5b3d012f138eba5fb8",
"T3B1_es_test_busy_state.py::test_busy_expiry_core": "3dbc6231add00e6f482d3e4b61a623831e24459b1ebbfd5321728be429fd0e3b",
"T3B1_es_test_busy_state.py::test_busy_state": "165aa87ede957d65717a06b3481737f4cac3576502fd24276e7cf74ef64d53c8",
@@ -20571,6 +20582,7 @@
"T3B1_fr_test_basic.py::test_capabilities": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
"T3B1_fr_test_basic.py::test_device_id_different": "97d18cab2fcb4c3cf4d18be19ee1d56c546f6ca64866f849ead428d573bab745",
"T3B1_fr_test_basic.py::test_device_id_same": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
+"T3B1_fr_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_fr_test_basic.py::test_ping": "979886e5de665a0a5bd752457a29ad2bd0aad9d94702754cb351dc7d31979b42",
"T3B1_fr_test_busy_state.py::test_busy_expiry_core": "be8291514dcaead2cf3540777ee19ef4b556c78255f22ee27ebd4ec02c1bdddc",
"T3B1_fr_test_busy_state.py::test_busy_state": "ea4b7ebe8a9215048d8438c998f0edb7e4cb644a545d07bda79db109c8a3ef54",
@@ -22289,6 +22301,7 @@
"T3B1_pt_test_basic.py::test_capabilities": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
"T3B1_pt_test_basic.py::test_device_id_different": "1982fd7656e42167812661ad0e14149a924992b3a43465bd2344c1c03f39d51f",
"T3B1_pt_test_basic.py::test_device_id_same": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
+"T3B1_pt_test_basic.py::test_not_initialized": "f4521a6e1979e44a1050c326098f98ae88a3a255461919644cb74f6f28369971",
"T3B1_pt_test_basic.py::test_ping": "bbd866375fe164eb4caaddceb8a49d710b09ad01ca2cf67a0006d3a0d3ecb121",
"T3B1_pt_test_busy_state.py::test_busy_expiry_core": "79dc08e6542dd2845bdcd3d81fe090ac565db6ac4c1598972be8b2b4c1b8e958",
"T3B1_pt_test_busy_state.py::test_busy_state": "f6a1247ad3fee509fbedfca83067c5d845e392504744e4da4dcbba682f1d79f9",
@@ -24404,6 +24417,7 @@
"T3T1_cs_test_basic.py::test_capabilities": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
"T3T1_cs_test_basic.py::test_device_id_different": "aea11540ee9775b3c33686125f9f7895942144d5af8dcc18ab14124626f506d2",
"T3T1_cs_test_basic.py::test_device_id_same": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
+"T3T1_cs_test_basic.py::test_not_initialized": "13fa002861e42e18dbb21ae2376a25cb3738fb4d596814f0dede8a2eb0d36556",
"T3T1_cs_test_basic.py::test_ping": "9c20243bc5dacf2442af5a8778b66a0ab7cb978e11c02fec371f109fbc9d55f6",
"T3T1_cs_test_busy_state.py::test_busy_expiry_core": "b359d206993fccf4f274958a0d98927fd101e4b82cadc2c75b213561899bee6f",
"T3T1_cs_test_busy_state.py::test_busy_state": "c14d1aa01f507ccdb790ae0e169d5e5c268e390899a442cb6ded16473e96c623",
@@ -26155,6 +26169,7 @@
"T3T1_de_test_basic.py::test_capabilities": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
"T3T1_de_test_basic.py::test_device_id_different": "014feb216b9bf67c9adb34102b3c5f0d4eb7a860abd987926ed0be11c32434c4",
"T3T1_de_test_basic.py::test_device_id_same": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
+"T3T1_de_test_basic.py::test_not_initialized": "53e954ddaaebca92f068e0e13fe87d09798cbd59e85714d25f8f5886956ae58e",
"T3T1_de_test_basic.py::test_ping": "68c146f13417be0845fee20b1d8de4a05e0844608c2efb3cfae9f573be39f0c4",
"T3T1_de_test_busy_state.py::test_busy_expiry_core": "081e7f27ad1d2474ab890a7bc27a82559856fd28bf742d724e1f1c60b6c096a3",
"T3T1_de_test_busy_state.py::test_busy_state": "bb62c03d545f485b684def63c64e9342465f7f9a965dd54acb4351a59ab7e52f",
@@ -27906,6 +27921,7 @@
"T3T1_en_test_basic.py::test_capabilities": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
"T3T1_en_test_basic.py::test_device_id_different": "1783c5833422138acd30cfdc0912b3a601d020ce30c4506150a78047f84a9cbc",
"T3T1_en_test_basic.py::test_device_id_same": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
+"T3T1_en_test_basic.py::test_not_initialized": "4bc037c13dd19f23a176243dfd29921cd51ce9e4155faa6346540a4663233318",
"T3T1_en_test_basic.py::test_ping": "0064e8a52b9bff0c2a31432fa781b800afb21e8910d60f303671bdfc8d8425fc",
"T3T1_en_test_busy_state.py::test_busy_expiry_core": "f71ff591126f9bb2dff350109d376ee6d98b52ef86e36d8e1630f9be400f3d89",
"T3T1_en_test_busy_state.py::test_busy_state": "01165724b80b91682d0970edc98c62e6ecaaf46f8a13516c1c742b85d95845c9",
@@ -29657,6 +29673,7 @@
"T3T1_es_test_basic.py::test_capabilities": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
"T3T1_es_test_basic.py::test_device_id_different": "8c270b4d360635c98dad9a3f94cee69d0f46104bb72085bf24fbb133c861a3e4",
"T3T1_es_test_basic.py::test_device_id_same": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
+"T3T1_es_test_basic.py::test_not_initialized": "9bb7023f656f4fcd819bd648e96b4a0ea97bb2f04233ce48c72184f363f68c26",
"T3T1_es_test_basic.py::test_ping": "41b9c9e85d64891dcfd03d675df77c533f035a2d191b161144d00afab69a589d",
"T3T1_es_test_busy_state.py::test_busy_expiry_core": "376f7335e61e7e8c16f4f59c8668ccb1d494d946704ea3ac51943fa97b13f20f",
"T3T1_es_test_busy_state.py::test_busy_state": "de7c72da43cd455829606e91918e9ab92c24a96720fd41dbf8a98f523d958ac2",
@@ -31408,6 +31425,7 @@
"T3T1_fr_test_basic.py::test_capabilities": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
"T3T1_fr_test_basic.py::test_device_id_different": "50df84d863bb5233d39ae1f995adbcc9773cbe621974f2a42f079d01205e440e",
"T3T1_fr_test_basic.py::test_device_id_same": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
+"T3T1_fr_test_basic.py::test_not_initialized": "67f8a621b6a0468bcc683c0da4278fd8fb644bb29af5b9cee84816691a07e541",
"T3T1_fr_test_basic.py::test_ping": "116c64aa168d12181b7a5317677ddf135d739fdac22d38ff08571dc3301c2f47",
"T3T1_fr_test_busy_state.py::test_busy_expiry_core": "c7c601028725b56d6e65080fb5c48f79416c3d4ca0ec94b15338eb6555135e7f",
"T3T1_fr_test_busy_state.py::test_busy_state": "6680e9f58e5fed69d85578f1d0a90978553e55282f95f73f081f4c6bc6a1cd7f",
@@ -33159,6 +33177,7 @@
"T3T1_pt_test_basic.py::test_capabilities": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
"T3T1_pt_test_basic.py::test_device_id_different": "ca1ce10d7c0da45019edf021e5984291a3c0b60487cb4011ac6319ec090077b1",
"T3T1_pt_test_basic.py::test_device_id_same": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
+"T3T1_pt_test_basic.py::test_not_initialized": "0931386d561e5a7edb7f28b4933de40d5474de7078ce741efdbd52da7cbb9128",
"T3T1_pt_test_basic.py::test_ping": "14256cd1b801d1b67a37de1198d61a80d342f39e5c5d6fa991ec7fb526d683be",
"T3T1_pt_test_busy_state.py::test_busy_expiry_core": "8244bb3b62acd819e1677e61d2e3e719dc0f4b78235b03b089bfdc31d9b533c7",
"T3T1_pt_test_busy_state.py::test_busy_state": "6b6fa4ba46ea4e90e67d7d6f274a68c408bad8d2c89a8ea66c39ddf7af79490a",
@@ -35575,6 +35594,7 @@
"T3W1_cs_test_basic.py::test_capabilities": "25675032fe6b1628161f0cd2398edae2feace6873ae31c44ce545c91f7ced796",
"T3W1_cs_test_basic.py::test_device_id_different": "db96f45d86b35dbbaae859902de13bcccddda7ecef6f0ac2ece8dd98be9f4ffb",
"T3W1_cs_test_basic.py::test_device_id_same": "25675032fe6b1628161f0cd2398edae2feace6873ae31c44ce545c91f7ced796",
+"T3W1_cs_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_cs_test_basic.py::test_ping": "25675032fe6b1628161f0cd2398edae2feace6873ae31c44ce545c91f7ced796",
"T3W1_cs_test_ble.py::test_ble_unpair_all": "b5192bbcbafa193da170181ff2b97ab70a004eb263dc033b5d34774ec028c26d",
"T3W1_cs_test_busy_state.py::test_busy_expiry_core": "e90d2e8fff042d79151b62faf6ab9d77d546edf529802556796f36bb6c0aad69",
@@ -37343,6 +37363,7 @@
"T3W1_de_test_basic.py::test_capabilities": "aaafdc361a1d1494db1b142427ede204b978fbde090811b1ff02e54df49414f9",
"T3W1_de_test_basic.py::test_device_id_different": "85e9551a163f6e7ee7732375a8bef7a9abdf0ad60ebb938a9be9ecf8317223eb",
"T3W1_de_test_basic.py::test_device_id_same": "aaafdc361a1d1494db1b142427ede204b978fbde090811b1ff02e54df49414f9",
+"T3W1_de_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_de_test_basic.py::test_ping": "aaafdc361a1d1494db1b142427ede204b978fbde090811b1ff02e54df49414f9",
"T3W1_de_test_ble.py::test_ble_unpair_all": "ba03b09d14fcfdbeaaeb75c118b7203f5e0395bb08ecfad6c65b567358f36eed",
"T3W1_de_test_busy_state.py::test_busy_expiry_core": "d29c709525f9dfc1dd8ffab724fa281cfd7bebef8acefa0e3d205be5947919ab",
@@ -39111,6 +39132,7 @@
"T3W1_en_test_basic.py::test_capabilities": "778dbcfb96e575c652b06902ef2842f6cc261dd3d457cc66b8b6c9338e82e1fb",
"T3W1_en_test_basic.py::test_device_id_different": "a1dab906eabed921b58d2631fdb4b47a59534a76d4664a43bf929b659dd42063",
"T3W1_en_test_basic.py::test_device_id_same": "778dbcfb96e575c652b06902ef2842f6cc261dd3d457cc66b8b6c9338e82e1fb",
+"T3W1_en_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_en_test_basic.py::test_ping": "778dbcfb96e575c652b06902ef2842f6cc261dd3d457cc66b8b6c9338e82e1fb",
"T3W1_en_test_ble.py::test_ble_unpair_all": "71a1991a5a1922d57b394dcb469b15398a9f6f9bd04316c6dc10ae4055c65469",
"T3W1_en_test_busy_state.py::test_busy_expiry_core": "5c13e11e7125eb18d85ce90951a6aa0f4cbc57484e8b56b1924aa645861b89e2",
@@ -40879,6 +40901,7 @@
"T3W1_es_test_basic.py::test_capabilities": "ea59c9d24216e9bad1b1fdd99068e34dbc5beeea54b06c34219d37720f17a470",
"T3W1_es_test_basic.py::test_device_id_different": "b6287c17a690a944ac8619c09607c0ef38056a5f627abe93e031fb3a27f288d6",
"T3W1_es_test_basic.py::test_device_id_same": "ea59c9d24216e9bad1b1fdd99068e34dbc5beeea54b06c34219d37720f17a470",
+"T3W1_es_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_es_test_basic.py::test_ping": "ea59c9d24216e9bad1b1fdd99068e34dbc5beeea54b06c34219d37720f17a470",
"T3W1_es_test_ble.py::test_ble_unpair_all": "98411a2b1f4f07dec02a67b4b42c8d7b6e7778761591e3afb0abc92b4550a2a0",
"T3W1_es_test_busy_state.py::test_busy_expiry_core": "0a80b8909d5851ac4564914c021858bf91574c6c1ef479c02cc59cfe282dab92",
@@ -42647,6 +42670,7 @@
"T3W1_fr_test_basic.py::test_capabilities": "1cceb37657549d7798a606fb01cffd95cdd3ab59cda2e25228d11f1bb906cd31",
"T3W1_fr_test_basic.py::test_device_id_different": "5723a490643074e6cb13447088033451ea88f949ee7775a6ad0ce913ab08344e",
"T3W1_fr_test_basic.py::test_device_id_same": "1cceb37657549d7798a606fb01cffd95cdd3ab59cda2e25228d11f1bb906cd31",
+"T3W1_fr_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_fr_test_basic.py::test_ping": "1cceb37657549d7798a606fb01cffd95cdd3ab59cda2e25228d11f1bb906cd31",
"T3W1_fr_test_ble.py::test_ble_unpair_all": "88a97e9db80f32e91ab227b784331197ad1cffa680673a065cf888855c9513fc",
"T3W1_fr_test_busy_state.py::test_busy_expiry_core": "4ffab1584179f7c8bdb6c66df4441350dac273f0a736a0a7f63e6fbaaf2d1d16",
@@ -44420,6 +44444,7 @@
"T3W1_pt_test_basic.py::test_capabilities": "67695a9de4ea2860aa20568a42ba0dd34e1fdf983ff4cf32347e6dd81e79c6e3",
"T3W1_pt_test_basic.py::test_device_id_different": "745113abfb1ee6dec393ecd2a6196064b9357527b59dcaada98265e1867fe432",
"T3W1_pt_test_basic.py::test_device_id_same": "67695a9de4ea2860aa20568a42ba0dd34e1fdf983ff4cf32347e6dd81e79c6e3",
+"T3W1_pt_test_basic.py::test_not_initialized": "bb5baca9a34168732bf0521a0546df8fc6af1af0145fff6e9d6357f2687a9c35",
"T3W1_pt_test_basic.py::test_ping": "67695a9de4ea2860aa20568a42ba0dd34e1fdf983ff4cf32347e6dd81e79c6e3",
"T3W1_pt_test_ble.py::test_ble_unpair_all": "669a44ed07c49de4b57d70159d3389ba31faa83870db90f1fbcdeb3d997ee522",
"T3W1_pt_test_busy_state.py::test_busy_expiry_core": "50a7972bd4b36228c7fa7a04d6fd99793a37fc2820bdb2c41cce72db89940606",
Why this scored 34/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.