{ "schemaVersion": 1, "pageVersion": "sha256:fb61743878eebfa7a936223b03e0c9a3d4247468218b42035889a35e1283bc0a", "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#L397-L436", "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#L442-L463", "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#L470-L483", "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#L489-L499", "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#L530-L541", "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#L732-L743", "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#L369-L394", "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#L334-L367", "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" } ] } ], "verification": { "by": "openwiki/0.7.2", "at": "2026-10-21T21:49:12.291Z" } }