app-state.json 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508
  1. {
  2. "schemaVersion": 1,
  3. "pageVersion": "sha256:147e2ba13ec4a1f2727c1e580a0935503d6213e3aabb9bce1cf520e31c348e78",
  4. "claims": [
  5. {
  6. "id": "claim_daef343b267c45a987738a3daf7e404d",
  7. "statement": "AppEvent has variants Key, Redraw, Wa, AiReply, ImagesDescribed, AudiosTranscribed, ReplyDue, Sent, Web, ConfigReloaded, Relinked, AvatarFetched and AvatarFetchFinished; AiReply carries a Reply or an error, ImagesDescribed carries a DescriptionTarget plus one result per image, AudiosTranscribed carries the chat JID, a then_reply flag, one result per audio and the postponed images, Web carries a WebRequest from the web control panel, ConfigReloaded carries the reloaded Config or the load error, Relinked carries the relink outcome, AvatarFetched carries a chat JID and an optional picture URL, and AvatarFetchFinished carries an optional error.",
  8. "evidence": [
  9. {
  10. "resource": "repo://src/app.rs#L123-L171",
  11. "version": "repo-lines-v1:sha256:c9b28bdffc1670acc97aacd9dee4367dbf482cfee5caaa5272d6e3db226a9905:eyJzZWxlY3RlZExpbmVDb3VudCI6NDksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OWMyOWE3NjJmOGZhMmEzZmY0NmY5MGZiZDY3N2QyYTI3MjViMjM3NTYxNjIwODdkOTRmMWI2MDg2Yzk5YzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU2ZDg5NzY3YjlhZDdmZmE1ZmFlZWRkZjYwYTdiNDE4NmUzNTk1YzVkOWY3NDNiNDlmNTk4MzZiMTYwYjBkYjEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlMzFiMTJlM2U2OTYyZDc0YjRiYzMwNTNkYmM2MTZjZmI3MWM0Y2YzNjllYTc0MjYyM2Y4ZDliZTVmNzJlODYifQ"
  12. }
  13. ]
  14. },
  15. {
  16. "id": "claim_0f09168e3dc247a7b0559a790064f17c",
  17. "statement": "Screen has Connecting, Pairing and Main; Focus has List and Input; ListMode has Chats and Contacts.",
  18. "evidence": [
  19. {
  20. "resource": "repo://src/app.rs#L190-L210",
  21. "version": "repo-lines-v1:sha256:92aaf2af1678376e51c1ad2567e9dce9ab29a60eb8e773ba16594a42750ff769:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2YTEyNzUwZTQ5YzY3NDE5NGM1Yjg4ODEzOGQ5Y2JjNGI0Y2M2OTM2NjdiYmZjMzIxYjgzM2MxMWZlMTdlY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3NmE1NDRjYzAyM2VkNDA1ZTNiOThiOGEzNTQwOTBmYWQxNmU5ZTE4ZDVlZTlmN2JhNmMzZTcwMDUzMDA5ZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmY2RhYjQwOGQyMDcwM2JmNTU2ZWJmZjk2NGM3M2I4NGQzYWUzYzdiMzUwZTFiODNmNTA3OTE4MDUxYjA0ZjYifQ"
  22. }
  23. ]
  24. },
  25. {
  26. "id": "claim_0a2882d788054b5586b16e6e990f77ee",
  27. "statement": "App::new builds the AI client, loads chats, contacts and the persisted global autoreply flag, and starts on the Connecting screen with an empty filter, no open chat, no pending deletion or relink, empty image and audio bookkeeping, an empty avatar cache with no fetch running and wa_connected false, and a ReplyGate created at the current time.",
  28. "evidence": [
  29. {
  30. "resource": "repo://src/app.rs#L299-L345",
  31. "version": "repo-lines-v1:sha256:b5ce83438d3242f2cb2bb5c0f88fb0f64f79cdf6a06bb35eb67d2d314b00e2e6:eyJzZWxlY3RlZExpbmVDb3VudCI6NDcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTYzZjU4ZTBlOWQyYjgxMjgwMTZhOWEyZGZhMTU2YjgzNTM0NWYzOTkzYTVhYjdkNjVhNWU4ODFmMDg0Y2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhOGJlZTA0NjIzODBmZjdmN2Y0ZDZhYzE2MGViODRmYjk3YjgwZGRjMjM2ZGFmZWY4NTQ4OTYxYjcwZDQ4ZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3M2U3ZTFjNDIxZDk5NzQ5ZWVmNzNjNjJiNmE4ODAyODhjNGNhZDM4ZTYwZWQyMTNjNmM1ZDI1ZjAyMDU3OGMifQ"
  32. }
  33. ]
  34. },
  35. {
  36. "id": "claim_bf08f07b96ed49c2b688852a35a263f5",
  37. "statement": "handle_wa_event maps Qr to Pairing, Connected to Main with wa_connected set, status Connesso and an own-JID refresh, LoggedOut to Connecting with wa_connected cleared, the QR cleared and status Sessione scollegata, Disconnected to a cleared wa_connected plus status text, Error to a status text only, OfflineSyncCompleted to the startup catch-up, and routes Contact and Message { message, image, audio } events.",
  38. "evidence": [
  39. {
  40. "resource": "repo://src/app.rs#L480-L509",
  41. "version": "repo-lines-v1:sha256:8a4974b7c3714117e1408346a1807bdca9e5aaaf4fd30c7c9b99b19cb1e8f212:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkOGNmMDJkODU2OWY1YTQ3ZjRiNmY0Zjc5MzBmNzkzMTczM2VmNGE4NDMwODNmYmZjMzAzNmNiM2JiMjc5MGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM5NDkyZWM5YTM2ZThkODU0NjE1MmI4MjJkNTdmZDIwMDk4OTE1MDMwYTIwZDliZGExZDVmYWQ0NGY4ZjFiNWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZDczY2I1NTUwODdmZGQwZTc4MzhjZjM4MWZmZmRmMzljMzk2M2VmZWJhMGE0ZjQyNzg4OWE0MGUwODYwZWQifQ"
  42. }
  43. ]
  44. },
  45. {
  46. "id": "claim_537e6ac1d0184cefaaeaa2535327247a",
  47. "statement": "on_message returns early when History::save_message reports the message was not new.",
  48. "evidence": [
  49. {
  50. "resource": "repo://src/app.rs#L531-L545",
  51. "version": "repo-lines-v1:sha256:a70d770a3f3dc3ed4a57db8f2b971da1b9f50afa36fc45185c4f5c34bcf1eba0:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBlYWIwYmIzYTMyYTBlZGUzMGY0ZTk1MmQ1MjcxYzRhMTgwMTZjMGU4Y2M4N2VhYmE1ODA1OTYyZDNjOGE4NTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjgyODRmZjk5YWRlYTg2MmRlOTFhNTQwZTNjOTcwNzc4NWU0ODY1ODg2YjZlOTFmMzFiNzdmNzdlOGQzNzI4OGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFjMGQxZmNhMmFmODQ5N2RiMDdiZDk4NWM2YjJkNmQwOGM2MjA2ZDNiN2E4ODY3MjcyNGUwM2I4YzI3YTU5OWUifQ"
  52. }
  53. ]
  54. },
  55. {
  56. "id": "claim_a5e4a2575e2a4890b96ffeed57e9f621",
  57. "statement": "F10 quits and F8 requests or confirms a relink on any screen; any other key cancels a pending relink and an Esc doing so is consumed; non-main screens ignore other keys; on the main screen F2 switches the list mode, F3 toggles the focused chat's autoreply and F4 the global autoreply, Tab switches focus, and Ctrl command chords are swallowed.",
  58. "evidence": [
  59. {
  60. "resource": "repo://src/app.rs#L24-L33",
  61. "version": "repo-lines-v1:sha256:683c16567f4074fbe88d85ef8581c16739d5ca0531826b0fb49c5df95ac18f20:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkMTkzOTVkMDA1MWQ2YTA4MzBkMmQ5OWZhNTk4ZDU4N2EyOWZkNTA0OTkwNGQ1OWNiNTI2YmQ3Yzc4ODBiMGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFmNjIzNzA4OWI5MWQxMDdiNjY0NTc5NzNhOGJhMmE3MWQ4NzA0NGVhOTFlOTE4Y2RlMjA1Zjg2YWNkNDZjOTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFlZmRkMDA4YTE2MzY2YTNmMTdiNjY1M2IyNzcyMThkYzQ2NTRiMGFjYTE5MGI1YmFiZDcwNmIyM2IxMDQwNzciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZmI3YjljNTEzODFiZmNlNmIwYzU4ZTY0ZmZhMjhjODMyNjU5NTkyOWQ1MDNlYTUwYjBlMDRiNTk0N2QwNTMifQ"
  62. },
  63. {
  64. "resource": "repo://src/app.rs#L1171-L1216",
  65. "version": "repo-lines-v1:sha256:6e737f1163f7fc1e0f873a9756a9a2c32d247edaf022b24c9d62e4f5d3ecdc71:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhZGRmNjgzMjdhYTA4ZWZjNDYxNGFmZDIwOTkzZTFkNzZiZjUxNmQ3NzRjM2QyMmIzOTUyOTEwNmNkOTBhZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2ZWU5ZDllODg2ODFmN2JmM2M4ZmZiZjEzZDgyODk2ODM4MGY2Y2E0M2Y1ZGE4ODI5MmU1MjY3ZDRjMDhlOWYifQ"
  66. }
  67. ]
  68. },
  69. {
  70. "id": "claim_cb8373d154a942479406efbb317fe9fd",
  71. "statement": "In input focus characters are appended, Backspace deletes, Esc returns to the list and Enter submits the trimmed text to the open chat.",
  72. "evidence": [
  73. {
  74. "resource": "repo://src/app.rs#L1354-L1378",
  75. "version": "repo-lines-v1:sha256:93f1a991412191cf1e47a90542afc809bc43aaab50594660e57b57012282758d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZWM1NzZmZGY5ZTZhYjIyYmM3ZTgyYWM2NzNiY2EyM2MxNTZkZjE0MTRmZGFjZjRlNzcwOTEzYmI3Yzg1OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxNzg4NWVhNGE5MGJjODU2N2NiZDFmYjM0M2FlNTQ0Y2EwMTU5ZDZkNTA0ZGU3ZjcyNWFiMWIyYjg0YzYwZGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlYTM2NTI1MWJlYzc3N2JhYTBmYTZjMGEzZTZmOGRiYzliNzhiNmQ5YTNmNmI4ODVmODBmY2RkMmQzYWFhMmEifQ"
  76. }
  77. ]
  78. },
  79. {
  80. "id": "claim_4b0ec5e5dcd04f838b031e75b64428de",
  81. "statement": "Enabling a chat's autoreply requires an AI client first and then a chat accepted by supports_autoreply (private chats and groups); disabling is always allowed and the flag is persisted with History::set_autoreply.",
  82. "evidence": [
  83. {
  84. "resource": "repo://src/app.rs#L1968-L1976",
  85. "version": "repo-lines-v1:sha256:ba5bea3063970ee3b66b2d54fc0529a98bf3972bf7e9a5cab37c6d0bf4659ff7:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmNzM0NDVmZTU0ZTJjMzIyMDBiMGRiNDhlM2MyOGZlZDgyZDk3NWY0Mzg4MjM0NjA5NjhlZmM4ZmU1ZjJmOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWM5Yjc1NjM5OGI3MTI0NGNmYThkOTk4ZGRlOTQwZWRmODk1MmNkMDEwMTYyMzM1YmEwMzRjYjkxZGZmMjRiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDQwM2Q5ZmY0OGI3ZmI2ZDcyM2RlNWM5YjMxODkzMTNlMjQ2NzBhMWE5NjJhYWUxZTYxODRhMjllZmM3MWM1ZCJ9"
  86. },
  87. {
  88. "resource": "repo://src/app.rs#L1414-L1427",
  89. "version": "repo-lines-v1:sha256:cbcb0d80e707fedd21b3de7081436677468c63c025abb23dab5e5a6ab0ad90cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA0ZTRlYmRmYjA5YmI0NTM3YzBhZDM0MWUxNGY5NTkzYjEwYWE5ZWJiOTM0ZTNiOGJhMGViY2ZiYjlhYjBkZmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjI1Zjg5YTg3NjBkYWQ3NjUxYmZiZGQ4ZGFkYTM4OGRmZDUwZmU2NDczOGUwMzM4YjIzZTM5NzM4Y2Y1NTRmOWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzZWNmNGIzNzRlN2M0ODFlZjUzODQ1Y2Y1YjlmNDI5MDk3NmQxYTlmNDlkOWY5NWJjNjIxNWEyY2VhMDYyOTAifQ"
  90. }
  91. ]
  92. },
  93. {
  94. "id": "claim_4989af934f564cf789a6028f36e19728",
  95. "statement": "Opening the selected entry of the filtered list (resolved by selected_jid) loads its display name, autoreply flag and the last 200 messages and moves focus to the input.",
  96. "evidence": [
  97. {
  98. "resource": "repo://src/app.rs#L1520-L1547",
  99. "version": "repo-lines-v1:sha256:e52bd5fba06c8fa9c17319299e938b8922b2b431f8015138d79e1dca4d4c26d6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQwZDJhY2QwNjZiMWU0MDM4ZGMyYzllOTI0YTAwNzlkZDNmOGNlNjllZjY4OTZlMTYzYzYyZThhMDlmYTQzYjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjYzVlMzg4ZThmOTY0ZGY1OTFjZDM1Y2FlZjk5ODM0MmRjNTllNGU5OTMwMmMyYmI0MjMyZmMxMzdhM2Q1ZjkifQ"
  100. },
  101. {
  102. "resource": "repo://src/app.rs#L21-L22",
  103. "version": "repo-lines-v1:sha256:052992c9f8e9b996b43554cee0a2351140f142d6d9781a2b3217356c40bf6cb1:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiODdkOGI3ZDU2NTM2Yjg3MDE0OGY1Y2U5YzQ2YWQxN2FmMzI4ZDQ5NzRjMmNlMTVhODNhOWQ0ODllZTBjNDY5MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjQwNDg4Y2VlODM4MmUwZTUzMWI5ZjEzZmQwYWE5NDFjNzJkMDM5MGU3ZTg5YzQ0MzA4MTFjYmM3NmFhNjYxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWY5NTFjZjJlOTBkY2Y1MDJiMGFhYWNmODA0ODQxY2UyZjk3NjUyMmZlNWI2ZDI1OGY3YjliMDY2ZTY5MDNiNyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDcyMjFlYzQ5YThiY2FiYTFkNzUwNTE0MWZhYzY0MDhkOGZmMmUwMjUyMDgwZTZlMGYwNzQ1MDMzMjY3ZjQwZSJ9"
  104. }
  105. ]
  106. },
  107. {
  108. "id": "claim_7000c80d87994614ac6ac2cdaa398609",
  109. "statement": "spawn_send sends the text via WaHandle::send_text and emits AppEvent::Sent.",
  110. "evidence": [
  111. {
  112. "resource": "repo://src/app.rs#L1937-L1946",
  113. "version": "repo-lines-v1:sha256:946a66552037dc4ae7eff9cf6c602520fd019e2700d8d6cc4dc93c7db36bb837:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlOWMwM2FlM2RiZTlkZDA3YjYxNTZkZWFkNzBhNmRhYjc4MzI3M2I2Y2E0Y2JlZGI0M2E0MTI4YmJlNTdiZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwZDEyZTUxMmY3N2FlNTEwYWQwZTk5M2I3NGNmNjdmY2ExYmRiOTllYmE3OWY3OTdjZDkxMWYyN2Y2MWQ1ODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyM2IxZmMxYjIzYjFmMWZhZWVhY2E4MTM2Yzc1YmFkOGEwNGEzMGQ5Nzk0MTc5ZDNjZjUxYjJkNGVhMDI1NTIifQ"
  114. }
  115. ]
  116. },
  117. {
  118. "id": "claim_3568f04cad88489a974266f0e241c354",
  119. "statement": "An AI text reply is sent only if the autoreply is still enabled for the chat (globally or per chat) and the owner did not answer by hand after the answered context; otherwise it is discarded with a status message.",
  120. "evidence": [
  121. {
  122. "resource": "repo://src/app.rs#L1113-L1139",
  123. "version": "repo-lines-v1:sha256:a05110c5a383be3518256a8f574d7c2b6dfa7ab90b8f3a2d19fbed62b9ec6e14:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlODZiMzQ5MjhkN2ZlZWQzNTRiNmY1OGM3MjJlNTk5YzI3ODhhNWE0Yzc2MjUxN2YzYzExYzIzMDM0OGVjOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc3ODkyYWI4MWM1MjU3OGQ5NjU4YWE4MmNmNDU0NjAyY2VmYTA4MDJiNmMzYzRkYWE4OWM4MjUwZDBlZDBjMjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlYjQ1ODA1ZTI5MzcwMzMyZTY2ZDA3NzAwZjlhMDg3MDgyNWE3ZDM2NWFmYmJmNzYxOWNiYjNlMjNiNTViMWQifQ"
  124. }
  125. ]
  126. },
  127. {
  128. "id": "claim_17fa61af9be74c3dbc0b44f6b5d2873b",
  129. "statement": "build_ai returns no client when the system prompt is missing.",
  130. "evidence": [
  131. {
  132. "resource": "repo://src/app.rs#L1953-L1961",
  133. "version": "repo-lines-v1:sha256:02a6b90c8547969f5229ba908e64ec2f9fd8d0547f3a7b34404429320b337fe4:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzcyNTRhNjcwYWJhNGU4ZWFiNDlmM2U1OWYzNjc4NTk0OWM2ZDk1OTFlN2ZkMWY1NjA4NGU3NzBlOWM3NDJlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGQ3OWM4ZDU3OGFjNjM3NDFmOTgwMTlmMzlmOWRmMDA4M2RkN2YzM2U0ZDNlOWU3ODU1YzZmNmQ2MWQzNjg0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTA2ZDU0NTM1OGJmMGQyNTFiNDhiNWZhZTE2YzIyZjkzYzgzNDM5ZTQwNzA0YzRkYzg1MzgyN2ZmNWFiNmYyNiJ9"
  134. }
  135. ]
  136. },
  137. {
  138. "id": "claim_ba615926cccd4399b1bc801f51d947c3",
  139. "statement": "is_command treats Ctrl as a command only when Alt is not held, because Windows reports AltGr as Ctrl+Alt.",
  140. "evidence": [
  141. {
  142. "resource": "repo://src/app.rs#L2032-L2039",
  143. "version": "repo-lines-v1:sha256:a7e4215d1055bcf132d529dd3c057ef20525fbb22d5a1301c6980d41107b5124:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzllOWIxZTI5MGI4MzMyZDI5YTMwZjc1N2JjN2E3N2ZlYjZmMjAxYjNjMmM5M2ZiNTQ4MDU1YTFhODVmN2MyZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDg4NTkyMTBlYmNiMTJjZjY4YzYxNjIyMmZjNTYwYzFmNjhlMmZhMzFmNjMwNDkzZGY4MDk1ODg4N2Q1N2FmOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2JjOThkNmIwZGM0OTJjNTAxNmRmMTA4MDVhM2E1NGViOWMxODRhNWE2MTM3ZTdmNGJlY2ZhMGMyMjA1NTBkMCJ9"
  144. }
  145. ]
  146. },
  147. {
  148. "id": "claim_bc67b9414f7d4100abf86082fa0b5681",
  149. "statement": "start_reply records the last context message as answered, marks own mentions, reads the chat name and stored image descriptions, formats today's local date with today_label, builds the turns with that date in the TurnContext and spawns the AI request.",
  150. "evidence": [
  151. {
  152. "resource": "repo://src/app.rs#L1046-L1077",
  153. "version": "repo-lines-v1:sha256:9754bc4dd70e320cf8ab979a40761a07ff1ea98f33092b8c9a74a5d6309f8bda:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFiNzVjM2VmNWFmYTk2NDEwYWI1MGM2YWYwYmM5ZTQ2OWNiNmIxZmViYWM1NmNkYmU1ZDFlMmI3NDdiOWFiYzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNlNTg3NTIyOTQ0NGRkYzY4MDUyNGYwZWYyYTBkMWEwZDkxOTkyMDllMWEyYmJhYzA2NzVkYzgwYjA2MTk3YmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQwMjI2ZGQ4YmZkY2JkMDhlNjUxMjUzOGY4MmU5YWNiOTEyNzg2NTgwNDEwMmQ2YjRlMzQ4NmRmMjU4YjMxNmYifQ"
  154. }
  155. ]
  156. },
  157. {
  158. "id": "claim_0a16da9dd5e942eb89a106629e24f51d",
  159. "statement": "maybe_autoreply schedules a reply when ReplyGate::should_schedule allows it: the chat is marked pending and a timer task emits ReplyDue after reply_delay_seconds.",
  160. "evidence": [
  161. {
  162. "resource": "repo://src/app.rs#L547-L588",
  163. "version": "repo-lines-v1:sha256:182b47e758726e40d650a8411663c9043000bdb61933958b51b7e604c5899fe7:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI3YzcyYzFlOTMzNjgyYzYyY2MyOGVmNzQ1NDMxNDM5OTZiYWVlNTg4NmFkM2I0YzEyNmNkNDI0OGU5MWY4MTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImNmMTVlOGU1NjQ1ZDM5YWE4YzRjNmIwZjMwYjAxYjEwYmNmYjYzMWFlOWI3ZDBjNGNkMjFjMzAwZjQ3ODVhNWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBmZDk1MWYzMzMxMmIwZGIxOTkwNzNjZDIzNDA4MWM3MzMyNDIxZjYwZjRjNmQ4MDA3YmU2YjM1YzMwODYxNGUifQ"
  164. }
  165. ]
  166. },
  167. {
  168. "id": "claim_817155a979284282b5a78c3baad994c8",
  169. "statement": "On ReplyDue the kept images and audios of the chat are taken and, if the chat is still pending, prepare_reply either ends the pending state when no reply is wanted, spawns the transcription of audios still lacking one (postponing the images, the reply follows AudiosTranscribed), otherwise spawns the description of images still lacking one (the reply follows ImagesDescribed), or starts the reply at once.",
  170. "evidence": [
  171. {
  172. "resource": "repo://src/app.rs#L674-L725",
  173. "version": "repo-lines-v1:sha256:c98f9109631c043cce400a98fdab67562e0b19285fc5165cca7a94c260fee718:eyJzZWxlY3RlZExpbmVDb3VudCI6NTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhhMGZkOGQ4YmVjYTA3ZDNkNGZkZDViOGFiMWI4NmQ1Y2MwNGVlYzdkNzY3ZTc1Y2Y3ODgxMDk2OGI2N2Q3NDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM5YzEwY2I0YTNhZmI3NWE4N2VmNmE4MmZmYzVhMjBiZDZiN2U0ZmQ0NDRhMmNjMWRlMGZmZDg3MjljODQzZGUifQ"
  174. }
  175. ]
  176. },
  177. {
  178. "id": "claim_c8b0ab491aad4ebf91a3b7e090cdbe2b",
  179. "statement": "The startup catch-up runs once per process on OfflineSyncCompleted, drains the backlog image and audio maps, and marks pending and prepares a reply without delay for each enabled chat (every chat when the global autoreply is on) whose last message passes ReplyGate::catch_up_due within catch_up_seconds, setting the status 'Risposte di recupero: N' when N > 0 and dropping the backlog media of the other chats.",
  180. "evidence": [
  181. {
  182. "resource": "repo://src/app.rs#L966-L1027",
  183. "version": "repo-lines-v1:sha256:42232cc062a5b6425e02103fe331cbe869e08340278bde2cd954474e46206045:eyJzZWxlY3RlZExpbmVDb3VudCI6NjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM5ZmJjMjYxZDk1MDVkNTBjZTU1MWY4ZDI4OTQ2MTZjMWM2MGY3NTlhZTAwYTE1OWY4Yzg3OGVmMWJjM2Y2ZWEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUwOTcxZjZhZWVlMGNhYTY2MWUzOGJkMDMzMDYzODk4NjdkOTc1ZjM3MGVhNWE4YWE3N2NmY2E2MzFiYTU0YzkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OTU5NGE5NzIzN2Y2NjVkMmU0Y2RhMTIyZmY1NTIyNzJjMjVmZTFhMTI0NmZjMGNkNjllMDQ4MjE2ZTNlYWMifQ"
  184. }
  185. ]
  186. },
  187. {
  188. "id": "claim_785e7b1e3d8c4d7ebe9252097c4215de",
  189. "statement": "The autoreply applies to a chat when the global autoreply is on or the chat's per-chat flag is on.",
  190. "evidence": [
  191. {
  192. "resource": "repo://src/app.rs#L900-L906",
  193. "version": "repo-lines-v1:sha256:9190cc2d950eb45e132eae01c1ae01b5fb4af82470bb42fae8b4e0227a315710:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYmMzZGZhMjZjNzdiNTNkZDcyZWZmZGI1MmEyNWFlNGY5YzMwNTdiZTk2NWI0MzRlMTMyOWIwMTM2MGZmNGViNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMTYyZWU1N2U0MWE4YzIwYWUwMTY0ZGYyNjE0MzlkY2M0OTlkMzUyMDgzNDE1MTUxNmQwNDdlOGRlYWU4YTQ2NiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTEyYzE5ODI4NjExZDJhZjdmZWFmNjQyN2ZmNzE0MjFiN2JhMTU4MzM5OWY0YWU5ODBiMzJkNThlNDUzYTJiYSJ9"
  194. }
  195. ]
  196. },
  197. {
  198. "id": "claim_3aacdc2cf4554221967cf93bba7a8d09",
  199. "statement": "Typing in the list focus edits a case-insensitive name filter that restricts the visible chats and contacts; selection, opening and deletion operate on the filtered list.",
  200. "evidence": [
  201. {
  202. "resource": "repo://src/app.rs#L1604-L1606",
  203. "version": "repo-lines-v1:sha256:fa265165a7dbaf620c22011a0c3c22d3351ef4c563f2f54f8fcb163c57bd1734:eyJzZWxlY3RlZExpbmVDb3VudCI6MywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTBhZGVkYjQzODU5N2ZkNWM0ZTVlZTAxMmE5Y2RiYzY1Yjk4Y2VkYTcxMDc2YWU5YjE4MmFjMDNmMmQ5YWRlNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWI5ODAxZjkzZGZiYTU3OWNmZTAzOWRiMGFlYTMwNzc1YWRhYTU2ZDM2NGUxZjE3NWJmNjYxYzhhZjg4MDRkYSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmFiZDA1MjI3NzQyOTJhOTE3MDdjZDg0ZjRmMWExYTExNmQ3MWQzNDA3Yjg1Y2NkNDY4OWU1ZDM1MDBiYjAyNiJ9"
  204. },
  205. {
  206. "resource": "repo://src/app.rs#L1224-L1260",
  207. "version": "repo-lines-v1:sha256:ebbdd1522a95030cb283c058e7c767edf7b3297cdfe336683fa94151dd1114b4:eyJzZWxlY3RlZExpbmVDb3VudCI6MzcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNTZkYzNmM2MyODVjOTI5NmU1NWNlY2FiOGQzMzczNzg1YTgyOTVkYTZkZjU4Nzk1ZDUyNTZlNDc5MjRiMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NmVkYmFmNjIyMDAzYjdkMGYzOWE0YjE1ZGNkZjJmYTQ0NGNhY2Q5ZWRlMWRmNjc2OGI0ZWZiMzQ3OTVjNGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkZWE3NDZmZTI4YTEwOGI2ZDUyNmVkOWJlNzE1NjU3MmI2YjIwYTdmODgxYTI0NGU0OTViN2YzMzg4MWFiMDUifQ"
  208. },
  209. {
  210. "resource": "repo://src/app.rs#L1338-L1348",
  211. "version": "repo-lines-v1:sha256:3f82b1885fd37c0a7f8cddf8a1e57280241400b28724250c318d147c0b73a56a:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4NDJlYTc1OTQ1NzNkNTFkY2MyY2YzMTUyNDRkODE2Nzc4NWQwYjA1ODUzZDc3NzAzMWQ4ODU5NmVmNzRlZTIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5OTI3ZWJiYWIzOWI4Zjc4ZGM3NzcyYTY3Y2YxNzhjZmY4Y2I5OTBiYWJlZjVjMTc1ZDQwNDRlZTllOWZmMWQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQzMzk2MDA5NzYxYzQ4YWY3MDRkZDRmZDQzNWM1NTNhOTg2ZGQ5ZWIzMmZiNTYyZmY0MGFkODI0NGIwMWU4ZDQifQ"
  212. }
  213. ]
  214. },
  215. {
  216. "id": "claim_3b803c70a66943d38cb5b1741e5a1e08",
  217. "statement": "Deleting a chat requires two Delete presses on the same chat in chat mode; confirmation removes the chat from the local history only (messages, image descriptions and chat row, keeping the contact and making no WhatsApp call), drops its pending reply, pending and backlog images and audios and answered snapshot, and closes it if open; any other key cancels the pending deletion.",
  218. "evidence": [
  219. {
  220. "resource": "repo://src/app.rs#L1274-L1321",
  221. "version": "repo-lines-v1:sha256:ad391df25f8e04ff219ae608b732e73d9e13df87da14ad068cae689778491925:eyJzZWxlY3RlZExpbmVDb3VudCI6NDgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZhMTdmZjJmNjhhNGFkMzg5M2JmNTgwZjljZmVjNmUyNTI4ZjJjODhjZjJhMjNlNTg2MjcxYjgyMTkyOTBjMzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVmMjAxZDg2ZGM3NzY0YWFmOTA5MGNhNDRkODcxNDM3Y2JiODk4ZGE5ZWJlMGU0ZDhlNjVlNDZiZDJkZGVkYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgyNTEwNTY0NjA2ZWRmNDUyODU1YTA4OTFlYmRlN2ZhOGZjYjIyMTBlODQyZjU4NDNjNzlhMmRmZDcyZjU5OTAifQ"
  222. },
  223. {
  224. "resource": "repo://src/history.rs#L383-L408",
  225. "version": "repo-lines-v1:sha256:c4f4b4352468ac2099f49717f06a98ea40bab4d5c62a4158e04234c744610ee6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMTFhNTg0ZDdhNWU5N2U1ZmY4NmU3MzY5ZDBkMzdhNGYxZjlmZjBlYzRlMzk5OWEyZWRkYTc2MDMyNTQwMGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNlMjRjZDNlMGNmY2Y4OGRmMGJmNGU1YjRjYzY0MzdiODBhMjAyYjEwNzk5Y2JjNTMyNzBjY2ZlMGRjNDk5MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWNiYWUyM2ZlZTE0ZTViOWIzNWQ0NDcwNmFmOGQ1OWY1NWQyOWIwNzYzNjU4ZjI4YjIzNjZkNWUzNWM5Y2UifQ"
  226. }
  227. ]
  228. },
  229. {
  230. "id": "claim_9de77d642e45495ea644f73ab585004a",
  231. "statement": "toggle_global_autoreply refuses to enable without an AI client, persists the global flag in the history and updates the status; disabling is always allowed.",
  232. "evidence": [
  233. {
  234. "resource": "repo://src/app.rs#L1501-L1518",
  235. "version": "repo-lines-v1:sha256:05cde78eab7927a8b5c33ce971f85c0e210ce60936eada88f8c9481585c1519e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjlhMjY2MjVlMDNiMmE0MDg1NDg0YjQ2NjUzOTllOWRmOWFhZDQzYmVkNGQxNWFkODEwODMzMGIyMDhjNmM5ZTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2ZWQ1MmZlYjhjZTliMjNiYmNiYTkwMGFkYjk0MzE3MjA4ODNhZTk0ODY4NmQyNjhlNmRkMjFlNjljYTU3YjkifQ"
  236. }
  237. ]
  238. },
  239. {
  240. "id": "claim_5447e09be26b40afa6cf039ca7dee031",
  241. "statement": "handle_web_request applies State, ToggleGlobal, ToggleChat, Relink or Quit, then calls maybe_start_avatar_fetch and always replies with a WebState snapshot; a ToggleChat for a JID not in the panel's chat list only sets the status 'Chat non trovata'.",
  242. "evidence": [
  243. {
  244. "resource": "repo://src/app.rs#L1434-L1447",
  245. "version": "repo-lines-v1:sha256:95ccc404cb44631061c7ce41c398bebcd048da051c5235b86d9599d5d4b19096:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjhmODZlNzYwNTJhYmUwM2IyNzhmNDYwNDMzZjkyYTYxZTlhNmZjNmEwNjcwNDI4ODRkNzIyYzZlYzZjMDVhMDIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwM2FjNDE5MWFjMTU4NzhjMTg5N2Y3OTdjMDU3MGM5MzZkOWUzODQ4Mjg4MTkzZDFjNmQ4YTdjMzAwZDUwNDMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjODZlNGU1ZWEzODcxYTk3ZDc5ZGFkOTAzNTM1ZDc5ZTcwOGIzMjBiZTViZjA3NDM4MTEzMTk0MWEyNzRiZDcifQ"
  246. },
  247. {
  248. "resource": "repo://src/app.rs#L1478-L1484",
  249. "version": "repo-lines-v1:sha256:eca06e6d7e2e4c49b822bfd026a82eeceb05ee7352e6baff4e94e122cba8ce49:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzc2MDM1ZTk0MmI5NTYwYjBkZTM2NmU0NjViOGVjNDdiODlmYjE4YzY1ZWRiMmRiNjFiYTIwYTlmMmMxNTM0NSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGM5MmE1M2NkZmI5ZThhZGRlOTMxNjZmZjgwM2UwZjI4MTMyYTJiNGRhM2JhOTQ5YmMxMTFiMDVhNDJjNDc5YyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNWE4ZjhlMTU3Zjg4NWIyZTMzY2ZmOTIzMDM1MjJjZWVjNjNlOWFkNzBmYjk0ODIyODYwYjg2YmJmYmU2NzZmYSJ9"
  250. }
  251. ]
  252. },
  253. {
  254. "id": "claim_42f6281320234303b6f272644df4e74f",
  255. "statement": "web_chats exposes the TUI chat list in the same order, restricted to chats that support autoreply, attaching each chat's cached avatar URL (None when not fetched or without picture).",
  256. "evidence": [
  257. {
  258. "resource": "repo://src/app.rs#L1990-L2006",
  259. "version": "repo-lines-v1:sha256:c2d9c9a91b384e368f619e50dfb7b5c40a6791f1e5936afb8ff8eeddeb228dad:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYxMTFhMDk4Y2E0M2I2Zjg1OTYwYTUxMjFiOGVmY2Y5MDVlZDZmNjdmZjE5MjY0NjcxZDhkYTFiYzhjZTEwNWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjZmZWE5NWYzZGNkZjE2MDA3NzQxOTRlMGQxYzQ4MmM0YTFmZTYwNjcyYjNkZDAwNTk5ZGRjNjg4YTg2YTFlYWUifQ"
  260. }
  261. ]
  262. },
  263. {
  264. "id": "claim_779f06313b39432cbb9c3cb304427524",
  265. "statement": "When ImagesDescribed arrives, each description whose message still exists is stored in the history, failures set one status with their count and the first error, and the reply is started only when the target asks for it and the chat is still pending.",
  266. "evidence": [
  267. {
  268. "resource": "repo://src/app.rs#L1779-L1782",
  269. "version": "repo-lines-v1:sha256:22bd4378ebfd0c259aac4089a03d61912cbb17abca836659a5d9c8fc9cde7b15:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjA0MjdkNzcxY2Q5ZTlmY2YxZTMyODc5YWNlMDkzZWY5ODk3NjRiZjE4ZjE3OWY2YzFkZGFjM2M3Nzc1MDMyMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQzMjhiMGQzNWY1YmVlOTEzODE3NWRlZTE2ZDRmNmZhM2FmMzc1NDM0ZmIwOTMwYWU4Nzk5MDg2OTk2MTgxYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTViMzliZDc5NmMyYjVjYThiYjhjMWEzNjUzODk5NzY5MGE0OTE5ZDY5NzVlNGMxMGZiMWE1ZGE3MGU1Mjc3OSJ9"
  270. },
  271. {
  272. "resource": "repo://src/app.rs#L793-L816",
  273. "version": "repo-lines-v1:sha256:5736af4a9574d77087b2de7f56f7b77e2d96d8861d19b9c42159d91fa560f0f1:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJmNTc4ODJlNGRmYjJmODViYWQyOGRhYWU0Njc1ZjIwODYxYzc2N2E1ZjIxNzg3OTIyYzYyZDgxOGQ5YjJiYjUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdjZWI1ZWFiOTZmZDM0MzEzNTI3ZjczMDk2ZjYwMWYzZDZiNWUxYmY1MzE3YTRmMzg0YWM0MTY4OWE0YWI1NTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhN2YyNDA4YTExOTJiY2VmZTI0ODJhNTg2MGM1MTVhMmQ4NGIxMzQzZTE1ZDdmMGVmNGRhMTA0YzY1ZTJiM2EifQ"
  274. }
  275. ]
  276. },
  277. {
  278. "id": "claim_831a5e88df6448b9a0545ab015ba1580",
  279. "statement": "finish_reply clears the pending state and the answered snapshot; if a newer message that passes should_schedule arrived after the answered one it schedules a new reply and keeps the images and audios received meanwhile, otherwise it drops the kept images and audios of the chat.",
  280. "evidence": [
  281. {
  282. "resource": "repo://src/app.rs#L877-L898",
  283. "version": "repo-lines-v1:sha256:50173ca19bcacd64331b57d37896a266693fbcf0d59be90d1ec263c47339b0ad:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ1NDc2YjZjNjU4MzI4NGViNzUyMTA1Mzg3NGFjZmU3NDY1MGQ0NTJhOTRhMjYxYzg4YTFhYzBjYTYzNWYwY2MiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNmMGY4ZWU3NGMyYmNhMjZlNTlmY2NmYjUzZmQyYWI2OGJjNzIwZTY2MGZiZjM3M2IwZjFhNTY4ZmIyNjBjOTUifQ"
  284. }
  285. ]
  286. },
  287. {
  288. "id": "claim_388616d41b3945b386a74e91229b089d",
  289. "statement": "spawn_ai_request awaits the request task in a second task so that AiReply is always emitted, even when the request task fails unexpectedly, and the chat never stays pending.",
  290. "evidence": [
  291. {
  292. "resource": "repo://src/app.rs#L1674-L1685",
  293. "version": "repo-lines-v1:sha256:5c8be8846fd13dfd0c92193083af62f733a451585be051143592b7b033237591:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2OWRlZjlmNmNmMDJlMjJjNGFhMmU4NTllMWY1MWZjYjdhOWUyYzc1NzRmZmFhY2IxNDNmOWIzZmUxMWY1ZmMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc0ZmM5YzZmMDQxZWE4YTkyNjlhMGIzYmYzMTJjNjYwYjk4OTEyNWI5MDhmN2I1NjE2Y2IwZmZmMjM0NTI2YjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjE5NTA2Nzc1NGYwNDQ1NDFmZmVlZDA3N2Y3OGMyZjg1ZTY3NjNiM2YzOTZkYjBlYTM5OTJmZDgxMmZjYWRmNDAifQ"
  294. }
  295. ]
  296. },
  297. {
  298. "id": "claim_6bb34eb965544529b117ebd74cf5568c",
  299. "statement": "When the model calls the no_reply tool, nothing is sent and the status shows 'AI: nessuna risposta necessaria'.",
  300. "evidence": [
  301. {
  302. "resource": "repo://src/app.rs#L1099-L1105",
  303. "version": "repo-lines-v1:sha256:f27e2fa9423ba6f3c9fb6381dd2ec60346c3c15ed204b861c320fac53ba2a473:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWY1MGM3ZGZhNzg3MTk0NDViMjRiNDI2NjAyNjQxZDk0MmI1NjFmN2U1MmQ3Y2M2MGNkN2M5YzNiYjI2NWQzNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNzk0ZmJmY2NiNjQ2MWJhYjM5ZWE3YTVmZTJiZDJjMzU3YTQyY2I1NTUxYjE3NzJjNTc2YThjOTVjODkyMTY2ZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZGVkOTlkNjVkMzhkZjFiODYxZTExYTc1MzdlZDk4YWI1NjA5NzEyYTVhZjgzNjdlNWY1Y2FkNjM4MGYyNWZiMSJ9"
  304. }
  305. ]
  306. },
  307. {
  308. "id": "claim_dc12a441f287421887863d2001c4d63e",
  309. "statement": "In list focus PageUp/PageDown move the selection by LIST_PAGE_ROWS (10) rows and Home/End jump to the first/last row, clamped to the filtered list.",
  310. "evidence": [
  311. {
  312. "resource": "repo://src/app.rs#L34-L35",
  313. "version": "repo-lines-v1:sha256:7825efb1211acd5d025f243b3bb470aeb24c370f07856a47d71779b8de576ab3:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTVlZWU2ODI2YzIzMDYxMTIxNjY4N2UzNjYyM2E1YjA0NThhMGRjNGFjMGIxOTk3ZDZjYmVlNDNhZGJkMDgyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNGEwYTBlYmUxMGIzNDk4NjVhMzlmY2Y3ZjJlMzY5MDM2MTA2NjdiNWQwYmU5MGU2NWZhYzUwNGJiNmZkNTM5MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZmZiMmY1ZDFiZmZhMTlmNWYxODFhNjBkYTg2NWU5YmY0ODk4MDBkYjUzNDgwMjZjNjE4MGJmNjBkZDk4MjhmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZjM1MGFjYmZhYzdlNDEzZmFkNWYxMzk0NTQwYWE3MWM3YWY3ZWZmMDA4MDliYmMxYTlhNzQxZGRhNDFiOGYwZCJ9"
  314. },
  315. {
  316. "resource": "repo://src/app.rs#L1224-L1251",
  317. "version": "repo-lines-v1:sha256:acf06960921a82cc9b2dfbc4cd8be73f5ce9d8945326f358e29f727a80dd79f0:eyJzZWxlY3RlZExpbmVDb3VudCI6MjgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNTZkYzNmM2MyODVjOTI5NmU1NWNlY2FiOGQzMzczNzg1YTgyOTVkYTZkZjU4Nzk1ZDUyNTZlNDc5MjRiMzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU3NmVkYmFmNjIyMDAzYjdkMGYzOWE0YjE1ZGNkZjJmYTQ0NGNhY2Q5ZWRlMWRmNjc2OGI0ZWZiMzQ3OTVjNGIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFlYjhjMzVjMzllMzMxMTJhMGUzZTVlMDg1NjlmOWVkYWJkNDM5ZmNkM2FkZmVkNjQ5MzAwNjcyZWRiYjYwNjEifQ"
  318. }
  319. ]
  320. },
  321. {
  322. "id": "claim_44fc6d9b1b484218b8a5d1b81c0a89f4",
  323. "statement": "F3 toggles the autoreply of the selected row of the filtered list when the list has focus and of the open chat when the input has focus.",
  324. "evidence": [
  325. {
  326. "resource": "repo://src/app.rs#L1391-L1406",
  327. "version": "repo-lines-v1:sha256:f3a02114e65f3b57e1e9609cdb5227848e7d4a8d0d2d3abc6b38c40f5286461f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjBjMWZhZjI0NjQzNTZlZjY0NzAyNjI4YzM0MGYyOGNhZDljMjY3OGYxMTViNTAxNDZkMGMyNTBmNzhmZDk2NWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkzNzNhMTgxNzI2YzQ3ZjdjNzlmOTI3ZDI2NzhhYzQ3NjYzY2VhMzI1OGYxOGEwNTM0ZTg2NDVlYmFlOTlkMGUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc1YjdhNGU5MWJmNTc3ZDQwNjIyM2IzMjg2ZTFhYmI0NGRkNzUwYmViNmU1MzIwYTMyMGZlZDJkOTBjOWQ3ZDQifQ"
  328. },
  329. {
  330. "resource": "repo://src/app.rs#L1536-L1547",
  331. "version": "repo-lines-v1:sha256:b46e0c6074aa70a6a18b87a08237023dd69de8b989ccfb3ce3c5796148164d3b:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRjZGFkMjlkZWMwNzg5N2ZlNTVmMTZlNGRiNTEzOWEwMzEyZmU3M2M5Mzc5OTk0NTU5ZDg2ZmQyNjVlZWU2NjciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjYzVlMzg4ZThmOTY0ZGY1OTFjZDM1Y2FlZjk5ODM0MmRjNTllNGU5OTMwMmMyYmI0MjMyZmMxMzdhM2Q1ZjkifQ"
  332. }
  333. ]
  334. },
  335. {
  336. "id": "claim_36c6c5a030ac405b87bbe3051c9b7d52",
  337. "statement": "A relink needs two F8 presses: the first sets pending_relink and asks for confirmation, the second starts it; start_relink is ignored while a relink is running, otherwise it clears wa_connected, switches to the Connecting screen, clears the QR, resets own_jids_known and spawns a task running WaHandle::relink that sends AppEvent::Relinked.",
  338. "evidence": [
  339. {
  340. "resource": "repo://src/app.rs#L399-L443",
  341. "version": "repo-lines-v1:sha256:ea63ea5ea5d7d0a0fcd464bd7da7e690e5205cf67e4ee7bf9b63d96c04f81f9d:eyJzZWxlY3RlZExpbmVDb3VudCI6NDUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjIxZGUyN2ZmNmY2ZmRjOWQxMWZhMDVjOGM5ZTVjNmI1NTc2NjU3NDhhMWRmM2I3YzFkOTVhZTQwNDY3MmJkNDEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM3ZWE1ZDExNGEyZjkyZThlZjQwMzQxN2JhMDkxZWRjODhiNTYwODM5OWY2YTFiNmM0ZWVmNTAzZmI1ZTdjZjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2YWVlOWU5ZGVmNjBmOTE4NTk0NGUwZDJmMTM4NzIwNDE1MmM3ZGIwM2I3MWYyYjJhMjNlMDRiMGI1NzY5ZjgifQ"
  342. }
  343. ]
  344. },
  345. {
  346. "id": "claim_67ccf2b70e024c5a8241c0732c7e754c",
  347. "statement": "finish_relink clears the relinking flag and shows either 'Sessione cancellata: scansiona il nuovo QR' or 'Nuovo abbinamento fallito: <error>'; the screen then follows the new session's events.",
  348. "evidence": [
  349. {
  350. "resource": "repo://src/app.rs#L417-L428",
  351. "version": "repo-lines-v1:sha256:741e9b7ade558dddd72ab34aa017552f645c8cc476274a1266dc2b4f27a5860d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYzZjY3YjMxMGI5MjEzMzcwMjdhMWY2YzdiYjA0YjkzNDM5MWZjOWM1ZDAzYTJlNjY1NWI2ZmVjNDE4ZjljMjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEyY2MwZDQ0ZGRlMzkxMDE4YTQ1OWMwNmIwOTBlZWVjOGRmNTA0MTg4Mjk3MzIwMmQwYTc2NWZjOTM1NjRjYTYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU1ZTg0YjQyYzc5NDMxZTNkOWI4Mjk4MGQwN2Y5NWQxMTBiYjQ1ZGUxZTI0NjlkYjcxMDJlNzJmODRiM2FjOWIifQ"
  352. }
  353. ]
  354. },
  355. {
  356. "id": "claim_41ee5980f5b144f8a6984144ec65e736",
  357. "statement": "apply_reloaded_config keeps the current configuration and shows 'Configurazione non ricaricata: <error>' on a load error; on success it replaces config, rebuilds the AI client with build_ai (running replies keep their previous client) and shows 'Configurazione ricaricata' or the build_ai status.",
  358. "evidence": [
  359. {
  360. "resource": "repo://src/app.rs#L457-L474",
  361. "version": "repo-lines-v1:sha256:11076b2b498b6d19b7a0629886f2cdb37229105049de848490f4e1d9faead710:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVhYTEzNjY2OGNiMzc5NzgyYTUwMTY4ZDNlOWM4Njg4MmM5YTBhZTAxOGQwNTZiNTEzZWU2ODA5OWYxNjc3YzYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjVmMjAxZDg2ZGM3NzY0YWFmOTA5MGNhNDRkODcxNDM3Y2JiODk4ZGE5ZWJlMGU0ZDhlNjVlNDZiZDJkZGVkYjQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAyNjE2ZDk0ZDJmZDg4NWViMDZhMGFmZjVkYjQ1YWUyOTdiMWQ5NzViYzU0MjRlZGIyYWUwZmE2NzZkMzE0ZTYifQ"
  362. }
  363. ]
  364. },
  365. {
  366. "id": "claim_1e2cad36bb074b0d9d9976128dd97003",
  367. "statement": "web_state returns the global flag, the toggleable chats with their cached avatar URLs, the status line, the current screen named connecting/pairing/main and, while a QR payload is stored, the QR rendered as SVG.",
  368. "evidence": [
  369. {
  370. "resource": "repo://src/app.rs#L1486-L1499",
  371. "version": "repo-lines-v1:sha256:3aa43674de3e4e7b89e84724d3034c2a649dcbb71fccfc1ecd34eecf63c78af9:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIzN2M0MzFhZmQ5NGMyNzU0NzJkNjliODNlMGM0MmRmMjU0NmQ2MDQ3NmM4ODg3Yzk3MDRmZWM2Y2U0MDkyMDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRkZDFkZTJkMmJiNWE5ODAxZDE4MTAyYTQwYzlmOTc4NjRkNjNkYmEzMzkzMzdiZDVlYTU3Y2FiOGU4YTYwYzgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImJlODM0YjUzNzA2ODgzYmQzMmMxMmViNmQ0OGEyMmFjZjlkNTIyYzIzOWJlNTE5NDZmNzA5YjIxZDNkNjIwMzIifQ"
  372. },
  373. {
  374. "resource": "repo://src/app.rs#L1978-L1988",
  375. "version": "repo-lines-v1:sha256:f54a96c0669fd127778e7c598ce1151cbf0a2fb8e12f8fec066bfbfab1224636:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjExNzIxMmJmNWJiNzM1M2Q3ZjM0NTZmNzk4ZjU0N2EwZDMyMmU2ODk1M2JmNzczMmI3NTNkNDJhN2EwYjZkNmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjM1ZjZmNDY2ZTU5Y2ZjMzA3MDNjNDVmNzJhZjY1ZGU1NGFjMzYzZDM1NGNjMWEzMzMwMzUwYWNkNDUyNDM0YzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY1ZmYzZmUxYjJmY2RmMjgyMjdhZGZjY2MyZDk3ZGY5YzhmMzcwY2Q5MzRiOWIwZGUxNjVlN2ViYmEzZjA5YWEifQ"
  376. }
  377. ]
  378. },
  379. {
  380. "id": "claim_d629089dcfae40a9aaa6313846538b73",
  381. "statement": "App keeps the audio half of the reply bookkeeping in pending_audios and backlog_audios (chat JID to audios with their message ids, in arrival order) plus a transcribing set of message ids; keep_audio stores an audio for a pending chat, in the backlog maps for an offline message before the catch-up, or transcribes it at once without replying after the catch-up, and does nothing at all when transcription is not configured.",
  382. "evidence": [
  383. {
  384. "resource": "repo://src/app.rs#L264-L271",
  385. "version": "repo-lines-v1:sha256:624a4ce8841071737337c985666fbac63835cc6490d2f2eb42a0f686ebfc5729:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGUyMDU5YTZhNWEzYzU1YTNkYzg3NzhlMzUyMWI4NjM3NDExOWJiOGRlZDViNmY5NTg0OTNjY2VmOWJiY2U4NiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMzI0NjljOGEwODk5OGMwYmE3ZDUxN2FiYjcyYTQyMTI1YjRlZjc0YzFkNWMwNmNmZDU0ZDdmNWRjMWEwMDQ1NiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjM3Y2IzMGQ4MjVjMTlhYTU3ZWFmY2E5MTg4ZmRjNTU1MTRmY2VhZjE1NmMzNTY2NTIwMDIxMjc0MzkyNjcxMiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTg4MjZkZWMyMTEyZDgzMjYwMjQzMzU4MzRiMTI3YTBmYWRkYzIxMGYwMzUwMWEyZDI5NzVhMzE5YTdjY2EwYiJ9"
  386. },
  387. {
  388. "resource": "repo://src/app.rs#L629-L672",
  389. "version": "repo-lines-v1:sha256:1631b6874f5880f4290a306f619b45026e63622c4f480dc289aeddb04599171b:eyJzZWxlY3RlZExpbmVDb3VudCI6NDQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4ZTgwYjQzNzA2MWU4ZDc4M2IzZDBhNmYxZThiMmI4YmNhZTYyYTIxNmQxZTA3ZDZlYzQ2ODZlNjMxZjE5ZTgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk0YjU3MDVlNmJlMTRmMGZkMjBhZTgxYTYzZDNlZWQzZjJhMTFmMWJhNGNlMWUyYzEzMjBhODVlOTdlYzJmYTUifQ"
  390. }
  391. ]
  392. },
  393. {
  394. "id": "claim_67955abe9c374735abef0c3afe13110d",
  395. "statement": "Audio transcription is enabled only when transcribe_key is set, and the number of audios transcribed before one reply is capped at MAX_AUDIOS_PER_REPLY (3, most recent kept, older ones dropped for good), while images use MAX_IMAGES_PER_REPLY (5); audios_to_transcribe shares select_media_to_describe with images and skips audios being transcribed or whose message text is no longer the plain voice placeholder.",
  396. "evidence": [
  397. {
  398. "resource": "repo://src/app.rs#L1721-L1750",
  399. "version": "repo-lines-v1:sha256:cbfda29e4579b9e3f15b7065e6b8f90aa77722d3009289a42486f3f85d5f5e74:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA1ZGMzYmMyMzYxYWY2MWZiOGM1N2YyZGZiYTExMWVkN2QyNTZhNzBhMTBmYWRhNDFkMzg2ODgwZDQ3YTc5OGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRmYWI3MTBkZGY3ODU5ZTU3NTc2NGE5MTNhMDAyYzc0NTg1ZmZhNzAwMTUxMGNiODgxMWRhODNkMmNmNzRiMzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU0MDAyNGFmZmIxODk1NGEyZjYxODAzYjk5ODBiOGY1NmVkNTlmZjJjN2FiODAyZDU5NDI2NGZiMDFkNmMyOGUifQ"
  400. },
  401. {
  402. "resource": "repo://src/app.rs#L763-L770",
  403. "version": "repo-lines-v1:sha256:fa39de81b9c45f8ac3d33bc79d12c507e895c348f454fe7b20bb5e77d0bd40de:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOGVlMDgxMTQxMWY5NDM0NzM0MzhlNDI3YTdiN2ZkZWVmYjMzN2ViNDAzYzE5NDU2ZTMyOTZlNzgzMTFlNmNiZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjJkODI4YTAzN2FjMWM4MTUzNWIxZDU1MDA4MzIzMjNiZmJiODY2YTNhM2Y4N2U3YTY4YzEzYTJiYWU1NmZmZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTc4NDUxMGM1NmY1YTlhM2IyZjRlN2Q2ZmMwMWM0Yzg1MTI5YmNjNTMzZTVhNmNlMDYxNjJjYWIyYjA0ZjhjMiJ9"
  404. },
  405. {
  406. "resource": "repo://src/app.rs#L74-L77",
  407. "version": "repo-lines-v1:sha256:c9d722762ee24413b4f692e17e9d10b9430f82db1b1c0cfecc1c9b9e33e0876a:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjRkMDBmOGEwMmYwM2JkMGI0MDQ1MmI5NDM4ZDgyZTgyNDZkOTZiMTc5ZjllOGM4ZDY1ZDJiODg5YmQzM2U4YiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYWUwMTNhNDJhODRhNGUxM2UyNzBhOTM2ODdkMzEzMmE5N2UxZThmY2FkYWU3MDkxYjQxZTFiYTZjZDhjNjBhZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2UxZjg4N2FlOTZlZTg0ODQ3ZjZiNTExZWY4MDU5ODY2ZGExZjY3NDJhYzk4N2Y1YzE4NWRhYTcxODFhNmE4YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNGI3M2NiMGJjNjJiMWRjODdhZjkyNjE5YWQwMGFkOTg5NGIzYTkwZmQ0MjY5YzkzZmQzODM3MzE5ZDgzNWEyZiJ9"
  408. },
  409. {
  410. "resource": "repo://src/app.rs#L946-L964",
  411. "version": "repo-lines-v1:sha256:aca8ef54d074bdd9a35c6228ea67532c04a9bf55079ae6ed368a56dfc7f87db1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3MGQwY2JkODBmOGZhNDZkN2EzOGQxNDMyMzZjODMzYmViZGE4Mzg2ZGNmZTFkZTBjYmNjNWM2M2IzNGE1MzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiNDI5OGJkNmI1YjQyZmVjNDI0NDIxMjBlNTkzZjAxZDFiYTU0YmFhODg2NTUwMzE0MWE0YmQxYmViNjQxZjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIyMGUyNjkzMzFhZTU2NTJiYTMxNWViYTdmYzRlNWMxNWFhNDlhMzdiMjE2NGY3NjRlYmNiYTA1ODE5ZGMyNDAifQ"
  412. }
  413. ]
  414. },
  415. {
  416. "id": "claim_ece41a4d5617456597c8ff54f46ce321",
  417. "statement": "spawn_transcriptions builds a TranscriptionJob from transcribe_url, transcribe_key, transcribe_model and transcribe_language with an empty MIME type, adds the message ids to transcribing and calls spawn_audio_transcriptions, which runs one task per audio in parallel (download with up to 3 attempts, a 60 s timeout each and growing retry waits, then the transcription with the downloaded MIME type) and one collector task that emits a single AudiosTranscribed carrying then_reply and the postponed images.",
  418. "evidence": [
  419. {
  420. "resource": "repo://src/app.rs#L1832-L1922",
  421. "version": "repo-lines-v1:sha256:450b2c863867076ae29a98f6b2df94b3dc43936844327c15ec52c2a5f4b2ec09:eyJzZWxlY3RlZExpbmVDb3VudCI6OTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjUwMzZlNzExZDhiYjhjNjMwNzQ2NTEwNGIwZDYwZTI0Y2M0N2IwZDY4ZDRlOTMyNWM3MGM2N2JkNDRkZTU3ZDQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjViYzQ0ZWIzMGI2OWE4MGNjYTQzMGFhMjIxNTg0MGU4ZTNkNTlhOWU4OTk2NDk5ZTlhZmM3NmQ3ZjY1OWUxMmEifQ"
  422. },
  423. {
  424. "resource": "repo://src/app.rs#L727-L761",
  425. "version": "repo-lines-v1:sha256:13c9ebb313a3bcdb8ca212f0ecedf91359ab8b7346f0a159add0c503cdc53a51:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM1YjQ5M2Y3OGMzOGVhMGFhNGY2YzlmODE4ZWI3ZTc3ZTIxMDJiNzNjZDhhMWU3ZDc1MzAzOWExZWQ1ZTI4YjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjA4ODU4MjU5NDc5YmI1ZmYzY2Y0YjE2MDhjNTA0MzYzNzM5NThhMWQ3NWY2NDZlMDZiNGUyOWQ5MzVkNGMzN2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjOTYzNmU4NWU4NzBhN2VmZjYyMWM2ODNhN2RkODZhYzA3YTdiNmNhYTNhOTNlYzgwN2FjOWQzYTg4MzFmOGUifQ"
  426. }
  427. ]
  428. },
  429. {
  430. "id": "claim_50f7571100854f1fbca745a983ddd658",
  431. "statement": "handle_audios_transcribed removes the ids from transcribing, appends each transcription to its message text as '[messaggio vocale] <text>' when the message still exists, reports failures with one status 'Trascrizione vocale fallita (N): <first error>' (download failures carry the prefix 'Download audio fallito'), reloads the open chat, and then, while the chat is pending, describes the postponed images or starts the reply when then_reply holds.",
  432. "evidence": [
  433. {
  434. "resource": "repo://src/app.rs#L1784-L1792",
  435. "version": "repo-lines-v1:sha256:b58e50269905a224c205da0c87a432f759e7992b40a8e0e8c3dae0872b66dbcc:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDlhZGUzMDdjOThiYmRmZTE1NTJjZDJhY2E4ZTY4NTA5YTE5NGZhOTQ5NjkyNTdhMGZlYjFmYjM2NTFlM2E3MiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMjcxOTg2YjExOGI3ZmNmMzEzNTE1MmVlODA0NDMwMmE5Zjc3YmE5ZTc1NmM3NWIxOGI4N2IzMjZjNjQ4OTI3YiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiOTViMzliZDc5NmMyYjVjYThiYjhjMWEzNjUzODk5NzY5MGE0OTE5ZDY5NzVlNGMxMGZiMWE1ZGE3MGU1Mjc3OSJ9"
  436. },
  437. {
  438. "resource": "repo://src/app.rs#L38-L41",
  439. "version": "repo-lines-v1:sha256:fc00beef688a9051866e1972ad3485e7820d2935c053dbfd34d3c74b2411da65:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZGZmYTFjMjIzYTFjYjVlZDdkOWZmYzljYjllNjIzYzlhZjY1MjQ3MmJlZjUzYzMyZTBhZTcxYjc1ZjM3YjRjMSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjQ5M2E2NjFmZWY4MzY3ODU3YWJkODk4ZWY5YjAxZWYyMmY2ZDg0MjlhOWEyNGI3MjRjY2Y1ZTZjNDEzNTc2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTIzNTZlNmVmOTk1ZDNmNTcyOGVkZjBiNDg5MTk1ODg0NjliMGQ3YjI3Njc5M2Y2YjkyNTg4YjhkZWMyNzliNSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjgxYzllMDA4NDg0YjQyMjE2ZmEyYTU5NjFkZjIwMzdhZjIyY2ZmODMwNWEyYWM5YzQzOTU1MWVjN2U5NDgwOCJ9"
  440. },
  441. {
  442. "resource": "repo://src/app.rs#L70-L73",
  443. "version": "repo-lines-v1:sha256:e8ad9bf94a9667abf25ac1ea023b45a46e983fa19f2693ad61572aa62b8dce37:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2Q3YWEwNTI1MjIzNTNlZGExNGNjMGM5ZTg0ZTE3NWNlMDBlMjNmMWY1M2M0MDZlZGYwYmE4OTA4NTg2MjMyYiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiOGRlMDQ3NmFjZmJlNjk5MzE1ZDU4YTBlNGMwZDIwZGZhM2FkMTlmMDg3MDYzM2Q4NmQyNzZkZjI1MGY0MTJhNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjQxYzA4ZTkxMzgyNzAzMTIzZDJkYWQ5Nzk0NWU1OGNlMDQ1NmU5NGVmMGYzZjFlNTFkMDFhYzlmN2M5OTQ1MyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZDQzOGUwNWQwNzYwZjY5ZjFjMTMwYTA4ZWVhYTc4ZWI5Y2MzNDFmYzMyMjI5MmYzZGNjYmI0ZTBiZmE2NWUzYiJ9"
  444. },
  445. {
  446. "resource": "repo://src/app.rs#L818-L875",
  447. "version": "repo-lines-v1:sha256:d5ad7a2c920ec3c326e04645e1ce43b9fb4ce906a211a835b056903dbcdf35d5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwZjE0YmRhOTU2YjU3M2JhNzk1NTJhNTEwNmIyMzMzNjNlMWFlNGY3ZDMyZmE3YWU4ODk2MDRlMDMyOGI2MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhN2YyNDA4YTExOTJiY2VmZTI0ODJhNTg2MGM1MTVhMmQ4NGIxMzQzZTE1ZDdmMGVmNGRhMTA0YzY1ZTJiM2EifQ"
  448. }
  449. ]
  450. },
  451. {
  452. "id": "claim_3f4229faf876457fb22804fed2a7ba4d",
  453. "statement": "For one reply the media work is strictly ordered: transcriptions run before image descriptions and the AI request, because prepare_reply hands the images to spawn_transcriptions instead of describing them while an audio still needs a transcription, and only the following AudiosTranscribed event describes those postponed images.",
  454. "evidence": [
  455. {
  456. "resource": "repo://src/app.rs#L689-L761",
  457. "version": "repo-lines-v1:sha256:ec755f9e1aadd0ddfa4bcb7f40ceb61ebadb3024ee9727315ad63fcae7620f83:eyJzZWxlY3RlZExpbmVDb3VudCI6NzMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMyMWI5OTAxNjZkNDU5NjI1ZDk3MTdjZThkNTMzOTMzNTFhNzI5YTA5ZDY5ODBmN2UxYTJhOWJiNDkyYjVhNjMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE0OWI3NmEwN2ZiN2VjODVjZmJhNmNjNmQ1OTUzOTFlNDU5MjAzY2NmZDMwNTdmNmY3MzczYzNlNzZjYWE1N2UiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBjOTYzNmU4NWU4NzBhN2VmZjYyMWM2ODNhN2RkODZhYzA3YTdiNmNhYTNhOTNlYzgwN2FjOWQzYTg4MzFmOGUifQ"
  458. },
  459. {
  460. "resource": "repo://src/app.rs#L818-L875",
  461. "version": "repo-lines-v1:sha256:d5ad7a2c920ec3c326e04645e1ce43b9fb4ce906a211a835b056903dbcdf35d5:eyJzZWxlY3RlZExpbmVDb3VudCI6NTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwZjE0YmRhOTU2YjU3M2JhNzk1NTJhNTEwNmIyMzMzNjNlMWFlNGY3ZDMyZmE3YWU4ODk2MDRlMDMyOGI2MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijk5OWJkZWZlZWFjYTYzNDBlMDI5MGRjODZlODg5Yzg5ZDVlMTg5YWE1YmE0NGI1ODViM2I3MDczNGY0YTYyZDgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBhN2YyNDA4YTExOTJiY2VmZTI0ODJhNTg2MGM1MTVhMmQ4NGIxMzQzZTE1ZDdmMGVmNGRhMTA0YzY1ZTJiM2EifQ"
  462. }
  463. ]
  464. },
  465. {
  466. "id": "claim_b8d5262a046e4303970190161263dea9",
  467. "statement": "maybe_start_avatar_fetch starts a fetch only on the Main screen while WhatsApp is connected and no fetch is running, selecting the web chats whose cached avatar is missing or older than AVATAR_TTL_SECONDS (86400) and marking the fetch as running before spawning fetch_avatars.",
  468. "evidence": [
  469. {
  470. "resource": "repo://src/app.rs#L116-L119",
  471. "version": "repo-lines-v1:sha256:8ac2cc801ab683eec324c271fae8e3fda2bd483ba0d4fb80465f310dc39af43d:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYjM5OGZlNjM4OWZlMTgwNzM2YWNjM2YyMWU0NDFlNDkxMjZhMGIxODkzMGI0ZDQ1MzBhMDNmNWU2Y2ZkZDdjNyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiYmZkNmI5ZjFmMmVjNDZiMjU5MzUxZTg3OGIzYjY4N2VlMDhlOWNjMTgyODg3Zjg1MTI1ODI1NDhmYWY0MmFiMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMWY3YTczOGU5MGIyNDIxNmVhZWYzOTNiMDUwNTI1YzBjZDdlOWI1OGE1NzIzMjUzMWM2OTBkMmIzODAzOWExNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZTZkODk3NjdiOWFkN2ZmYTVmYWVlZGRmNjBhN2I0MTg2ZTM1OTVjNWQ5Zjc0M2I0OWY1OTgzNmIxNjBiMGRiMSJ9"
  472. },
  473. {
  474. "resource": "repo://src/app.rs#L1449-L1471",
  475. "version": "repo-lines-v1:sha256:b500d32399004dfd66cba09d876f635c883129b0ce1856400c9ec3704b5b1f9a:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY4MDJlMDA2NmM3ZGUyOGE2ZTg4NWQ1OThiOTYwNDJlNzc2NDIyNjA0YWJmZTUzYzkwZGY4ZDlhMDAwOTE2OWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQ0NmM2OGRiNzFjZDkwMmMyZDMxY2QyYjQ5Y2MyM2ZjYzFmNjVlYWRlY2JlZGRmNDFhOWEwZjVhNGIxMzE1MmQifQ"
  476. }
  477. ]
  478. },
  479. {
  480. "id": "claim_af34a472366147e790590a6454ba2198",
  481. "statement": "fetch_avatars requests profile pictures sequentially with an AVATAR_FETCH_INTERVAL_SECONDS (2 s) pause between requests, emits AvatarFetched per chat, and on the first error caches that chat without picture, stops, and reports the error through AvatarFetchFinished; a completed batch ends with AvatarFetchFinished without error.",
  482. "evidence": [
  483. {
  484. "resource": "repo://src/app.rs#L2008-L2030",
  485. "version": "repo-lines-v1:sha256:dd13940dc14cd062e2bd6ce52abd9ce733256c2c6d45fc84adb1e94c5ded7a0c:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU3NmE0NzFhMmM0NDRiN2ZkMzdkYzY0YmE1YjYzYjBjMTg5MDhjM2U1NTZmNGE5MDAyMGVhNDU5NDg4ODkxYzciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ4ODU5MjEwZWJjYjEyY2Y2OGM2MTYyMjJmYzU2MGMxZjY4ZTJmYTMxZjYzMDQ5M2RmODA5NTg4ODdkNTdhZjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijg5NGUwY2FkODFjNTBiOWY4MWE5ODI2ZjA1YzUyZjY0MGE0ZGM3NzdiYWQyNGM2MGEwMjQ5NzhlZWJmMWRjMGMifQ"
  486. }
  487. ]
  488. },
  489. {
  490. "id": "claim_212396518fde4f57985c96bf0bc0575b",
  491. "statement": "AvatarFetched stores a CachedAvatar with the current Instant in the in-memory avatars map, and AvatarFetchFinished clears avatar_fetch_running and, on error, sets the status 'Foto profilo non caricate: <error>'.",
  492. "evidence": [
  493. {
  494. "resource": "repo://src/app.rs#L173-L180",
  495. "version": "repo-lines-v1:sha256:c886361ce21f5d3f88eee41ed6770acb3886153edfdad0468881cea11c4422e6:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNWQxMjM2OGNhNmI0NDI2Y2ExNTM0ZGQ4YWNhMDNkM2MxZjVhZWJhOTAyNWU5YmU3NTZiY2M5NDgzYTRiYjcxYSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzAxZDMyMWZjZGI4NjBkNTQxZDRlNGZmMzU0Y2QzYzkyMDMzNWZjYmQ5MDc3ZDAxZTkzMjgxOTNkZmM0OWE3ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMmQ1NDNkM2RmNThmYmY4N2RmNWJiNmU4Y2ZkNDBjMGQ2NjkyNjcxZmYxMDI5ZGZkMzg5ZjQxYjI0NjY5NmJjYSJ9"
  496. },
  497. {
  498. "resource": "repo://src/app.rs#L374-L384",
  499. "version": "repo-lines-v1:sha256:d49f75443dcde9c8c8fb3160c7b80131fe0b6ab74bd8000854cefb643920cd89:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFhNzJiYjk2NjkzMzlmMjVjOTJlYjY0YmMwYTc3MDFjZGFhMTU5MDk2NGY4OTE3Y2Q0YzI1N2M5NThjMTdiZmUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU1MjJjNDJjZDE5YzZkMDNkODA4YzQ1MjcyMDU1MjgyNWI3ZWExYzViNDkxYjIxODUxMWNhYzc0MTVjZjlkOWIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjllYTI0OWFkZjc4YjM5M2UxYmMxYmM5MTRhMWQwMTlmNGI5NTI5Njc4NmQzNGY1OTE2YWIwYTY1ODdjMmUwZTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE4YjBlZWFjMWM4ODgwZTg0ZGRlNGIzZTA3ZTEzOWQ2MGNmYjhjMzlmZGQ5NTE1ZmU5YjI3MWQ5MjM3YjZiODcifQ"
  500. }
  501. ]
  502. }
  503. ],
  504. "verification": {
  505. "by": "openwiki/0.7.2",
  506. "at": "2026-10-25T12:54:53.684Z"
  507. }
  508. }