| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- {
- "schemaVersion": 1,
- "pageVersion": "sha256:0bfeac2d0428869dc0ca2ded7ee01713526fb6f573a921826fe0a1b96b3d4c7b",
- "claims": [
- {
- "id": "claim_daef343b267c45a987738a3daf7e404d",
- "statement": "AppEvent has variants Key, Redraw, Wa, AiReply, CooldownElapsed and Sent.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L56-L79",
- "version": "repo-lines-v1:sha256:4f8895b8f084334866be94b1935ed3aed873fe96d785e516f1f0d16b6a2ab219:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImI4OWMyOWE3NjJmOGZhMmEzZmY0NmY5MGZiZDY3N2QyYTI3MjViMjM3NTYxNjIwODdkOTRmMWI2MDg2Yzk5YzEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjU5YWI2NTg3Y2U3NzQ5Y2FkNWYwNmU4MThjZmZlODBiNGZjZmFlNTEwZjhmMTk3ZjQwNTIyZmNhN2E3YzM4OTciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjJlYzJiMDUyMWI2NDA2YzM3MGE3MzdmMTZhYTU0NDBkZDcyZDE1YWMxY2E2OGY5MmI1ZDc5NzUxM2I0NDk0NGQifQ"
- }
- ]
- },
- {
- "id": "claim_0f09168e3dc247a7b0559a790064f17c",
- "statement": "Screen has Connecting, Pairing and Main; Focus has List and Input; ListMode has Chats and Contacts.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L81-L101",
- "version": "repo-lines-v1:sha256:92aaf2af1678376e51c1ad2567e9dce9ab29a60eb8e773ba16594a42750ff769:eyJzZWxlY3RlZExpbmVDb3VudCI6MjEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjY2YTEyNzUwZTQ5YzY3NDE5NGM1Yjg4ODEzOGQ5Y2JjNGI0Y2M2OTM2NjdiYmZjMzIxYjgzM2MxMWZlMTdlY2QiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjY3NmE1NDRjYzAyM2VkNDA1ZTNiOThiOGEzNTQwOTBmYWQxNmU5ZTE4ZDVlZTlmN2JhNmMzZTcwMDUzMDA5ZDEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjFmY2RhYjQwOGQyMDcwM2JmNTU2ZWJmZjk2NGM3M2I4NGQzYWUzYzdiMzUwZTFiODNmNTA3OTE4MDUxYjA0ZjYifQ"
- }
- ]
- },
- {
- "id": "claim_0a2882d788054b5586b16e6e990f77ee",
- "statement": "App::new builds the AI client, loads chats and contacts and starts on the Connecting screen with a ReplyGate created at the current time with Cooldowns taken from cooldown_seconds and group_cooldown_seconds.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L165-L199",
- "version": "repo-lines-v1:sha256:a25933c1c4dff0de5b2f69ae0e9d8a49c1940e8a4b0643b39cd8981e74a78bbd:eyJzZWxlY3RlZExpbmVDb3VudCI6MzUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTYzZjU4ZTBlOWQyYjgxMjgwMTZhOWEyZGZhMTU2YjgzNTM0NWYzOTkzYTVhYjdkNjVhNWU4ODFmMDg0Y2UiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBhOGJlZTA0NjIzODBmZjdmN2Y0ZDZhYzE2MGViODRmYjk3YjgwZGRjMjM2ZGFmZWY4NTQ4OTYxYjcwZDQ4ZmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU3M2U3ZTFjNDIxZDk5NzQ5ZWVmNzNjNjJiNmE4ODAyODhjNGNhZDM4ZTYwZWQyMTNjNmM1ZDI1ZjAyMDU3OGMifQ"
- }
- ]
- },
- {
- "id": "claim_bf08f07b96ed49c2b688852a35a263f5",
- "statement": "handle_wa_event maps Qr to Pairing, Connected to Main with status Connesso, LoggedOut to Connecting, OfflineSyncCompleted to the startup catch-up, and routes Contact and Message events (with addressed_to).",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L226-L251",
- "version": "repo-lines-v1:sha256:9c2eb0130ed8fe6d1f4a7364331089bc43b4a8f4aa42c0a29d8794946dd32f3f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjZkOGNmMDJkODU2OWY1YTQ3ZjRiNmY0Zjc5MzBmNzkzMTczM2VmNGE4NDMwODNmYmZjMzAzNmNiM2JiMjc5MGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM5NDkyZWM5YTM2ZThkODU0NjE1MmI4MjJkNTdmZDIwMDk4OTE1MDMwYTIwZDliZGExZDVmYWQ0NGY4ZjFiNWYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI2ZDczY2I1NTUwODdmZGQwZTc4MzhjZjM4MWZmZmRmMzljMzk2M2VmZWJhMGE0ZjQyNzg4OWE0MGUwODYwZWQifQ"
- }
- ]
- },
- {
- "id": "claim_537e6ac1d0184cefaaeaa2535327247a",
- "statement": "on_message returns early when History::save_message reports the message was not new.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L273-L282",
- "version": "repo-lines-v1:sha256:eb6c3b3607fadb274e63e9fe5f6be1f2f35bb2e82b3beea4cba64c0b5f362f1e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjYyNjcxZjMwOGZhYjk0MTMwNzgwNDU4MzFhNDMxYjJjZTM3MzhhMTEyMzMyNDg4OGY2ZTgzNTY1ODhjYjNmOTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQ1Zjg3MzRjYWZkNWU0MTNiNTUyZDMzZjFmMThlOTEyNWI2YTkwMTFhODU2OTM2YmJjMzRmMzAxMGM4Yzg1ZjkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjU2YzA0ODg4Njk3MzQ4ODBlMTJiNTM0MmNmZDI3ZjU4YTU0M2Q1NjE4YWY1M2JlZjRkNmVhZDYyYjhiZmQ1N2YifQ"
- }
- ]
- },
- {
- "id": "claim_a5e4a2575e2a4890b96ffeed57e9f621",
- "statement": "Ctrl+C quits on any screen, non-main screens ignore other keys, Ctrl+A toggles autoreply, Tab switches focus and F2 switches the list mode.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L528-L550",
- "version": "repo-lines-v1:sha256:19f7c9cbdcad7bc82262bb7f58fc219966919ee24ae8366f08f897ab42db3764:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNmODVjMjY1ZjBmMjNkOTA0NDcwMjYxNWZiM2NkMzQ2ODMxYTFiZWNiOTRlYzNkODYyNDYxYzFkNWEwMGQzNDUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjIyOTViMDhkNjdiODVjNzc0N2YzYzI1NzgzOWQ3OWFiMmFmNTBiNmYzNjkyYmNmYzJlZmIwY2I3OGExZWExZTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk2ZWU5ZDllODg2ODFmN2JmM2M4ZmZiZjEzZDgyODk2ODM4MGY2Y2E0M2Y1ZGE4ODI5MmU1MjY3ZDRjMDhlOWYifQ"
- }
- ]
- },
- {
- "id": "claim_cb8373d154a942479406efbb317fe9fd",
- "statement": "In input focus characters are appended, Backspace deletes, Esc returns to the list and Enter submits the trimmed text to the open chat.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L570-L594",
- "version": "repo-lines-v1:sha256:93f1a991412191cf1e47a90542afc809bc43aaab50594660e57b57012282758d:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZWM1NzZmZGY5ZTZhYjIyYmM3ZTgyYWM2NzNiY2EyM2MxNTZkZjE0MTRmZGFjZjRlNzcwOTEzYmI3Yzg1OTYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUxNzg4NWVhNGE5MGJjODU2N2NiZDFmYjM0M2FlNTQ0Y2EwMTU5ZDZkNTA0ZGU3ZjcyNWFiMWIyYjg0YzYwZGMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjBlYTM2NTI1MWJlYzc3N2JhYTBmYTZjMGEzZTZmOGRiYzliNzhiNmQ5YTNmNmI4ODVmODBmY2RkMmQzYWFhMmEifQ"
- }
- ]
- },
- {
- "id": "claim_4b0ec5e5dcd04f838b031e75b64428de",
- "statement": "Enabling 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.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L610-L624",
- "version": "repo-lines-v1:sha256:16fb5b82a9f45f8cb885a7bf638ad0f4ff3b641766d72a83ad8e63bc0d37e690:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZkMGU5N2I5YzI5ODYyY2E0MDZkYjkxZDE5ZWU0Yzc4OTU3Yzg1MTNmZmRjMzk3NjM4NWU0NDY1NzhlNDk5YjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjFhYTRkM2FkY2MzNTI3NzIxNTI5NjJkMTFiZTY0MzMzMTBiYjg0YjkxYjRlMDE2OGNkY2QzYzY2ZGYyYTU3NWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU2ZWQ1MmZlYjhjZTliMjNiYmNiYTkwMGFkYjk0MzE3MjA4ODNhZTk0ODY4NmQyNjhlNmRkMjFlNjljYTU3YjkifQ"
- },
- {
- "resource": "repo://src/app.rs#L890-L898",
- "version": "repo-lines-v1:sha256:ba5bea3063970ee3b66b2d54fc0529a98bf3972bf7e9a5cab37c6d0bf4659ff7:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZmFmNzM0NDVmZTU0ZTJjMzIyMDBiMGRiNDhlM2MyOGZlZDgyZDk3NWY0Mzg4MjM0NjA5NjhlZmM4ZmU1ZjJmOSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWM5Yjc1NjM5OGI3MTI0NGNmYThkOTk4ZGRlOTQwZWRmODk1MmNkMDEwMTYyMzM1YmEwMzRjYjkxZGZmMjRiZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODk0ZTBjYWQ4MWM1MGI5ZjgxYTk4MjZmMDVjNTJmNjQwYTRkYzc3N2JhZDI0YzYwYTAyNDk3OGVlYmYxZGMwYyJ9"
- }
- ]
- },
- {
- "id": "claim_4989af934f564cf789a6028f36e19728",
- "statement": "Opening a chat loads its display name, autoreply flag and the last 200 messages and moves focus to the input.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L19-L19",
- "version": "repo-lines-v1:sha256:240488cee8382e0e531b9f13fd0aa941c72d0390e7e89c4430811cbc76aa6610:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjQwNDg4Y2VlODM4MmUwZTUzMWI5ZjEzZmQwYWE5NDFjNzJkMDM5MGU3ZTg5YzQ0MzA4MTFjYmM3NmFhNjYxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMjQwNDg4Y2VlODM4MmUwZTUzMWI5ZjEzZmQwYWE5NDFjNzJkMDM5MGU3ZTg5YzQ0MzA4MTFjYmM3NmFhNjYxMCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODViYTNhNjRkYjcxZTdiNGQwMjIyOTIxYjllMDk3NWFhNGM3MDQ1NzQ0NWYwYTc0OWU1MGJhYTljZTQ5MmI1MiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNDcyMjFlYzQ5YThiY2FiYTFkNzUwNTE0MWZhYzY0MDhkOGZmMmUwMjUyMDgwZTZlMGYwNzQ1MDMzMjY3ZjQwZSJ9"
- },
- {
- "resource": "repo://src/app.rs#L630-L644",
- "version": "repo-lines-v1:sha256:aded80cef132a5253ce23fe8d7fc3a9a08ee4998777e70cac1d8568fa2c7a699:eyJzZWxlY3RlZExpbmVDb3VudCI6MTUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0NmM2MGMyMDFmZDM3MThkMzVjZTZhNzRlMTdkMmM2Y2E2Yjg5N2ZmMDc3Y2RkMDcyZGZkZDgzODFhZjVhNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUzMjlhMjljNjFlZGI3Y2E3NTEzZTQ0NTgxMDJhZTAwNWU1MGM2N2QyYWFhMTdjMjRmMTBhMTRmN2MxOTExNzIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImNjYzVlMzg4ZThmOTY0ZGY1OTFjZDM1Y2FlZjk5ODM0MmRjNTllNGU5OTMwMmMyYmI0MjMyZmMxMzdhM2Q1ZjkifQ"
- }
- ]
- },
- {
- "id": "claim_e3fc47455dc24b508616e9effd70c1d2",
- "statement": "spawn_vision_request runs a single task that tries the vision completion and falls back to the courtesy text completion, combining both errors if both fail.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L781-L822",
- "version": "repo-lines-v1:sha256:5f2de4b5568e20c68dce45723dee3fac0fdb727c5c0babf4f85e4baaa14a44e9:eyJzZWxlY3RlZExpbmVDb3VudCI6NDIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijk0MTM1OGQzZmUwMGY3ZDM4YWM4MjNjMDc4OWNlZmU2NTNhMTE2YzkyZmNjNWMyYjYwNWY4ODA0MjA2MzRjYTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImQxZTM5MDcyMDkzN2I1OWI2MzAyZjNjZGUwY2Y5NzgyMTUxZjc2OTg0MDM4Yjc4ZjBiYzJmNjkxYjFmZTcwM2EiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImU0MzNjMDFmNDAzMDNjNmE3M2FiOWRjYzAxY2Y3ZTg2ZWIyMGU3ZmEzZjdjNzVhMjQ1MzMyYTRmYTdmYmYwOWMifQ"
- }
- ]
- },
- {
- "id": "claim_7000c80d87994614ac6ac2cdaa398609",
- "statement": "spawn_send sends the text via WaHandle::send_text and emits AppEvent::Sent.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L859-L868",
- "version": "repo-lines-v1:sha256:946a66552037dc4ae7eff9cf6c602520fd019e2700d8d6cc4dc93c7db36bb837:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlOWMwM2FlM2RiZTlkZDA3YjYxNTZkZWFkNzBhNmRhYjc4MzI3M2I2Y2E0Y2JlZGI0M2E0MTI4YmJlNTdiZjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwZDEyZTUxMmY3N2FlNTEwYWQwZTk5M2I3NGNmNjdmY2ExYmRiOTllYmE3OWY3OTdjZDkxMWYyN2Y2MWQ1ODQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjUyM2IxZmMxYjIzYjFmMWZhZWVhY2E4MTM2Yzc1YmFkOGEwNGEzMGQ5Nzk0MTc5ZDNjZjUxYjJkNGVhMDI1NTIifQ"
- }
- ]
- },
- {
- "id": "claim_3568f04cad88489a974266f0e241c354",
- "statement": "An AI reply is sent only if autoreply is still enabled for the chat, otherwise it is discarded.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L483-L492",
- "version": "repo-lines-v1:sha256:873d9c74889e64fc80a3ca96c2ced85669ef71a7f7c6c62bf4fc795cf2d998b7:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVlODZiMzQ5MjhkN2ZlZWQzNTRiNmY1OGM3MjJlNTk5YzI3ODhhNWE0Yzc2MjUxN2YzYzExYzIzMDM0OGVjOTUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijc1NjVhM2RiYzM1YWQwYzg0NDFjZThkN2YyNWQyNjQzODZhZTE4NDc3MGYzMDRkODdkYjFiMjk0OGZjM2ExNGEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVlYjQ1ODA1ZTI5MzcwMzMyZTY2ZDA3NzAwZjlhMDg3MDgyNWE3ZDM2NWFmYmJmNzYxOWNiYjNlMjNiNTViMWQifQ"
- }
- ]
- },
- {
- "id": "claim_17fa61af9be74c3dbc0b44f6b5d2873b",
- "statement": "build_ai returns no client when system_prompt is missing.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L875-L883",
- "version": "repo-lines-v1:sha256:02a6b90c8547969f5229ba908e64ec2f9fd8d0547f3a7b34404429320b337fe4:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiNzcyNTRhNjcwYWJhNGU4ZWFiNDlmM2U1OWYzNjc4NTk0OWM2ZDk1OTFlN2ZkMWY1NjA4NGU3NzBlOWM3NDJlNCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMGQ3OWM4ZDU3OGFjNjM3NDFmOTgwMTlmMzlmOWRmMDA4M2RkN2YzM2U0ZDNlOWU3ODU1YzZmNmQ2MWQzNjg0MCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTA2ZDU0NTM1OGJmMGQyNTFiNDhiNWZhZTE2YzIyZjkzYzgzNDM5ZTQwNzA0YzRkYzg1MzgyN2ZmNWFiNmYyNiJ9"
- }
- ]
- },
- {
- "id": "claim_ba615926cccd4399b1bc801f51d947c3",
- "statement": "is_command treats Ctrl as a command only when Alt is not held, because Windows reports AltGr as Ctrl+Alt.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L900-L907",
- "version": "repo-lines-v1:sha256:a7e4215d1055bcf132d529dd3c057ef20525fbb22d5a1301c6980d41107b5124:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzllOWIxZTI5MGI4MzMyZDI5YTMwZjc1N2JjN2E3N2ZlYjZmMjAxYjNjMmM5M2ZiNTQ4MDU1YTFhODVmN2MyZSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiMzVmNmY0NjZlNTljZmMzMDcwM2M0NWY3MmFmNjVkZTU0YWMzNjNkMzU0Y2MxYTMzMzAzNTBhY2Q0NTI0MzRjNCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiN2JjOThkNmIwZGM0OTJjNTAxNmRmMTA4MDVhM2E1NGViOWMxODRhNWE2MTM3ZTdmNGJlY2ZhMGMyMjA1NTBkMCJ9"
- }
- ]
- },
- {
- "id": "claim_bc67b9414f7d4100abf86082fa0b5681",
- "statement": "start_reply records the reply in the gate and loads the AI context with History::messages_since from context_start(now), limited to CONTEXT_MESSAGES.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L403-L416",
- "version": "repo-lines-v1:sha256:b986ffa888b04f80920f0e7ee6c1fe15e171ea20ddac89ac45271c5446b2a64e:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjRiYmM5MGM3NmFlZGUwNzkzNzVkMjliNGZiMjRlMWMyMzg3ZTc0ODE2NzkyMzM2ODk5ZTE0NTA2OGExMDYyZjIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhiZTI4OTVhNzFkYmI4ODUzNDMxYjIwZDI1ZDI4YWQ3ZDk5ZjUxYWEzOWYyOGIyNWIxMzY4ZjdmMTMyNzMxMGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjA2ZWViM2RhYjZhYTAxODdiMjY5ZjlmNGY1NjUyODE3ZTljNDE0ZTQzZjQ1Nzc5OWY4YWJlMjliMjhiM2IzZmQifQ"
- }
- ]
- },
- {
- "id": "claim_0a16da9dd5e942eb89a106629e24f51d",
- "statement": "maybe_autoreply replies when ReplyGate::should_reply allows it, otherwise when deferral_due returns a due time it marks the chat pending and spawns a timer that emits CooldownElapsed.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L293-L315",
- "version": "repo-lines-v1:sha256:57adb3d4114db569659ff9158f1f43222176ba6d001e8ae090c43d5168f42f80:eyJzZWxlY3RlZExpbmVDb3VudCI6MjMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViZGJkZDZkZGVmMDM5YTViMmI1YTIxZGUxMzliZjllODRmM2JhNDU4YThjZWY0ZTQzOGRiNjQ3M2EzODliODIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjMwZmQ1Yjc2YTk4ZDRmMjZhODFiMWVjYjkyNjFkMDQzNjJkYTg2NDhhNzMzMGFjNmJjNTVkZmFiOTFmZmY4MmEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk0NDE2M2IzN2JlYTdlZjFjNmJiMDZkODAzMTQxOGRmZjZjNTBlNjgzMmUyMWVkZTI2ZjlhN2VjODA5MDlhMTIifQ"
- },
- {
- "resource": "repo://src/app.rs#L749-L755",
- "version": "repo-lines-v1:sha256:184085a61638b88a75f3e4c9a0f6423a3e374b61c7950b7a40df4b0897a7c86b:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiN2ZjOGY0YmMzMjEzMzJiNTA5NzlhYTdlYWM3MmNjNTIzM2E5Y2U4ZmY0NzlkMThlYTM5MjFkNzUxNzc1NDE3YSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYTQxZTYwMjlhYjc2NTVlMjZkNzIzZWNlMGM4ZTdhNjQyYTc0NmI4NDcxYTcwYmNlOWEwOTg2MTM0ODUxZDM4ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDVkMmViYWNlOGUxMTQ2MDNlNjJkNzViNWY2ZGM4MWMzMmIzODMyYjhiMGIwZTNkNWFkNjQ5MzIwNDhhNmQzOCJ9"
- }
- ]
- },
- {
- "id": "claim_817155a979284282b5a78c3baad994c8",
- "statement": "handle_cooldown_elapsed sends one text-only reply only if take_pending reports the chat still pending and autoreply is still enabled.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L324-L332",
- "version": "repo-lines-v1:sha256:a4475810b1467d78edffc4a5b107f814025267f0c2d097968035ddcaa3012ed5:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTFjZDQ1NGRkNWMwMzdlZTZiYjUwMWY2ZWFjZDgwZjZmNTE3ODNjY2NiZWE0M2Y5ZGM5Zjc4ZjllNmQ5YTc1NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDg5M2Y0MGUzNzgxZWI4OTZjODJkMDQ2YTA4MDY3YTExZTM1Y2RmMmYxZGZhZjI2ZmVhOTBiOGRiNjY3NjQxMyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNTkyYTVhYjhhOTUxZTJkNDU0OWI4MzFmYmMxMGFjODE2Mzk1NmJmODUxNjRjNGQyOTYxOTkwZjcyOGExMDE5MSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjIwZTI2OTMzMWFlNTY1MmJhMzE1ZWJhN2ZjNGU1YzE1YWE0OWEzN2IyMTY0Zjc2NGViY2JhMDU4MTlkYzI0MCJ9"
- }
- ]
- },
- {
- "id": "claim_c8b0ab491aad4ebf91a3b7e090cdbe2b",
- "statement": "The startup catch-up runs once per process on OfflineSyncCompleted, replies text-only to each autoreply-enabled chat whose last message passes ReplyGate::catch_up_due within catch_up_seconds, and sets the status 'Risposte di recupero: N' when N > 0.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L338-L387",
- "version": "repo-lines-v1:sha256:ba349479d65e8ca378f4a5e50a3d605adfb0c2b7af38e5afbaf4b5c1d6ebfc55:eyJzZWxlY3RlZExpbmVDb3VudCI6NTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJiYWY4NjRiNzJmMjM1YjJhNzAxNzllOWRiZTlkYTg1ZmY0NWM1OTg4YjY1MTUzNmQyYjNmMDM0MzRkMTA3YjgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJkOWY0YzAxNDlmZTYwZWNjMDY0NDU2Y2VhNTgwNWIyMmI4YjgzZTljYzY0YzVmZTc3YzhjZDNjMzQ5ODg1OWMiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OTU5NGE5NzIzN2Y2NjVkMmU0Y2RhMTIyZmY1NTIyNzJjMjVmZTFhMTI0NmZjMGNkNjllMDQ4MjE2ZTNlYWMifQ"
- }
- ]
- }
- ],
- "verification": {
- "by": "openwiki/0.7.2",
- "at": "2026-10-19T19:53:56.480Z"
- }
- }
|