{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-14T00:12:27.534966Z","repo":{"ref":{"host":"github.com","owner":"nizos","name":"tdd-guard"},"default_branch":"main","clone_url":"https://github.com/nizos/tdd-guard.git","html_url":"https://github.com/nizos/tdd-guard","description":"Automated TDD enforcement for Claude Code","stars":2377,"forks":191,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":6242,"primary_language":"TypeScript","license_spdx":"MIT","created_at":"2025-07-07T09:14:14Z","pushed_at":"2026-11-03T19:34:03Z","security_policy_url":null,"distribution":{"owner_created_at":"2016-01-30T07:03:10Z","owner_type":"User","release_assets":[]}},"commit_sha":"ffb7026c8f7e335e2914461fce9ec3f897a87125","profile":{"lines_by_language":{"TypeScript":18757,"Ruby":3143,"Go":3035,"Java":2856,"C#":2102,"Rust":1448,"PHP":1327,"Python":1006,"Shell":313,"JavaScript":272,"Kotlin":165},"files_by_category":{"test":175,"source":136,"docs":43,"config":42,"other":25,"generated":6,"oversized":1,"binary":1},"source_lines":10556,"test_lines":23868},"pillars":{"ai_provenance":{"score":63.2,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.6318,"suspected_share":0.0,"estimated_share":0.6318,"ai_artifacts":1.0,"flagged_work_units":0.0,"flagged_releases":0.0},"summary":"Explicit AI attribution on 63% of first-party code added; an estimated 63% including velocity signals."},"quality":{"score":92.2,"confidence":0.9,"coverage":1.0,"label":"strong","breakdown":{"complexity":94.1,"duplication":81.8,"lint":93.1,"testing":100.0,"docs":80.0,"type_safety":98.2,"process":null},"summary":"Code quality is strong: test-to-source ratio 2.26, CI runs tests; 2% of function code in complex or long functions; 3% duplicated lines. Weakest area: docs."},"security":{"score":69.2,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":90.2,"dependencies":86.1,"ci_actions":0.3,"posture":20.0,"scorecard":null},"summary":"Security posture is weak: 7 known vulnerabilities in 3 dependencies; 27 high-severity workflow issues. Weakest area: ci actions."}},"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":46.0,"checked":46.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":788.0,"attributed_commits":573.0,"attributed_commit_share":0.7271573604060914,"effective_loc":48468.0,"attributed_loc":30622.0,"attributed_loc_share":0.6317982999092184,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 573 attributed commits, 30,622 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ffb7026c8f7e335e2914461fce9ec3f897a87125","url":"https://github.com/nizos/tdd-guard/commit/ffb7026c8f7e335e2914461fce9ec3f897a87125","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"54be0ac5a4f39f61a99a9f9fb1864a9bb07f8f5b","url":"https://github.com/nizos/tdd-guard/commit/54be0ac5a4f39f61a99a9f9fb1864a9bb07f8f5b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"108992dcf7d7f8c90932e8a2cfe22c269f419bc3","url":"https://github.com/nizos/tdd-guard/commit/108992dcf7d7f8c90932e8a2cfe22c269f419bc3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7245912d8a368296b0cf161bc183d8ca0d8d03f5","url":"https://github.com/nizos/tdd-guard/commit/7245912d8a368296b0cf161bc183d8ca0d8d03f5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2579ec1823fac5f4afb73be678d9c500b19885ac","url":"https://github.com/nizos/tdd-guard/commit/2579ec1823fac5f4afb73be678d9c500b19885ac","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fa4fa79551c279ffae68fd108b23be7b17082ab0","url":"https://github.com/nizos/tdd-guard/commit/fa4fa79551c279ffae68fd108b23be7b17082ab0","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ccd71b49b11b5bd350d87d3f4c9a9b6b1e1f3dbd","url":"https://github.com/nizos/tdd-guard/commit/ccd71b49b11b5bd350d87d3f4c9a9b6b1e1f3dbd","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7fbf5e2a201eaeee7db0a838f4be39c07a49ca34","url":"https://github.com/nizos/tdd-guard/commit/7fbf5e2a201eaeee7db0a838f4be39c07a49ca34","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e15a6babcb207078e3b361f7a9b34852950f9ae1","url":"https://github.com/nizos/tdd-guard/commit/e15a6babcb207078e3b361f7a9b34852950f9ae1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"50be6111c23d9bb6180be5247fa06354617f8cc4","url":"https://github.com/nizos/tdd-guard/commit/50be6111c23d9bb6180be5247fa06354617f8cc4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a76cad280c95be4f32d3d4f90f92427c6ee3235f","url":"https://github.com/nizos/tdd-guard/commit/a76cad280c95be4f32d3d4f90f92427c6ee3235f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b8aa41c04fbd979dcb0aa08d6b5afe26d81842d9","url":"https://github.com/nizos/tdd-guard/commit/b8aa41c04fbd979dcb0aa08d6b5afe26d81842d9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"effe3b080a4a0ee63ff654efa3e74bc2861a850b","url":"https://github.com/nizos/tdd-guard/commit/effe3b080a4a0ee63ff654efa3e74bc2861a850b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"812e8e7c2f33c87550b458b8e9ce2923fe86d765","url":"https://github.com/nizos/tdd-guard/commit/812e8e7c2f33c87550b458b8e9ce2923fe86d765","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"14793c688de4f62cefdf3746f41a73d74e1e64ed","url":"https://github.com/nizos/tdd-guard/commit/14793c688de4f62cefdf3746f41a73d74e1e64ed","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4b36f8e3373aa4539ac5e98157f4bfbe3d2a3b56","url":"https://github.com/nizos/tdd-guard/commit/4b36f8e3373aa4539ac5e98157f4bfbe3d2a3b56","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c18a9e644e30c1f0de37cd3d75baf51b80e9b40f","url":"https://github.com/nizos/tdd-guard/commit/c18a9e644e30c1f0de37cd3d75baf51b80e9b40f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4c9a58950e22c2ac05b9e1e7fafeac4e62a306d6","url":"https://github.com/nizos/tdd-guard/commit/4c9a58950e22c2ac05b9e1e7fafeac4e62a306d6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e4df3efa3873c4d7c1a4976e541bca38260d2e61","url":"https://github.com/nizos/tdd-guard/commit/e4df3efa3873c4d7c1a4976e541bca38260d2e61","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"85e9eaee2e87799900cb087dc8141420301529f3","url":"https://github.com/nizos/tdd-guard/commit/85e9eaee2e87799900cb087dc8141420301529f3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6a7dee1b4fae1e8dac00394ee444c837966a7dd5","url":"https://github.com/nizos/tdd-guard/commit/6a7dee1b4fae1e8dac00394ee444c837966a7dd5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"89bf4e45a0095f98fad8a797c5d8aa80ceeb05d2","url":"https://github.com/nizos/tdd-guard/commit/89bf4e45a0095f98fad8a797c5d8aa80ceeb05d2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ce4fb1c56da64b06ab0767c924741d7bf2c3be96","url":"https://github.com/nizos/tdd-guard/commit/ce4fb1c56da64b06ab0767c924741d7bf2c3be96","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"71cacb4d2f85c94d89fe8f5a894a8466da0cbd5e","url":"https://github.com/nizos/tdd-guard/commit/71cacb4d2f85c94d89fe8f5a894a8466da0cbd5e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"173c052f8faa67fac958ce632282cd910c7b5aa7","url":"https://github.com/nizos/tdd-guard/commit/173c052f8faa67fac958ce632282cd910c7b5aa7","weight":0.9}],"data":{"attributed_loc_by_commit":{"ba7154581ad0949fd1b6b2cd623679da96918333":92,"1a2af690a79645146f98643a18f6ede73a8b9f7e":122,"69b9065960d49f318ad0923dd24c89900be66880":0,"ea71c5aa6a652ba75bcb7558eecf887c1bebd298":115,"75c80e2024dc39b726f7c26f17537015d5924527":8,"33f3db9a50dfeebd7f31105fb981c0647bfeeaee":47,"fd74ec40dca462b6798be894dab4e389f0c300cc":2,"cfea0e2f51d0672cd12bd880fcaeaa2be2e326cc":1,"ed07fe3f0b09ae7b2bedc0a104928d3ea42cfad3":23,"5ca6f5d5aef64d02b35cd2ee150757d57530b3f9":0,"a93e9a18b050e91fb5f0dcaa7f5b897da9b439d2":40,"cf67dd89a11373675d58607a922479e2926f9703":70,"b01be28d9419da4df96d58ca14732788275cfa86":11,"ca4404aa703ce72064c1ede287abc6667f311ee2":60,"04904644b35464213d5ca972ef7d06a5f3c1e020":0,"3c3bc57e88909848ad2cd6b51d04d36cc0433abb":14,"d22fdcb2a822d833370a9b0ccab5bef3ba8f0dfa":11,"4b7928894d6b61b94e5dadd500907406a92e6699":0,"73ab196745e143cf3fe6f381289e76b8bc8848f5":0,"12d6cc35cf9717379ea60b988707e4579c92efd7":127,"e26e036af650fe7ddebd47d6c9c4f38da8538c92":6,"1edddf08c540ae472d4647150063c513522e3935":0,"26529e5c99bafab327bec7c0d6120bdf29cb1693":148,"22fc197ff186c2b845a464e4d4121da235e37fd6":86,"75712c5b7186bd8c608ffc77131567bd03ae9781":5,"3516e12f0e46c4b1e033461b55f2dfafad991fd0":62,"06da888d7e8dc3544cae43cd5d6e8c514719a5d0":0,"4bcd72d8585efdc74b61ef804c147ffa2b8a4c62":107,"84f35aa1aab5bba0a705caf2d48c82c382241b4a":66,"b5f3d67561e5a33efac7781a1be72f756a98c616":75,"adda733149c19dac0e55b0f60c91c5b2ee019be3":119,"60359722c93a9d57c749b3988c62929cb6ae8c8f":9,"8b9cdb398def0e091f2bb34ac76f1db3a68311a4":0,"42928dd016ebd5b9398dafff78682cf554fa3a38":108,"ef620adb0233155f462528137a15df9895341ea1":0,"1d19d6975f8c431f79fb1c4a5834917d56a220b2":0,"0e5da4ca8a4a849f815ffcd9bda4d596bc2e1405":15,"6326d11071e87389a7439891ce88203aadf4bee1":55,"a7f5b5613f09c27aaf266389de16a734fd0b6c63":30,"d3237ff72631e470914db43c9e0dde9747b20431":69,"f64611ec66d7d70a680b9f8c02f945c6be3d6bab":92,"7e2fcce7a71e11109548cb2239236b7476b7ea05":286,"2add96bb0f14cd71160fad958e687e9d0bf71f49":12,"aa3d838dffe6a6faffe6d55aeeffcb90f164b97e":22,"84a0b471502b84d22d8a2ab7c7784787786ec7bc":133,"b60beddb13b7cfd1201e823d7b53cd244c6f1a28":55,"31835377147adc1e007514c37df869a5eed0e117":178,"79679e67433b243b9195ded749c4c41817a33b83":3,"33bb6af17879c6db50b3910b6d9a120df0a54034":49,"d295cd7977c0ec7ff66a9db1159c828c6d5c473d":161,"f60639f2f5524551610390f8a82fc827f504b182":123,"709f1474c339354a0678cbf5154c1d2069bd4937":3,"fabda7444150e535ecc007d9169149c81eeb64c7":19,"43499899b70ed5097b6622596f4de3e125a653f5":1,"06edfcc4d3d780543d70ea14bfd354b94f5a3b27":0,"a4ad987a02b857390a96f279e5265d7f05d2e7c5":0,"73b86041ec0dbfe37dbbf95def129fd4ae36e4ab":0,"e2da3295fa777084a003c58699d4b27ed71d9f6c":0,"07f3227728c9a3f1507cecd6cc1f2d3c46f11065":0,"0372006aed72d1cb183685d8880fd45f6dc01378":1,"0719c43f42be2f6acdd2aaa8f20701fb6644ddb3":96,"0cc499e8233f5c9325713c2d8587a8b11103cb02":1,"44e2081e71a37fc76f64fcc7fefbeb20644604e6":0,"f915f06ce87286c0856e6866a8140f5db8f8b0cf":0,"9f66c5b8449628bb4192b6bfda95413e39ac12cd":0,"71267dadc8432b8069741280d63d44fa4b2fbed6":41,"e48ecc37bc74304bc5e38846c4015ba28405667e":172,"7ad353b116355a2fd0fe3db438c0028fcb1622bc":267,"37fb4a043b7abc680ae09f343d03fe3c6932116d":612,"ad7c2e818a6955cf1649b01ef38aab008842bedc":6,"b2439cdd5648838309a9a8367777ff7ef999a9eb":1,"33fb48e0152235c2cc67e646b77abbbb3eeecb6d":20,"918671507fa97da1e1d0c94966a7d68b81d02da0":8,"f03e5caf1fc0752796240275d5ceddcd8511be2f":80,"63f1791caf4f1b8b5fc56b18bafbd2ddb4aad2d4":31,"cdf978bf6c9b1518ce9b42b5fe1e97a9b5cf0167":295,"7f1ce5fd7b8d11bb3c83c00990c4261cd3f665ae":16,"bf51998fdccb23e46d73ac55bb74904d7f4de761":31,"39e791c2d49f8d26f0842b67b6adc0f4578a3277":0,"0d4fc0502b5a0b732c8228c8738282d764f38988":0,"0580b900e440e80630ef4686448ab08345a320a9":0,"5c4f38e869d778021143d6860f10381ad9298557":0,"7f92f20dcfce3d2562df56bc93e934a79f209de1":0,"7cdf0e55e3bebdddf83f884851d7dca2de2db2ce":0,"6ca7516d43adf7529f85f916d278edfaaa380303":0,"3e1da4f5de0447c85bfe81bfdeb023e58bbf8dd8":0,"3a3b3afca5458f409c69ac22d4711dc52df63600":0,"30a04a659f000ee9efa0c746d6a0f0fec2e851be":0,"2c3c9ef62ef806652b8b47bdb15d7cf101726d27":0,"5f4eba3a5bf40edd488dc6d28c4d04e4c9f94e27":0,"0add6fe8ca498201e9d67ab7273b6c4ff5f3c746":0,"fd92c5b134fa03ebc260adbe33ad167b159925d6":0,"5dd5d87e9ecec1e1945b7e95669ff5d25f69fdcb":0,"c90282ab35af1986a40dfb39782d8bc8f7771861":150,"6e74530b4ddb4c0e4630e448b740f1b44f0eeb6d":0,"7e805d1d3db7adad450e513a9fab59ed24cab2b0":0,"79766d41d88a639f57f37c01605223cc7df4ae59":0,"bdd1067babceb1128c111847e4641f873fa7d53a":1129,"0d8823cbb190201bf2c0e8d1a6c005424cc9deba":0,"799a6f1d8a1f8265e71a5858dd115b64e091e906":681,"768562da0337d971e3c0592019268253a298f506":0,"5f40770bd84f4f815bd7e1cf3f65fa9bce3bd2c1":0,"8463c1740538876809f6b81f2d4bd3e3af797a30":0,"3a90ad85203b9eaa78fe913c959a4201f1d62b74":42,"1adbc68b2cd7c6bbd4b667cef74a259eff73a790":0,"e52aead5a0eb323b710428b26579a2e017cd9bd7":0,"9eb14bd2cd22480ec6ffe288a1edb6a27397ec2f":32,"8467fa30d3604c7b8ba520ba936a3cc2a7d108d0":4,"1af07e6ea91350752eb0eba32ef9ad46a09b2fc9":1,"0b0bb22bad3b18d106fd5d9dd3feb7978504ecdc":159,"7ee6a5966e56011ce8703841bf5e56046f1e9632":188,"d79811ee2defe5656f4ae5efa9cd4f34529a8291":12,"247aa5d128016d134ae0cdf6019aaa4c843997d8":85,"1052ecefa54da41a0ad83491590333c2c0c0b51a":0,"ff8eb0a1e3b49b691c3364efad3b2533c69358cb":0,"d12bc46c3caa3dfefac167212f66a32450fd2918":24,"58b17998b3badd95cbfd31c6d5c5e959ebcfa0a5":3,"43aa8347154755088398502dd5c4134d7fd529ed":68,"00880b5ce6061824ecfde00c017cb1b33b49db72":192,"f68edebedf6e9205180fda8f4348c1f88b81f715":0,"d8d58f61ed480c58ad1325a85badb1c1907235fa":217,"ba6e451aa39789f4a701fa405663f53c43cc985d":0,"0a5f848123e0b209f487e8ed37cc3105743801a5":33,"3c722f9117eb72f159f45183414f10864534cff8":7,"1ce471730726122b7d033c961f9e74f71b6327d7":6,"bde2594cb9608b28efaf25c90108b461c9b993a3":12,"bd862fdcf756318339136dda7a2794485a29c0ee":1847,"5ffc48adf3f5779dc833d674f698029bb92be230":21,"547535c4eda55a9936f66f46b4175967321951ca":0,"05446de17bd461336ce235156b77934d2f3eabc5":0,"2ee91831b9f9ba7ab547bbaade490d82db6eaedf":0,"477e7ca1de4013610f924f566f2d2e3a11a06411":0,"bddf39d57dbcb5a8ea727de0652cf7c36076e08e":0,"8dfdd38f564d17f33e68cedf8e64ec73a2e6a11a":216,"5b4f5c1b853df4f9d8e78cc762322444d428c93f":0,"60a4a0e1fd4d195d8e4bb6767c33739dcac75221":0,"82ae509df2276cb53637109f718ff2a12d6f0f51":2,"a5052f52f99836c5e324d70c1f3c676bb2170b8d":0,"3381ff28c6bf874167e79a59514dea79520429b9":0,"fa69e3952b9746d1771967983146b28fe007b919":0,"e29f9103b5ee13ce55e7bb1b99cde477154fe9b7":0,"16520ddd7a0adc26fe2cef67d308a6365b28ef7e":0,"18bbab34f04d934b1ef9abcf3bccc3c032ef5a5f":42,"51a93d37a9a81f7279f7b4051facf93715ec7be6":8,"70594b3d43fe753bb249be4adbc0fc8ec8a658bd":0,"666dfd5c3514779f94ae3cca352e35a759cab6a5":0,"5e1d0dbbd313f17d75505c47f11e06ec30a01ec1":33,"1afcda38983e0a4485082c361519ab2d5dfa48c7":0,"09b9005e27a89a307bcdfcf04e134e246a1d02e9":23,"756ea446a8d95fb2349ee023706136b0e8dc5fa8":0,"91c495b4de9e8424d5c6246715615d9d5ef10748":83,"bed7b3358f23513e9668a4f6b81118b1aabdd02d":201,"f6f75be4cdceee31c14056e1462fe5c51856a82c":136,"f3db629f6ec28662d86bde1f05304b0af1e6f282":85,"d15ea3a77c11b5f2a3f7545469dd9fb55f66b661":35,"5baa2f000f272c6560324693d61e67f1ab5ebf17":94,"1b4dd94319c06c02d48b2997b3f3f81677d2eacb":2,"8525d3beb577e581ad89606ebbd402b36297fce1":0,"a091c8be1ddad97edac253cccc7552fb0fb51245":0,"8dbd5b190474f844b2d22509574641f896cd6276":331,"6c44d6bd66895c22549218706a66fd0a4c96cfe6":512,"6b9efc31b8d9945ad7b912c320967ad6a5f95027":221,"3c9ff05fc9d069e30a5f5939f6928dc75a3b390b":450,"452d87152655fa34f47e61968b30110ce7b5cd92":0,"b5d52c0a46bf53d88f42b35a47590c2dd5910a48":3,"77be476ff26fa29fe32efa4f63b0fdb01b5ba281":34,"59a00b3029ab9df53e673b05504435b73782b655":7,"6bbd07d07c149060befef3d6a4a0c8831340793f":16,"5c16b89a9e1c55aeb196b8a2867d15b24b2aa484":140,"12cc885eeb1e632ad43436b8052b03263e94e875":6,"0085b227fd050f9604e997b18844c76431aec323":49,"2b3ffbefea2f35727707b7ff65df0cd3474b04a6":22,"41952587e0449c10d17893b047a039694a0c1fe0":5,"b5203312cb5df816d77b9574a63dec26eaadfce8":2,"0d77e869aa4febd1a7807ebe6008dbbdab125e34":1,"63d03c582eb509c6cbb50d87cdd6c59998dbb7ac":7,"21d8efca32e6f4ecb2b55f9ff2a86126ff5a018b":31,"71279b00aa9c458765c7af7c9e27e5db65d8945d":56,"9776921ad1c7061a950ea9a245c2ad9f192eebec":1,"b4ae1b17325dd9f48c3fda0ea1c0ad262e2b3a35":76,"ea579c3ae9cd9c31d0b6130e572a123f47a7add5":85,"27fbcf3ba7acbcdcfbc18b1a942ac6068686fbbb":30,"c16d89d814a7490551b4ec0407d6e0dfd1e30057":5,"08841c17d1f1a52c054f4a04bf65b9225fd46ebd":98,"ba4bfadcbf78ac3665b2a35ebed0ea103db8e9a6":0,"3321bcb9b4dc36191c992b060538cf2b2799d9bb":0,"734a366e1fbe5da1edacd07d2e700f025dc70a11":213,"a71485d2d80fc644268cddbf1e4991eb050b47fa":9,"be147f3bb8a60f98bcf9efd8ef099687cdd32e66":51,"f1ddb08d4ff6f1a8c010e87a2f865d9a285a536e":173,"fdaa5ba7458f1bf13a90788ae5754afbdfce30a5":233,"c5b7b78470937c7cfcba5fe9fd61d2d0063546b7":72,"d96afeec8a2cffb715178ec687923ea91352ea5d":17,"a4e2ba1ebec610563fad2bb73914399f5568a593":3,"4f638b1006515f909a4384c76aae8e3d045f9ce1":11,"46b9392f1dd6416e0a6fcbb12cb39420c1750c65":1,"9f89c00cd3e124dcf6c2df790fc5c59dea33d3b8":907,"01bb62295a9aa0d81ec21188a84a6003f67f4e8e":43,"0ede03900205723fb6e1344ab0cfdc488b115597":0,"4e0d5b51dc25999ee115632e142bb4aa540e8ecb":0,"b91979d1c5586fee9bf1fae8e6851d3a167b6d5b":74,"e6f44eeb41995acc9790d1d35b498c8b619b2989":288,"a350d79bcef1cefebcafee3f5b629e724e1ec4a9":0,"6ad6686ade1805ca4e8b3f9f23816aa61714cd5e":197,"f5fc13561eeb8ca36240617cb4fda08a87e48df6":16,"7a5f1a63ccc47be2acd0670c2d9fc798e36f9671":508,"063cd57b00bdea817b4aace28fd59c8e7f6d1005":0,"c2016e2607ac9ed3a2f88ad04bf563e3c88bf08c":0,"1faae052848135071bfc80706f7c017609433330":1311,"4466e4feecf781e43b441cdf4bd899a185e1eea3":1,"69a86b88df07c2f547109c6f7cc0e186ecae2cbc":1,"7bc93822be3a9b603c3ddc77d86ad9f1cb0dc649":0,"4de8b6e33a4cda78c462d5411930d9045c172f02":0,"181b8e90d79b89fe6beddaa4b4752001ae7a31e0":9,"cc934ad8267a5650f4dbe8f79474051590aee7bd":38,"8d1bd1f18afeaa2ebb7b51167888b0ce52c623de":94,"d2360bc14372d0957ed7c3034de04c10f2543fac":103,"4c9b0b81a246ba4f7f466d0f1cf59f0c8405f235":114,"ab43a3dead27c8c5e9ae34e090410871b6f0bda8":103,"b9b6c7ccfd1eda64d2258509296d627a0bac78e4":0,"dd0c13fcb45625041abaf942a2e36966aa574ee5":2,"d28e7602eff2b197f31bd696a2993d015659fc66":26,"ac8027013f6eb9c052762afabcce115f9556eecf":0,"f8643dd8b828fe0cffd64e679fca0aeeff6f2167":28,"7bb986bf91e8d26c1300c3450829dbf770ac0d03":1,"0f824e4ce85ee0cd0eea8a2a77d394309272a9d4":38,"445a3cb708233e08f29c5ec379ecf12afa0184b5":0,"cba1e12d873bef2bd2c69142a1e4c85e2f45d53e":0,"75c1e6f71c8a2e201f92cd4ba2b3ebba40c246ec":0,"347c52a326f27a8fe690f107b481780cc5f6eb14":1,"bff1686d31e93c89551eba1390066c68c8b9c8f5":0,"2c52fb722314a4dae7e384ca2bee8a774b99e65d":0,"2d1b78bde1a0e8bf5b1f37bbc0616380f36a98df":0,"2cf9c952ca916c623626f9e1d106018a6189c5db":66,"3e8be9fd3779c2705f717e3150e1ee93372e76b6":0,"0b2440bcd8348cb26d2d4662b9bc3ab2b8d43a44":70,"bcd88f3afcc8b17d6a37f3ae9b0350c69c146b44":0,"5222e0a6973ac418ea6b29c85159146e73ec2dbe":28,"1ddaf399643e22f1b9554cc483b6bbeceb9f3ede":21,"617a606c08faef61e0fe3a1a59409a2a42f382f2":0,"377fd1ac457baeb188eaa63c383e0f3943e6634d":0,"6fd49092857d1a931c73fbc6b9cd627707e1547b":84,"8d7f04c16512837bcdc1c316f0576b2621276034":144,"be71e37a594ff1be83a3ca55790f85ed447d8818":4,"d4213f17301c06d76b34a7b77796744e068b72eb":0,"1ebcd3cdba5be44ef64b4d4e7ebf6cf38b4c4567":0,"40f9e0657904ec134e8682540998521828fc5b16":21,"fe540f4ff0aa5f74734b4e80e5c00f4f1d5b580b":20,"aa755c76c7d0c7d963030a3b8e326792fad69c55":50,"5f1c4526750e28af02ed501ff3cfe5d069d88bb7":3,"d55981df867647b8bf5e96fba4304b3ff6ca574a":0,"fa6ca8c972b9adb0d956926b7cc24930b86ce482":0,"d0c4169b257f833708bde2be9a7e1e5510a14d17":0,"fcacf2e799e80cd7cae0f5cba58fa840fd0641d5":0,"e67e49ec285f9921cbc95ddeeb496dfca44776f0":0,"3f11a656fbe976d3256fe9916df9d93a3a426afd":0,"84da9eaa84190efc8c861335e4709cd12dc604df":2,"a5c00eddb1a10b512f530275ecc43f69f541a2a5":0,"cce608098334f6910ca1b1ef3bbf3a754381f96e":0,"f57aac3a20c61ed3b0c144950be0ddcf1d9d4678":0,"1fca8c902f41fb30f1ac16769b0bf37216d81668":0,"100284365f9710e372c9e615ce16d6e9e6048665":31,"174b666e37dbcba804cbffb614362d71abadbe6f":0,"fc8e27c32a15167fba552071488b0e5a256eb705":0,"8a15765d417b0a03d385ab6387d6518db9626bfb":0,"85ad3e68c2d3fedb9ecebfafe161e16b8807b596":0,"af5b52245f93e1708663ce8fb6e93f8d1b2c950b":107,"6775b26c4aa202fe3f7891b1e399fa1f382a451e":0,"90faf759ef11e7f50d00ed8db44c56c601a852e2":0,"bc45d58465cc2dd4bcdb952befc36c5c2e201023":0,"dbe774a42c504d3410951e5255cfdb96da17bd4c":0,"1f3fe8e6a59074b3b46a104fc03d19579ae7cc58":93,"1d7a163e2451a5ab512b44758218aa564140f37d":69,"3c11dbf2391e9ea011c1974c3ca1c29e2f72beef":118,"e05525708451a44aab4961d88cc32a1d34840bc8":53,"472530eb59311be7bbdc6997bb6993679de2d021":13,"5de31a11e3339a9b0ae50eeb591936e3af10cc5f":0,"607f30d30317731a652f27b4546a122eb9d83f7f":2,"cab3ffbce3aa2446743f207157772c089e9d4592":0,"49879678482f18c76d3e7e5349b3b9b54aee88bc":0,"db6f1302cfba9a2deeb5dc426c4437f4f171cfb4":131,"3e4782760a244ff737332f28a3131d5e62cb37df":59,"61309a0cbf40e4a74ad238599c8431a3c814eb66":0,"5cdd079620ff759e14ca293a3a0ccabb0ffe64b5":0,"1c05129176b9297ea7c122a11daa4a30cb4b4310":1478,"8214b8a2169e4e3b7b7f7ed6f8b38c077018765a":289,"235494ad5c1af7b44522da84748b6b74463fd7cb":295,"e75eb45f6470b1582e75b61d7d17bc0b68ca3654":6,"aa247da13a45015d3e8ba3b8aeae3e7af3300a41":0,"ac956955d9237635abceb4ac613dcabea8d87c9b":70,"2fcc84e2311d1154f9f3917e16932cfbc4c9fdeb":0,"f4e5fbe1f57f2a90ce81c78cadd014e340604fa9":457,"072fc0bbc6d8cedb180a4009ca776ab1ee181251":564,"9c6813f99bec5f1076819fce9a470ac4717c4a76":18,"73d64af6448896c737719f7d262befff39f199cc":0,"5643aa9496fcbfa721f88638143f14a9d0fe48de":0,"8cd6ec8d7a480c229dbd2d22a1c707c4003bf52e":0,"3252730d354ea47c879a6999679b1e4cbb77e3d0":3,"b54ff67073505f96e9f5c6c139c41f8f31565ea7":1,"ba029c7bd09f0b27a1f53a5be6d14fe957548a84":62,"ac7f5ef22a639ec15dd7c14c4f2b5327966ca092":0,"0948674d2e19f29208f5f2b91293a30ba3ccf78e":0,"8012fcdcf3a68e574b4eb24495e6467eddfb8009":0,"d0fc1c8104895a5f13a8ce6d49879b7ced504a45":0,"e1f0e0229389a70199c20e2cdecf6b42cd4918cc":190,"74173304db285693cf3ea18a6010055c517f9cf1":66,"8b3c724d2dacca134de2dd7624fba9bdc958a3a2":0,"b0d5d2ee122b372850d2d22e93256066463f013b":338,"2f60a8715c31ad26511148fb77db22ab0ca5c576":54,"759ebdbe24af3a0e5b203d6a243efbaf7c322208":0,"5c6f41839b29cbdaeadaaf80d94637374a80fe4e":2,"7072762c49cc09e8454dea85c9b58098bed5f9fa":11,"7979f6f184662ac1f76b1899133d35574e2b8238":0,"9c691c3634c275ba4f12266b49cf0dbadb587cb4":0,"9bbb9aad1bef1be88de9c804271c8878f736c949":0,"caec4c1daba7da0f950ae04e22e40f40ccc70c88":1,"08405e18741d668dbf1f92813fef3d764d242da7":0,"e9bfceb1d42b214b5c7b6c5f3d1e7a1a7c7ee4ab":468,"618e28e4db5116335636c7e583447922d59b7830":278,"40a10524047c2a8b246462200e1486c71749e2d8":148,"1265ad09da1dd7bd523269f4c12eb7d570204f20":167,"c1e8fa9151a11f6d6f93102f5fd604333b1856cc":0,"16cffa277d72879b1b830d80311e7c6ef4dcaafb":230,"45ace52a8c0e2bee169226768f8134ef9e3927a0":295,"e7290726642483ca5da9935ccf35be4e952ae161":3,"ebbd1eb69023904d1d6d53cb07dca688bf8fbd4b":0,"6fbd12130308cf8a0eecff24617304e87326e686":110,"cd88fb83ae9a94a1f543074d4f1be591a344536e":0,"cfe681691514d12cebe13e267081b79d617fc53e":0,"97a05697bc0e6e3b9d6074b49539d7a1f2aa0be3":149,"a71cc77adf5ca4cc7774170f26ee9be8ce224514":0,"4a640ad73c61956834eef18978c7dd39c5a0ac76":0,"5d6f5255c1b4fd6e69e652f5f667030cf4eaa0b6":187,"9402bb11466a688021db39807c30512ff9d5d062":0,"093b5695998a2d25e83cb9c8b9546adb27bae500":2,"8ae84162f36a249032862424d6db7b94b5d0fdc8":5,"e82ec6b33e51c946e03b8f41e2915c6c55cb67c4":2,"a619eddc72e19a3e6c3419a4c39691963172195c":0,"72d9862297f26ce4161cf728a84d63c5c8fd1103":416,"b38fb5bd65802c6f24c6b30a0390c4db0797061e":227,"3cf86d007923622c0a3c0154b0d0b4ef6327149d":67,"ca85b4365ad8922b5283b6681e49acea2ac0e8c3":43,"3c0aaf2beb74ebfe26642f5a9acc3b6aba97f5d9":0,"9bfea763120418fc38021146fc8af053975acd49":9,"a45779b15314e4c8e666b10bc64f5c1ddd0e55ac":6,"e86e9599a6f93ae194b480b42ab0aac5d89bbf26":11,"fd8c6444f31ae86d7a96c70bea1bec2614fffeae":45,"7df7fec03485f4ec8cbdb150341c3ccec1fdb300":54,"a3e873564a5a30528cc2b54596b4de6a97dd957f":15,"c01704345b6c7b104e9a46bd33c34a639b851821":27,"9a479bc1888b7cc18ac0917d031326b3f60fa6fb":41,"f56af7953cde3fcd98d62ee1821b87980d008768":524,"f7440277a1ee08ce2dc627b7e7c455b9e48891b1":0,"5813e452c4c7b1f56fd396e3678a4a8ca66fc676":2,"0d7fcad41fd311b973d6bb18c6462a72813916a0":0,"7349179b34858a7bc6396bc3c079c3acf105e39c":116,"9323708609c9a96a021d033051a96589f60dfa18":2,"f3bcbe2c964c953fd25330473b748d0ca767abc1":0,"012437e86a4ab02d392ed7a615ab7b1a9765c2b5":306,"5725334f725a97f49d1f058f811eeebdb13b3285":347,"122d9a36d7daed4e104001ac406b977648c63872":87,"1ba4ba37921990f4d6804457a2ef8dd41ece5112":45,"cbac5d6ffcc829751412529144be959982569c11":0,"5eae007793794f4b1368833f8ee6d01a65e8f6aa":187,"497d95828771695fc14d6bc9fe2bddbfbf89a59f":114,"8eb7a594c8094930e8f9c4fc59928a7a9572281f":15,"80aab2975f3b7cf18ad462dd46546e67fd357b0e":31,"c914d7a64cc14ad541e9cddba3864b82e2f10cd1":102,"68fa6791899ea3995f9ebbd0af5d933b64c7f83c":59,"44789ddffafa66d795aad4a2ac9b8bb1154ffb66":15,"dc3d22a231ab16c8c142b166b2574b7db09d6e62":125,"d95e22d838a52b3cbfc8877fb2a578f6d9bef607":0,"f7c9b7afcabf5d43b60e2851c90c2ea604cc5cbc":0,"5bc2c82c04e659bcc414cc02234a1db6c3294851":9,"82437199881964a09094aaad610986473e86043d":0,"21a692c09f6ef70c0d43f851546d8a48bf62dfc0":69,"8ee916a2a9d2834a9f2ed010f1c68de139ed5849":1,"c2dc4124f4e8fe9c879423ccfe768bf17a639b34":30,"3568735f5007879364797aa20cef142c3f3e5ff9":0,"2efb455cb84781a5f9b5dec7970bc762e931a02f":0,"367da59ee586c3f8b59c59c909b4cf0eca72ca98":0,"c236a89524e53c7f7b9f2c7156342f2f18b4c7d6":24,"b83d3cc83f80420103b08ca24360e1cb6340c9e0":0,"1c6414781d75824266a4865cb95d11336cbfdad6":8,"d0f4f2f68a12cd3ef6d68b4205045407fc1bb4e3":8,"ccd53b620ee02dd597dd86fa4d31a887211b0307":0,"0f01104ebd2c87956467d89a63cdf7749e7d099f":0,"03102ab3b5c00fa72aed60f604124286b3c25da6":0,"033ba0cbd6043935460683a36550ee656bc3d0e4":0,"2e5a87829ecfee1393c4bbc79674990329af7f29":0,"e0eecde124f998488838081cf6c61a6b2cc62448":0,"8aad42a0835d637d027330c20aa9183c7ce6e850":3,"be09a94d6b050b913f8084ddad9799d2e059c493":0,"c5a0e661fc5d36d65725eb393cceb115a183b5b8":0,"54f3e3f63f5999c62bae251e1ee4797799f21a40":0,"b0d0c4f43bb1a406ab4b6e2d01ba7af305629595":0,"0c1cf192bce9a4313fbd33d53906cf08b77e07b0":0,"602d69e926c703b8e2c57060b664e510b412b307":0,"df4ca765542647bfd499cb7b580d21693ca98bb4":0,"1e3635c37963e048cbf008924c8eeee5ae1d6fc8":0,"f0eacb8fb6a036618df1224221c251e4408617f2":0,"1f50dae28ceb88ac0cb2b434d84fcf4e64d564b1":0,"24aa496aeb695e98387ec940077d499349dff42b":392,"e94c998edbb5364eb08f8fe132033e5b75e5e859":0,"d1d22a5df4f7326ac073e3344deba9aec5ad2065":137,"1d7e879d2a8f9ad9a61b6bf1bfd192f608682331":0,"d3c45d3e48ea8e6e073b02a3dd4be651e2b36531":0,"946415f8d539ef9913a5c4c1f599158e3788516b":0,"59976e924af23a7eda72f44c903676f43d0bbfdb":0,"9eb1f6796405f91d600a1bae9a6092b47cf92e86":0,"36c0197ad2ca200b66814acd913232df6842424e":0,"5f282af5a18ec0e2adfefce16d908bd39a8a2cc7":0,"377b1e006d0433ffb52e522e81a89224d9204523":0,"41926240b39aa8dfb594bd3dc0b52969744fa2cb":0,"ac1bf8a5dff92bef9019d9f6a3f335c7010049ad":0,"0b44933f67030a1b36477d4bec271f770849af7c":0,"43be30b069c8b05a88fc12b0e3de12e55eb0d606":0,"bb55b6027f92a1ab3c2cf2e67a8d917b45724fc3":0,"6341e7e17d654ffa303715147873c25b89ea32e5":0,"08bf0d1bd523e2a39a96b37aa991288e9fb0bd41":0,"9bc513099e57e10708de096879c7f5065f2a2306":0,"d62287acbc1b640a08d24b6eaa2f20436b109cc0":0,"2bc01d285f45110ad61e13d410d1acf3fcb010da":0,"c8d1441761d0c9f0b5c9ed8dd8e5235f0f77cd02":0,"339c69e672edf59145dd7675cdabafe5ad64526b":0,"dae34d404aff04ca8eaa68415d4d3c7b34ebcd71":0,"b85ceebb8572cc1d182c93399d115f12399ee151":0,"802decab29cb7a64644f9452cac2c1c8bb9af95e":0,"01383a76a2246b24395f8c9a12f67037bc56c575":0,"64ad544062783d2a6b8f2a72eeb4912541f781ec":0,"1ebc4d004e429142b29898bc5c4b90d459c64a03":25,"1f89d62320e0fe3da6bc0ea682b88fa6708f17ea":20,"4574676b4469c54b839a19c02485db172df084db":2,"ad7f74e860aee72ba9341970265c4ef7d4a836be":0,"af00ea58974cb2f6197941329c7316b4c2477d93":5,"26d369bd4781e2cff7e8643bca9d4fe5f8ac3893":1,"fbc5f0e0f65e6b45ec6860cafe9d36887f5b1fd6":43,"3a9167f98a6833005af13b13216636d5ca8be653":11,"a755866ce9e986240377387f3f9921c56194edec":0,"4b4a5664e8e77ade2a8ae0c1da2fc51855ea5059":0,"a3fbf7336eddf07ef578607f80debd7b2d6d2242":0,"f8c19f012d1359237ec0b51ab484608c32acc9ea":0,"e2d53056874cbdf1c9dba2a969e3f91e4534e177":0,"bd727633281ce1b78a944d3c2e4b3d9ba7b46f3d":0,"7a01db858e049baadd80bf784389b10181ef1520":0,"5586a2a103f469979b6e16fed4d7ca75189bfc92":1,"58607ecd5d796018e941b2c717964888fed01cdf":0,"d99fcef8776e669d27bb21ab82cf94d211be45a2":0,"008836962f273f27419ee7dad1f069574999a31e":0,"abec6f7528324f115563767510b2d3312b9ea35e":0,"f45bb3b71e45d636cc9c8c8770442e5064c4e5be":0,"6e36314c0f5e03f74dabfdcb4acfe0ba5d1e6532":0,"a6ed9edd8d9e70c6488b0c0e2133847590f63da3":0,"577c5f3ced42986601dfff2de3fd60f93e2b45d4":0,"542bd159fbd5d688ee5396d7a7017b0312d65e6a":63,"bdaf616f64a36c91cb2335a901349bfde424f5b8":0,"520edc8b7b2c8c75fe8ad87130599f2751f6618b":0,"ac0e62a682eca6c6769a73c27baba0600b2098d5":0,"973bf8344c2ef2c4b1c7286de7a8712879aaecd2":0,"13e330055a140dcc67532204e5c476ace7f16f64":37,"00f8fc8fbf82d48201a22a2d808caade6720fd89":0,"a346993ce74bccd29b8f45ead6b69d816d6487a0":0,"38f01d7bc28df1e940cb9ef915333a34501723b0":19,"05a0e8614b3c771ff1e01f5a9190d3a8f67bfb70":0,"935875ca7514c86256ad9145747463f1082a79c6":0,"8a7aee281223320949558b2a477a19a7c3352bfd":0,"b8b35ca80740262b5d74e4891ffb70f3e42b24b4":15,"aa0f93ee9de1322eded551b57d81222d802c8704":27,"26051951b1797c6f96e0a9ed44b5c51955abfaa9":137,"2d80a5f2d41cbcbeecb56ce1fc7bc6f6d9e7bac4":28,"8710a3074ee4d533c477f593feff286ddb95f3a8":72,"f4821e732043da4043a5e9c8c5ff08dd9f3a42ab":210,"a3047121a2200ba9f80602054cbc4ff0f5574188":48,"a782036de4886b6d4bc756b47f8bec1e6e0a5370":73,"1ca20a7b7820c3fa4513c2cf1388f2e2b4881afd":137,"a7dfa95020c49b9078913fae46db4f14bf95c5c6":0,"58d7a4d3d0dd53c1d8da7d3ddf21b930a10f735e":6,"11456234f5b70e2ffb1040fc586bfad258e55913":0,"fb5707d497b15f55d06b23841f388c5aa2765fbe":0,"d8b14933a940fa9e1e2f84fbe660d8f4d1e31728":7,"5148b9dcd80844dd7d54442b431219a6a1825ea6":2,"9c5c5b26b158270f7955fa401b21c5e83d93199f":10,"932809003c49b0e7a54183d6e815d1b4a7f99208":10,"44f95fde8a92580b5af9f707fe68f7af52d67386":17,"9f79549fbe7437788f511766a8134d6365fa4e4d":0,"46450866acb877c9e16b36312f986892400b1458":246,"ac698fef439aeb8f1e836dd7150ce5d3565ca655":0,"2dcb4f9f5d1ebd3fabf2fcb77946bbf4922fbcfb":4,"41fed0df7d0963dcafe47c2311ad41c7ce4e8a01":0,"87af2d164ac189c8d4cbb9017067f2885c686c39":16,"457c1f9a377ba64d41893c8393bc7e7f70e67312":0,"916344d07a73573b7325419808cae44aaa7af493":38,"e14357592910a4f3597ec1539b57db5f5660a83f":0,"ee1593ef98ea3604ee88ec18721ab24a79afac05":0,"3ab30a515e4e1ac8498c3d172bc23c8d63bb3339":64,"7ebb6d65dd2092b5cf7c70afc4c2304539a1d18f":20,"6bb562bac6f8ab33219170d2eebdafa4080aa10e":35,"fefd7b819d5956345788e69e20c2106d1a2d5525":0,"3d9500b74ed7ffbd61bd4b2fd7b0de2295fe82a0":0,"0df2e4897af53713de2c5046c3d39ec0fdc18db9":0,"9736858bfd76a18bf81e175800540cc0aa708e6d":0,"7eff2735da38dc140037e270bd61e24a916b89cf":5,"cedb4c2e3510ec3a572e568c5c111f709134b9b3":0,"6602a22c9c4b583e3108980b200f33b46bb60562":15,"0ed4b7a275d76d016ea95543107a2587b6577fdb":54,"5b2e7ac837a19aeb3dc8d35c2a602656803e9b3c":0,"949e9174fa2783b131d6fe501263b14a31f9ceda":0,"5ce55ecea6736a350de38b5ad446333a529f83d1":7,"23ea35462e53ea5848ff72b06457d639c15cd803":0,"2c82daaa4bbd10efac7bd0b2d94d4f114bcb37b0":0,"685a991cd2a589a709918ac7eda7a9db83ef838d":0,"3cf8476b5969c172fbcebaa3e97ec4f213e13dc9":0,"fbce2896b3f9b9168f4b9b611232fb8a1963672b":0,"6ecd5c6d2cb09f65a09684b2f5c81a485a8cf182":0,"b41a31bbbb75db3997e66fb319e850356864b3f5":0,"d6d94daac174fdfda03bdfc935ea3b4c9da8f0ac":0,"3b9234309e9edc2b8b896c8be43c8b8dee58feeb":0,"f6cc400cc68a878b9f22abfeab1989147b14e8df":0,"14b07e12499c6424b755c83fe7e0753fef364768":0,"8c2b9f7cda8f4c93a96bdf186273ab2f171b7af9":0,"e066e500006480ddc00b80e7b99d0be71b3266ad":0,"a9f058088baff6ce1a96056bcb0333d35073c5dd":0,"47446ea3e5361b2fa90ae6237a796cfecc46851a":4,"765a5e030e6869497bc609d35dc81e037515a739":6,"c4ef1c1dec18b764c5dc02217d191135ffe1fd45":1,"d7c919ba283f17a82c7254c819fd50413a4cda81":0,"a0c2315d3858ea8feacc5a13c5ce651ad38cae71":0,"078c8be268b26eb69579b35b7e8920caf1905977":0,"6fa1953f1f489184f93cfff5895d5ab0bef377b0":0,"73b647f8c4ac43753d61d1063f12b0fab527f050":0,"c219884f6f3f740eb6ad1a48c358960cfa730e55":0,"e25c691962f31c33359409d9aaa3eef44bca65b1":240,"545cff0d87d57b038df7e60e8de69eb2dfe719d1":0,"6b37bfd6507a77e6755c749d7fa6b1f02b7c3aab":0,"cf203aa07af875860cc6d7e352d999a7bfdc0a12":5,"7a2ee90c3946a59419b038cbdb525572cc4e1e7f":9,"b76b571a205a3c7b080b2ac27ec6cc6ff1a43bb5":0,"f87227d5d0a93741f13e5df60a3d2828749cdc37":24,"60fd375067950fae905417b9c77434dbed859e3a":17,"fd8d967ebfb4397c77a9b3f2927fd1703dac2c41":12,"328b17faccec51d8c6ffb407de4cb0a5fc50b2f4":4,"d7ba2e26ab90fbed78cafe9262fb8b0638419285":21,"3fbf140a762da98c7876547c8b9b352ddb23af18":15,"eb1043b97c5a7e92f6cae06f9f0b3bf1b9f13117":31,"a3c2e16458a1e5aa2b4f227470948a90f51a8921":28,"5242a167f5320e8b39bf77e708c84cb8f6e3edd9":17,"b1e5ee002b99e67883f5de2d66a41c8df5be2fbe":13,"43a135674b784da25092fc2fa0b91dece9797153":40,"173c052f8faa67fac958ce632282cd910c7b5aa7":21,"71cacb4d2f85c94d89fe8f5a894a8466da0cbd5e":32,"ce4fb1c56da64b06ab0767c924741d7bf2c3be96":8,"89bf4e45a0095f98fad8a797c5d8aa80ceeb05d2":21,"6a7dee1b4fae1e8dac00394ee444c837966a7dd5":20,"85e9eaee2e87799900cb087dc8141420301529f3":5,"e4df3efa3873c4d7c1a4976e541bca38260d2e61":0,"4c9a58950e22c2ac05b9e1e7fafeac4e62a306d6":1,"c18a9e644e30c1f0de37cd3d75baf51b80e9b40f":1,"4b36f8e3373aa4539ac5e98157f4bfbe3d2a3b56":356,"14793c688de4f62cefdf3746f41a73d74e1e64ed":0,"812e8e7c2f33c87550b458b8e9ce2923fe86d765":0,"effe3b080a4a0ee63ff654efa3e74bc2861a850b":4,"b8aa41c04fbd979dcb0aa08d6b5afe26d81842d9":0,"a76cad280c95be4f32d3d4f90f92427c6ee3235f":0,"50be6111c23d9bb6180be5247fa06354617f8cc4":0,"e15a6babcb207078e3b361f7a9b34852950f9ae1":0,"7fbf5e2a201eaeee7db0a838f4be39c07a49ca34":0,"ccd71b49b11b5bd350d87d3f4c9a9b6b1e1f3dbd":14,"fa4fa79551c279ffae68fd108b23be7b17082ab0":0,"2579ec1823fac5f4afb73be678d9c500b19885ac":0,"7245912d8a368296b0cf161bc183d8ca0d8d03f5":0,"108992dcf7d7f8c90932e8a2cfe22c269f419bc3":0,"54be0ac5a4f39f61a99a9f9fb1864a9bb07f8f5b":0,"ffb7026c8f7e335e2914461fce9ec3f897a87125":0},"tools":{"claude-code":{"name":"Claude Code","commits":573,"loc":30622,"first_seen":1751523089,"last_seen":1793734159}},"monthly":{"2025-07":{"loc":21279,"attributed_loc":18454},"2025-08":{"loc":11616,"attributed_loc":7552},"2025-09":{"loc":1568,"attributed_loc":1544},"2025-10":{"loc":24,"attributed_loc":24},"2025-11":{"loc":948,"attributed_loc":16},"2025-12":{"loc":0,"attributed_loc":0},"2026-01":{"loc":6,"attributed_loc":3},"2026-02":{"loc":0,"attributed_loc":0},"2026-03":{"loc":1332,"attributed_loc":529},"2026-04":{"loc":5740,"attributed_loc":1449},"2026-05":{"loc":2387,"attributed_loc":92},"2026-06":{"loc":941,"attributed_loc":941},"2026-07":{"loc":2613,"attributed_loc":4},"2026-08":{"loc":14,"attributed_loc":14},"2026-09":{"loc":0,"attributed_loc":0},"2026-10":{"loc":0,"attributed_loc":0},"2026-11":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1751524746.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1751524746}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":237.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":48468.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":1234.0,"median_loc_per_hour":110.35040007192305,"pr_timed_units":47.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":78.0,"flagged_releases":0.0,"max_loc_per_day":20895.2},"findings":[],"evidence":[],"data":{"releases":[{"from":"v0.1.0","to":"v0.1.1","loc":0,"days":0.05,"loc_per_day":0.0,"flagged":false},{"from":"v0.1.1","to":"v0.1.2","loc":42,"days":0.04,"loc_per_day":1008.0,"flagged":false},{"from":"v0.1.2","to":"v0.1.3","loc":8,"days":0.23,"loc_per_day":35.2,"flagged":false},{"from":"v0.1.3","to":"v0.1.4","loc":139,"days":0.94,"loc_per_day":147.8,"flagged":false},{"from":"v0.1.4","to":"v0.2.0","loc":2756,"days":2.72,"loc_per_day":1013.5,"flagged":false},{"from":"v0.2.0","to":"v0.3.0","loc":1675,"days":0.08,"loc_per_day":20895.2,"flagged":false},{"from":"v0.3.0","to":"v0.3.1","loc":43,"days":0.09,"loc_per_day":505.7,"flagged":false},{"from":"v0.3.1","to":"v0.3.2","loc":362,"days":0.81,"loc_per_day":446.9,"flagged":false},{"from":"v0.3.2","to":"v0.3.3","loc":213,"days":0.13,"loc_per_day":1636.1,"flagged":false},{"from":"v0.3.3","to":"v0.3.4","loc":827,"days":0.21,"loc_per_day":4017.1,"flagged":false},{"from":"v0.3.4","to":"v0.4.0","loc":1732,"days":1.08,"loc_per_day":1607.4,"flagged":false},{"from":"v0.4.0","to":"v0.5.0","loc":644,"days":0.75,"loc_per_day":854.4,"flagged":false},{"from":"v0.5.0","to":"v0.5.1","loc":1,"days":1.84,"loc_per_day":0.5,"flagged":false},{"from":"v0.5.1","to":"v0.5.2","loc":66,"days":0.06,"loc_per_day":1017.6,"flagged":false},{"from":"v0.5.2","to":"v0.5.3","loc":0,"days":1.01,"loc_per_day":0.0,"flagged":false},{"from":"v0.5.3","to":"pytest-v0.1.0","loc":588,"days":3.18,"loc_per_day":184.9,"flagged":false},{"from":"pytest-v0.1.0","to":"v0.6.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.6.0","to":"vitest-v0.1.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.0","to":"pytest-v0.1.1","loc":842,"days":3.21,"loc_per_day":262.7,"flagged":false},{"from":"pytest-v0.1.1","to":"pytest-v0.1.2","loc":107,"days":0.5,"loc_per_day":215.7,"flagged":false},{"from":"pytest-v0.1.2","to":"v0.7.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.7.0","to":"vitest-v0.1.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.1","to":"phpunit-v0.1.0","loc":1350,"days":2.1,"loc_per_day":641.6,"flagged":false},{"from":"phpunit-v0.1.0","to":"v0.8.0","loc":45,"days":0.08,"loc_per_day":546.0,"flagged":false},{"from":"v0.8.0","to":"vitest-v0.1.2","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.2","to":"v0.8.1","loc":3433,"days":3.85,"loc_per_day":891.7,"flagged":false},{"from":"v0.8.1","to":"jest-v0.1.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"jest-v0.1.0","to":"phpunit-v0.1.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"phpunit-v0.1.1","to":"vitest-v0.1.3","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.3","to":"v0.9.0","loc":680,"days":3.42,"loc_per_day":198.8,"flagged":false},{"from":"v0.9.0","to":"phpunit-v0.1.2","loc":65,"days":0.8,"loc_per_day":81.7,"flagged":false},{"from":"phpunit-v0.1.2","to":"go-v0.1.0","loc":2416,"days":3.22,"loc_per_day":751.3,"flagged":false},{"from":"go-v0.1.0","to":"go-v0.1.1","loc":154,"days":0.95,"loc_per_day":161.4,"flagged":false},{"from":"go-v0.1.1","to":"v0.9.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.9.1","to":"reporters/go/v0.2.0","loc":949,"days":5.65,"loc_per_day":168.0,"flagged":false},{"from":"reporters/go/v0.2.0","to":"v0.9.2","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.9.2","to":"reporters/go/v0.2.1","loc":42,"days":8.28,"loc_per_day":5.1,"flagged":false},{"from":"reporters/go/v0.2.1","to":"v0.9.3","loc":6,"days":0.97,"loc_per_day":6.2,"flagged":false},{"from":"v0.9.3","to":"rust-v0.1.0","loc":1774,"days":3.11,"loc_per_day":570.8,"flagged":false},{"from":"rust-v0.1.0","to":"v0.10.0","loc":719,"days":0.93,"loc_per_day":776.1,"flagged":false},{"from":"v0.10.0","to":"v0.10.1","loc":116,"days":0.79,"loc_per_day":147.7,"flagged":false},{"from":"v0.10.1","to":"v0.10.2","loc":2,"days":1.14,"loc_per_day":1.8,"flagged":false},{"from":"v0.10.2","to":"v0.11.0","loc":306,"days":2.23,"loc_per_day":137.3,"flagged":false},{"from":"v0.11.0","to":"vitest-v0.1.4","loc":434,"days":1.7,"loc_per_day":255.3,"flagged":false},{"from":"vitest-v0.1.4","to":"v1.0.0","loc":1870,"days":4.11,"loc_per_day":454.5,"flagged":false},{"from":"v1.0.0","to":"jest-v0.1.2","loc":10,"days":3.77,"loc_per_day":2.7,"flagged":false},{"from":"jest-v0.1.2","to":"v1.0.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v1.0.1","to":"vitest-v0.1.5","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.5","to":"v1.0.2","loc":0,"days":3.37,"loc_per_day":0.0,"flagged":false},{"from":"v1.0.2","to":"jest-v0.1.3","loc":24,"days":19.62,"loc_per_day":1.2,"flagged":false},{"from":"jest-v0.1.3","to":"v1.1.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v1.1.0","to":"vitest-v0.1.6","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.1.6","to":"jest-v0.1.4","loc":16,"days":25.98,"loc_per_day":0.6,"flagged":false},{"from":"jest-v0.1.4","to":"phpunit-v0.1.3","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"phpunit-v0.1.3","to":"storybook-v0.1.0","loc":935,"days":86.29,"loc_per_day":10.8,"flagged":false},{"from":"storybook-v0.1.0","to":"v1.2.0","loc":3,"days":54.16,"loc_per_day":0.1,"flagged":false},{"from":"v1.2.0","to":"v1.3.0","loc":697,"days":3.89,"loc_per_day":179.1,"flagged":false},{"from":"v1.3.0","to":"rspec-v0.1.0","loc":940,"days":8.46,"loc_per_day":111.2,"flagged":false},{"from":"rspec-v0.1.0","to":"rspec-v0.2.0","loc":73,"days":0.06,"loc_per_day":1298.0,"flagged":false},{"from":"rspec-v0.2.0","to":"v1.4.0","loc":396,"days":2.34,"loc_per_day":169.5,"flagged":false},{"from":"v1.4.0","to":"vitest-v0.2.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"vitest-v0.2.0","to":"storybook-v0.2.0","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"storybook-v0.2.0","to":"rspec-v0.3.0","loc":961,"days":0.66,"loc_per_day":1450.2,"flagged":false},{"from":"rspec-v0.3.0","to":"minitest-v0.1.0","loc":1622,"days":6.43,"loc_per_day":252.1,"flagged":false},{"from":"minitest-v0.1.0","to":"v1.5.0","loc":747,"days":6.03,"loc_per_day":123.9,"flagged":false},{"from":"v1.5.0","to":"v1.5.1","loc":1142,"days":0.07,"loc_per_day":17044.2,"flagged":false},{"from":"v1.5.1","to":"v1.6.0","loc":37,"days":0.59,"loc_per_day":62.3,"flagged":false},{"from":"v1.6.0","to":"v1.6.1","loc":246,"days":0.24,"loc_per_day":1013.9,"flagged":false},{"from":"v1.6.1","to":"v1.6.2","loc":4,"days":0.04,"loc_per_day":96.0,"flagged":false},{"from":"v1.6.2","to":"v1.6.3","loc":16,"days":0.07,"loc_per_day":233.8,"flagged":false},{"from":"v1.6.3","to":"v1.6.4","loc":38,"days":2.99,"loc_per_day":12.7,"flagged":false},{"from":"v1.6.4","to":"v1.6.5","loc":551,"days":1.06,"loc_per_day":519.1,"flagged":false},{"from":"v1.6.5","to":"v1.6.6","loc":74,"days":7.65,"loc_per_day":9.7,"flagged":false},{"from":"v1.6.6","to":"v1.6.7","loc":7,"days":0.89,"loc_per_day":7.8,"flagged":false},{"from":"v1.6.7","to":"v1.6.8","loc":23,"days":0.37,"loc_per_day":61.4,"flagged":false},{"from":"v1.6.8","to":"minitest-v0.2.0","loc":1676,"days":13.86,"loc_per_day":120.9,"flagged":false},{"from":"minitest-v0.2.0","to":"v1.6.9","loc":861,"days":31.01,"loc_per_day":27.8,"flagged":false},{"from":"v1.6.9","to":"v1.7.0","loc":687,"days":7.15,"loc_per_day":96.0,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":10556.0,"index":0.663,"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":14.0,"per_kloc:emoji_in_code":1.326,"files:emoji_in_code":1.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":8.0,"findings_high":0.0,"findings_medium":8.0,"findings_low":0.0,"weighted_findings":3.1,"scanned_lines":10556.0,"parse_errors":1.0},"findings":[{"rule_id":"opengrep/dockerfile.security.no-sudo-in-dockerfile","severity":"medium","message":"Avoid using sudo in Dockerfiles. Running processes as a non-root user can help  reduce the potential impact of configuration errors and security vulnerabilities. [confidence high]","path":".devcontainer/Dockerfile","line":187,"fingerprint":"dockerfile.security.no-sudo-in-dockerfile:.devcontainer/Dockerfile:187"},{"rule_id":"opengrep/bash.lang.security.ifs-tampering","severity":"medium","message":"The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS=\",\" read -a my_array'. [confidence low]","path":".devcontainer/scripts/init-firewall.sh","line":46,"fingerprint":"bash.lang.security.ifs-tampering:.devcontainer/scripts/init-firewall.sh:46"},{"rule_id":"opengrep/bash.lang.security.ifs-tampering","severity":"medium","message":"The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS=\",\" read -a my_array'. [confidence low]","path":".devcontainer/scripts/setup-dev-environment.sh","line":30,"fingerprint":"bash.lang.security.ifs-tampering:.devcontainer/scripts/setup-dev-environment.sh:30"},{"rule_id":"opengrep/csharp.lang.security.filesystem.unsafe-path-combine","severity":"medium","message":"String argument projectRoot is used to read or write data from a file via Path.Combine without direct sanitization via Path.GetFileName. If the path is user-supplied data this can lead to path traversal. [confidence medium]","path":"reporters/dotnet/TddGuard.Dotnet.Core/ReportFileWriter.cs","line":26,"fingerprint":"csharp.lang.security.filesystem.unsafe-path-combine:reporters/dotnet/TddGuard.Dotnet.Core/ReportFileWriter.cs:26"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"src/config/Config.ts","line":47,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:src/config/Config.ts:47"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `type` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"src/storage/FileStorage.ts","line":27,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:src/storage/FileStorage.ts:27"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `type` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"src/storage/FileStorage.ts","line":32,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:src/storage/FileStorage.ts:32"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `filePath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"src/storage/FileStorage.ts","line":96,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:src/storage/FileStorage.ts:96"}],"evidence":[],"data":{"rulesets":["typescript","javascript","rust","java","go","csharp","php","ruby","bash","python","kotlin","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":3.0,"vulnerabilities":7.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":5.0,"vulns_low":1.0,"vulns_unknown":1.0,"penalty":9.0},"findings":[{"rule_id":"osv/GHSA-gcqx-w48m-w2h4","severity":"medium","message":"deepmerge@4.3.1 (npm) is affected by GHSA-gcqx-w48m-w2h4","path":"package-lock.json","line":null,"fingerprint":"deepmerge@4.3.1 (npm):GHSA-gcqx-w48m-w2h4"},{"rule_id":"osv/GHSA-46wx-v44x-9hh2","severity":"medium","message":"hono@4.13.14 (npm) is affected by GHSA-46wx-v44x-9hh2","path":"package-lock.json","line":null,"fingerprint":"hono@4.13.14 (npm):GHSA-46wx-v44x-9hh2"},{"rule_id":"osv/GHSA-4h7h-rv7c-7m2v","severity":"medium","message":"hono@4.13.14 (npm) is affected by GHSA-4h7h-rv7c-7m2v","path":"package-lock.json","line":null,"fingerprint":"hono@4.13.14 (npm):GHSA-4h7h-rv7c-7m2v"},{"rule_id":"osv/GHSA-4m76-xfj5-7975","severity":"medium","message":"hono@4.13.14 (npm) is affected by GHSA-4m76-xfj5-7975","path":"package-lock.json","line":null,"fingerprint":"hono@4.13.14 (npm):GHSA-4m76-xfj5-7975"},{"rule_id":"osv/GHSA-h7mg-cq63-vhpq","severity":"medium","message":"hono@4.13.14 (npm) is affected by GHSA-h7mg-cq63-vhpq","path":"package-lock.json","line":null,"fingerprint":"hono@4.13.14 (npm):GHSA-h7mg-cq63-vhpq"},{"rule_id":"osv/RUSTSEC-2026-0486","severity":"medium","message":"rustix@1.0.8 (crates.io) is affected by RUSTSEC-2026-0486","path":"reporters/rust/Cargo.lock","line":null,"fingerprint":"rustix@1.0.8 (crates.io):RUSTSEC-2026-0486"},{"rule_id":"osv/GHSA-3gg2-335m-rxc6","severity":"low","message":"hono@4.13.14 (npm) is affected by GHSA-3gg2-335m-rxc6","path":"package-lock.json","line":null,"fingerprint":"hono@4.13.14 (npm):GHSA-3gg2-335m-rxc6"}],"evidence":[],"data":{"ecosystems":["Go","crates.io","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":45.0,"findings_high":27.0,"findings_medium":17.0,"findings_low":1.0,"penalty":357.4},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":19,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:19"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":28,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:28"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":52,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:52"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":55,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:55"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":61,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:61"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":85,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:85"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":88,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:88"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":104,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:104"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":107,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:107"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":113,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:113"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":123,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:123"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":144,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:144"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":147,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:147"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":153,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:153"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":159,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:159"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":164,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:164"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":169,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:169"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":174,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:174"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":208,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:208"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/ci.yml","line":214,"fingerprint":"unpinned-uses:.github/workflows/ci.yml:214"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":27,"fingerprint":"unpinned-uses:.github/workflows/security.yml:27"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/security.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":36,"fingerprint":"unpinned-uses:.github/workflows/security.yml:36"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/security.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":47,"fingerprint":"unpinned-uses:.github/workflows/security.yml:47"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/security.yml","line":50,"fingerprint":"unpinned-uses:.github/workflows/security.yml:50"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":18,"fingerprint":"artipacked:.github/workflows/ci.yml:18"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":51,"fingerprint":"artipacked:.github/workflows/ci.yml:51"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":84,"fingerprint":"artipacked:.github/workflows/ci.yml:84"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":103,"fingerprint":"artipacked:.github/workflows/ci.yml:103"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":143,"fingerprint":"artipacked:.github/workflows/ci.yml:143"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":14,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":47,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:47"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":80,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:80"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":99,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:99"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":139,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:139"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/ci.yml","line":229,"fingerprint":"excessive-permissions:.github/workflows/ci.yml:229"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":26,"fingerprint":"artipacked:.github/workflows/security.yml:26"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":46,"fingerprint":"artipacked:.github/workflows/security.yml:46"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/security.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/security.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/security.yml","line":41,"fingerprint":"excessive-permissions:.github/workflows/security.yml:41"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/security.yml","line":61,"fingerprint":"excessive-permissions:.github/workflows/security.yml:61"},{"rule_id":"zizmor/adhoc-packages","severity":"low","message":"ad-hoc installation of packages [confidence high]","path":".github/workflows/ci.yml","line":128,"fingerprint":"adhoc-packages:.github/workflows/ci.yml:128"}],"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":1.0,"check:lockfiles":0.0,"signed_commit_share":0.71,"unpinned_manifests":6.0},"findings":[],"evidence":[{"kind":"posture","description":"reporters/jest/package.json has no lockfile alongside it (unpinned dependencies)","ref":"reporters/jest/package.json","url":null,"weight":0.3},{"kind":"posture","description":"reporters/minitest/Gemfile has no lockfile alongside it (unpinned dependencies)","ref":"reporters/minitest/Gemfile","url":null,"weight":0.3},{"kind":"posture","description":"reporters/phpunit/composer.json has no lockfile alongside it (unpinned dependencies)","ref":"reporters/phpunit/composer.json","url":null,"weight":0.3},{"kind":"posture","description":"reporters/rspec/Gemfile has no lockfile alongside it (unpinned dependencies)","ref":"reporters/rspec/Gemfile","url":null,"weight":0.3},{"kind":"posture","description":"reporters/storybook/package.json has no lockfile alongside it (unpinned dependencies)","ref":"reporters/storybook/package.json","url":null,"weight":0.3},{"kind":"posture","description":"reporters/vitest/package.json has no lockfile alongside it (unpinned dependencies)","ref":"reporters/vitest/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":617.0,"function_nloc":5683.0,"mean_ccn":2.49,"p90_ccn":5.0,"complex_functions":2.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.0204},"findings":[],"evidence":[{"kind":"complex-function","description":"parse_error_buffer in reporters/rust/src/error_parser.rs: complexity 18, 59 lines","ref":"reporters/rust/src/error_parser.rs","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/rust/src/error_parser.rs#L34","weight":0.3},{"kind":"complex-function","description":"processHookData in src/hooks/processHookData.ts: complexity 16, 57 lines","ref":"src/hooks/processHookData.ts","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/src/hooks/processHookData.ts#L82","weight":0.26666666666666666}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":6863.0,"duplicated_lines":230.0,"duplicated_share":0.0335,"files":136.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/jest/src/JestReporter.test-data.ts:7 and reporters/jest/src/JestReporter.test-data.ts:29","ref":"reporters/jest/src/JestReporter.test-data.ts","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/jest/src/JestReporter.test-data.ts#L7","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/minitest/lib/tdd_guard_minitest/reporter.rb:101 and reporters/rspec/lib/tdd_guard_rspec/formatter.rb:73","ref":"reporters/minitest/lib/tdd_guard_minitest/reporter.rb","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/minitest/lib/tdd_guard_minitest/reporter.rb#L101","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/phpunit/src/TddGuardListener.php:108 and reporters/phpunit/src/TestResultCollector.php:55","ref":"reporters/phpunit/src/TddGuardListener.php","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/phpunit/src/TddGuardListener.php#L108","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/rust/src/error_parser.rs:136 and reporters/rust/src/error_parser.rs:155","ref":"reporters/rust/src/error_parser.rs","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/rust/src/error_parser.rs#L136","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/rust/src/main.rs:301 and reporters/rust/src/main.rs:376","ref":"reporters/rust/src/main.rs","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/rust/src/main.rs#L301","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: reporters/rust/src/transformer.rs:301 and reporters/rust/src/transformer.rs:394","ref":"reporters/rust/src/transformer.rs","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/reporters/rust/src/transformer.rs#L301","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/linters/eslint/ESLint.ts:23 and src/linters/golangci/GolangciLint.ts:22","ref":"src/linters/eslint/ESLint.ts","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/src/linters/eslint/ESLint.ts#L23","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/linters/eslint/ESLint.ts:57 and src/linters/rubocop/RuboCop.ts:64","ref":"src/linters/eslint/ESLint.ts","url":"https://github.com/nizos/tdd-guard/blob/ffb7026c8f7e335e2914461fce9ec3f897a87125/src/linters/eslint/ESLint.ts#L57","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":6.0,"weighted_findings":3.0,"scanned_lines":10556.0,"category:best-practice":1.0,"category:correctness":5.0},"findings":[{"rule_id":"opengrep/go.lang.correctness.permissions.incorrect-default-permission","severity":"medium","message":"Detected file permissions that are set to more than `0600` (user/owner can read and write). Setting file permissions to higher than `0600` is most likely unnecessary and violates the principle of least privilege. Instead, set permissions to be `0600` or less for os.Chmod, os.Mkdir, os.OpenFile, os.M","path":"reporters/go/internal/storage/storage.go","line":30,"fingerprint":"go.lang.correctness.permissions.incorrect-default-permission:reporters/go/internal/storage/storage.go:30"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"reporters/pytest/tdd_guard_pytest/pytest_reporter.py","line":107,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:reporters/pytest/tdd_guard_pytest/pytest_reporter.py:107"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":".devcontainer/scripts/init-firewall.sh","line":153,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:.devcontainer/scripts/init-firewall.sh:153"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"src/validation/prompts/operations/edit.ts","line":23,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/validation/prompts/operations/edit.ts:23"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"src/validation/prompts/response.ts","line":1,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/validation/prompts/response.ts:1"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"src/validation/prompts/response.ts","line":1,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/validation/prompts/response.ts:1"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":1.0,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":23868.0,"source_lines":10556.0,"test_ratio":2.2611,"ci_files":2.0,"cochange_share":0.8018,"cochange_commits":111.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/ci.yml","ref":".github/workflows/ci.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/security.yml","ref":".github/workflows/security.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (pytest, npm run test, ./gradlew check, rspec, phpunit)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (golangci-lint, clippy, rustfmt, rubocop)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["pytest","npm run test","./gradlew check","rspec","phpunit"],"lint_commands":["golangci-lint","clippy","rustfmt","rubocop"]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":1.0,"check:changelog":0.0,"readme_lines":57.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0},{"kind":"docs","description":"CONTRIBUTING.md","ref":"CONTRIBUTING.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.9695,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: tsconfig.json","ref":"tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":4747.0,"other_lines":5809.0,"files_blamed":136.0,"blame_failures":0.0,"quality:ai_findings":5.0,"quality:ai_per_kloc":1.053,"quality:other_findings":1.0,"quality:other_per_kloc":0.172,"quality:ratio":6.12,"security:ai_findings":6.0,"security:ai_per_kloc":1.264,"security:other_findings":1.0,"security:other_per_kloc":0.172,"security:ratio":7.35},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}