{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:45:21.567022Z","repo":{"ref":{"host":"github.com","owner":"newptcai","name":"repy"},"default_branch":"main","clone_url":"https://github.com/newptcai/repy.git","html_url":"https://github.com/newptcai/repy","description":"repy is a terminal epub format ebook reader inspired by epy","stars":22,"forks":4,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":6886,"primary_language":"Rust","license_spdx":null,"created_at":"2025-12-28T11:55:40Z","pushed_at":"2026-08-10T16:17:02Z","security_policy_url":null,"distribution":{"owner_created_at":"2011-08-15T23:22:37Z","owner_type":"User","release_assets":[{"name":"repy-linux-x86_64","size":27231016,"download_count":51,"release_tag":"v0.25.0","url":"https://github.com/newptcai/repy/releases/download/v0.25.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":45784800,"download_count":20,"release_tag":"v0.25.0","url":"https://github.com/newptcai/repy/releases/download/v0.25.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21198336,"download_count":28,"release_tag":"v0.25.0","url":"https://github.com/newptcai/repy/releases/download/v0.25.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27773584,"download_count":10,"release_tag":"v0.24.0","url":"https://github.com/newptcai/repy/releases/download/v0.24.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":46679776,"download_count":4,"release_tag":"v0.24.0","url":"https://github.com/newptcai/repy/releases/download/v0.24.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21547520,"download_count":6,"release_tag":"v0.24.0","url":"https://github.com/newptcai/repy/releases/download/v0.24.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27762552,"download_count":3,"release_tag":"v0.23.0","url":"https://github.com/newptcai/repy/releases/download/v0.23.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":46671600,"download_count":2,"release_tag":"v0.23.0","url":"https://github.com/newptcai/repy/releases/download/v0.23.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21537280,"download_count":2,"release_tag":"v0.23.0","url":"https://github.com/newptcai/repy/releases/download/v0.23.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27525712,"download_count":3,"release_tag":"v0.22.0","url":"https://github.com/newptcai/repy/releases/download/v0.22.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":46187312,"download_count":2,"release_tag":"v0.22.0","url":"https://github.com/newptcai/repy/releases/download/v0.22.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21315584,"download_count":2,"release_tag":"v0.22.0","url":"https://github.com/newptcai/repy/releases/download/v0.22.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27356712,"download_count":3,"release_tag":"v0.21.0","url":"https://github.com/newptcai/repy/releases/download/v0.21.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":45903872,"download_count":3,"release_tag":"v0.21.0","url":"https://github.com/newptcai/repy/releases/download/v0.21.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21154304,"download_count":2,"release_tag":"v0.21.0","url":"https://github.com/newptcai/repy/releases/download/v0.21.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27357888,"download_count":3,"release_tag":"v0.20.1","url":"https://github.com/newptcai/repy/releases/download/v0.20.1/repy-linux-x86_64"},{"name":"repy-macos-universal","size":45899568,"download_count":2,"release_tag":"v0.20.1","url":"https://github.com/newptcai/repy/releases/download/v0.20.1/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21141504,"download_count":2,"release_tag":"v0.20.1","url":"https://github.com/newptcai/repy/releases/download/v0.20.1/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":27274000,"download_count":3,"release_tag":"v0.20.0","url":"https://github.com/newptcai/repy/releases/download/v0.20.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":45727392,"download_count":3,"release_tag":"v0.20.0","url":"https://github.com/newptcai/repy/releases/download/v0.20.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":21056512,"download_count":3,"release_tag":"v0.20.0","url":"https://github.com/newptcai/repy/releases/download/v0.20.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":26854000,"download_count":3,"release_tag":"v0.19.0","url":"https://github.com/newptcai/repy/releases/download/v0.19.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":45005616,"download_count":2,"release_tag":"v0.19.0","url":"https://github.com/newptcai/repy/releases/download/v0.19.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":20658176,"download_count":2,"release_tag":"v0.19.0","url":"https://github.com/newptcai/repy/releases/download/v0.19.0/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":26678704,"download_count":1,"release_tag":"v0.18.1","url":"https://github.com/newptcai/repy/releases/download/v0.18.1/repy-linux-x86_64"},{"name":"repy-macos-universal","size":44723904,"download_count":1,"release_tag":"v0.18.1","url":"https://github.com/newptcai/repy/releases/download/v0.18.1/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":20526080,"download_count":1,"release_tag":"v0.18.1","url":"https://github.com/newptcai/repy/releases/download/v0.18.1/repy-windows-x86_64.exe"},{"name":"repy-linux-x86_64","size":26662720,"download_count":2,"release_tag":"v0.18.0","url":"https://github.com/newptcai/repy/releases/download/v0.18.0/repy-linux-x86_64"},{"name":"repy-macos-universal","size":44666496,"download_count":1,"release_tag":"v0.18.0","url":"https://github.com/newptcai/repy/releases/download/v0.18.0/repy-macos-universal"},{"name":"repy-windows-x86_64.exe","size":20503040,"download_count":1,"release_tag":"v0.18.0","url":"https://github.com/newptcai/repy/releases/download/v0.18.0/repy-windows-x86_64.exe"}]}},"commit_sha":"0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4","profile":{"lines_by_language":{"Rust":32549},"files_by_category":{"source":42,"other":35,"docs":19,"test":9,"config":5,"binary":4,"generated":1,"oversized":1},"source_lines":31635,"test_lines":914},"pillars":{"ai_provenance":{"score":41.3,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.4134,"suspected_share":0.0826,"estimated_share":0.4134,"ai_artifacts":4.0,"flagged_work_units":3.0,"flagged_releases":0.0},"summary":"Explicit AI attribution on 41% of first-party code added; an estimated 41% including velocity signals."},"quality":{"score":57.3,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":46.5,"duplication":67.8,"lint":100.0,"testing":40.9,"docs":40.0,"type_safety":null,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.03, no CI test run detected; 26% of function code in complex or long functions; 6% duplicated lines. Weakest area: docs."},"security":{"score":58.7,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":94.6,"dependencies":26.8,"ci_actions":23.7,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 37 known vulnerabilities in 15 dependencies; 7 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":37.0,"checked":37.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":348.0,"attributed_commits":124.0,"attributed_commit_share":0.3563218390804598,"effective_loc":42518.0,"attributed_loc":17579.0,"attributed_loc_share":0.4134484218448657,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 124 attributed commits, 17,579 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4","url":"https://github.com/newptcai/repy/commit/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fd23224f433c291f9aded7ad5be771d125a933e3","url":"https://github.com/newptcai/repy/commit/fd23224f433c291f9aded7ad5be771d125a933e3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"645603b285422e7e1e220a1e6d3b66faf5263dbb","url":"https://github.com/newptcai/repy/commit/645603b285422e7e1e220a1e6d3b66faf5263dbb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2acd30f9073328a190df3fd86c6e9b55b6a2ad34","url":"https://github.com/newptcai/repy/commit/2acd30f9073328a190df3fd86c6e9b55b6a2ad34","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"aa0a8fff54bf02ab382596cedb98df6c806eb516","url":"https://github.com/newptcai/repy/commit/aa0a8fff54bf02ab382596cedb98df6c806eb516","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e8a1e6cfb637cec9169a504867890ae51bc398eb","url":"https://github.com/newptcai/repy/commit/e8a1e6cfb637cec9169a504867890ae51bc398eb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9ed9661eed6df9e584ad197e2aa627c97eba6fec","url":"https://github.com/newptcai/repy/commit/9ed9661eed6df9e584ad197e2aa627c97eba6fec","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"eb7696134c373fbf84b08eab86d4e89e9be78787","url":"https://github.com/newptcai/repy/commit/eb7696134c373fbf84b08eab86d4e89e9be78787","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b93c6000c0296853a368052730ff1944024968a3","url":"https://github.com/newptcai/repy/commit/b93c6000c0296853a368052730ff1944024968a3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"24f3303af86aa0cd7e9a573b6eaf6bd24889cca4","url":"https://github.com/newptcai/repy/commit/24f3303af86aa0cd7e9a573b6eaf6bd24889cca4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5e622d31bf3e9fe892f539580432966e77c39764","url":"https://github.com/newptcai/repy/commit/5e622d31bf3e9fe892f539580432966e77c39764","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"67632234200c06ce2076d4e6872cf3206ecbeeee","url":"https://github.com/newptcai/repy/commit/67632234200c06ce2076d4e6872cf3206ecbeeee","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"37eaeff603039ee77962de89b772a58abbf300cb","url":"https://github.com/newptcai/repy/commit/37eaeff603039ee77962de89b772a58abbf300cb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"84f94f4db82584bd103416fe2cbf4e39071d0466","url":"https://github.com/newptcai/repy/commit/84f94f4db82584bd103416fe2cbf4e39071d0466","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b6ac8056b73c7e59a16a350782472062af81c0b1","url":"https://github.com/newptcai/repy/commit/b6ac8056b73c7e59a16a350782472062af81c0b1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ea0d6503ec15ef380add5659f4497c2053aa4e70","url":"https://github.com/newptcai/repy/commit/ea0d6503ec15ef380add5659f4497c2053aa4e70","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e8fd60118c062ae4ff433af5ac3d23448d345301","url":"https://github.com/newptcai/repy/commit/e8fd60118c062ae4ff433af5ac3d23448d345301","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9b074efdac6dda05df6b6cf955f3223d72dcdb93","url":"https://github.com/newptcai/repy/commit/9b074efdac6dda05df6b6cf955f3223d72dcdb93","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3ce4a57a0818fb7f45c4c829bc12a6b4e7f59e5e","url":"https://github.com/newptcai/repy/commit/3ce4a57a0818fb7f45c4c829bc12a6b4e7f59e5e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"da6c56efef34d4fafe4813b43f3f3dc68e772823","url":"https://github.com/newptcai/repy/commit/da6c56efef34d4fafe4813b43f3f3dc68e772823","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fa29204368f2d99e48937338fc2b3c458af69183","url":"https://github.com/newptcai/repy/commit/fa29204368f2d99e48937338fc2b3c458af69183","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e667f4a1af5177575796f7dd345a64c37078a6ad","url":"https://github.com/newptcai/repy/commit/e667f4a1af5177575796f7dd345a64c37078a6ad","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8c0e1d0bb67c031ae4b31848dd5d1f9b458167a4","url":"https://github.com/newptcai/repy/commit/8c0e1d0bb67c031ae4b31848dd5d1f9b458167a4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9f580bf6ea4ae17e4e272bc6c5fb403e1166aace","url":"https://github.com/newptcai/repy/commit/9f580bf6ea4ae17e4e272bc6c5fb403e1166aace","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"63029b9894e931a6085a11133a7e90419c84e6b4","url":"https://github.com/newptcai/repy/commit/63029b9894e931a6085a11133a7e90419c84e6b4","weight":0.9}],"data":{"attributed_loc_by_commit":{"40ea3172e1430da964bb7da303f2d63c9f6ead6d":389,"f5df0d4dd9ef7f923aa0683869d44f18cc4a2245":53,"30bf4498328b4e1f58842c480d2d60ccec8095d5":0,"dcdaf42723897ebf46471f92fc2521e8135c5fba":2,"242754f2b718e856ebe0e8428fe47b9273716438":0,"7e84ae7d295c9220f7e43540b92beeddd0ed88fa":331,"4ed0efcb91c91654bdc4ab33d7144afa226fcaf0":589,"830495907c5c893c2d924c472a623e70c9bc1691":570,"385d960011ee6a0936809b656665cc72d9db5cfa":810,"7f3ed95604cc25e8ed11097efde35ee05d2125f0":1353,"4f08e2e8319f268e19f059553931f9cba951c68f":0,"ad248da13d108235c6ae5a0b37f6b65614baeda4":68,"c263135acfcbe987d83f2644924882420f3ace99":0,"e442a3811d3f5f8b3ffa5d43325ec97d3844369c":0,"382a813957726e85ed23a87804c7144c980db21e":124,"ea88c149cba0b845633cb1bed264c8a06b19106c":26,"bdbd58a809c2a109dd46d13af499cd70cfd6acf1":40,"63a39cb8ee3359ed09f8ef700ea43e3fe6952a9d":0,"f7b4f799684ef9e4d1784ae00cb32aeda70594b6":106,"0dc977760e03822bb2a4abe59f7681e39047c107":116,"198ba69a42ac6047228cb1e2d7034c7feda55bd1":291,"f23d22e3d53445f18f6937d96b16926f2619bc36":0,"7ebc5acd10b88eb573ddb1716968fe014838b168":0,"c25dae4dfdbfd69d06aa33eeeae42b773d109a92":0,"8d33b1eb515567f58c5d9109477c23f4351bfa71":0,"94054c1f12df2e79afaf180c00d4b6d9f224e025":619,"2ca8ff816625e785029281e69c50d35a474707c3":0,"cd6a3b660c7bc37f2a2c32f316572f32c0862e45":29,"c69314045cc5aeca55114db8c04c00c514138819":19,"76f01b25f62956090c8ac38ea037328369f8e22f":75,"7bdd1401aaa170be49efb37dd90d9d16ca035f0f":33,"08fff5d2cf03d5fedb08a5d6674acd12268d85cf":15,"6fce2638c738a6eba51cc5d07a18be06061abe1e":110,"1ef9ad6737ef27bc54f9db69b529c62df93d10c2":445,"2bca450ded03261c5e7cd9de4b47333272260ed4":6,"44c63b7a58107417c0c5a559beafe546cecf6783":0,"1c6f841655fdb18cdbe8e491b5b81bd73d8fc1d2":55,"8984897c630242caff054b492555ef6972d81f8f":140,"38e1f4ec189067f52e93d8564acdb655749c0053":0,"f5cf7a358c6870347de553947801b9d7513ec2b7":0,"386fcbf0697f7d5aa4b92f84afd16c747b0e8016":142,"556446bfc38734a21bfb44a886e163482f019dbf":264,"c6038a37652dff9b79ac9a02b4887ba3d51225be":283,"e28cf9708b4a2d93c9450ddab9918713ad194757":0,"9cc8bed0cb3a62f67d5681fb0c62b4294621b283":28,"86ced1230b13bc391772be76f4cd8ad228c30df0":89,"85bab7938ab962a4a35bc6cda8152717e9124f92":0,"e24e6ee2bfe81447fa1fa488f7680cd922e3d7f4":57,"0878bc27b9e594b5cef4c43224b7647776ac84e6":165,"3eb090cb18f333c79cec936b4634180b440ae5d2":96,"504528cd8685c010b8ad7aea9ec2d5e80e065e77":89,"83182394b4e6ac67b8a25f989e2a0daadb1845d7":172,"d7b57b9b8c08fbe8a0faf5e4fabd581c8723c052":9,"f9528385611c69cfc4aabc7ef8c06afac19d2728":31,"7eaf2a00f3e04cb5318d01970f40d6e9507b7f33":327,"7071516232ee53f0c2a0ed4e7bc133d030bd43e1":24,"178ca7bcbe07d472eb984db55680b35c6cdce94a":408,"8b0a40bbbf64402980a79f05d55ab6f8e05ae761":80,"2d0e4cf0b971643fcbf988a21f695699edc6a5e1":0,"304b9c0b5aa69a40af3bb9e1112a13311354c879":0,"0110ac41fcd229352db59ca4d1cf955d4210dcbf":67,"6f6ca3bf38e488ec4d67107e984850f9b37d457b":114,"48f008de659c84c4f13ff6ab8b57d69978560505":0,"4592bc88fe0acf621cb877b986f084840a9e4234":81,"27206a85cd18aaf38ef9fff5b8d529757c73163b":87,"3fa21a28038bd40a36691fc8021abd1cb83b195e":3,"86941be6d45ce8bb0b59c56b0413b726374f62e5":16,"09f800ab9361e2545652eae3bff84a759c8f4539":8,"89d9332c89b24e8a7c15d2bbd5a00e31d12c7220":2,"46742225e72dfb2221403e75bea5729e5656c69f":531,"38d09b7738435ca46520d4579c29b6bb7dd21c6d":0,"4f7cedebf031210f4ea332c978c5311b0d27cc65":355,"01df220d699de1ed3e339d46dfbbe39617dc266c":2,"766a0c9272741366238578358b34dfd5ae331bb3":0,"81502e13fb6e7c75cdb2e43a7c8c9eb13a07643b":0,"d3f2b4e4b2691ff7f71d4f4166a9fa39dcce3359":278,"5bd57248b1ec262e130ae0ebe8a88143740267d1":163,"f737824329615e86b1d4806950c5035b6b74dee9":228,"0a1ebd28bf3fdd1d252577bf3368f40bdd6b854e":226,"621d95bab5fdc021d2c774a526381948a2d0b6d0":273,"6a9184a31b4c8abab20a503d33c3d4b5cf20457e":0,"d2b682e688501073889b1e31c7d37e312d5c2b23":113,"7acdca5845762d7494647ef37589cba4419fc694":36,"8f53312c0c1a345315622158b5534b1d7028decf":48,"2e5d5c80407abd966974da51f41191fa589a22de":166,"4c0eb66b01a5445c2e64743b4c1bb81744273a9c":51,"12c967df609dad89a6e70bb55ff4631c5a6c7e7b":1249,"87dfdff59eb8de6c42f8edb3b41795143200547e":324,"38f15e3eb3f33e4148805acacf454d3edc1bdaa2":380,"2d19b62382833a99cbb164531f400530764268ca":152,"8a5c471b56e6bd45ca326441468cd8f91b959960":369,"e040f6fc7e2da0dd7a1c5c58db6cace9863980dc":118,"e2b7b99f297b19efec72702b25a440cc2bab97de":37,"0d2a5c4452e75077d686258d0bde73cfc776ab20":151,"fc41204c2ef0482442b2b5c9c6b978016be4b391":0,"ebbed93267f8b58394bc9fc66cabd6bb99919f09":3,"f564f56620e09074e20bd1131529c063ddd609fd":106,"17ce55a20490f560ca4baf5750438a544113459d":45,"a90cb3908fd68a11499d63206d99e03a68f10011":54,"63029b9894e931a6085a11133a7e90419c84e6b4":472,"9f580bf6ea4ae17e4e272bc6c5fb403e1166aace":0,"8c0e1d0bb67c031ae4b31848dd5d1f9b458167a4":368,"fa29204368f2d99e48937338fc2b3c458af69183":194,"e667f4a1af5177575796f7dd345a64c37078a6ad":213,"3ce4a57a0818fb7f45c4c829bc12a6b4e7f59e5e":44,"da6c56efef34d4fafe4813b43f3f3dc68e772823":298,"9b074efdac6dda05df6b6cf955f3223d72dcdb93":173,"e8fd60118c062ae4ff433af5ac3d23448d345301":131,"ea0d6503ec15ef380add5659f4497c2053aa4e70":146,"b6ac8056b73c7e59a16a350782472062af81c0b1":193,"84f94f4db82584bd103416fe2cbf4e39071d0466":114,"37eaeff603039ee77962de89b772a58abbf300cb":302,"67632234200c06ce2076d4e6872cf3206ecbeeee":10,"5e622d31bf3e9fe892f539580432966e77c39764":31,"24f3303af86aa0cd7e9a573b6eaf6bd24889cca4":103,"b93c6000c0296853a368052730ff1944024968a3":24,"eb7696134c373fbf84b08eab86d4e89e9be78787":0,"9ed9661eed6df9e584ad197e2aa627c97eba6fec":0,"e8a1e6cfb637cec9169a504867890ae51bc398eb":220,"aa0a8fff54bf02ab382596cedb98df6c806eb516":0,"2acd30f9073328a190df3fd86c6e9b55b6a2ad34":29,"645603b285422e7e1e220a1e6d3b66faf5263dbb":0,"fd23224f433c291f9aded7ad5be771d125a933e3":0,"0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4":0},"tools":{"claude-code":{"name":"Claude Code","commits":124,"loc":17579,"first_seen":1763744478,"last_seen":1786378590}},"monthly":{"2025-11":{"loc":5961,"attributed_loc":4097},"2025-12":{"loc":5092,"attributed_loc":192},"2026-01":{"loc":620,"attributed_loc":0},"2026-02":{"loc":5415,"attributed_loc":2125},"2026-03":{"loc":1436,"attributed_loc":689},"2026-04":{"loc":501,"attributed_loc":0},"2026-05":{"loc":4411,"attributed_loc":117},"2026-07":{"loc":19053,"attributed_loc":10330},"2026-08":{"loc":29,"attributed_loc":29}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":4.0,"workflow_agents":0.0,"tools_configured":3.0,"earliest_adoption":1763740974.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".claude/skills/verify/SKILL.md (claude-code configuration)","ref":".claude/skills/verify/SKILL.md","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/.claude/skills/verify/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"GEMINI.md (gemini configuration)","ref":"GEMINI.md","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/GEMINI.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":".claude/skills/verify/SKILL.md","added_at":1784016625},{"tool":"claude-code","path":"CLAUDE.md","added_at":1763743854},{"tool":"generic-agent","path":"AGENTS.md","added_at":1763743854},{"tool":"gemini","path":"GEMINI.md","added_at":1763740974}],"workflows":[],"tools":["claude-code","gemini","generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":88.0,"flagged_units":3.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":42518.0,"flagged_loc":5810.0,"flagged_loc_share":0.1366480079025354,"max_loc_per_hour":905.932932072227,"median_loc_per_hour":136.1204279879281,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,393 lines of first-party code in ~1.7h (805 lines/hour, 1 commit session)","ref":"06a2a6b23e9f15b455865c411dd003d6b8f8e346","url":"https://github.com/newptcai/repy/commit/06a2a6b23e9f15b455865c411dd003d6b8f8e346","weight":0.2414831460674157},{"kind":"velocity-burst","description":"2,117 lines of first-party code in ~4.0h (529 lines/hour, 1 commit session)","ref":"487dc898dbd519b40d923bbd00ee304e7588e729","url":"https://github.com/newptcai/repy/commit/487dc898dbd519b40d923bbd00ee304e7588e729","weight":0.158775},{"kind":"velocity-burst","description":"2,300 lines of first-party code in ~4.6h (502 lines/hour, 4 commit session)","ref":"385d960011ee6a0936809b656665cc72d9db5cfa","url":"https://github.com/newptcai/repy/commit/385d960011ee6a0936809b656665cc72d9db5cfa","weight":0.15062761506276148}],"data":{"flagged_loc_by_commit":{"7e84ae7d295c9220f7e43540b92beeddd0ed88fa":331,"4ed0efcb91c91654bdc4ab33d7144afa226fcaf0":589,"830495907c5c893c2d924c472a623e70c9bc1691":570,"385d960011ee6a0936809b656665cc72d9db5cfa":810,"487dc898dbd519b40d923bbd00ee304e7588e729":2117,"06a2a6b23e9f15b455865c411dd003d6b8f8e346":1393},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":30.0,"flagged_releases":0.0,"max_loc_per_day":6148.1},"findings":[],"evidence":[],"data":{"releases":[{"from":"0.1.0","to":"0.2.0","loc":381,"days":2.84,"loc_per_day":134.0,"flagged":false},{"from":"0.2.0","to":"0.4.0","loc":4458,"days":45.32,"loc_per_day":98.4,"flagged":false},{"from":"0.4.0","to":"v0.5.0","loc":626,"days":0.5,"loc_per_day":1241.9,"flagged":false},{"from":"v0.5.0","to":"v0.6.0","loc":787,"days":2.2,"loc_per_day":357.7,"flagged":false},{"from":"v0.6.0","to":"v0.7.0","loc":163,"days":11.55,"loc_per_day":14.1,"flagged":false},{"from":"v0.7.0","to":"v0.8.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.8.0","to":"v0.8.1","loc":79,"days":5.07,"loc_per_day":15.6,"flagged":false},{"from":"v0.8.1","to":"v0.8.3","loc":300,"days":13.09,"loc_per_day":22.9,"flagged":false},{"from":"v0.8.3","to":"v0.9.0","loc":349,"days":0.1,"loc_per_day":3499.7,"flagged":false},{"from":"v0.9.0","to":"v0.10.0","loc":424,"days":0.16,"loc_per_day":2577.5,"flagged":false},{"from":"v0.10.0","to":"v0.10.1","loc":285,"days":5.98,"loc_per_day":47.6,"flagged":false},{"from":"v0.10.1","to":"v0.10.2","loc":254,"days":8.82,"loc_per_day":28.8,"flagged":false},{"from":"v0.10.2","to":"v0.11.0","loc":0,"days":0.08,"loc_per_day":0.0,"flagged":false},{"from":"v0.11.0","to":"v0.12.0","loc":247,"days":3.98,"loc_per_day":62.1,"flagged":false},{"from":"v0.12.0","to":"v0.12.1","loc":381,"days":28.98,"loc_per_day":13.1,"flagged":false},{"from":"v0.12.1","to":"v0.12.2","loc":899,"days":0.81,"loc_per_day":1114.9,"flagged":false},{"from":"v0.12.2","to":"v0.13.0","loc":2140,"days":1.33,"loc_per_day":1605.5,"flagged":false},{"from":"v0.13.0","to":"v0.14.0","loc":371,"days":2.95,"loc_per_day":125.8,"flagged":false},{"from":"v0.14.0","to":"v0.16.0","loc":4661,"days":58.93,"loc_per_day":79.1,"flagged":false},{"from":"v0.16.0","to":"v0.17.0","loc":1582,"days":5.34,"loc_per_day":296.3,"flagged":false},{"from":"v0.17.0","to":"v0.18.0","loc":2849,"days":0.51,"loc_per_day":5544.7,"flagged":false},{"from":"v0.18.0","to":"v0.18.1","loc":189,"days":0.24,"loc_per_day":784.0,"flagged":false},{"from":"v0.18.1","to":"v0.19.0","loc":1450,"days":0.71,"loc_per_day":2044.6,"flagged":false},{"from":"v0.19.0","to":"v0.20.0","loc":2374,"days":0.39,"loc_per_day":6148.1,"flagged":false},{"from":"v0.20.0","to":"v0.20.1","loc":757,"days":0.18,"loc_per_day":4310.3,"flagged":false},{"from":"v0.20.1","to":"v0.21.0","loc":359,"days":0.6,"loc_per_day":599.5,"flagged":false},{"from":"v0.21.0","to":"v0.22.0","loc":2906,"days":1.48,"loc_per_day":1965.1,"flagged":false},{"from":"v0.22.0","to":"v0.23.0","loc":948,"days":0.41,"loc_per_day":2289.9,"flagged":false},{"from":"v0.23.0","to":"v0.24.0","loc":1502,"days":1.47,"loc_per_day":1019.6,"flagged":false},{"from":"v0.24.0","to":"v0.25.0","loc":125,"days":21.09,"loc_per_day":5.9,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":19857.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":11.0,"findings_high":0.0,"findings_medium":3.0,"findings_low":8.0,"weighted_findings":5.0,"scanned_lines":31635.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/rust.lang.security.insecure-hashes","severity":"medium","message":"Detected cryptographically insecure hashing function [confidence high]","path":"src/state.rs","line":915,"fingerprint":"rust.lang.security.insecure-hashes:src/state.rs:915"},{"rule_id":"opengrep/rust.lang.security.insecure-hashes","severity":"medium","message":"Detected cryptographically insecure hashing function [confidence high]","path":"src/sync.rs","line":62,"fingerprint":"rust.lang.security.insecure-hashes:src/sync.rs:62"},{"rule_id":"opengrep/rust.lang.security.insecure-hashes","severity":"medium","message":"Detected cryptographically insecure hashing function [confidence high]","path":"src/sync.rs","line":162,"fingerprint":"rust.lang.security.insecure-hashes:src/sync.rs:162"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/config.rs","line":215,"fingerprint":"rust.lang.security.unsafe-usage:src/config.rs:215"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/config.rs","line":227,"fingerprint":"rust.lang.security.unsafe-usage:src/config.rs:227"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/config.rs","line":333,"fingerprint":"rust.lang.security.unsafe-usage:src/config.rs:333"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"src/ui/reader/mod.rs","line":8581,"fingerprint":"rust.lang.security.temp-dir:src/ui/reader/mod.rs:8581"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"src/ui/reader/mod.rs","line":9938,"fingerprint":"rust.lang.security.temp-dir:src/ui/reader/mod.rs:9938"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/ui/reader/mod.rs","line":10380,"fingerprint":"rust.lang.security.unsafe-usage:src/ui/reader/mod.rs:10380"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/ui/reader/mod.rs","line":10440,"fingerprint":"rust.lang.security.unsafe-usage:src/ui/reader/mod.rs:10440"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"src/ui/reader/mod.rs","line":10495,"fingerprint":"rust.lang.security.unsafe-usage:src/ui/reader/mod.rs:10495"}],"evidence":[],"data":{"rulesets":["rust"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":15.0,"vulnerabilities":37.0,"vulns_critical":4.0,"vulns_high":10.0,"vulns_medium":5.0,"vulns_low":2.0,"vulns_unknown":16.0,"penalty":79.0},"findings":[{"rule_id":"osv/RUSTSEC-2026-0369","severity":"critical","message":"zip@3.0.0 (crates.io) is affected by RUSTSEC-2026-0369","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):RUSTSEC-2026-0369"},{"rule_id":"osv/GHSA-m665-v7pm-7grj","severity":"critical","message":"zip@3.0.0 (crates.io) is affected by GHSA-m665-v7pm-7grj","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):GHSA-m665-v7pm-7grj"},{"rule_id":"osv/RUSTSEC-2026-0369","severity":"critical","message":"zip@8.6.0 (crates.io) is affected by RUSTSEC-2026-0369","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):RUSTSEC-2026-0369"},{"rule_id":"osv/GHSA-m665-v7pm-7grj","severity":"critical","message":"zip@8.6.0 (crates.io) is affected by GHSA-m665-v7pm-7grj","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):GHSA-m665-v7pm-7grj"},{"rule_id":"osv/RUSTSEC-2026-0414","severity":"high","message":"pulldown-cmark@0.13.4 (crates.io) is affected by RUSTSEC-2026-0414","path":"Cargo.lock","line":null,"fingerprint":"pulldown-cmark@0.13.4 (crates.io):RUSTSEC-2026-0414"},{"rule_id":"osv/RUSTSEC-2026-0433","severity":"high","message":"pulldown-cmark@0.13.4 (crates.io) is affected by RUSTSEC-2026-0433","path":"Cargo.lock","line":null,"fingerprint":"pulldown-cmark@0.13.4 (crates.io):RUSTSEC-2026-0433"},{"rule_id":"osv/RUSTSEC-2026-0340","severity":"high","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0340","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0340"},{"rule_id":"osv/RUSTSEC-2026-0341","severity":"high","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0341","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0341"},{"rule_id":"osv/RUSTSEC-2026-0367","severity":"high","message":"zip@3.0.0 (crates.io) is affected by RUSTSEC-2026-0367","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):RUSTSEC-2026-0367"},{"rule_id":"osv/GHSA-q7v9-x93c-xqv3","severity":"high","message":"zip@3.0.0 (crates.io) is affected by RUSTSEC-2026-0429, GHSA-q7v9-x93c-xqv3","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):GHSA-q7v9-x93c-xqv3"},{"rule_id":"osv/RUSTSEC-2026-0367","severity":"high","message":"zip@8.6.0 (crates.io) is affected by RUSTSEC-2026-0367","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):RUSTSEC-2026-0367"},{"rule_id":"osv/GHSA-q7v9-x93c-xqv3","severity":"high","message":"zip@8.6.0 (crates.io) is affected by RUSTSEC-2026-0429, GHSA-q7v9-x93c-xqv3","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):GHSA-q7v9-x93c-xqv3"},{"rule_id":"osv/GHSA-9hj8-73fh-9963","severity":"high","message":"zip@8.6.0 (crates.io) is affected by GHSA-9hj8-73fh-9963","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):GHSA-9hj8-73fh-9963"},{"rule_id":"osv/GHSA-hjqx-j4rw-g7xv","severity":"high","message":"zip@8.6.0 (crates.io) is affected by GHSA-hjqx-j4rw-g7xv","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):GHSA-hjqx-j4rw-g7xv"},{"rule_id":"osv/RUSTSEC-2025-0141","severity":"medium","message":"bincode@1.3.3 (crates.io) is affected by RUSTSEC-2025-0141","path":"Cargo.lock","line":null,"fingerprint":"bincode@1.3.3 (crates.io):RUSTSEC-2025-0141"},{"rule_id":"osv/RUSTSEC-2021-0153","severity":"medium","message":"encoding@0.2.33 (crates.io) is affected by RUSTSEC-2021-0153","path":"Cargo.lock","line":null,"fingerprint":"encoding@0.2.33 (crates.io):RUSTSEC-2021-0153"},{"rule_id":"osv/RUSTSEC-2025-0057","severity":"medium","message":"fxhash@0.2.1 (crates.io) is affected by RUSTSEC-2025-0057","path":"Cargo.lock","line":null,"fingerprint":"fxhash@0.2.1 (crates.io):RUSTSEC-2025-0057"},{"rule_id":"osv/RUSTSEC-2026-0459","severity":"medium","message":"libsqlite3-sys@0.35.0 (crates.io) is affected by RUSTSEC-2026-0459","path":"Cargo.lock","line":null,"fingerprint":"libsqlite3-sys@0.35.0 (crates.io):RUSTSEC-2026-0459"},{"rule_id":"osv/RUSTSEC-2024-0436","severity":"medium","message":"paste@1.0.15 (crates.io) is affected by RUSTSEC-2024-0436","path":"Cargo.lock","line":null,"fingerprint":"paste@1.0.15 (crates.io):RUSTSEC-2024-0436"},{"rule_id":"osv/RUSTSEC-2026-0338","severity":"medium","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0338","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0338"},{"rule_id":"osv/RUSTSEC-2026-0339","severity":"medium","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0339","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0339"},{"rule_id":"osv/RUSTSEC-2026-0342","severity":"medium","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0342","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0342"},{"rule_id":"osv/RUSTSEC-2026-0523","severity":"medium","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0523","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0523"},{"rule_id":"osv/RUSTSEC-2026-0524","severity":"medium","message":"quinn-proto@0.11.16 (crates.io) is affected by RUSTSEC-2026-0524","path":"Cargo.lock","line":null,"fingerprint":"quinn-proto@0.11.16 (crates.io):RUSTSEC-2026-0524"},{"rule_id":"osv/RUSTSEC-2026-0538","severity":"medium","message":"quinn-udp@0.5.15 (crates.io) is affected by RUSTSEC-2026-0538","path":"Cargo.lock","line":null,"fingerprint":"quinn-udp@0.5.15 (crates.io):RUSTSEC-2026-0538"},{"rule_id":"osv/RUSTSEC-2026-0486","severity":"medium","message":"rustix@1.1.4 (crates.io) is affected by RUSTSEC-2026-0486","path":"Cargo.lock","line":null,"fingerprint":"rustix@1.1.4 (crates.io):RUSTSEC-2026-0486"},{"rule_id":"osv/GHSA-2mjx-qc3c-rqvc","severity":"medium","message":"rustls@0.23.43 (crates.io) is affected by RUSTSEC-2026-0285, GHSA-2mjx-qc3c-rqvc","path":"Cargo.lock","line":null,"fingerprint":"rustls@0.23.43 (crates.io):GHSA-2mjx-qc3c-rqvc"},{"rule_id":"osv/GHSA-c8m5-c952-6cm4","severity":"medium","message":"rustls@0.23.43 (crates.io) is affected by RUSTSEC-2026-0346, GHSA-c8m5-c952-6cm4","path":"Cargo.lock","line":null,"fingerprint":"rustls@0.23.43 (crates.io):GHSA-c8m5-c952-6cm4"},{"rule_id":"osv/RUSTSEC-2026-0382","severity":"medium","message":"rustls-webpki@0.103.13 (crates.io) is affected by RUSTSEC-2026-0382","path":"Cargo.lock","line":null,"fingerprint":"rustls-webpki@0.103.13 (crates.io):RUSTSEC-2026-0382"},{"rule_id":"osv/RUSTSEC-2026-0386","severity":"medium","message":"tokio@1.53.1 (crates.io) is affected by RUSTSEC-2026-0386","path":"Cargo.lock","line":null,"fingerprint":"tokio@1.53.1 (crates.io):RUSTSEC-2026-0386"},{"rule_id":"osv/RUSTSEC-2026-0381","severity":"medium","message":"webpki-roots@1.0.9 (crates.io) is affected by RUSTSEC-2026-0381","path":"Cargo.lock","line":null,"fingerprint":"webpki-roots@1.0.9 (crates.io):RUSTSEC-2026-0381"},{"rule_id":"osv/RUSTSEC-2026-0368","severity":"medium","message":"zip@3.0.0 (crates.io) is affected by RUSTSEC-2026-0368","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):RUSTSEC-2026-0368"},{"rule_id":"osv/GHSA-8hxf-qr8p-62x4","severity":"medium","message":"zip@3.0.0 (crates.io) is affected by GHSA-8hxf-qr8p-62x4","path":"Cargo.lock","line":null,"fingerprint":"zip@3.0.0 (crates.io):GHSA-8hxf-qr8p-62x4"},{"rule_id":"osv/RUSTSEC-2026-0368","severity":"medium","message":"zip@8.6.0 (crates.io) is affected by RUSTSEC-2026-0368","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):RUSTSEC-2026-0368"},{"rule_id":"osv/GHSA-8hxf-qr8p-62x4","severity":"medium","message":"zip@8.6.0 (crates.io) is affected by GHSA-8hxf-qr8p-62x4","path":"Cargo.lock","line":null,"fingerprint":"zip@8.6.0 (crates.io):GHSA-8hxf-qr8p-62x4"},{"rule_id":"osv/GHSA-h2v8-394m-p7vv","severity":"low","message":"rustls@0.23.43 (crates.io) is affected by RUSTSEC-2026-0348, GHSA-h2v8-394m-p7vv","path":"Cargo.lock","line":null,"fingerprint":"rustls@0.23.43 (crates.io):GHSA-h2v8-394m-p7vv"},{"rule_id":"osv/GHSA-w44r-93j7-qv28","severity":"low","message":"rustls@0.23.43 (crates.io) is affected by RUSTSEC-2026-0349, GHSA-w44r-93j7-qv28","path":"Cargo.lock","line":null,"fingerprint":"rustls@0.23.43 (crates.io):GHSA-w44r-93j7-qv28"}],"evidence":[],"data":{"ecosystems":["crates.io"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":10.0,"findings_high":7.0,"findings_medium":2.0,"findings_low":1.0,"penalty":86.4},"findings":[{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/release.yml","line":9,"fingerprint":"excessive-permissions:.github/workflows/release.yml:9"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":34,"fingerprint":"unpinned-uses:.github/workflows/release.yml:34"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":43,"fingerprint":"unpinned-uses:.github/workflows/release.yml:43"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":74,"fingerprint":"unpinned-uses:.github/workflows/release.yml:74"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":86,"fingerprint":"unpinned-uses:.github/workflows/release.yml:86"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":91,"fingerprint":"unpinned-uses:.github/workflows/release.yml:91"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":111,"fingerprint":"unpinned-uses:.github/workflows/release.yml:111"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":33,"fingerprint":"artipacked:.github/workflows/release.yml:33"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":85,"fingerprint":"artipacked:.github/workflows/release.yml:85"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/release.yml","line":111,"fingerprint":"superfluous-actions:.github/workflows/release.yml:111"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":10.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v0.25.0 ships repy-windows-x86_64.exe (28 downloads)","ref":"repy-windows-x86_64.exe","url":"https://github.com/newptcai/repy/releases/download/v0.25.0/repy-windows-x86_64.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v0.24.0 ships repy-windows-x86_64.exe (6 downloads)","ref":"repy-windows-x86_64.exe","url":"https://github.com/newptcai/repy/releases/download/v0.24.0/repy-windows-x86_64.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v0.23.0 ships repy-windows-x86_64.exe (2 downloads)","ref":"repy-windows-x86_64.exe","url":"https://github.com/newptcai/repy/releases/download/v0.23.0/repy-windows-x86_64.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v0.22.0 ships repy-windows-x86_64.exe (2 downloads)","ref":"repy-windows-x86_64.exe","url":"https://github.com/newptcai/repy/releases/download/v0.22.0/repy-windows-x86_64.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v0.21.0 ships repy-windows-x86_64.exe (2 downloads)","ref":"repy-windows-x86_64.exe","url":"https://github.com/newptcai/repy/releases/download/v0.21.0/repy-windows-x86_64.exe","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":1125.0,"function_nloc":25422.0,"mean_ccn":4.09,"p90_ccn":9.0,"complex_functions":45.0,"long_functions":28.0,"many_param_functions":5.0,"risky_nloc_share":0.2554},"findings":[],"evidence":[{"kind":"complex-function","description":"run in src/ui/reader/mod.rs: complexity 82, 235 lines","ref":"src/ui/reader/mod.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/reader/mod.rs#L2123","weight":1.0},{"kind":"complex-function","description":"handle_normal_mode_keys in src/ui/reader/mod.rs: complexity 77, 216 lines","ref":"src/ui/reader/mod.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/reader/mod.rs#L2515","weight":1.0},{"kind":"complex-function","description":"handle_visual_mode_keys in src/ui/reader/mod.rs: complexity 75, 230 lines","ref":"src/ui/reader/mod.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/reader/mod.rs#L3155","weight":1.0},{"kind":"complex-function","description":"handle_key_event in src/ui/reader/mod.rs: complexity 64, 84 lines","ref":"src/ui/reader/mod.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/reader/mod.rs#L2414","weight":1.0},{"kind":"complex-function","description":"move_cursor in src/ui/reader/mod.rs: complexity 41, 205 lines","ref":"src/ui/reader/mod.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/reader/mod.rs#L6385","weight":0.6833333333333333},{"kind":"complex-function","description":"feed in src/ui/windows/opds.rs: complexity 41, 281 lines","ref":"src/ui/windows/opds.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/windows/opds.rs#L127","weight":0.6833333333333333},{"kind":"complex-function","description":"reconcile_filepath in src/state.rs: complexity 39, 116 lines","ref":"src/state.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/state.rs#L697","weight":0.65},{"kind":"complex-function","description":"init_db in src/state.rs: complexity 35, 93 lines","ref":"src/state.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/state.rs#L170","weight":0.5833333333333334},{"kind":"complex-function","description":"parse_opds1 in src/opds.rs: complexity 34, 78 lines","ref":"src/opds.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/opds.rs#L121","weight":0.5666666666666667},{"kind":"complex-function","description":"render_content in src/ui/board.rs: complexity 31, 229 lines","ref":"src/ui/board.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/ui/board.rs#L123","weight":0.5166666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":23846.0,"duplicated_lines":1542.0,"duplicated_share":0.0647,"files":42.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: src/annotations.rs:142 and src/annotations.rs:151","ref":"src/annotations.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/annotations.rs#L142","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/config.rs:68 and src/config.rs:93","ref":"src/config.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/config.rs#L68","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/css.rs:239 and src/css.rs:294","ref":"src/css.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/css.rs#L239","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/formats/cbz.rs:137 and src/formats/epub.rs:116","ref":"src/formats/cbz.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/formats/cbz.rs#L137","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/formats/cbz.rs:145 and src/formats/fb2.rs:473","ref":"src/formats/cbz.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/formats/cbz.rs#L145","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/formats/fb2.rs:24 and src/formats/mobi.rs:21","ref":"src/formats/fb2.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/formats/fb2.rs#L24","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/formats/fb2.rs:222 and src/formats/fb2.rs:305","ref":"src/formats/fb2.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/formats/fb2.rs#L222","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/library.rs:398 and src/library.rs:411","ref":"src/library.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/library.rs#L398","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/models.rs:155 and src/models.rs:177","ref":"src/models.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/models.rs#L155","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/parser.rs:110 and src/parser.rs:129","ref":"src/parser.rs","url":"https://github.com/newptcai/repy/blob/0a3c3a2063af87fd5d0824cb4588ccfd043cdcf4/src/parser.rs#L110","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"weighted_findings":0.0,"scanned_lines":31635.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.0578,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.4486,"test_lines":914.0,"source_lines":31635.0,"test_ratio":0.0289,"ci_files":1.0,"cochange_share":0.1121,"cochange_commits":214.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/release.yml","ref":".github/workflows/release.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":525.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":13565.0,"other_lines":18070.0,"files_blamed":42.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":4.0,"security:ai_per_kloc":0.295,"security:other_findings":7.0,"security:other_per_kloc":0.387,"security:ratio":0.76},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":["unreviewed-ai-risk"]}