feat(core): allow loading translations with different BUILD_VERSION
What changed, and why it matters
This commit relaxes a version check so that Trezor devices can load translation (language) files even when the translation file's build number differs from the firmware's build number. Previously, the version had to match exactly, which could block users from changing languages after a small firmware update. The change still requires the major, minor, and patch version numbers to match, and it adds a check that the version field is exactly four parts long. There is no direct security vulnerability here; it is a usability fix.
No immediate action required. This is a benign usability fix. If reviewing for defense in depth, confirm that translation blobs remain signed and that the build-version field is not used for any security-critical decision elsewhere.
Security signals we found
Version check relaxation in a language-loading code path
New length validation before version comparison
No change to signature, hash, length, or magic validation
No mention of security impact in commit message or changelog
Evidence from the diff
In core/src/apps/management/change_language.py, the translation blob version check was changed from an exact equality match (header.version != expected_version) to a comparison of only the first three tuple elements (header.version[:3] != expected_version[:3]). A length check requiring both versions to be 4-tuples was added. The accompanying test confirms that a translation blob whose fourth element (BUILD_VERSION) differs is now accepted. The change is framed as a fix because translation blob format is not expected to change when only BUILD_VERSION is bumped.
Changed components
Trezor Core firmwareapps/management/change_language.pyTranslation blob loading / language change featureInspect captured patch +48 / −1
diff --git a/core/.changelog.d/6228.fixed b/core/.changelog.d/6228.fixed
new file mode 100644
index 000000000..1a0141d5e
--- /dev/null
+++ b/core/.changelog.d/6228.fixed
@@ -0,0 +1 @@
+Allow loading translations with different BUILD_VERSION.
diff --git a/core/src/apps/management/change_language.py b/core/src/apps/management/change_language.py
index 9d82dea24..b5de25a85 100644
--- a/core/src/apps/management/change_language.py
+++ b/core/src/apps/management/change_language.py
@@ -76,7 +76,11 @@ async def do_change_language(
if header.total_len != data_length:
raise DataError("Invalid data length")
- if header.version != expected_version:
+ # Translation blob format may not change when VERSION_BUILD is bumped.
+ # Compare only (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH):
+ if len(header.version) != 4 or len(expected_version) != 4:
+ raise DataError("Invalid version format")
+ if header.version[:3] != expected_version[:3]:
raise DataError("Translations version mismatch")
current_header = translations.TranslationsHeader.load_from_flash()
diff --git a/tests/device_tests/test_language.py b/tests/device_tests/test_language.py
index d33748234..98d619ec3 100644
--- a/tests/device_tests/test_language.py
+++ b/tests/device_tests/test_language.py
@@ -241,6 +241,24 @@ def test_full_language_change(session: Session, lang: str):
)
+def test_build_version_mismatch(session: Session):
+ assert session.features.language == "en-US"
+ # Translations build version is allowed to differ from FW build version.
+ # Change the build version to one not matching the current device
+ version = session.version
+ assert len(session.version) == 3
+ version = version + (1,)
+ blob = prepare_blob("cs", session.model, version)
+ device.change_language(
+ session,
+ language_data=sign_blob(blob),
+ )
+ assert session.features.language == "cs-CZ"
+ _check_ping_screen_texts(
+ session, get_ping_title("cs"), get_ping_button("cs", session.client)
+ )
+
+
def test_language_is_removed_after_wipe(client: Client):
session = client.get_session()
assert session.features.language == "en-US"
diff --git a/tests/ui_tests/fixtures.json b/tests/ui_tests/fixtures.json
index ef6c71f63..236cc6451 100644
--- a/tests/ui_tests/fixtures.json
+++ b/tests/ui_tests/fixtures.json
@@ -2524,6 +2524,7 @@
"T2T1_cs_test_debuglink.py::test_softlock_instability": "926558b36f31a1bfa4723a22b2faf1d6bf91561c4a39e2c10b21164ea07167da",
"T2T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "287eb5bf75044941242fe4326fd3c2f92687d7d229c8c43334f188c8d0fecaa5",
"T2T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "32d380b2c0942f8a2ab6a32e0e4c8a2ad2ab6750ee39c6fa4d4f0bacf59a4b7c",
+"T2T1_cs_test_language.py::test_build_version_mismatch": "c628102410791fc53e60a460caec0afe68f6f934c4f5f832e41cb91d56a7d2ab",
"T2T1_cs_test_language.py::test_error_invalid_data_hash": "0b859d2d2e4685a51e52670bfb36b2317e317929e1134cf53865c5dc4a22f1d8",
"T2T1_cs_test_language.py::test_error_invalid_data_length": "69966a91b719e602f4d8bc4a33e653e6efcc43520f9827b863e9f77002595191",
"T2T1_cs_test_language.py::test_error_invalid_header_magic": "69966a91b719e602f4d8bc4a33e653e6efcc43520f9827b863e9f77002595191",
@@ -4096,6 +4097,7 @@
"T2T1_de_test_debuglink.py::test_softlock_instability": "b369ed59ccbd7c4f184b46c21592d8288fe47487381b48a03115d1ef5c504a17",
"T2T1_de_test_firmware_hash.py::test_firmware_hash_emu": "c97b08ab7252cc9a06e6ffd6945be3272bfa0e58a0716b9a4c98884ecdf42bad",
"T2T1_de_test_firmware_hash.py::test_firmware_hash_hw": "a3edf3ced8fa1fa6b9f67f869a28bc880ce5e214b0adfaf839cd867875845912",
+"T2T1_de_test_language.py::test_build_version_mismatch": "8429f429ca06711e3d40f9ef6a9712c3d84aeeb4cbd1b9ed45f13b5933a21152",
"T2T1_de_test_language.py::test_error_invalid_data_hash": "c1b8b6a93051a8f17cf53ad1d757f32a6339ea5bf2eddb04044a18166398bc38",
"T2T1_de_test_language.py::test_error_invalid_data_length": "474f064132902c28554387b37e67628c8ec7d9b028c868a26c4a7a7ac4b200ce",
"T2T1_de_test_language.py::test_error_invalid_header_magic": "474f064132902c28554387b37e67628c8ec7d9b028c868a26c4a7a7ac4b200ce",
@@ -5668,6 +5670,7 @@
"T2T1_en_test_debuglink.py::test_softlock_instability": "c7698dcc8b2f0130b284be731c11988f8b1ecd829eeeea958a32565e0fe50ca7",
"T2T1_en_test_firmware_hash.py::test_firmware_hash_emu": "7a5f7b57930abc99b37db9aac7cb353638d42eeede5c7d6a3a754bac633f57f3",
"T2T1_en_test_firmware_hash.py::test_firmware_hash_hw": "8b1ccc0dbd6e6e3d02a896650ab90dd332ba4edbbcc4095e0fbb6a96e5256f75",
+"T2T1_en_test_language.py::test_build_version_mismatch": "ad5b9fbc0b7463115ea0fa5235b1e36a24be6668b2e8cf7b542c1e808ffd24d7",
"T2T1_en_test_language.py::test_error_invalid_data_hash": "9f661547dbe81ba6def0dc129c240b037c997be274022c489bb7f59964bb0d5c",
"T2T1_en_test_language.py::test_error_invalid_data_length": "6c42efb29e5a843dd3322ab7e9f8a4ddd0eae2d6d25935c7f4c30cc657c8d936",
"T2T1_en_test_language.py::test_error_invalid_header_magic": "6c42efb29e5a843dd3322ab7e9f8a4ddd0eae2d6d25935c7f4c30cc657c8d936",
@@ -7258,6 +7261,7 @@
"T2T1_es_test_debuglink.py::test_softlock_instability": "c54052eecfacd91bd852f05b2b651ea0082007ae5fbaf7fb3e71faa3a5b99401",
"T2T1_es_test_firmware_hash.py::test_firmware_hash_emu": "3ebf5eba08a5fb9ba2c605b3304e47fae91cc6544517e5a2f22930c38be44216",
"T2T1_es_test_firmware_hash.py::test_firmware_hash_hw": "1775658fa541fff7933453c1d346449c492079a39341e07135ac9e7662b3bbd3",
+"T2T1_es_test_language.py::test_build_version_mismatch": "8a8367653ef52bf0edab829729ddf1bc53c127ae2ebc3c0d21f2367f1e5ee8fd",
"T2T1_es_test_language.py::test_error_invalid_data_hash": "64389fede680f4a7c34cd2b4ece5d1a9fa560810207914771e6a51cfed1691c0",
"T2T1_es_test_language.py::test_error_invalid_data_length": "778d81fce8ee131c5bfb53b2c32bb0f537fada3039af32c0902de332bcfa8bc8",
"T2T1_es_test_language.py::test_error_invalid_header_magic": "778d81fce8ee131c5bfb53b2c32bb0f537fada3039af32c0902de332bcfa8bc8",
@@ -8830,6 +8834,7 @@
"T2T1_fr_test_debuglink.py::test_softlock_instability": "50d3ed8db9b73574779f535a3cbce9eb2fd51225b2d7b72b1d92062365ae920a",
"T2T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "e7a1cf685c6a888e009b84fa5e847463cd714264ed5e04897f4c0999ba309cc2",
"T2T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "94d3ba1cba15b836e6ebc48ab307aeea71275ef2d9849aaabc8e883df555ce3f",
+"T2T1_fr_test_language.py::test_build_version_mismatch": "ffda7b90c670ef8b1baf9501d18ea1d0337e8be5ee086988d39985036a2b5858",
"T2T1_fr_test_language.py::test_error_invalid_data_hash": "ab9ebee53c2b3bd9ad50611748ea98fd924a1d13e03f426a4a04e971e05e39c9",
"T2T1_fr_test_language.py::test_error_invalid_data_length": "f330759d382e4e5206797d1b2cfe23f470aa0647186ccecb8f801c673b5bb3d2",
"T2T1_fr_test_language.py::test_error_invalid_header_magic": "f330759d382e4e5206797d1b2cfe23f470aa0647186ccecb8f801c673b5bb3d2",
@@ -10402,6 +10407,7 @@
"T2T1_pt_test_debuglink.py::test_softlock_instability": "197602f7abeef437e5cbd3b5dd9fec711efdf46d1f7733ec578646f4a84fd554",
"T2T1_pt_test_firmware_hash.py::test_firmware_hash_emu": "285d7ced5a629cdd3098907a8fdecbd043e715611acacdbbd57ee3c0dd24c194",
"T2T1_pt_test_firmware_hash.py::test_firmware_hash_hw": "e9e80e1bfd347b598699a7a84deb8932eff90fc5fb8b56771453e06fe3c4c216",
+"T2T1_pt_test_language.py::test_build_version_mismatch": "e59e41e63679130e7074ee0bef1b62fe3c64583b8cd06906acf8069a7260ccdd",
"T2T1_pt_test_language.py::test_error_invalid_data_hash": "c4b9219e392dfe0920c55ad124dee160af095d45a06ef00e4bb3cc417870edaf",
"T2T1_pt_test_language.py::test_error_invalid_data_length": "1e5956801ae9c61b40d1d5962127814395761502012b377962b9031e3a4c4840",
"T2T1_pt_test_language.py::test_error_invalid_header_magic": "1e5956801ae9c61b40d1d5962127814395761502012b377962b9031e3a4c4840",
@@ -12207,6 +12213,7 @@
"T3B1_cs_test_debuglink.py::test_softlock_instability": "4ed9a94aeee179869a59ede99b6b6b0b5f1cfbc03b29a9f6a26f6128702a7c9c",
"T3B1_cs_test_firmware_hash.py::test_firmware_hash_emu": "5b79181fbf2587080248983cf9445ce963f9ecd2d673e53100993217597bb9c0",
"T3B1_cs_test_firmware_hash.py::test_firmware_hash_hw": "92840d4624bb07440bb1ab5cb4b57251c9950388accbc8334a9a7d609ededb01",
+"T3B1_cs_test_language.py::test_build_version_mismatch": "652a84d1d5a0030f1f4d54b8cc03c6bac50740251f31fde53ad9e049076c6b20",
"T3B1_cs_test_language.py::test_error_invalid_data_hash": "8835d345d7395de934563b3e777fa026a1d88d7a6b57069e208e0e6a466c3153",
"T3B1_cs_test_language.py::test_error_invalid_data_length": "09dbec68db2deedf9d7c7dbb084603aee14f9a9dac3fe82748731673276963aa",
"T3B1_cs_test_language.py::test_error_invalid_header_magic": "09dbec68db2deedf9d7c7dbb084603aee14f9a9dac3fe82748731673276963aa",
@@ -13702,6 +13709,7 @@
"T3B1_de_test_debuglink.py::test_softlock_instability": "a55235ca827cd86ec0135453fbcc97f3e3cc674c01e38e12cca467c2f3510ed7",
"T3B1_de_test_firmware_hash.py::test_firmware_hash_emu": "605c7dc4e32815499a6c4029a1109a429177f608efce9e7f44c88e8f5e7628e3",
"T3B1_de_test_firmware_hash.py::test_firmware_hash_hw": "c92ee4e050daadcfc7cc95657b00deed76bb463d486eefcc66455bdbe60faa33",
+"T3B1_de_test_language.py::test_build_version_mismatch": "d2bcdb2a845e9f22b6824d700770e3792798c1aed03b85a9635601c33cce5468",
"T3B1_de_test_language.py::test_error_invalid_data_hash": "541f5c44af8c9d40a8caff4de1260be2416316670206569b553c29db4d2b3648",
"T3B1_de_test_language.py::test_error_invalid_data_length": "bd9a91c574e08b5f0b3aff8e43617d17c4ee442d28ae62454ca82bc69136b4c5",
"T3B1_de_test_language.py::test_error_invalid_header_magic": "bd9a91c574e08b5f0b3aff8e43617d17c4ee442d28ae62454ca82bc69136b4c5",
@@ -15197,6 +15205,7 @@
"T3B1_en_test_debuglink.py::test_softlock_instability": "41244d3c80d7381f3f81528d339f5c9c04e65e5f3c92399d94230a3732dc05a3",
"T3B1_en_test_firmware_hash.py::test_firmware_hash_emu": "db0f817babbc80656cd9aad6b9fffa8d1ad8b9f33764acf537c3e200d0f5340e",
"T3B1_en_test_firmware_hash.py::test_firmware_hash_hw": "1477d62e338f4d7c1bfac2fc5d2fc231218da5768666c11482dc1f83229506f3",
+"T3B1_en_test_language.py::test_build_version_mismatch": "dedee744a49be4b6b8b14c1026b61ccee43a96487c3091463d922d3265c46799",
"T3B1_en_test_language.py::test_error_invalid_data_hash": "0ec6a0e8eb2d08a8f6d95ba23de9f3bdc6c62f7a70669dfcc364bf4e34c18716",
"T3B1_en_test_language.py::test_error_invalid_data_length": "c09ec39402dbbb6919240948758b49c92bac461790b8b185d6ee32a7ad62ddec",
"T3B1_en_test_language.py::test_error_invalid_header_magic": "c09ec39402dbbb6919240948758b49c92bac461790b8b185d6ee32a7ad62ddec",
@@ -16692,6 +16701,7 @@
"T3B1_es_test_debuglink.py::test_softlock_instability": "77c835207988bbcf25d6db39cdd5aa6bcf1f3b65a458b439a2ac42dc0e8679f4",
"T3B1_es_test_firmware_hash.py::test_firmware_hash_emu": "2f310fd2086bd82d0d7cbcd32d6123d01c3d9472b42707b66df96ea932c39812",
"T3B1_es_test_firmware_hash.py::test_firmware_hash_hw": "211e7c3419bd48ceefc570971fc522f809b39614563be948fd1e545366506dee",
+"T3B1_es_test_language.py::test_build_version_mismatch": "7049b3421eb627880292ba99583014fd2e08d5c556def707bb491ca83af2b108",
"T3B1_es_test_language.py::test_error_invalid_data_hash": "9515f7b8e01cc59ab330663bf51acda45861dd3b109b20b8da333709cd6e1c40",
"T3B1_es_test_language.py::test_error_invalid_data_length": "796dc443ca29f302fc7aced7b0ccb4408c6c0cd6c860e44d9b68a63c2e2a7d42",
"T3B1_es_test_language.py::test_error_invalid_header_magic": "796dc443ca29f302fc7aced7b0ccb4408c6c0cd6c860e44d9b68a63c2e2a7d42",
@@ -18187,6 +18197,7 @@
"T3B1_fr_test_debuglink.py::test_softlock_instability": "2a375c5f3eb55a7dab56fd255e51fc7f204cc8773387c510183752db3e44cbfa",
"T3B1_fr_test_firmware_hash.py::test_firmware_hash_emu": "0fae85edbfa9e0f15e9428e29c5daf10623aee02f5a9b7cd890723c8080c8edc",
"T3B1_fr_test_firmware_hash.py::test_firmware_hash_hw": "35c9c9529c59ca5c386ac05856f7452f26cde732203b5b61ec9321230b52df89",
+"T3B1_fr_test_language.py::test_build_version_mismatch": "40f8c0c4751a2899cc00e6bf08d42abeabf2dd4416a10ff24347f35d43125c13",
"T3B1_fr_test_language.py::test_error_invalid_data_hash": "2f28da3d3cf6f80867801405da5262e34025bb7680a6701d13e53ed0b3944dbc",
"T3B1_fr_test_language.py::test_error_invalid_data_length": "0cc0dfc276208844b5f64942e4bdb9175732aac3276403e76ff3289908d80727",
"T3B1_fr_test_language.py::test_error_invalid_header_magic": "0cc0dfc276208844b5f64942e4bdb9175732aac3276403e76ff3289908d80727",
@@ -19682,6 +19693,7 @@
"T3B1_pt_test_debuglink.py::test_softlock_instability": "5d3c83f432e61321f47a18d1ce24c57c1b01e039a1edc997f30b94eb8c067b48",
"T3B1_pt_test_firmware_hash.py::test_firmware_hash_emu": "c7338dbbdd8e060190e08c733532b50849ced040a5d39fc8e271e381be28c6ee",
"T3B1_pt_test_firmware_hash.py::test_firmware_hash_hw": "6ba5ca7223cd8ad675e081407f186acdfc8420304eea96de0fde5eda45ef0a57",
+"T3B1_pt_test_language.py::test_build_version_mismatch": "d7ce04bad2ac360268b1407bb63b2dde34d81c1f2fab67c38a0aacc7e1d155fe",
"T3B1_pt_test_language.py::test_error_invalid_data_hash": "91dfc91d1168b4baa73e707d2ceeab20cd486b1e322f6cd26d609730bdc972d2",
"T3B1_pt_test_language.py::test_error_invalid_data_length": "7783cbbe2a85ad8bcec84e4ef61d480edbd9a96be2c1e1897743c548e6415c1e",
"T3B1_pt_test_language.py::test_error_invalid_header_magic": "7783cbbe2a85ad8bcec84e4ef61d480edbd9a96be2c1e1897743c548e6415c1e",
@@ -21566,6 +21578,7 @@
"T3T1_cs_test_debuglink.py::test_softlock_instability": "c9e1e91b1c9c3b34fa3dc066c2d4dac209ca5eb3ada00068b55e10ec8af36d70",
"T3T1_cs_test_firmware_hash.py::test_firmware_hash_emu": "e12b5deb5ebfbca733d2dfe5a9dfca2057218160406d3ac1efe7577d4bfbe0ef",
"T3T1_cs_test_firmware_hash.py::test_firmware_hash_hw": "592adf9c06f8f39132298b46037dd524fac99e58237a0c023197bf47df67d632",
+"T3T1_cs_test_language.py::test_build_version_mismatch": "938ccaa3a8ec1eac9689ca2bb84dc33d8efbdb4e0085778e71c28aeb3696c4a7",
"T3T1_cs_test_language.py::test_error_invalid_data_hash": "9d168664594d5b03cfb6fbf6b0aae5c18985e4b5d494dca2c5d931337fca2cd2",
"T3T1_cs_test_language.py::test_error_invalid_data_length": "e2635202e179a4edecd2690eb066cd2e7e3c4728026ec298e247cd24bf4cc099",
"T3T1_cs_test_language.py::test_error_invalid_header_magic": "e2635202e179a4edecd2690eb066cd2e7e3c4728026ec298e247cd24bf4cc099",
@@ -23092,6 +23105,7 @@
"T3T1_de_test_debuglink.py::test_softlock_instability": "8ab6656464b16cac7c2dc7646f280e4ddbc8020647b8bf23788edd1a5e56653b",
"T3T1_de_test_firmware_hash.py::test_firmware_hash_emu": "6979228f4e622ed9707824b93845c65449082e70bbb2667a30e20e64ce6dcdbf",
"T3T1_de_test_firmware_hash.py::test_firmware_hash_hw": "f2fcbbd7ad83aff9adc0ee97fe98e7272d8bcfcc4a023798e2ab1c9895fda70f",
+"T3T1_de_test_language.py::test_build_version_mismatch": "bda3a50c714d796db59874e1b13ad7931666784b6c9585b4f01dcfb8f56de312",
"T3T1_de_test_language.py::test_error_invalid_data_hash": "c3a4411abc55c6f8d342377f1544b1018cd4671bfac77b638fbff9ff18ed1672",
"T3T1_de_test_language.py::test_error_invalid_data_length": "f554193d71f4ddd7b446a7d760af0bc0a8ef8463e6fea71860e3ac828014f67c",
"T3T1_de_test_language.py::test_error_invalid_header_magic": "f554193d71f4ddd7b446a7d760af0bc0a8ef8463e6fea71860e3ac828014f67c",
@@ -24618,6 +24632,7 @@
"T3T1_en_test_debuglink.py::test_softlock_instability": "317e0c9dc524a773a61f53d436b623248a3609d6a627ac0c4a8f67fe2fa1bd15",
"T3T1_en_test_firmware_hash.py::test_firmware_hash_emu": "4b7f8b4ff77698fe3c0f5532df8c79c3bbd8a9eed3c81d96f0ebccb2d9aebc6e",
"T3T1_en_test_firmware_hash.py::test_firmware_hash_hw": "cb8641952bec9e793e7d19f281a85a0ca1be2c3397ca5c0cf4ee7ad905429984",
+"T3T1_en_test_language.py::test_build_version_mismatch": "296ff7e4f9326f7c96417c9d8fa559afda26b2ec7078abd16502ea732484e07c",
"T3T1_en_test_language.py::test_error_invalid_data_hash": "a2a213dc2409b48a4ad89b684c2a09ca09362827adae33b71bc0ee6b1b1bf015",
"T3T1_en_test_language.py::test_error_invalid_data_length": "7e7a7a9dfc166a4bb182aa5ee17e335880ab434743407fcdbeb1176e50a3ffcf",
"T3T1_en_test_language.py::test_error_invalid_header_magic": "7e7a7a9dfc166a4bb182aa5ee17e335880ab434743407fcdbeb1176e50a3ffcf",
@@ -26144,6 +26159,7 @@
"T3T1_es_test_debuglink.py::test_softlock_instability": "916c052bb2ac06f816e4a1250c5635d5c579eff00168c998744769540c93ea9c",
"T3T1_es_test_firmware_hash.py::test_firmware_hash_emu": "d3e6b64e5fedbc33120f37b976ee1115960a92fa0b75d70fa20e2f41033d5a2c",
"T3T1_es_test_firmware_hash.py::test_firmware_hash_hw": "c568b82943d9f63ad6b29b7dee6f5ed9dca78fc9610d4fa7f12bb8a061a6882a",
+"T3T1_es_test_language.py::test_build_version_mismatch": "5c99623a4e5a0abfb525a418ec5207b8b51810da29627949b739dcb705041904",
"T3T1_es_test_language.py::test_error_invalid_data_hash": "df54ae31ff445e63d109acb8af06fa3a058c9fcf46443821f008187a8f329a9c",
"T3T1_es_test_language.py::test_error_invalid_data_length": "dbed612ae96ea56542cecc81f36c38cb040cfb7d4131a65e44c18e24da1968b7",
"T3T1_es_test_language.py::test_error_invalid_header_magic": "dbed612ae96ea56542cecc81f36c38cb040cfb7d4131a65e44c18e24da1968b7",
@@ -27670,6 +27686,7 @@
"T3T1_fr_test_debuglink.py::test_softlock_instability": "083be2b9aa680cb885c7d39752addce3981f10b72d8b56b368513ea1212e212b",
"T3T1_fr_test_firmware_hash.py::test_firmware_hash_emu": "4b092fa366fa3d2ffb694ec41f11ce61df258de60d2023dc7e5a844129e6b048",
"T3T1_fr_test_firmware_hash.py::test_firmware_hash_hw": "fdf4909aff89183fa79899fde974115e687a71e0cf09dea210e8aa60ba54c906",
+"T3T1_fr_test_language.py::test_build_version_mismatch": "bdc14118ca101e500a8720572cfcb3e8ff2e8fe50084a16c6aecc09e94cfefe1",
"T3T1_fr_test_language.py::test_error_invalid_data_hash": "131f0935aea53f1f56afa8f349808f3e9bf7f79d1485773d2bed041f25fac8f8",
"T3T1_fr_test_language.py::test_error_invalid_data_length": "74be005b8d703906a6cf89c4b53e963e992bdedbb68c2975469ee3ce3329dd41",
"T3T1_fr_test_language.py::test_error_invalid_header_magic": "74be005b8d703906a6cf89c4b53e963e992bdedbb68c2975469ee3ce3329dd41",
@@ -29196,6 +29213,7 @@
"T3T1_pt_test_debuglink.py::test_softlock_instability": "469ced8fcdf8a0741b169ad05a98dff998e66158457f363ed8dc2c82d030b48a",
"T3T1_pt_test_firmware_hash.py::test_firmware_hash_emu": "5f5082f24cb853e361beda2fbb2df95491543cb5dd7a98c635c9dfc4e779db60",
"T3T1_pt_test_firmware_hash.py::test_firmware_hash_hw": "c15216b8aa033bd81f0a8fb6415c6728320b0c30fe3150eeb8a1749ae0a1a83c",
+"T3T1_pt_test_language.py::test_build_version_mismatch": "1161a1599186b962b21251189cec2670c73cf37bc4a61c3c2c93ca9d801f93ee",
"T3T1_pt_test_language.py::test_error_invalid_data_hash": "c478c655815b2c004f3f2e5e426453eada9f3ab535ab72a96667c351e026c4ec",
"T3T1_pt_test_language.py::test_error_invalid_data_length": "938162c316e2ab0aa9dec9e5c1e374ac17a662b5c23b0c053c0bbfbd3b32e52f",
"T3T1_pt_test_language.py::test_error_invalid_header_magic": "938162c316e2ab0aa9dec9e5c1e374ac17a662b5c23b0c053c0bbfbd3b32e52f",
@@ -31369,6 +31387,7 @@
"T3W1_cs_test_debuglink.py::test_softlock_instability": "640b70f1ab919b1604501f166eac2259677a4fbf466122fe7802f2a84b27c446",
"T3W1_cs_test_firmware_hash.py::test_firmware_hash_emu": "595cf89bd2dcdc7e57fd6d9f809cdaa34529c2575a88e40fe478f12e8c2e6dcd",
"T3W1_cs_test_firmware_hash.py::test_firmware_hash_hw": "c24521e569c08e3605b164212c876f8ac57c5eef6cca6f2ca53a635a883ebc4b",
+"T3W1_cs_test_language.py::test_build_version_mismatch": "0a70b5c9b7cf75b13da7c29530ee455eb1b32bf5d1d92c825a720c0ca5465d2a",
"T3W1_cs_test_language.py::test_error_invalid_data_hash": "be940718260d447c9d04460e40111e80364b22b66e77f3ae860140dfce92fd3c",
"T3W1_cs_test_language.py::test_error_invalid_data_length": "ca8542de6d9373805ccdc054f7fe2115df421cef7ef70fea371adf7b84b5d2df",
"T3W1_cs_test_language.py::test_error_invalid_header_magic": "ca8542de6d9373805ccdc054f7fe2115df421cef7ef70fea371adf7b84b5d2df",
@@ -32901,6 +32920,7 @@
"T3W1_de_test_debuglink.py::test_softlock_instability": "c370c98c1582e6347939cce827876f643035f4c1138376a7bf1c332307ecaa4c",
"T3W1_de_test_firmware_hash.py::test_firmware_hash_emu": "f32b6a46117d9e74da641c1ff41a2cd7d4910089214db1e9af3e807e798b7766",
"T3W1_de_test_firmware_hash.py::test_firmware_hash_hw": "b3ce10e1620297758d6f2b235127f1dd0d61804c8cc32bc6664db5c3a9d81dde",
+"T3W1_de_test_language.py::test_build_version_mismatch": "da8f86ea769debb9c26bab57d0cf4744716d7b88a251ea74c5e368bce8bc45e5",
"T3W1_de_test_language.py::test_error_invalid_data_hash": "0101794ec4357a1022839beb7512e5ac324b2e121ee23535517ad51dbb2b59f4",
"T3W1_de_test_language.py::test_error_invalid_data_length": "a7c447b05c97d55c15449c8b385e2eabd16e04a6c543427dcbce1cffbd983fd4",
"T3W1_de_test_language.py::test_error_invalid_header_magic": "a7c447b05c97d55c15449c8b385e2eabd16e04a6c543427dcbce1cffbd983fd4",
@@ -34433,6 +34453,7 @@
"T3W1_en_test_debuglink.py::test_softlock_instability": "862706a28c7a388e7ab0b9271befe01d289b66c8e4d889ca2ac9d06cfa11f295",
"T3W1_en_test_firmware_hash.py::test_firmware_hash_emu": "847c00f467034bd6e466fbc84610b7022bf82477043f5b60ebead4e5b6f4135f",
"T3W1_en_test_firmware_hash.py::test_firmware_hash_hw": "931d9afceb0ba1e4faae891775819277242d889644d5c0c5863fc8c9fcf859b1",
+"T3W1_en_test_language.py::test_build_version_mismatch": "402ce7ae66ac3e3ecfdcaf296760bacbbf302c2361bdf18627a4f3c344652334",
"T3W1_en_test_language.py::test_error_invalid_data_hash": "22d1c1f9f278020cd3e5bd5e0ed36bb7465b181242eb540a5d26968d58b1f518",
"T3W1_en_test_language.py::test_error_invalid_data_length": "554305cd87d6bbdbcabf796978bc16c32ac8395b114bddfe1d856b359f2423a7",
"T3W1_en_test_language.py::test_error_invalid_header_magic": "554305cd87d6bbdbcabf796978bc16c32ac8395b114bddfe1d856b359f2423a7",
@@ -35965,6 +35986,7 @@
"T3W1_es_test_debuglink.py::test_softlock_instability": "3a7a360d70c43db0495f2647d9acc971a7c1d653d3e20d0bf7bd74e10993fe45",
"T3W1_es_test_firmware_hash.py::test_firmware_hash_emu": "0f407341f833ff4bb41dbcfd06efcf84089ffa1a134c3103e596ea7035ca0be4",
"T3W1_es_test_firmware_hash.py::test_firmware_hash_hw": "56536ae9cd7c4ff8022def4ec3350031d3614064d961f53a2850f2be425af201",
+"T3W1_es_test_language.py::test_build_version_mismatch": "04525abe8204ced4f75f6bd2c96608f7a9647de291ed99823fcced91a858ddf8",
"T3W1_es_test_language.py::test_error_invalid_data_hash": "b7cdf04607043e222f7e572f0ddee694e9557c6d4c3da5b5cacddb225b95ce51",
"T3W1_es_test_language.py::test_error_invalid_data_length": "21794097aecb0747cfca11435f4b58f90d3a603f50cf262791b3531df5daa561",
"T3W1_es_test_language.py::test_error_invalid_header_magic": "21794097aecb0747cfca11435f4b58f90d3a603f50cf262791b3531df5daa561",
@@ -37497,6 +37519,7 @@
"T3W1_fr_test_debuglink.py::test_softlock_instability": "a4fa49ba5f49ce7e58900c22c5d63e288379b9847d72fd1e89dd8a0b58d11e7a",
"T3W1_fr_test_firmware_hash.py::test_firmware_hash_emu": "080c1770bdf6ff49119ec60c26006cb0aa4568f00df98b43b32673c1c8a09c28",
"T3W1_fr_test_firmware_hash.py::test_firmware_hash_hw": "e8156cf4eda1d29060f05b4a18d50032b0b344230609b7de7cababfe0a86b20b",
+"T3W1_fr_test_language.py::test_build_version_mismatch": "0b5e75c09878b04846d35c243e59a8ab4a2543252a4e77e1ed2e16e669351966",
"T3W1_fr_test_language.py::test_error_invalid_data_hash": "f99d45c456af2b6dcd866ee3cc8a736a9b89f7d0583d47f4f2d410839f541d86",
"T3W1_fr_test_language.py::test_error_invalid_data_length": "f3456619bb9896579e9e1057677489cd8c2aabecd2097c32fc6c0945d13c79b5",
"T3W1_fr_test_language.py::test_error_invalid_header_magic": "f3456619bb9896579e9e1057677489cd8c2aabecd2097c32fc6c0945d13c79b5",
@@ -39034,6 +39057,7 @@
"T3W1_pt_test_debuglink.py::test_softlock_instability": "9f0845ee9714d14ef1bdb5d5bccd6038941e18c3ac38fe1686fbd1cdd74c4280",
"T3W1_pt_test_firmware_hash.py::test_firmware_hash_emu": "c4052bd5651564bf6484b399d0d65208a42134aabbe748154d61ae46965c1fdc",
"T3W1_pt_test_firmware_hash.py::test_firmware_hash_hw": "1c74667c078e25e7e0d37c7b2aa35f7c8ab02cd88e74695ecb355c82a293b0cc",
+"T3W1_pt_test_language.py::test_build_version_mismatch": "dd6c11f2f91d1b48a11b33faa1f7aecd266c4dccfcff5c0bac66e39b125750e6",
"T3W1_pt_test_language.py::test_error_invalid_data_hash": "9e70fec7a3d8709610b452e8da2f0180f3abab6447d7025e63e456ef6cef1a2a",
"T3W1_pt_test_language.py::test_error_invalid_data_length": "32911f4b154f7c9f9602b6e0ac9c6a87bff179ca3cdc269558821ddf975c9ea9",
"T3W1_pt_test_language.py::test_error_invalid_header_magic": "32911f4b154f7c9f9602b6e0ac9c6a87bff179ca3cdc269558821ddf975c9ea9",
Why this scored 18/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.