runtime-and-event-loop.json 6.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. {
  2. "schemaVersion": 1,
  3. "pageVersion": "sha256:22db76b4da979fa5ba0df1c120527af24b1362163917d9a3f51638841515a120",
  4. "claims": [
  5. {
  6. "id": "claim_a384a56f0ebf4add8c0ab7722b040888",
  7. "statement": "main loads the config, ensures the data dir, opens the history DB, creates AppEvent and WaEvent unbounded channels, starts WhatsApp, spawns the forwarder, builds App, spawns the input thread and runs the TUI.",
  8. "evidence": [
  9. {
  10. "resource": "repo://src/main.rs#L28-L51",
  11. "version": "repo-lines-v1:sha256:a1f78dd345a599ce923351dc782f73a2a62e23022449fe5ca2ec531b7f066305:eyJzZWxlY3RlZExpbmVDb3VudCI6MjQsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExZDA2ZTA0OGNkMjcyNzM4ZDgzN2IwYzBlYzZhYWIwYjAzMTQ1N2U0NzVmZDQ5YWJiY2JhZmM1ZjczYzAyMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjczZTczMWU3YjM0NmQ1YzQyMzJhYzA0ODFlYmY5ZWZhNTgxNTljMTY4ZmFhNTQ4YzYwNDZiODI1Yjg2Y2ZmMDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjcyOGNjMGI0ZGIzNjFhYzMxMDc4YmMxOTZiZDY1MjkxMzVhNmFmYzQ1ZWNhZTkyMWY2MTcxMjI1ZTJmNGNkOTgifQ"
  12. }
  13. ]
  14. },
  15. {
  16. "id": "claim_8eca0eac1bfe4276be6c56202f9efdd7",
  17. "statement": "The WhatsApp forwarder wraps each WaEvent in AppEvent::Wa and stops when a channel side closes.",
  18. "evidence": [
  19. {
  20. "resource": "repo://src/main.rs#L57-L65",
  21. "version": "repo-lines-v1:sha256:6be0244c848e1db9107831f7228801caee72758797c9fa238420d9b550b1aa04:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMDFmYWUxNzcwNWQ2OTQ2NTViZGFlMjdlZTE4ZDA4MDg1ZjdjMzlmZjgyYWEzYjdiZGI0Yjc3ZGUxOTY3MjJjNiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiYzRiMzgyZTY4YzBlZTk1MGMwODdiOTA2YmZmMGJiMTQzNmI1MTFmMGFhZmVkNmFmNmE1YmM0ZTdhMTc5YmJlMCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiYjU5MDFlMDA0ZGRhODVmZTA2ODQ4ZWRiOGQxYjMzZDU1M2ZhYzhmOTIzNmVlMWUyOWRlM2Y0ZTMxZGY1Mzg1OSJ9"
  22. }
  23. ]
  24. },
  25. {
  26. "id": "claim_b0365817200d431ab80d6f5cb929dd25",
  27. "statement": "Terminal input is read on a dedicated OS thread named wh-input; a read error is reported as WaEvent::Error and stops the thread.",
  28. "evidence": [
  29. {
  30. "resource": "repo://src/main.rs#L22-L22",
  31. "version": "repo-lines-v1:sha256:1d14980ebaa2f31e4144fe6b04613dfc3285892428a59dc526be0808a55c1eff:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQxNDk4MGViYWEyZjMxZTQxNDRmZTZiMDQ2MTNkZmMzMjg1ODkyNDI4YTU5ZGM1MjZiZTA4MDhhNTVjMWVmZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQxNDk4MGViYWEyZjMxZTQxNDRmZTZiMDQ2MTNkZmMzMjg1ODkyNDI4YTU5ZGM1MjZiZTA4MDhhNTVjMWVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDZmZmE0OWU5ZTQyNmZkYjkwM2I2ZmIyNjYxZDdjZDEwZmM1OTljMjFjZjg2ZDMzMWFlNjY4NDBhMzUwZGNkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiMzRkZmU0NTZlN2M0YTU3MTBiMzQzZDg2MWFjYTE5YWRmM2I1MDA4MzQ3OGYxMjdiM2QxYTZlNWM0MjNkMDMxNyJ9"
  32. },
  33. {
  34. "resource": "repo://src/main.rs#L71-L102",
  35. "version": "repo-lines-v1:sha256:cf6579340493800af2e3db3ff443a6e706051052b19e599dfa304084d854b29f:eyJzZWxlY3RlZExpbmVDb3VudCI6MzIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhNzdjMDlkNzU5NTU0NWM4Y2M5NGU5YjhlZDg4YzQzYWQ4ZDAyNDAwM2FmYjE5NmFjOWNlOGZlMTMzMjkzNjYiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjhmNWY0NWU2MTAxMTkyODQ5ZGNjNzA5NjBlMDA0M2Q2ZmM2ZTg5ZWIwNDkzYTc0MTMzYjAxMTQ2OWFmYzg0NWIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViNTc2ZTc2ZWM5NDRlZjNmY2IzMGZmZDlkYTJiOTU5NzNiNDUyYTdkYTQ4NjM5ODczNjM1MDExOGQ2MDU3ZDAifQ"
  36. }
  37. ]
  38. },
  39. {
  40. "id": "claim_dfcac46a3d404aac87e54470d53a91c7",
  41. "statement": "Only key press events become AppEvent::Key and resize events become AppEvent::Redraw; other terminal events are dropped.",
  42. "evidence": [
  43. {
  44. "resource": "repo://src/main.rs#L109-L115",
  45. "version": "repo-lines-v1:sha256:85bac23651d9b95ec5f5593453b077b12706d21eed247ce921d00504110bfaad:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzcxMDI5NWZiM2ZiYzY4ODZmZmNkZmJiMzEzMGYwMjgzYWM2MDY0MmQ5MGQ2OTllY2QwM2U1ZTI2MmM1NjVjMiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiZTkzZDY1YjVkODczOTc3NmUxMzMzZmZmZGQ0MzlhOGQ3YzQwYTA0MTAyNzUzMjY3NTQ4MDAwNmQyMGVmMGE2NCIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNjQxY2IxZDYxYmJhN2RkZDlmYmI4YTI5MWY4MDdmMDVjNjY3NjkyMzY2M2RjM2IzYTcyOWQ3MzI4NDVkNDhjZCJ9"
  46. }
  47. ]
  48. },
  49. {
  50. "id": "claim_64e36e0f00d545d48fc16d79cfaf28dd",
  51. "statement": "run_tui always restores the terminal after the event loop returns.",
  52. "evidence": [
  53. {
  54. "resource": "repo://src/main.rs#L121-L126",
  55. "version": "repo-lines-v1:sha256:0f8fe295d420386182d43d18d5735ed806080dd2bfac8adb559c5685bef212f9:eyJzZWxlY3RlZExpbmVDb3VudCI6NiwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiYzI5YzU4MTYzNmNkOTM0NmZjNDQyMjUwOTZkZTU0NDQ3MDAwNGU0MmM1Yzg3Nzg1Y2Q0Yzc0Zjk1Y2I1NzJmNSIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiOWQ4OGMwZjlkMTllYjQ0M2JlOGRhN2ZmNzc4MWM5MGEwNTBhZWVlMDJmOWI4ZDFhOTRmYTY3ZmZjMDc0YzY5YSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiZWQyNGY5Y2EzODEzYjAyZDVkY2E4MmY0ZTc3NTM0ODc5ZGFhM2E0MjhmMmMzMzliMjU4NTgyNTk0MTg1NjI4ZiJ9"
  56. }
  57. ]
  58. },
  59. {
  60. "id": "claim_45a8dbf5c9434d65bc96c1d5a96ecbe5",
  61. "statement": "The event loop draws a frame, awaits the next event and dispatches it to App until should_quit is set or the channel closes.",
  62. "evidence": [
  63. {
  64. "resource": "repo://src/main.rs#L132-L147",
  65. "version": "repo-lines-v1:sha256:140e36dd2726729298c44b4dc2c89df63149bbfd3773775167a6b682d43db55d:eyJzZWxlY3RlZExpbmVDb3VudCI6MTYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjkwNTMwZjA2M2RhYzc0YzIwZGZmMGE4YmI5MjA5MTFmYThjYTA2YWRhMTMyMDU4ZGI2NTRiYjBjNDg5MTE0YjAiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjUxYmQxNTNmNWE5YWVlZWJiZjYzNTRlM2ZhYzEwMDgzNjBkNmNmZmRjMTc5OTQ4OGRiOTAwMjNlMTU3YTkxMmQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ"
  66. }
  67. ]
  68. }
  69. ],
  70. "verification": {
  71. "by": "openwiki/0.7.2",
  72. "at": "2026-10-19T18:58:46.219Z"
  73. }
  74. }