| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- {
- "schemaVersion": 1,
- "pageVersion": "sha256:9d1f1a31451538c0c3bbc043ab35ce90cbffd32e26263470d8b43f7dc2486279",
- "claims": [
- {
- "id": "claim_3afb8d7c0dbf446090433a98b74ad2e5",
- "statement": "History::open creates missing parent directories, opens the SQLite file and applies the schema.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L67-L100",
- "version": "repo-lines-v1:sha256:43f65e608bb68aead3f44bea548e6e7b8169cd5274874c39a748cec236b2373e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImVmODI1MzY0MWU3OWEzYzQyOTk5MDgzODFhZGQxMDhhYTE4OWJkMTI1YTVhYWE0MGMyMTk3NDgxZjNlOTRhNTciLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjBmNzY3M2M5ZTc2ODA2MmJjOTM3MmNlZGQwM2JiYjJiYmQ5ODcxMjEzZWVjNTc2MDA0MjcyM2U1M2E1NTMzZTkiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlmZTMxZjY0OWZmMjg3ZDhhMzU3ODI3MzJmNDQ3MjgyOWVjZTdkZmUyZGIyMDc1MmY3M2M0Y2JkMDBjNjczZDIifQ"
- }
- ]
- },
- {
- "id": "claim_f1b5347b6c074646bf967856b976ca8c",
- "statement": "The schema defines messages, chats, contacts, settings and image_descriptions tables plus an index on messages(chat_jid, timestamp) using CREATE IF NOT EXISTS, with no migrations.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L411-L450",
- "version": "repo-lines-v1:sha256:3c733d522843b98c851557c73e574046d7229aecf27eb5d391e341f2d18e015c:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg2MTQ5Yjg1MjZhMTc4ZjhmMzMzNTViZjU1MmMxNjJlYzdiZDRhNTQyNjk2MzhmNzlhOTkwODIzNzg1YjM5NWYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzNWM0OWE4ZjYxOTQzMjJkOTYwYTAwZjQwNzA2ZDJkODAzMTE2NDRkNmZmZDhmZWJlNmZjZWIyN2EyZDhkZjYifQ"
- }
- ]
- },
- {
- "id": "claim_2475975236b94cb4ace4ac11cc0aad54",
- "statement": "save_message inserts with INSERT OR IGNORE keyed by message_id and upserts the chat only for new messages, in one transaction, returning whether the message was new.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L107-L118",
- "version": "repo-lines-v1:sha256:598d40867f709e3d9ec09cccd1e752c4ba2ae078a93b814058400d12451c022f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjY2YyOTI3M2ZhMDRlMTFmMTY4ODliZTBiYWY2ZDg1MjdjN2Y1ZGNmY2VjMGVhMmZmNmU3NmViNDA1MGVhZTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImYzMWE1ZDk2MDM0YzIyMWYyMWVkZTQyYTlkOWM3ODgwMjQxZTI2YzJjMzQxOWQ4Y2M4MmNiM2JiMjdjNWJhY2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImQxZmRlNjg0N2FkMzhlOWUyYjA1ZjdmYTRiNDUzOTY2YzE2NjRkNmJmYTExMDJmY2YyYzJiOWNjNDM5MGQ1OTUifQ"
- },
- {
- "resource": "repo://src/history.rs#L456-L477",
- "version": "repo-lines-v1:sha256:c8657638062a2f1c8faa48bb2091b77a95206c5c18fb7f83ad66ee472be3b0cc:eyJzZWxlY3RlZExpbmVDb3VudCI6MjIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjgwYzA2MDFlNTlmNWFmYmUyODNlZjFmYzQxNjFlYjJmOGE1MGMwNGEzZjEzODY1N2NkMTIzOWMxYmQ4MWJjZGIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhODg5OGI0M2QxZDJjNzcwOTgxMzgwNTc4Yjg1N2E3OTY3MzAxMmY4ZGFlYmYyYmIzMTkzNTk5MDg5OWNkZTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjViNmM5OWZlNDhhNTllM2Q4NzBhODg1YjNlYzIzZDIyNGNlYmE0Njg5MTZiMzhiOWQ5OTEwZjAwOWQzZDRjNTEifQ"
- }
- ]
- },
- {
- "id": "claim_bafe577d51c0463fb3dbfcc97a6c221e",
- "statement": "The chat upsert keeps the maximum last_timestamp and only sets the name when the chat has no non-empty name.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L484-L497",
- "version": "repo-lines-v1:sha256:6acfe5aab3d7f5a481c785e16736ae25b7d72275d885003104132702619fa2c1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImFlMjhiYjUwNmYwZTUwYzIxZDU0Y2ZhNWJhNTBhZDA2MzBkNDYxODJlNzUwN2U4ZDcxNzMwM2YzM2UzODBlNTkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM5MzAwMTI1YjUzZjIyNWI5MTFmNjc3YmFjZWM4MWM2MmIwMzAyZjg2NWJkN2NhNTAyYmNmNTZhN2UzYjdkOGYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgxZWMzYmUyNjA1OTc3Njk1OWJlMTExMjVhN2JkNDUzNmMxZTk2MTRiZDlkMjhkZmU5NThmOTZlM2Y4YTI1NGMifQ"
- }
- ]
- },
- {
- "id": "claim_bca92f868687480c9f642dfd8af67e33",
- "statement": "Only the trimmed non-blank push name of incoming messages can name a chat.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L503-L513",
- "version": "repo-lines-v1:sha256:0b03e9dc798065c6f1704fcb1a70ba4927bcb0ef47900c115b45a6cca449bfaf:eyJzZWxlY3RlZExpbmVDb3VudCI6MTEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImMwOTZhZGVlYmNmNjA0ZWMzMTNlMTJkOTI4ODk0NGE4OTZkYmJhZWRlZDJkMzdmZmFjYzFmOTRjMzc4MjVjYWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhhN2NlZDc2NTcxNDVkZjIyMjc1ZDI4Zjc0NGI5Mjg1YWVmYzU2NmE5NjZjNjhjYzVhYjQ4YjgwZGQwZDgxYjAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlhZDRhMTk0MTFmMjVhNWNjOWFmOTAzNWNhMmQ2MmY5ZjdmMzViOWIzYTJmZWJlNDczY2JiZDRmOTNlZTEwYWEifQ"
- }
- ]
- },
- {
- "id": "claim_7fb47c2acdc84d76b88fdf8a279133f0",
- "statement": "recent_messages returns the latest messages up to the limit in ascending timestamp order.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L124-L142",
- "version": "repo-lines-v1:sha256:ae0fb8914ec3b6efd265ce9615d6c692fb12c57e2d724423247cb5d9f7780159:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA2NTI5NjE3OGQwMTk0ZTc4MmI1ZWM1ZTY5NTZkMTY5YzBkNjA3ZTBmN2UxOGE2ZjE1MWUxNmQ1Y2U1NGFjZmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImVjMzAxNGZjZDcxYmQ4ZDRhNzE5ZWFlNTgyZDM3ZDQ0Nzk0ZTBmNzFkNmE5YjM3Yjc1MTFlMWMyZmUzYTU4MTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZWMyZTE2YzJiYmJhOWFmMmQyMGY4MTcyNTJhZmQ3ZDdiYWRhZjgwYTM0YTcwYWE3N2Y0YzM5NzQxNzFhNzYifQ"
- }
- ]
- },
- {
- "id": "claim_8625004e2cf54a8cab46ebb64c0ada4a",
- "statement": "list_chats orders chats by last_timestamp descending and names them by contact name, chat name or JID user part.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L175-L191",
- "version": "repo-lines-v1:sha256:21c241cfd2393adfe0d73994422db78368373279b5a142e4604f76c30b8092c6:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImViODI2ZTYxYWIwODc5YTZkZGEzYTVhZWYyNTc4NTEyZGMzNzYyMjA0ZjcyNDc5NzI3MWVhMDI1YzFlMWI2NjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFlNjMxYmYzODIyNWIyNzIzNWJjOTE2NTg0YjEzNWMwZjZkNWY3NjQzYzYzZDVkMTU3NzYyODM1NjdjMTRiNTIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdhYWZlOThkYmNlMTM2NmMxYmU4OTdkZjk0MmE3NzFmZDI0YzQzODE1Nzc3ZDUzZTAzNjgzYmEyYTk4Zjk3N2UifQ"
- },
- {
- "resource": "repo://src/history.rs#L544-L555",
- "version": "repo-lines-v1:sha256:65dc24e0ca6d8e29340e1116eab12f58e8fd73c4ed13f85023a071ca22aacfac:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImZhMDdjZTgwZGE1NThjZWQxZDcxMjdiMjIzN2U0OWVmOTQ5OGNmYTA1OGNjNDZmMzY0NzdhNDcxM2ExNDljZGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg2NTQ5MzhhNmY0OTljMDQ1ZjcyY2ZkNzNhNDNkMmExZWQ4MjhiZTk3YjI2ZTc1OWY1ZTQ3YjQ2MzllNzcwY2YiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiYzk4ZDZiMGRjNDkyYzUwMTZkZjEwODA1YTNhNTRlYjljMTg0YTVhNjEzN2U3ZjRiZWNmYTBjMjIwNTUwZDAifQ"
- }
- ]
- },
- {
- "id": "claim_964bf1e009a647fc934ee47de064d8c8",
- "statement": "list_contacts orders by name case-insensitively and upsert_contact ignores blank names.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L197-L236",
- "version": "repo-lines-v1:sha256:1ff51b6f0919932929d0afd41b6744292e7b841e616f004b76cfa3d7250bacf2:eyJzZWxlY3RlZExpbmVDb3VudCI6NDAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNmMjc0NmNmOTY0YmJjYjA0YjdjM2M3ZmY4NTY5NmQ2YjNmZmUxNzMzZTkxOTQ5YjVkOGZmNDE1NmUwY2JhMTAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjkwZDU5NDJlMDYzYTE4ZDFiOTNjOTU5YWU1YzMwZDJiYTMzNmE4NzM3NjNhZjUyMmM3NmFiNzJhMWVmNTkwNTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQxNTZlNzZjODk5MjcxYzEyYzljMTY1MTg5ZmNhMGJiODI2MzJhZjBlMmM5YzA5Y2MwYjkwMDQ2NDEwNjEwYmYifQ"
- }
- ]
- },
- {
- "id": "claim_5697810b4a584bbcb2453ed98a56e27d",
- "statement": "display_name resolves contact name, then chat name, then the JID user part.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L242-L253",
- "version": "repo-lines-v1:sha256:e0059167165c59201523d30ec94c3c3e391b151fa8043b42c1010cc0f2e31c99:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYyMjExZTkxNDI1Y2FlNjdlNjhiODUyN2FkMjg1OTJjNjE5NzQ3NWVmNjY0MzllYmQzYTUwMjAzNzk4NzMzOTQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjEzOWRiMDQ5N2ZjZjUyNTVhYTJkYThhZTg0MzYyNzY3MmNhYWUwMzYyMDc3ODIzZjNiMDA5ODQ2MzMyYjRjMTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjM1NGY2MzVmNzkyYWYxZDQ3ZTlkODM5OWY4OGFmYjkxMjgwZGMwZmFjYjVhNDc2OGYxYTc2OWEwOWVlYTg0MDUifQ"
- }
- ]
- },
- {
- "id": "claim_7c7b84370ef94ca885a5a67cb28258bc",
- "statement": "set_autoreply upserts the chat row and is_autoreply defaults to false for unknown chats.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L259-L285",
- "version": "repo-lines-v1:sha256:956f230dd6020d91e8b2d7d137d9fa4fa04d0a316c598d90f38729025889cd02:eyJzZWxlY3RlZExpbmVDb3VudCI6MjcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNkMDNkMmIyZWM0M2RjMGIxYjg3NDg1MjQyNDRmZDc3ODVlNzcwZWJkNGJmZjBhZTUxODc5MjM1ZTFjZjM4OGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjQ3NzVhZDM0NjMyYTRjYjNmZjQ4NjA5Zjk2NWI4OTY3NDFmNTIzYjNkODY1Y2FiODQyZTgzZTI0YTZhOGQ3M2IiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWNiYWUyM2ZlZTE0ZTViOWIzNWQ0NDcwNmFmOGQ1OWY1NWQyOWIwNzYzNjU4ZjI4YjIzNjZkNWUzNWM5Y2UifQ"
- }
- ]
- },
- {
- "id": "claim_933775dca11c4c7f91c5349e4f8a2cf4",
- "statement": "History::messages_since returns up to limit most recent messages of a chat with timestamp >= since (inclusive), in ascending timestamp order.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L144-L168",
- "version": "repo-lines-v1:sha256:6daa209756bdfb87ba10954b88d7b52b35ee2212dc1328db974b019c47aab510:eyJzZWxlY3RlZExpbmVDb3VudCI6MjUsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRiNWUzOWMyMzYyNTg2NWE5NGNiY2ZlMTVhMDNkNThiYTZkZDY3YTkxNWE4OGJjNzdiMjBkOTc1NTlmMjU2NGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjAzODg4YWU3MTJlMTVmZTE3NTYzNDgzMWQ4ZTcwYWZkYWEwMTMxZGI2ZDAxZWZkNzExZjQ1NmFkNThjZmExNjUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjhlZWMyZTE2YzJiYmJhOWFmMmQyMGY4MTcyNTJhZmQ3ZDdiYWRhZjgwYTM0YTcwYWE3N2Y0YzM5NzQxNzFhNzYifQ"
- }
- ]
- },
- {
- "id": "claim_89c1cb5b384e4710bb7b86feb0901cfb",
- "statement": "The global autoreply flag is stored as the global_autoreply row of the settings table, defaults to false when never set, and is independent of the per-chat autoreply flags.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L20-L23",
- "version": "repo-lines-v1:sha256:fb1e0c7f933e63c16b33cec6c6d4ababced3866d36d400b459bc168ff203aab4:eyJzZWxlY3RlZExpbmVDb3VudCI6NCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzgyOGY3ZjM1MjgwY2ZjMDUzOGY5NmMwNmMxNzczZGIyODVhNTdjOWNhMWM2MDYyZjljYmU5MjEzMzA1Yzg3MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiODliZTkwZWUzOWU5M2U0N2MzOWRkMTg5NTY0NzNlYTkzZjkxY2MyZjVlNjdlM2Y1MTZlYTZlZTc2NjBjYWE3ZCIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYjhjNjIyOGY4NDg1ZWFkNTEwZjNjYTEwZGM1YzRhOGE5Zjg5ZTU5MzY4YTJlNjEwZTUyMDY0ODlmMjMzY2MxYiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWRhNzYxMjkwMjY1MmNkNzBlZmVjZWE4MWJhN2NhMjM5Y2NmZjViMjAzN2M2NjQyZDUzZjM5YjVlZDVmMTViNSJ9"
- },
- {
- "resource": "repo://src/history.rs#L287-L317",
- "version": "repo-lines-v1:sha256:7446cd3d43ecedda818c27075602eb8b9f1b3ef669ea39edf3a6c5520cc4bec3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzEsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE2OTlhMTQ5OTg2YzgxZjQ4OGYwMjQxMmU4Zjk0YjE1NjdhNWQ2OTEzZTNiYTg0NjJlMmFmYzY5NDJkYWYxMTMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRjZTNjZDVlMGE4OTI3NjIwMWQ2ZWU2OWE2ZGM4ZTEyMzgxNDVmMzEyYmE2ODQxZjUzMGYzNDQ0MmU0Njc2NjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4NTAwNmMxYjY0YjM5MzI5ZWZhMmUxZmU2YTEwMWRiYzg0MTIzYjkxNjkyYjM1MjhjOTg4YzhhOGVmNGRjY2QifQ"
- },
- {
- "resource": "repo://src/history.rs#L746-L757",
- "version": "repo-lines-v1:sha256:a3499b20fe534b6969c5dd2ce949d44f4ccf9e144ef0dc6beff4386a09b24b59:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjdmNTE1NGVmMDNiMmZjYTVjNzk0NTNlZDVjNGIxYjI2MzllMDVhNDM0Y2U1Y2YzM2RiYjM0NTIwZDA0OGJiMmYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjAxYmE0NzE5YzgwYjZmZTkxMWIwOTFhN2MwNTEyNGI2NGVlZWNlOTY0ZTA5YzA1OGVmOGY5ODA1ZGFjYTU0NmIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImEwMGRiMDQwZjI5MDliZjk3OGZmMGE5NTZhNTVlODNjNjUzNDE4ZGU2YmI2OGY4MDQxZGE5NzZmOGQzZDIyNzAiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImE4ZTcyMmMzMzU5NWJkZDhiNWE3YTI0YTdlM2ZlYmQxMzFjNzA5NTYyMGQ0NTllMWFjZDg4MWYzOWIzNWEzZGQifQ"
- }
- ]
- },
- {
- "id": "claim_90e7318d49a04a75a346fa0021f65ba4",
- "statement": "delete_chat atomically removes a chat's messages, their image descriptions and its chats row (including its autoreply flag) while keeping the contact and other chats.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L383-L408",
- "version": "repo-lines-v1:sha256:c4f4b4352468ac2099f49717f06a98ea40bab4d5c62a4158e04234c744610ee6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMTFhNTg0ZDdhNWU5N2U1ZmY4NmU3MzY5ZDBkMzdhNGYxZjlmZjBlYzRlMzk5OWEyZWRkYTc2MDMyNTQwMGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNlMjRjZDNlMGNmY2Y4OGRmMGJmNGU1YjRjYzY0MzdiODBhMjAyYjEwNzk5Y2JjNTMyNzBjY2ZlMGRjNDk5MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWNiYWUyM2ZlZTE0ZTViOWIzNWQ0NDcwNmFmOGQ1OWY1NWQyOWIwNzYzNjU4ZjI4YjIzNjZkNWUzNWM5Y2UifQ"
- }
- ]
- },
- {
- "id": "claim_ad763485a3d74d7a82a1b9d59673d77e",
- "statement": "save_image_description upserts one description per message id (a new one replaces the old) and image_descriptions returns the descriptions of one chat keyed by message id.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L348-L381",
- "version": "repo-lines-v1:sha256:63f7062cc95232bf44796ae0a8c94de3eb0412d9afad7f881a13da1e20f1c794:eyJzZWxlY3RlZExpbmVDb3VudCI6MzQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjMwMjkwMTRkZWU5ZjY3MjRkMDM1MGYyZGRkYWU4YWE2MjYwODI3ZjdkNTc0NTc1OTBlMzQzOTFiYTRlOTMyNWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhYWFmOTZhMzJlYWM3NDA3ZjM4NGI3MzBkM2ExYzU0NDhjMjhiMTEzNmU3NDc1NWE4YWY2ZWNiMGQwNDE5MDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijk4NTAwNmMxYjY0YjM5MzI5ZWZhMmUxZmU2YTEwMWRiYzg0MTIzYjkxNjkyYjM1MjhjOTg4YzhhOGVmNGRjY2QifQ"
- }
- ]
- },
- {
- "id": "claim_6f226f295465444baf3b62864b0eb9dd",
- "statement": "message_exists tells whether a message id is stored in the messages table.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L319-L332",
- "version": "repo-lines-v1:sha256:630d929422a0e6baf9ec9733842246510670f4cbd13a1a58e80d87fb8815c590:eyJzZWxlY3RlZExpbmVDb3VudCI6MTQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRmYWFhMjFhYzg3YThjYTczYzk4NDc5YjUzNTQ1MDc5M2U5MmU3MmE3ODg3ZmU5YjBmNmYwNWFiNzFmNDBlMGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImY5OTM0OWRjNmNiNTFlOWIwMzQxMTdiZjQxMzkzZDE5YzQzMGM3NTNmZDcxZWZmZmZjZmQzYmIzOGFhNjU0ZmYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlhNjc2ZmQ2MzliOTMyOTliYTFhMzBlY2QyM2NiMDQ1Yzg3OTBlMDc1OTAyNDRkNjY0ZjU0NTQ2MWIxMTc0ZDAifQ"
- }
- ]
- },
- {
- "id": "claim_b381aec92a7146d19eabb8b2c887026d",
- "statement": "update_message_text is the only method that rewrites the body of an already stored message: the insert is INSERT OR IGNORE and no other statement updates messages.text. It sets only the text column, is not scoped by chat or sender, and returns true when a row matched the id and false when the id is not stored (nothing written).",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L334-L346",
- "version": "repo-lines-v1:sha256:7158060f4184225f939b1e15e679939dd96cb0e27d2a091e5a93f04a109ddcca:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImIxOTE0MGNlZWY0NWM2ODc5MTcwOTIxNGM1ZmJmZmQ2YTc4Mjg1OTM3MjJhMzRhODkwYWEwODdkZTA1ODhkNzMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjJhYWFmOTZhMzJlYWM3NDA3ZjM4NGI3MzBkM2ExYzU0NDhjMjhiMTEzNmU3NDc1NWE4YWY2ZWNiMGQwNDE5MDciLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjlhNjc2ZmQ2MzliOTMyOTliYTFhMzBlY2QyM2NiMDQ1Yzg3OTBlMDc1OTAyNDRkNjY0ZjU0NTQ2MWIxMTc0ZDAifQ"
- },
- {
- "resource": "repo://src/history.rs#L452-L497",
- "version": "repo-lines-v1:sha256:2e34a474c156436f62541cf1f20071ce0ca2a9727793c2f9d871ff9ec1373f91:eyJzZWxlY3RlZExpbmVDb3VudCI6NDYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjA5ODE1MjViOTE3ZTllNWMwOGI0ZDcyODU1M2FiN2IxYjhmZDFlNjhjMDBjNGEyMGVlODQxMDRiZmM3NTVhZWUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImU5NmY4Y2IwODNmYTgwMGE0ZGNkMjk2OTcyMmQ3YjkyNjg2YWRkOWViZTM2NTU0OTJmYTY3MmIxYTdjZWQyNDIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjgxZWMzYmUyNjA1OTc3Njk1OWJlMTExMjVhN2JkNDUzNmMxZTk2MTRiZDlkMjhkZmU5NThmOTZlM2Y4YTI1NGMifQ"
- }
- ]
- },
- {
- "id": "claim_c5480b9d9c0d40f99c98c46e354c2f61",
- "statement": "The transcription step of the AI autoreply calls update_message_text to overwrite a voice note's body with `[messaggio vocale] <transcription>` (VOICE_NOTE_TEXT, a deliberate duplicate of whatsapp.rs's private voice placeholder), guarded by message_exists and discarding the returned flag; the previous body was exactly the placeholder, so the placeholder is re-created as a prefix rather than appended to arbitrary text.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L36-L41",
- "version": "repo-lines-v1:sha256:9fa73b08edeb6e3bc3d3d40b114c9c25dac41393f654aef4f34b25bf000b64f1:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYWM4OTZiNjcxOWM0NWUwNjBiYzYxYjc2OTVlNWM3NjY5MDAxMGJhYWY5MjUxNTdjZGRmNzkyMzljYmJmYjBmMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjQ5M2E2NjFmZWY4MzY3ODU3YWJkODk4ZWY5YjAxZWYyMmY2ZDg0MjlhOWEyNGI3MjRjY2Y1ZTZjNDEzNTc2MyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZDM0MjI5OTEyYzRlYzAxNjlhMzMyOThiMTE1ZGI1ZWVmY2E4YjJjYmIwOWM1ZGVkOGZiZTZjNjVjOTdkOGRmYyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMjgxYzllMDA4NDg0YjQyMjE2ZmEyYTU5NjFkZjIwMzdhZjIyY2ZmODMwNWEyYWM5YzQzOTU1MWVjN2U5NDgwOCJ9"
- },
- {
- "resource": "repo://src/app.rs#L784-L801",
- "version": "repo-lines-v1:sha256:57ac76a55fce9ecc1f533f616fb4cdfc01c0da29873e427e3184c6d9dc184a58:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImJkYmFiZjFkNjI2OTdjZWE2NTk5ZWQyNjg5MDQzY2RhYzAyOWUxMWQ3NWIwY2U4MTRlYWVkNzhjZTk2Zjg5ZGMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImU2YjA0NDkxNDY5NzIyZTgzNjNhOTRlNDA0NDUzOGUwMTNhMmEyMTdlMzZiMWU1NjhiYTYwYWNiN2I0YzhmMmUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiOWQxNjk5ZDM4YTRkZDQ3ZjgxMGFmMDViYTIzZTM2N2NiNTE5NzljODAxM2Q3YTZmYWQyYjAzY2Q0MzA0MTEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdkNGY3ZDhmNzA1MzNkMmM0NTJkYzMwZTM1NzY1OTM2ZWE2NzkwMDIyODlmNTljOWQzMDU4ODc0ZjdjYjM1MDYifQ"
- },
- {
- "resource": "repo://src/whatsapp.rs#L45-L46",
- "version": "repo-lines-v1:sha256:3474d614982a770557cfcfc53711175e69a7c9841bfebcf210f0643f00ff9581:eyJzZWxlY3RlZExpbmVDb3VudCI6MiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMTU4MDBhYzJkZDhhYmM0NmUwNjVhMGY3Y2ZkOGMzNWYxZDRjMGUwYTBlNzNiZDc1MmY4NDRlZDVhMWY2MGU3MCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZjhlYjE3YjM5MDA1ZjBmMTU4MDZhOTg0NzBjOWE3NmUwOTZhMDFhMWI2NDJjY2UyZGRhMjA4M2E3YWQxYTExNyIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZjExNmYzOTNiOTcyNzBhZmRjYzA1NTY1YWU1M2U3ZjU3YWNhMjQyM2I3ZGE3MzYxYjcxZjkzYWQyZWRlMzJlNiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYTMzZTY3ODlmYzBiYmYxNjczODJjNzljNTE3ZGFhZGEyYTk2ZDY1NWRmMDRiZmI3YTg5N2IyZTI0NDA0NjA0MiJ9"
- }
- ]
- },
- {
- "id": "claim_0098ddf4255a482ba979394ac3011f5d",
- "statement": "Transcription text is stored only inside messages.text: the store has no transcription column or table, so deleting a chat (which deletes its messages by chat_jid) also discards all of its transcripts and the placeholder prefix is the only marker that the audio was transcribed.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L792-L797",
- "version": "repo-lines-v1:sha256:9898eb8c9ec5fb7d3f4d48e6202a56aa5d8b21ac027749c821a8fc49e1a2b229:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYTYwNzU3ZTQwZGI3ZTJjZDBiYzFkMzM3OTkwMmVhMjNjMGI2YzBhNGEwMDI4ZTg4ODU2YTBmOGIxYjI1YzI0NCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMGM2NDc5Y2MyMzA0NDBmZDQxZTgyMjQyMTg2Nzk2OTg1NTlkMjg5M2JkNjdiNDM4MGFmYWI4MTFiMzhhNTVhYSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNjBkYTQzMWQ5MmZlYjM0NGEzYmEwZDhkYWQ4YzMyMjIzY2I4OGUxZTQ3MmIxZDYyZmU1MTkzN2E2ZmZhMmNhOSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzU3NGNlM2NlN2MyMzQ3NWQxNGY5ZjkwZWQ4Zjg5ODczMmM3ZTAyOGVkNDJmNjg1ZTAyYmU4ZThhM2UwMTUxYyJ9"
- },
- {
- "resource": "repo://src/history.rs#L383-L408",
- "version": "repo-lines-v1:sha256:c4f4b4352468ac2099f49717f06a98ea40bab4d5c62a4158e04234c744610ee6:eyJzZWxlY3RlZExpbmVDb3VudCI6MjYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImNkMTFhNTg0ZDdhNWU5N2U1ZmY4NmU3MzY5ZDBkMzdhNGYxZjlmZjBlYzRlMzk5OWEyZWRkYTc2MDMyNTQwMGYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNlMjRjZDNlMGNmY2Y4OGRmMGJmNGU1YjRjYzY0MzdiODBhMjAyYjEwNzk5Y2JjNTMyNzBjY2ZlMGRjNDk5MjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWNiYWUyM2ZlZTE0ZTViOWIzNWQ0NDcwNmFmOGQ1OWY1NWQyOWIwNzYzNjU4ZjI4YjIzNjZkNWUzNWM5Y2UifQ"
- },
- {
- "resource": "repo://src/history.rs#L415-L450",
- "version": "repo-lines-v1:sha256:4ca7d34e842380ce2a5c1e60682b5710227d931679cb8406ec990fb6e5dadec8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVmNWI1MzQ2N2IzY2RmMTYxNjU0Y2U2YWEwNmNiYzkzNjlhOTNhM2ZhZDg2OTBkMWUxZWY3OWI5NWY0Mzk1NDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlMTEzNDZmMmE0ZDdkYmU3ZjE4ODhkZGJjMzViZjQyYWIxN2M0ZmFlZTkyOWUwZDY2Mjc0NWEyMWI4Mjc2NmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzNWM0OWE4ZjYxOTQzMjJkOTYwYTAwZjQwNzA2ZDJkODAzMTE2NDRkNmZmZDhmZWJlNmZjZWIyN2EyZDhkZjYifQ"
- }
- ]
- },
- {
- "id": "claim_0ab1354c4aa943baa68a49d9c264f443",
- "statement": "is_voice_note is true only when the trimmed text equals `[messaggio vocale]` exactly, so a stored transcription no longer matches it; audios_to_transcribe relies on this to treat a message as already transcribed (each audio is transcribed once even though nothing else records it) and src/autoreply.rs passes the stored text to the model instead of its cannot-listen sentinel once a transcription exists.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L900-L918",
- "version": "repo-lines-v1:sha256:aca8ef54d074bdd9a35c6228ea67532c04a9bf55079ae6ed368a56dfc7f87db1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjI3MGQwY2JkODBmOGZhNDZkN2EzOGQxNDMyMzZjODMzYmViZGE4Mzg2ZGNmZTFkZTBjYmNjNWM2M2IzNGE1MzQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjRiNDI5OGJkNmI1YjQyZmVjNDI0NDIxMjBlNTkzZjAxZDFiYTU0YmFhODg2NTUwMzE0MWE0YmQxYmViNjQxZjgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjIyMGUyNjkzMzFhZTU2NTJiYTMxNWViYTdmYzRlNWMxNWFhNDlhMzdiMjE2NGY3NjRlYmNiYTA1ODE5ZGMyNDAifQ"
- },
- {
- "resource": "repo://src/autoreply.rs#L364-L379",
- "version": "repo-lines-v1:sha256:16e2a124c955fde9bf455d688fa7aa42035a5fed15752ff59f0e5b47682c1dda:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQyMWNlZTczZDBjMDU5ZmU1YjQ1MDVlMmJmMmY5OGE2OGMwY2Y4ZWJmNWI5Y2Q1MTAzNGY0ZTZhZTJkNWQyMGEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjQwNWQ4YWU3NjdiNjQ4YzZmM2Y4ODE1ZDZjODQ1MjFiOTQ5MWVmZTEyNmRiYTVmZjU0MWIyMmJjNWY3YjllNWQifQ"
- },
- {
- "resource": "repo://src/whatsapp.rs#L1174-L1181",
- "version": "repo-lines-v1:sha256:56200a5278b4431e6444218582169aabd8d4b1d57de764de0856dc98838c94d1:eyJzZWxlY3RlZExpbmVDb3VudCI6OCwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiZDI1MjE2Y2MwNzJmMWZjOGZhNTU5MGQyMjRjMjE5OTI1NTExNDkxMThjYTg1ZTlmODVkNGEwYjA1MjQ0N2IxMCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiN2ViZDBkMDlmODEyZmE0MjI4M2ExZGM5N2Y0MzdmYzQyNmIzZTg5NGI0NWUwMWFjNThjNTM5NTc5YmNhMDQ1ZSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMDdiNDRmYjk0MDJlZDMxOTc3NTA4MTZmZDNmYTg0MWZlM2VkMDNkMzllYWJlOGY3ZjZmOGI5MzgwMTI0NTU2YiJ9"
- }
- ]
- },
- {
- "id": "claim_cacb86b26c5b4183a11194ccca0b5bb1",
- "statement": "The schema declares no foreign keys and no ON DELETE cascades, so referential integrity among messages, image_descriptions and chats is maintained entirely by the store's methods, with delete_chat deleting the child rows explicitly.",
- "evidence": [
- {
- "resource": "repo://src/history.rs#L389-L408",
- "version": "repo-lines-v1:sha256:d484ab395f4a698a496310952b5cc06efa91723fc15452bd89fda7aebb9a4e36:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImE5OGYyMjg4YzNjZTYwMTAzOTI1NmQ0YzdjMDI3ZGJiYTYxODFiNTM5ZmRhZjBlN2NhY2JjMGQ3Mzg3YzgwMjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImM1MzY2ODc3ZDQ3ZGY2Zjg3ZTNmNjk0NDY0YmUxNzdmMjljNTRjNDBhOTc1NDY4NDA1ZTJhMDk4MGRmMmIxY2MiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImYyZWNiYWUyM2ZlZTE0ZTViOWIzNWQ0NDcwNmFmOGQ1OWY1NWQyOWIwNzYzNjU4ZjI4YjIzNjZkNWUzNWM5Y2UifQ"
- },
- {
- "resource": "repo://src/history.rs#L415-L450",
- "version": "repo-lines-v1:sha256:4ca7d34e842380ce2a5c1e60682b5710227d931679cb8406ec990fb6e5dadec8:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjVmNWI1MzQ2N2IzY2RmMTYxNjU0Y2U2YWEwNmNiYzkzNjlhOTNhM2ZhZDg2OTBkMWUxZWY3OWI5NWY0Mzk1NDgiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjdlMTEzNDZmMmE0ZDdkYmU3ZjE4ODhkZGJjMzViZjQyYWIxN2M0ZmFlZTkyOWUwZDY2Mjc0NWEyMWI4Mjc2NmUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEzNWM0OWE4ZjYxOTQzMjJkOTYwYTAwZjQwNzA2ZDJkODAzMTE2NDRkNmZmZDhmZWJlNmZjZWIyN2EyZDhkZjYifQ"
- }
- ]
- },
- {
- "id": "claim_aa83b0cbbe354e229e15875dcc735284",
- "statement": "Because set_autoreply upserts the chats row, enabling the autoreply on a chat that has no messages creates a chats row with last_timestamp 0: the chat appears in the chat list (sorted last, named by the JID user part until a contact or message names it) but the startup catch-up skips it since it has no last message.",
- "evidence": [
- {
- "resource": "repo://src/app.rs#L964-L981",
- "version": "repo-lines-v1:sha256:15f024e6c558596295755f720dfa14a980113d18c386f066c5353019c2917bce:eyJzZWxlY3RlZExpbmVDb3VudCI6MTgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjllZjk3NWI0MzRkMmRhMjhhYWMwZmUwMGVkYjI5MzE4NzY0NzA5OWU0ZmUzOThkNWJlMTI3NTAwMDQzOWY2NmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE2MmVlNTdlNDFhOGMyMGFlMDE2NGRmMjYxNDM5ZGNjNDk5ZDM1MjA4MzQxNTE1MTZkMDQ3ZThkZWFlOGE0NjYiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6Ijc4OTU5NGE5NzIzN2Y2NjVkMmU0Y2RhMTIyZmY1NTIyNzJjMjVmZTFhMTI0NmZjMGNkNjllMDQ4MjE2ZTNlYWMifQ"
- },
- {
- "resource": "repo://src/history.rs#L255-L270",
- "version": "repo-lines-v1:sha256:1f5fe70558e4ea0b095d596aae2cd7786c7e8d94397391cd9cd582e5a4829d6d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU0MTJkMjhkMWQ0ZWFjNjU5YTJhMGU3MGRjNmJhOWMxMjk4MGJmYzg4NDY1N2FkMWM4ODlkZTMzODE4ZDlmNzAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ4OTNmNDBlMzc4MWViODk2YzgyZDA0NmEwODA2N2ExMWUzNWNkZjJmMWRmYWYyNmZlYTkwYjhkYjY2NzY0MTMiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImJhYzU1MzBkMTVhODE0YWY3YTA4ZTYxYjYzMjY1ODQ5MjBmMzQ4ODE3NWFjZmZmMDlhOWVhNjE0ZmM4MmZiZTQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjYyNTBlZmE1NzY2OTg2OTA2MTJhMjQ4YTYzMDNlZDUzOGQ2MTVmYzVkMzEzNTk1OGEwODQzYzEyOGY0OWZiOGIifQ"
- }
- ]
- }
- ],
- "verification": {
- "by": "openwiki/0.7.2",
- "at": "2026-10-24T16:42:08.550Z"
- }
- }
|