runtime-and-event-loop.json 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. {
  2. "schemaVersion": 1,
  3. "pageVersion": "sha256:73780810fe3cd1b10a3d3d3a8fb56a8c9f3079e97a27a9bffda63c40a108fef4",
  4. "claims": [
  5. {
  6. "id": "claim_a384a56f0ebf4add8c0ab7722b040888",
  7. "statement": "Unless a version flag is given, main loads the config, ensures the data dir, opens the history DB, creates AppEvent and WaEvent unbounded channels, starts WhatsApp, spawns the forwarder, starts the optional web panel, spawns the configuration watcher, builds App, spawns the input thread and runs the TUI.",
  8. "evidence": [
  9. {
  10. "resource": "repo://src/main.rs#L53-L82",
  11. "version": "repo-lines-v1:sha256:1f8efd5e596ab7a7d1da0bfd9bc62005e6be9c40accb54842253ec733e4abfe3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImExZDA2ZTA0OGNkMjcyNzM4ZDgzN2IwYzBlYzZhYWIwYjAzMTQ1N2U0NzVmZDQ5YWJiY2JhZmM1ZjczYzAyMGQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE5NjlkZGFlYmE5MjRhNThlYTY2OGUyMDQzMDFiZWE5ZThjMzZjNjg5NTU3NTc3NmYzZDkzZWNiZmJlNzdjMzUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjAxZmI2ZDM1MThiYTRjMzUwOWRiMWM5MTAyMTk2NjQwMzI4ZjgzM2M3MDJmMzgwNmNmZjFlZGI5MzU4Y2Q5YTgifQ"
  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#L92-L104",
  21. "version": "repo-lines-v1:sha256:376729d914bfe5462e810010c4e827fb7fc331182e173bf42c14ec815be9c5eb:eyJzZWxlY3RlZExpbmVDb3VudCI6MTMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImRhNjQ2NjQ1ZDg1OTU4N2VjNWRjNmMyZWVjMzJhNjFkODI1ZDVmZjM0MWQzMmVlMmRhNGNhMWQwNzYzNmQ3ZjkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImFhOGNhMzU1ZmQ1NzA2YTk1OTI3N2EwNDFlM2IxNTIzM2I4YzI0M2M0Njc4MGM4M2Y1ZjkyY2M2ZTU0MjhjN2QiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjNiMWI0ZGU5MmNiYmMwMmUxN2UyYWJmYjc3OGQyZDA0MjJmNjUzODM5YWZiNWE2MTdmNDhjNmE4MTBiZGU3YzIifQ"
  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#L30-L30",
  31. "version": "repo-lines-v1:sha256:1d14980ebaa2f31e4144fe6b04613dfc3285892428a59dc526be0808a55c1eff:eyJzZWxlY3RlZExpbmVDb3VudCI6MSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQxNDk4MGViYWEyZjMxZTQxNDRmZTZiMDQ2MTNkZmMzMjg1ODkyNDI4YTU5ZGM1MjZiZTA4MDhhNTVjMWVmZiIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiMWQxNDk4MGViYWEyZjMxZTQxNDRmZTZiMDQ2MTNkZmMzMjg1ODkyNDI4YTU5ZGM1MjZiZTA4MDhhNTVjMWVmZiIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNDZmZmE0OWU5ZTQyNmZkYjkwM2I2ZmIyNjYxZDdjZDEwZmM1OTljMjFjZjg2ZDMzMWFlNjY4NDBhMzUwZGNkMyIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiODMyYWE3YjFiZGM3MTY1MmFjMmUwODIxNWJkOTcxYmQ3MGJjMjRjNzQyYWVlYzA5NDA4YjYzMTE3ZDkzMmQyMSJ9"
  32. },
  33. {
  34. "resource": "repo://src/main.rs#L117-L152",
  35. "version": "repo-lines-v1:sha256:58d18a88c972035530c97c24224afd69709cd2c5de07f4236969a3cc38d1fa8e:eyJzZWxlY3RlZExpbmVDb3VudCI6MzYsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjliZmVlNTkyZTcyMzMwNTAzZGVmODM4ZWFjZTE0ODNjMTFmNGVkOTk2OTM3YzlhODA3OGM1OGE4MTljYWVmNzUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6Ijg0NTAxNDAzZmViNmI2ODk4YjM1MDcxOGQ4MmY3ZmU0YzM4YzBhNTljMjZkY2UzMTRjMzUyMDQ3OTcyYTk4NDQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImViNTc2ZTc2ZWM5NDRlZjNmY2IzMGZmZDlkYTJiOTU5NzNiNDUyYTdkYTQ4NjM5ODczNjM1MDExOGQ2MDU3ZDAifQ"
  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#L154-L165",
  45. "version": "repo-lines-v1:sha256:d8d9638a5e048622a2f5afb4eb87071516bfc768606487e27c53c03eb11ffa4f:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjJjNjVkZTMxODE3ZDgzNDIyNDg1NTNiNmZkZTAzN2M1ODI3YTRjOWI1NzA4ODAxMzc4NzYxNWM1NWMwNmU4ZDMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjY0MWNiMWQ2MWJiYTdkZGQ5ZmJiOGEyOTFmODA3ZjA1YzY2NzY5MjM2NjNkYzNiM2E3MjlkNzMyODQ1ZDQ4Y2QifQ"
  46. }
  47. ]
  48. },
  49. {
  50. "id": "claim_64e36e0f00d545d48fc16d79cfaf28dd",
  51. "statement": "run_tui clears the screen and always restores the terminal after the event loop returns, returning the loop error first and otherwise the clear error.",
  52. "evidence": [
  53. {
  54. "resource": "repo://src/main.rs#L167-L186",
  55. "version": "repo-lines-v1:sha256:d25ee631a872cf7bd8251dbd7e2ef5309b07a890ee5181e193fc4b0c81632aa3:eyJzZWxlY3RlZExpbmVDb3VudCI6MjAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjU4NjMxYjQ1YTE1ODQ4ZjQ5YTJhYWQyYTMzNDdiZWRkOWZkZGNmNDBhNTM5MTkwMDkzNDk1OTdhNzYwOWYzMmIiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE5ZTc2MzU1Y2YxMTk5NDgwYzNmOTk4MzZiMTQ4NmM4NDFkODkxZmFhZDkwNGM2MDhlMDkzMDIyZDM3NTdhZWUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImVkMjRmOWNhMzgxM2IwMmQ1ZGNhODJmNGU3NzUzNDg3OWRhYTNhNDI4ZjJjMzM5YjI1ODU4MjU5NDE4NTYyOGYifQ"
  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#L188-L216",
  65. "version": "repo-lines-v1:sha256:fe54d25939a4f3603d298eaff2c9a5760f9ae544a1c95627fcbdba35bd563e7f:eyJzZWxlY3RlZExpbmVDb3VudCI6MjksImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6IjNlMTkzYjAzYzI2ZWIzM2EwMjk4MWViY2MyNmM2YzIxNmRlZGQzYTkxMDQ5OTA0ODI5ZjJmNDQ0ZTVmYWYyODUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjZmMmQxOTA3Mzg2ZmZhYmYyMDQzMjNkMGMwMDIyMDE0MTdhNjUwN2IwNGRjYzZlODdjZjFhNDdhZGExNDc0MTgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiYzk4ZDZiMGRjNDkyYzUwMTZkZjEwODA1YTNhNTRlYjljMTg0YTVhNjEzN2U3ZjRiZWNmYTBjMjIwNTUwZDAifQ"
  66. }
  67. ]
  68. },
  69. {
  70. "id": "claim_8349159e23ea452480265bcada84d14c",
  71. "statement": "event_loop records list_mode_before = app.list_mode before handle_event and, when the list mode changed, resizes the terminal to its current size to force a full repaint without the cursor-position query that Terminal::clear performs.",
  72. "evidence": [
  73. {
  74. "resource": "repo://src/main.rs#L205-L213",
  75. "version": "repo-lines-v1:sha256:d5d2f63f2332914a0e3f33f7bb238c97b54971bd35773182f767422e64442902:eyJzZWxlY3RlZExpbmVDb3VudCI6OSwiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiOTgwZmU3NzZjMzc0ZWExM2RjYmU5ODhjZjFiMmY0NTQ0MTdkZjA4MGJiNWY4M2Q1N2FhMmRkMmI4YmZiYjA2ZCIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiZTZiMDQ0OTE0Njk3MjJlODM2M2E5NGU0MDQ0NTM4ZTAxM2EyYTIxN2UzNmIxZTU2OGJhNjBhY2I3YjRjOGYyZSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiODQzMTkxYmFiNjEwYjJjNDZkODgxMjkzMTJhYzQ0ZjUwNjVlODdiYWVjOTVmODg2MDg0YzM2Yzk5ZDg3YTg0NSIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNTVhYjdiNmQ5YjZlMTk1NjUzZmM4YjU1ZjYzZjM2NDYwNjg1NWM0NTRmYzU2NTg1MWYzMWEyZjA5NDVkYTc0MiJ9"
  76. }
  77. ]
  78. },
  79. {
  80. "id": "claim_9a63978b2a604355ba70b04ed25dd94f",
  81. "statement": "start_web_panel does nothing when web_port is unset; otherwise it starts the web server on that port and a bind or spawn failure aborts startup with 'cannot start web server on port <port>'.",
  82. "evidence": [
  83. {
  84. "resource": "repo://src/main.rs#L106-L115",
  85. "version": "repo-lines-v1:sha256:54c6448bd45241fd4b90479b1a91e2fd528e7a38f4ac5d543eda728fbf3756d5:eyJzZWxlY3RlZExpbmVDb3VudCI6MTAsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImYwZjA3MmY1NzA4NTRiMGM0ODg3YmRlZDU4YzU2NWRiZGExOTNlYmY3NGIwODZmMjYyNTFmZjZhOTZiMmJiYWMiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImRmYWI3MTBkZGY3ODU5ZTU3NTc2NGE5MTNhMDAyYzc0NTg1ZmZhNzAwMTUxMGNiODgxMWRhODNkMmNmNzRiMzQiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImI1OTAxZTAwNGRkYTg1ZmUwNjg0OGVkYjhkMWIzM2Q1NTNmYWM4ZjkyMzZlZTFlMjlkZTNmNGUzMWRmNTM4NTkifQ"
  86. }
  87. ]
  88. },
  89. {
  90. "id": "claim_f1118b0552ab43838f216917a238b0e2",
  91. "statement": "With a --version or -V argument main only prints 'wh <BUILD_VERSION>' and exits before loading the configuration.",
  92. "evidence": [
  93. {
  94. "resource": "repo://src/main.rs#L43-L59",
  95. "version": "repo-lines-v1:sha256:d0efc50d63b4ef6575a224d08e55e1860bc394063a06e6a9de2158de8c26b428:eyJzZWxlY3RlZExpbmVDb3VudCI6MTcsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijg3YzViZTA4MWM3NGIwMmViZjRmM2RjZDExMzg0YjdlNGVlNzU0ZjdjZjEyZWNkZjgzYWVhODlmMGVjYmU5YjEiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6ImY2YmM5OTMzNjdjNWY3OGU1ZDZjZjFjY2U0MmMyOTlkMWUxNTQ2MzM1MGU3Mjk1NGIwMDczMGNiMTUzOGZkMjIiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjNiYWFkZDAyODNiNDFkM2YwMmE0NzdiYTQ0NDFhZDA4MGRhNjgyYTg0NWZjMTg1MzVhYWEzMGQ3MWM4MjhiODgiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImEyZmFlMzljMjVjZmVlYmZkMTU0MTk0YzA5NjEzZGIzNmY2MmU5YzcwMWNhZGMwMWE4ZDcwMzhmZmIyNjE2OWUifQ"
  96. },
  97. {
  98. "resource": "repo://src/main.rs#L84-L90",
  99. "version": "repo-lines-v1:sha256:c7d36e35db0f27324cf4631b197cf7332f8de7e7002d977fead70ef0f6213c51:eyJzZWxlY3RlZExpbmVDb3VudCI6NywiZmlyc3RTZWxlY3RlZExpbmVIYXNoIjoiMjMwMTlkMzNiYmQ2ZmY5MGU3MWNhNWQyYTA0NTI3ZDNhMzg3MzVlM2FhYjA5NjQzMDk5MWVhNDNhZDNjOTVmMyIsImxhc3RTZWxlY3RlZExpbmVIYXNoIjoiNDEyY2EzNDVjY2Y3NWJmOWMwODA2YmNlNjk1YmU4ZGU4MDhiNzk5ODQyNTFhN2E1NGQyMDJjZjYxMDFkZDQ1MSIsInByZWNlZGluZ0NvbnRleHRMaW5lQ291bnQiOjMsInByZWNlZGluZ0NvbnRleHRIYXNoIjoiNGI3MGY3Nzk4YzAxYzhmOTQwNTBiZTU0MTQwMWI4MzQ3YWY2MDM2MjdkZDExODBiYjIzZjAxMWZmNjQ1NDhjZiIsImZvbGxvd2luZ0NvbnRleHRMaW5lQ291bnQiOjMsImZvbGxvd2luZ0NvbnRleHRIYXNoIjoiNzI4Y2MwYjRkYjM2MWFjMzEwNzhiYzE5NmJkNjUyOTEzNWE2YWZjNDVlY2FlOTIxZjYxNzEyMjVlMmY0Y2Q5OCJ9"
  100. }
  101. ]
  102. },
  103. {
  104. "id": "claim_4de286148c754addaeb2e9d98014190e",
  105. "statement": "build.rs embeds the short git commit hash as WH_GIT_HASH (falling back to 'unknown') and the git commit count as WH_BUILD_NUMBER (falling back to '0'), and BUILD_VERSION combines the package major and minor version with that build number and hash as '<major>.<minor>.<build number> (<hash>)'.",
  106. "evidence": [
  107. {
  108. "resource": "repo://build.rs#L1-L43",
  109. "version": "repo-lines-v1:sha256:c9fdc3d951792c05c7b026bd8f9bb2d4fb7f36b948ae20fe2b05cd0531edd276:eyJzZWxlY3RlZExpbmVDb3VudCI6NDMsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6Ijc1ZTU3NDhjMjZjOTBhZDA2MGZhMDRhYTY4NjU1MGExNTRlY2ZlMWZhZmI2NGQ4YzBkMjdkYTkxMWJkMDg2MGUiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjowLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjowLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6ImUzYjBjNDQyOThmYzFjMTQ5YWZiZjRjODk5NmZiOTI0MjdhZTQxZTQ2NDliOTM0Y2E0OTU5OTFiNzg1MmI4NTUifQ"
  110. },
  111. {
  112. "resource": "repo://src/main.rs#L31-L42",
  113. "version": "repo-lines-v1:sha256:3cdff8c39d365f638b3f6b7ce72287f226915a02d7934165c10e2756babdeaf1:eyJzZWxlY3RlZExpbmVDb3VudCI6MTIsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImM4ZTZlNzliNjA2ZTViMTc0NDU3YmZiZDI1MzI2Mzg5M2I0OGYzNGYxN2U0ZjUyNjQ0YTA4ZGQ3MDljZmE4NzkiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQ5OTY3ZWMxZWQzODM2ZjhlYjE3YWZmMTcyYjViZmVmN2RlNjA0ODVhNDM5YzZjYTExYzU5MWUxNzU1NzM5YWUiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6ImE4MjYzNjdkZjY0MGI1YzFkZTYyYjFlNDdkZTc4ZGMxMmY2Y2YxNDAyMTI5OTllOTg2YWI1MDVmYmMyYjZkYjIiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjVhMjJlNTQyYjNjNjFmMzIwMzUyNTk2MGRhYWEzZjIwODRmMTU5MTQyODkzYWQ4YTI3YWQxNzNkM2VkNDk0ZDUifQ"
  114. }
  115. ]
  116. },
  117. {
  118. "id": "claim_9d5addff34a746c7af963b58ee12e992",
  119. "statement": "The configuration watcher task polls the modification times of the configuration files every 2 seconds and, on any change including a file appearing or disappearing, reloads Config and sends AppEvent::ConfigReloaded; it stops when the application receiver is dropped.",
  120. "evidence": [
  121. {
  122. "resource": "repo://src/config_watch.rs#L15-L52",
  123. "version": "repo-lines-v1:sha256:1501e5e6ec52e197ae84506acd57d2b315d6a1dd434c842b88dc4a4b6d2f1bd3:eyJzZWxlY3RlZExpbmVDb3VudCI6MzgsImZpcnN0U2VsZWN0ZWRMaW5lSGFzaCI6ImQ3NGMwOGQzMzg5NGUyMWQyYzBmNTMyMDkwYmQwNjFjNDNjMzg1ZDU1MzkwMmI0MDkwZDkxZjJjZDY3M2VjMWQiLCJsYXN0U2VsZWN0ZWRMaW5lSGFzaCI6IjQxMmNhMzQ1Y2NmNzViZjljMDgwNmJjZTY5NWJlOGRlODA4Yjc5OTg0MjUxYTdhNTRkMjAyY2Y2MTAxZGQ0NTEiLCJwcmVjZWRpbmdDb250ZXh0TGluZUNvdW50IjozLCJwcmVjZWRpbmdDb250ZXh0SGFzaCI6IjE1Y2VkZDkyMzY4ZGI1MDMwYjUxMjQ3ODcwODlmY2FmZTI5YzhmOGQ4MjExZDA0MTE4ZmM4MTViYWM1MDBjOWEiLCJmb2xsb3dpbmdDb250ZXh0TGluZUNvdW50IjozLCJmb2xsb3dpbmdDb250ZXh0SGFzaCI6IjdiYzk4ZDZiMGRjNDkyYzUwMTZkZjEwODA1YTNhNTRlYjljMTg0YTVhNjEzN2U3ZjRiZWNmYTBjMjIwNTUwZDAifQ"
  124. }
  125. ]
  126. }
  127. ],
  128. "verification": {
  129. "by": "openwiki/0.7.2",
  130. "at": "2026-10-25T12:54:53.684Z"
  131. }
  132. }