{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-14T00:06:27.775815Z","repo":{"ref":{"host":"github.com","owner":"digitalsamba","name":"claude-code-video-toolkit"},"default_branch":"main","clone_url":"https://github.com/digitalsamba/claude-code-video-toolkit.git","html_url":"https://github.com/digitalsamba/claude-code-video-toolkit","description":"Make videos with Claude Code: script, AI voiceover, music, video clips and render, on open-source models that cost cents","stars":2552,"forks":446,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":49124,"primary_language":"Python","license_spdx":"MIT","created_at":"2025-12-09T20:33:03Z","pushed_at":"2026-11-12T18:32:50Z","security_policy_url":null,"distribution":{"owner_created_at":"2022-10-19T17:16:28Z","owner_type":"Organization","release_assets":[]}},"commit_sha":"9b0c90d421d2ab32ce8e7522494bddfe185f8aa4","profile":{"lines_by_language":{"Python":44863,"TypeScript":31173,"JavaScript":1511,"Shell":16},"files_by_category":{"source":377,"docs":304,"config":159,"binary":153,"other":37,"test":31,"generated":18,"oversized":13},"source_lines":73421,"test_lines":4142},"pillars":{"ai_provenance":{"score":96.2,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.9624,"suspected_share":0.0,"estimated_share":0.9624,"ai_artifacts":50.0,"flagged_work_units":12.0,"flagged_releases":1.0},"summary":"Explicit AI attribution on 96% of first-party code added; an estimated 96% including velocity signals."},"quality":{"score":59.6,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":34.5,"duplication":24.0,"lint":82.4,"testing":77.8,"docs":80.0,"type_safety":65.7,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.06, CI runs tests; 35% of function code in complex or long functions; 24% duplicated lines. Weakest area: duplication."},"security":{"score":49.8,"confidence":0.85,"coverage":1.0,"label":"poor","breakdown":{"secrets":100.0,"sast":68.9,"dependencies":10.2,"ci_actions":0.0,"posture":40.0,"scorecard":null},"summary":"Security posture is poor: 162 known vulnerabilities in 18 dependencies; 72 high-severity SAST findings; 38 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":30.0,"checked":30.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":417.0,"attributed_commits":371.0,"attributed_commit_share":0.8896882494004796,"effective_loc":97708.0,"attributed_loc":94030.0,"attributed_loc_share":0.9623572276579195,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 371 attributed commits, 94,030 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"bb200e2188a0604c672ce4aa8ba3376b2d35c2a2","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/bb200e2188a0604c672ce4aa8ba3376b2d35c2a2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"cf52b1662857544a803c9067cac15c0d694c455d","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/cf52b1662857544a803c9067cac15c0d694c455d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6b8d6054fca20c9988853d5d60fb0efbe01c7c04","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/6b8d6054fca20c9988853d5d60fb0efbe01c7c04","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"43508db7ed58ea83b147682ec7b8a37feb5535c2","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/43508db7ed58ea83b147682ec7b8a37feb5535c2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b6b16e33ce1d15c7cf7c9068398753b3b1812d63","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/b6b16e33ce1d15c7cf7c9068398753b3b1812d63","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0803d60235332607c308078ad43a81b934158435","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/0803d60235332607c308078ad43a81b934158435","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7361f9890534d72543c6eff65ab5eb9163d9b15e","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/7361f9890534d72543c6eff65ab5eb9163d9b15e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5b99d27dfd2181bce3421a532b77c2d805650765","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/5b99d27dfd2181bce3421a532b77c2d805650765","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"55cf341f8123fab9e98d0cb8d835477ae40fb1b6","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/55cf341f8123fab9e98d0cb8d835477ae40fb1b6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d2d0020623f2042a98366b7e0b57f66bc69fe5c1","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/d2d0020623f2042a98366b7e0b57f66bc69fe5c1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5a18845407c22d44be14b38dfd60d6272406f4e8","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/5a18845407c22d44be14b38dfd60d6272406f4e8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d99bb6f474f771e12af045c17e1e9e900eb5cb9c","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/d99bb6f474f771e12af045c17e1e9e900eb5cb9c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e09372917bb143b96305cd84aaf38e02c62fc832","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/e09372917bb143b96305cd84aaf38e02c62fc832","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a47fccbecbac41e5f513e2700f93bbcafc0c12ff","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/a47fccbecbac41e5f513e2700f93bbcafc0c12ff","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"14542c747a65f2336a4d9bfeddbf04f786094686","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/14542c747a65f2336a4d9bfeddbf04f786094686","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"19acaba7a18073433ee5d5a2fa72daf01a983494","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/19acaba7a18073433ee5d5a2fa72daf01a983494","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"014e8ef6f3ad00dbef71006963103cf4886363c2","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/014e8ef6f3ad00dbef71006963103cf4886363c2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3a76ca5fb320194efee1ed7f396a64816f80c4ea","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/3a76ca5fb320194efee1ed7f396a64816f80c4ea","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f7a1edbd4396c91854fd28040fe9965dc72d197b","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/f7a1edbd4396c91854fd28040fe9965dc72d197b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"036066fa987974511df72acac2fdfad2fe89291a","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/036066fa987974511df72acac2fdfad2fe89291a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d65ad3d7d7be31a1d3a6448c1efaaf30e6c10591","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/d65ad3d7d7be31a1d3a6448c1efaaf30e6c10591","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e804f5e7da394b1158a3f594ac2074495ea0e6d9","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/e804f5e7da394b1158a3f594ac2074495ea0e6d9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8f1d5242bfd374141e3f6d1b67f1e8e27ba36070","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/8f1d5242bfd374141e3f6d1b67f1e8e27ba36070","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"70962d1b177dfbb7c662c669891ca9c2f95e353e","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/70962d1b177dfbb7c662c669891ca9c2f95e353e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0bdf3842b6a0df9ed7e4bae4515c79034ac31c51","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/0bdf3842b6a0df9ed7e4bae4515c79034ac31c51","weight":0.9}],"data":{"attributed_loc_by_commit":{"fde30d3f4575aa8d08a1a86115920ea1c31cd68a":7583,"50008079d1aba125f2feffd259bdb181b7dcc6f4":0,"08b562bcf11f6a08d6810986d583f251f7739c67":1748,"656d2f36f67c71ce96ac362875982b306871f2d0":0,"0d96c3b764639079713645c679e9bb5e88e825a4":6290,"7de74949e537d1da594c78c95d04be7e5f0e5b4c":312,"111550fdfdc2595cb8423090dca88a33007b3f19":136,"60471f1d2c5c74ada70ecba541fda14c4f40317a":0,"26d71e01c2fabd0582df31c4fc7ab17edf8e9ae1":0,"986b34549eab9089fe5f5074e56234ed4280ddb4":117,"d1c45d84c07d56fe9963ebcf6472eb6f7798b07e":0,"8f2374d012439dbc24016055d98faa47c928c931":2837,"5655fb1f95f85d27657c8b11d4f9b4e09ff21ff6":596,"6367c894411723da81a9cb3f8d87dcc18b8ae3dc":741,"b7c8089719518abb40797c2d9f695c314f8e4d79":0,"6ac9b279abc3297e87b767118ae7223200050ca3":0,"17d56fbfe90b375e33b8fa897278339dffb6229e":0,"84aa4b05c0b1b210547621f64f5360aa20da25f5":488,"db1c4596e7740a68c14f84c68435b19ecc3cafb7":452,"0fdd459698fb648442e3bba3f372e4f454c97e77":371,"ed73779fc6c3f752457518a6a51cd37d993e2c9e":607,"2edb69dee9370e0fec976c3e645f5e52589da039":4,"54ec95213022603fc3f0af3c8fce8e9ea0224472":3671,"d9d56c1779b2073354709cb04ba90fc940f95a76":10,"304476d8a79d423359562271757ceb13e654bf52":0,"35ab0b6419d4b508eaa7f11bf01416bc105a2a3f":0,"974a817f925f757d9c2c44bf4046fd2da4ff8fa5":0,"e0a094a9c78bf280cfd0ba70958e424d4b3cf27e":2416,"74ac91a778ba53f43c034b7b6c88955fe756846b":0,"798023235421fbf2246e9a43592d083cc5aab3ea":0,"bd045be2c9bdc89c060c27a776cdac63d22dab31":0,"e969e4eee35a7ef31ed369a8d80a9bf52e06fe76":0,"2e03d32a8e8ef7b4be00e25067ec62a6c484a989":0,"34284c4e80b548e2e52e3f04494230db61fcd440":0,"38b4bdf7fa50724630ac94e3d6ee8ed375917c87":1447,"ce5125bb55d1c040935d8511d84e14ecfe6608b7":0,"82181fb177840eb74fb950b08b4963a7985ef0ab":101,"ffa515a23d6cafdc10c561543bc992d1cfa93398":141,"d5ea5aacf7ef27b0a83d83439e50ad610ef7e7e0":0,"4e91401af15293a256312ec60608e1fc83109831":0,"94f7e432c7fa5fa96c05a789fc1d5e73d983aeef":0,"f29ad88412a0d4d3e3423824967941f65e860807":0,"c151819e0c8db431f580fd00d9f2a3be7066f19b":0,"7a766ba0f3dc845d54304ba2b1c359eab2b4c998":0,"918b385bc60115bdd8dda9569ec31461f0b39e38":0,"6c613ee0c9224d03f78448e37878fb337240fa91":189,"e03ebc96b2554064c22f1a2b3f8c4872e0164381":0,"eca6c2ab622f878d21f23898f9539f7e7df53bfd":0,"80f55b2bfa3dd48d2d3011b8728ada6b6c2c5490":339,"efc2cb28297af3ab05263689483b3b5bc49d8f15":0,"273f5e52ec0d1e5dff89067611ac31ab6da7a86b":5,"8a0bb5d783b6b45e75965e7302156944211f65b7":0,"17ec2884d37dd27448c38c35ab7a848822a80be3":0,"e3fa0db1093198d249f7b9e0aef4feb89f5f15fb":381,"9a852acec6218a2b58f639957e0b31b23df1c288":0,"774629ad35b067fb40cf4912cd06387188ecd354":0,"e2e51f914e37639281231f41057989cc9cbb18e5":0,"b2ba17a8df35e6c9cd5b34695c259db2e550e1dd":0,"3edca56ad46f34cfb656c05e6872a8c228ad4977":1703,"6327a93dfad1556e0b414e4dfcd03aa30de78340":0,"d7772a3dd99ce7d08276a2cc25d4a54a9bdea1f9":1771,"30d9d4730d5c7366eb3af35c5ce5116d6aa2ef10":185,"5f467b8f1cc51ad42109825d1468b195190bd514":84,"79bdd660e01c461a15183f5f771aed08c919afa9":2059,"bb5d3d0a5a08ba09bfa01f93b2bb249710bbc22b":0,"0bdca2fe41f236c1a10ffe134bf0c7204a7605bb":0,"87d1c41d18d24fd4500fc69cbfcb058b480f5ea4":0,"b917ae18c477db95e4d013b7247181af5a7fda69":0,"4f0be978c894d27556d449f4f69dc85e1ab6c8dc":0,"8ef3fcc5170ec073b6884df67c6fe00debfcff1c":77,"0ea09f897cd0c399ee7a23e7a650d419ba191c57":0,"59cd6d9df099d8be2fbddddbafa86f276181ae87":0,"695da4d28d607bf772c0b54963e1b5bfac850709":858,"31c34b121dadfda78d68e79da4427307c142d124":0,"079a3a7572dfb795185c0bd59a73715c49a614bb":1335,"6060c43da86cb0ef8300d5984f2a14d8cfd37aea":232,"929dc747607748fd4f01a1c75914c3e9b4283a28":1531,"cfd583868f81956e3f38dac89cba6c6ca93b7c76":10,"7fbe2d478ab4b8217edb95c7a4b0fa44046f4213":0,"3092bd8e309acb32234d7766074121c9dfb12cc3":0,"303c69214b6f9c81872a56d578645fb186562045":1226,"5bebb53160fdad78c97da85bc8a1399d4b3949e2":495,"a7f7f8eb4095481e51d3e4e693bf3cfb2710eb03":1024,"258a929dc15a773d5ecd4b8149530c2114d5069f":6,"e0f6cab10e6806185d8f6228898bcade14891808":27,"54e6b9352626955eb0d04a054bd35e79cb0b87ff":0,"2eec07af249615c9a1852ce599dbabdbd2eb1dfd":281,"eb90d47d6869b51d696aad8fa5a6d8247298b559":522,"05520394509316b6cca4082f3a27e51aa3cd87e2":0,"11f98442d694aae0619be1504c13381434734d2e":0,"fb514785ec8467200231b5134a1323e53fd3f466":0,"23ea71ed8279f83b5089b2eedfd2fae97677ee93":0,"f9d5d6273063cc72d8d0ab5e1503a1c81beb0e03":0,"ce63b788eb6e97b932dfc93975ac47a31c24ea71":5,"98f33444b4192ad5f344763888bd100ab81d9950":61,"4f2aba8bbb8417915fc46b2416496b9bfad0eb8a":0,"6a7ee1c553377b5b366ca8bc002f232da776952e":0,"b3ebe5aeb5598fd492582e83ce317d5ca63b6d8a":0,"add66610f1ef57311f9d411668aece23c9f822b7":0,"ac9f7cb15602fe645e8542cbff70f7a78dcd1b60":3619,"cad056abf6cf2be3894a9bd6b12862cdb97be0c5":686,"d26b043f91d2154fb975961e5e58a349fbbbeba8":686,"d3a33cd0ee7f9f0f6f988cf5fe028b76a1333fe1":0,"87ed96f47a1e5ecbf049019d9f25996830de5d11":0,"ab50c252c2a0cb4d0eb1d7d5b73baaff0c73e408":0,"271005311dda389db23e399a920a266dccfac110":0,"c03f050848cb93052192018606edaf426f5ab616":0,"e0d8dd71be4bc4669373442234fdee08539cfb09":0,"b98933c06a4b1817b4fe670f928d0023bc91f73f":13,"977a39708a890640bc0d9733ddfeae388128b0a6":13,"8289f4f20c34c46c1b89cb462d2c669b4e35a877":1,"8862852f6470f17ec8f9487a13ba9655199b9620":1,"e0e2d88c4511231971aa83aa0ba31ad8ba67c16f":0,"51a3e00e70e8663c465eefd1a9c0b3084f5698ad":0,"7a69eec8b76fdd5251fc8d4156cb8a8a6e21b2b7":37,"e3ea1bbc9baf49b998c1d1d48d83dad589876497":37,"09a87a63bb456608479704965a405b069d45b62f":502,"b9f39563a260d5fd5945ad36a046412e659a4e01":502,"e18aab5ff49829af35dc9554b8808e8b814e85dc":293,"c3218f9952b829b4d10dad760765a186835fb70a":231,"501c71d3dc91e654b5ab34e64c4f0bc1734590b2":0,"65f9f4adbb9ae8a64d8a7c5f1c8c7e8b319ae6a7":8,"c99aa0892e275b667867b3adec3598afb1e7c6d6":0,"84a04c11e208a1eea7c2e89d5d173928fb1359ef":0,"a076f87a4a08a4dbc9f58387f61e7c7bbf527e70":25,"ffe9929f242c28a5ca84fef09aa6c0d1b03e00da":0,"c6df13922e0f40b5f17380a90834c7d5e9fec44e":0,"9a57fdf284ef3e1335183dd57bcb348ccccadf43":0,"4402e5a550d63342e7ee69fd434f71dd4b76e94d":481,"2a638fe3d84a975445f586e217b2c7c23e8997e0":1126,"6f94523345edf122b1cfaaa5c7028287b2d2c909":42,"3057ab88cce6cca1394bd23be49a2f9ecd2ae090":68,"66a2c89c1cb78bf4da68d5d7bc738a13890f4649":0,"e017616066125d3ddc31ca6ec0485cf5d4df0878":0,"0043b9722fa42ea7294fc7ed1e2db0c40980bc5f":613,"543cec46d62db735de72125f611d29838fa6572e":170,"3f7d2c1e0b0bf217e8f0ba3589dfc4b4ffbef98f":242,"dc1bbd251ef137bde9cf460bacb88f13adb3a808":0,"dfe2091695c480aef2cf831c75d64a14a679aef0":1272,"1ecca9cfd8f7da0c41035b7fbe37f242d93746fa":0,"616aefb4b6a813130c0d496547cf338d2b44729a":1568,"81961c7cc41c91e6a1672d5d7c4c334a6b697944":16,"a517597e7d7323b0e73813dab753e9c4b18c5ac9":0,"c16c7fed294ed9aebb5cd55f50c3126c4bfbbb85":0,"6cb64ef06788cd6e3b063ac746012276031277b0":313,"00c508fef15ce8ca09a22de6bf77d43e417bf956":0,"35e17c8e2d3b8cebeb4c4e733bf1d983606a947f":256,"3c3bf68cf920d5b0283bb5ff33f5edd3a2cdc753":0,"2c60dbd127fc5ef1642e527263d2a90a910b8908":0,"6db40e9299d7006022f8f5d428418c40d027aee9":1024,"6e4398fac6f539161a3e5f1f39f759f4a5b54911":0,"d93298b69134bb1a8ab7c7b8fdf9cad14bae0b6b":692,"d2579b51c1111cc12d89da05ab49977fc0fa700a":0,"bae63653b53041abe36812a56fce8ef2273a84a8":0,"d696350bc8225761f04ead9e47013ce4b07c750b":66,"9826feb491cffe18367e85f6f759bffcfb93d3da":0,"7cca516f966ab3502996d1b7b5317866f5f65979":7,"1f79d98c42c2aa473476c2a069aaa6d60716f047":9,"c05a0cb7e646da122ded600db5fc97468e8611d9":1048,"57a3fff0ea7ca3ad5c59d00caf4e36afe0db7374":0,"76572ef005db665062912c718b1a890882c63553":0,"c85e58eecb882d921304d7157a5aec66077e10ba":0,"99d9296d96144a4679fcede8e8cb40062569ca37":4,"fbd3f6bd566604d88a00eb98c39e9446239de23b":0,"ebf55f269805039429710bcb9d948d3a6667295c":2580,"68297d685993a7ead52690f67ce5d3ae3ad4f2a4":0,"ce640209eb4ae280d5da4df5e149c3634d8e59d5":0,"290d7d345b7f6c965475532ad4a2c1d5ed2ddfa4":249,"9dc833397ab359868fb2224b87c7d12c98cd0d15":278,"80795b36ee930c5d2a5c06b581e3d0a546ad8e69":458,"8294f075800911eae71e1663805482c662b0c7e5":117,"ca17f2517192c145de9ad19751b1a10fbfce0ac7":229,"9dc31ac983fa57326efca4ab7df54fdfb44af554":0,"5030a1e0c36097196675fd892dc63ddd19ff5f02":0,"cb1083d163cb8e6822897b816b5af717307dbd70":0,"a7795c5cacfedcc859baa75a8158ab86c6ca2dad":7,"f52c627ce9239ff0f0883f2da7390874369ff1b0":532,"5558295eedec069961477be4e146db73fe019c13":10,"d8b1a7cfbac8a2b35aed4f909b85e918e24c99e6":1102,"bfadee65180fda0e774e7a16fcd47b283d633045":33,"7a3dce40c5c6dff2f72d4cc045a50e6bab3f3083":72,"f169ac2fd7cb159011e6191680e8a42ec1ba4ff8":15,"9c152c3707d25e9f31cefa9f9d07e3970ec25e60":0,"c76f87cc8aef694ed74108a7f7f6690da71f0f4c":3,"3277ff4cdb75997505d69858c01b05b6b8f92918":920,"fd24349fe1ad5f01d1a9fb7b0dc83a7bca731d46":3,"f91608aa3750304195322387515e8284ca617f0b":0,"81a13f3691dd3ea81f6b19e7b309c23ab28062e6":9,"6ce0a46095f06bacb2e25410585e0d0c3db93d64":14,"e24eacbc2794347a7759eb51b13708410806fa82":0,"d4fb6b24e3d4e9e435eecff4c71750425ecd5040":2,"8cc4803dff334210da8b4f41b6b84fe7ac18c906":0,"6ad98fa099507ab4301ce2d636764a1605049eff":107,"deb15ebfe478bba36c9f6c0e82fe4c528046163b":12,"b1b75132a54315d2add050ed6df9ec9807e2e466":90,"60e76a34f29ccc995ecd6ee3b03b832312653b0a":14,"eac9cfe95a4cd6fc0b975863cb1aa066c9f836b0":4,"639bd7054417015b06e3b1eee637967f22b385aa":0,"d871dc9a19ae8fc1d606a3ceade6c7af858a1df2":0,"dca07dbe1f21a2e0d004dc028471d119407dd68b":0,"3a6e722acb9ca473405770b48c8e7b979b5d33ff":0,"b4a7ca5872fe5a40fb8f663d20d4d8095dd61e20":0,"ffc08c9324045f6ff9f470a54c9fedcd65243004":0,"5def21f025ffa6e395e073e209b58e59b9554f4a":6,"3dcea996c97c838417b02696ee613cc0fab99e31":0,"358365fe2e7a86bd3a8d751f12605e5a42b08ded":3,"690844faeb7924922fa72a71ba89dcfb156003e3":529,"cad34df8fcb6e7c7f0aa35bf54d1b09e76313f8b":0,"4c5cdcbf1cca0cea8e862509568503ffd03ac9cf":448,"b4f57d3a988ace29623d50ab4181c5c33464aa89":559,"4c6795db3cc13af24facfb8bc3e2e3847ea5a6eb":458,"6b0177002c0402a0ce7ab53d72a78e5e32544e8b":5,"be6ce178b38c0b64632814d14486afd0f565af74":0,"b68d67aefe8523f5db7ded195abacb62e88c15c3":0,"9a7e69108f8e2b7fa934f86480ee0a8555b26773":56,"00d1adab4939690f00d423d1705d7f8f69052cf3":3972,"e306a04d3151f4f66452031671100ce5f5f20a65":0,"454f7e63c514cdb459964f38a3dbc09b21c4c46e":0,"17fa894c9ba99844a532fac7723728cf6e28d1ba":325,"f5bf113bec37f76a20a1035ff3bb055e60660195":0,"e5449ab36ff4d3aca292822dd0c6041d39a0045c":0,"1cf194235f937b0117febf5f6bafb3575c31176e":21,"bf4a52427ccc878fb54463b084d21979e161a169":0,"7725e676ef243375b9a3757ed8264e49f49f1f72":0,"bf668614a1e38353ea7aef316192991f0883f1d5":0,"94ce3ed1d67c1058e69f3cf681fcdf68b18baa18":2604,"442a2a9f0a6dc473b7a364d328a54305fa9891ac":0,"c13f4e3972ca4279b273739c72481cbda7a56be9":167,"5a21fece79730e2fd017e827dba2f441275c51cc":525,"0b7ff44e5150c92c9152697a5bc788e5a4f454d4":7,"3e8cc6b08b636f8d4ef80276543239fc3ecbec15":7,"17ffbc0697d43061bbdb6c26a3ce77db28845e4b":0,"2ec3d23c0dcfbc3704ed7b00f3fa3f4d8409854a":0,"48aace44621b42eb29182a8dde026c84762cdc67":0,"9251168cfda25f8ede3a37f00a1708cedcdce48c":31,"51b9adaafaf6ddbd0975a6410e108926941abe43":0,"995b4fdc77e27c615de296146a2b3c9b390aa092":2,"397884124ae38e5852ed1df506602c4980a89840":0,"85d7d9b136c26184d8180aca45227b2db25f9bbd":142,"5c4df2af816fb5ada617ea92623e0697a9d0daba":1490,"f8c3cef7f3c6bb12748bfcbee201049a6252db40":58,"e88e3e868ab922fa7742d9ede3eb1f9eba242f79":189,"d08e13441b2566889f6adfca3c4bd797908bfe53":0,"6fe35a223cc35483faae0e6bdcb53c76cf1db6a2":86,"f2647da31de0e2e798f3e38e5bd160231dd1e317":75,"2726ba8eab797a540d183727ad251807018adb9f":269,"4f16594ab08890c597d0200841741980207aab75":16,"0bf7e9f768de02867be6512041f09e652d2f10d4":119,"b229317426d8b096d35988226b5961d17a9100b7":41,"fdc111cf4a921eb60ab508772b44519b4e92a4e0":126,"499f12fc3bfbfed1395cf6950910d2a26700077d":26,"dadd610249fd29150dda46da64202f1fdf4216de":29,"29995dce7d19443d5e6cb384ce8e4bb86ab98967":0,"4f0d7e6cad8a61a6be31e17e8e1ef9d63377224d":0,"d194ae266bef02f9ed891f1b1911857936ec3027":0,"dabd84d851bac50546a46de6331d3b6211e94126":1,"240232279ed5432dcce73ac5d4d0e93644d956fe":0,"2abe58ac5dfc65bde9a725a8a10a17aab95a235c":0,"3662d1bce05f0217459d46a45b6c3491ace6a13a":76,"d8e8ba9a27b1ac777fc6768c787efc4b24353ad8":24,"7f97c0a811845e0bbd976bb23ffb04f6cfdc5060":81,"e62873e41b1b9fe172bda60dc58e8a46990d9ac3":1189,"16505836ed4facfcca750cf4e4e1a358fde9692d":0,"79958eb2a0daf2f03a1168ba58b67bfd84a3eb05":25,"621aef26123343806409b57a834f0e953fe93912":62,"77c7c53ca249351e72f3d8ccd7266c28afc9f785":188,"d0f2148ad42b32698c549f1f13e9849e9db9e9c6":7,"d65ba9972b735fc0ab0b539aa4b1907041617557":0,"10c5d2817610c9cadf93ff3f77569807e421a455":0,"f55dac6e242dc26f2d688a286f1b266c26c7216a":351,"44dc551f3de9fa91010229832d4d490f8b644b88":16,"cc5660dd573f15f950426a01b085a704738674d1":0,"45a4e25254759c414b8e4519bf51b33b1b4e3f55":0,"3a47afe8d41128fc45a5c472b3eb1258369bee89":237,"77dd421689e72dbfeb3e095ec359975625b7bd04":419,"8b55ab79fc51a0ada91f8a96064d284d5e8ac4bf":6,"948463a2a77f26e0d933c35050106f2a9af9d535":0,"e6f2cebe07d37aca26111d54cffaeee6d7018b88":0,"dfeccd6bfeab0b48fdaa21c3343b7fbc08fcf329":172,"b8c1a104f38f314246c4a0252ce1c96fc7833233":16,"d7048eef235a5f5cdd2118d771ff6f93d1342765":9,"53f8a85ea32292100de8d4f863dee817d77424c1":0,"85e102f2fa7a256bb3eb8945da49f62ff060756e":341,"39284379f37c2bdc1e808c46d0181d045cf59f87":40,"c6020cb894478f567125cc4f75c981f45b294cdb":399,"90a3a12fbdf9c3c4eaf50677c1e613d9b8da6b25":0,"2c06d18ea7ee3c4422ae04d277adf70e79ecf52b":261,"833bcbe77a9a0050478291b348bdde8d6b130a37":9,"1d522f28c34ca4d709508eaf580597d6d83ddf8f":0,"259b44a1ca5809bff9ced91ff28d4593ce3d7305":208,"6daf7f58ae05c068ea894e4259d10ca14ee43af6":0,"2e43814f691df5cd5e42b54b3f42f2fe6aeba071":7,"3e481a195f7c28d8201039259725fde24095d123":216,"f75fe680145e7acfbc601635499ecad28ec43724":55,"1c9fa5b49326463eccd0373dc65d060fcb6070d5":296,"e4bc5fed9796ff5fddeadb2664dad2b3b62d4fc2":108,"2cf6382a7e105ad222178778d765a39ddbd1fc14":27,"92dbdeb983df9d7ee322b92fb33589d85d2cc34a":7,"d19342d016f01e2a6b14161ccadfbdbc37a016c7":0,"6d0b9a652563eaa2c899c7ee9f01e2eea81eadbd":125,"8e4592d9ff245a85fd7252c3b9c0790ab2893779":90,"850a072f1344a23bb47e39df4e43704e278bbd5a":141,"0500b5c3c8f60842ea6f74ea645584b7bc2b2bd0":2,"991e609bf4e1f9d51870d8a5f3bde55b56431000":44,"711b402811288e903fabd8b0491598fdf968d0cf":0,"2f2835bd7b44caa32f7d26a76b976708038719af":0,"c6ceae28adb1f50d10451c62beeddb503884a78a":0,"5f28fbf8ccec018f8bb2f125ebf16dda14422c04":136,"f79f2187f4c46f7f90c76a846e4066b309cddc31":125,"f1639ec95d02dfd659c5c22cc1697b67f008925b":0,"badc960d861117fc48881304c61135e7c8ac0ed8":199,"2d59460a16ff56ab1dfed17883ccade370b6d41d":22,"9c8c9065f199d4b711fdfd61450adc39901f349d":27,"1631461342f998724f551cca5c68d12207ad39a1":0,"16fcb081ca3e222450dbf9cfbb062e6d8a70ffdd":7,"d776940fc421196be51543e5d5d93cc02fe8ed76":34,"8e1f55346f0b6516ac7567d0da5245585175e1d7":0,"690ac54c582ce10d96e653bee4fb9da9811f5059":22,"19de971a6b46e251baaf6e7639b6ff924d4d018e":0,"ee378cc633ff27ab319bdba7bd4ac92118a1e2aa":0,"f474c1563573678ea3a544dc36e4ac5d17e66e4a":153,"92b1a14846dd3785a15d987e394d606c40207c3d":0,"b322356c40eb05fd4848d003dda323c0c963ba5c":411,"b3e239779c5a09d3da79a5c24e96be4b9497ce18":0,"0c80341bbca16b42eb1edade709aa97f4b4a861b":0,"911e50f99489e6333de9ea53b39515a19992c7ce":59,"48c062e707dab42e2ca0f6af90749a423d4db2b2":0,"ab39da33cfce42b2fea5d64a18a896e5d5964661":0,"600d0a6c0c53893b7cd3a9339e15c70e53d2a301":264,"63a439d0e5d1bc851e9cbfcf36b7302d16b8569b":364,"f8a0d6b4d49c0904d3a6094dd8662ac20eebe27e":0,"1c41d41e1524a8c1bf2994fe00403c9b2e74bcc2":0,"24996a0e0eb3d8c0948c1fcfd34a06a0a808e2b3":5,"8f15d973d592f5cccc22c9891f71727eae3aad3d":266,"e39510fe5484efcfc12c75d722ce86f77b8fbfda":547,"f2b1229d29f8e6de13bf7905caf260960e39d13e":340,"5288c445d04705b96a33b4a13560faba21cfd0a9":286,"164efdd6f02f91e3206fd007279c6649245858bc":226,"da0e038b7bbfe5390a26d76426f2865dde05c192":2,"7f0486dc7f3ba94c23c43964985fbe75c976b902":0,"939e37df6ac05c30b70a4f33030c35698ce43668":0,"d79c6f705398b26fd7f7ec2791b200dec5f4bacd":24,"45db3d0d6dc5fb93fed8aa78a72df1b4dad401a5":24,"1f8fd4c5e99647f34c2f0e77acd0e78cda8345f3":0,"27f0e7befe46a60d52df63b40ab6e05757bc5f80":126,"c629d568b5ef10cbdacb0a0a713b799686c286c0":298,"0bdf3842b6a0df9ed7e4bae4515c79034ac31c51":2,"70962d1b177dfbb7c662c669891ca9c2f95e353e":159,"036066fa987974511df72acac2fdfad2fe89291a":0,"d65ad3d7d7be31a1d3a6448c1efaaf30e6c10591":4,"e804f5e7da394b1158a3f594ac2074495ea0e6d9":45,"8f1d5242bfd374141e3f6d1b67f1e8e27ba36070":11,"3a76ca5fb320194efee1ed7f396a64816f80c4ea":351,"f7a1edbd4396c91854fd28040fe9965dc72d197b":98,"014e8ef6f3ad00dbef71006963103cf4886363c2":9,"14542c747a65f2336a4d9bfeddbf04f786094686":0,"19acaba7a18073433ee5d5a2fa72daf01a983494":781,"e09372917bb143b96305cd84aaf38e02c62fc832":0,"a47fccbecbac41e5f513e2700f93bbcafc0c12ff":5,"d99bb6f474f771e12af045c17e1e9e900eb5cb9c":207,"5a18845407c22d44be14b38dfd60d6272406f4e8":19,"55cf341f8123fab9e98d0cb8d835477ae40fb1b6":136,"d2d0020623f2042a98366b7e0b57f66bc69fe5c1":3311,"7361f9890534d72543c6eff65ab5eb9163d9b15e":28,"5b99d27dfd2181bce3421a532b77c2d805650765":225,"0803d60235332607c308078ad43a81b934158435":0,"b6b16e33ce1d15c7cf7c9068398753b3b1812d63":21,"43508db7ed58ea83b147682ec7b8a37feb5535c2":0,"6b8d6054fca20c9988853d5d60fb0efbe01c7c04":0,"cf52b1662857544a803c9067cac15c0d694c455d":0,"bb200e2188a0604c672ce4aa8ba3376b2d35c2a2":0},"tools":{"claude-code":{"name":"Claude Code","commits":371,"loc":94030,"first_seen":1765312712,"last_seen":1794508167}},"monthly":{"2025-12":{"loc":25963,"attributed_loc":25963},"2026-01":{"loc":5019,"attributed_loc":5019},"2026-02":{"loc":7052,"attributed_loc":6737},"2026-03":{"loc":12162,"attributed_loc":11848},"2026-04":{"loc":4303,"attributed_loc":4303},"2026-05":{"loc":3419,"attributed_loc":2856},"2026-06":{"loc":2351,"attributed_loc":2351},"2026-08":{"loc":8403,"attributed_loc":7676},"2026-09":{"loc":132,"attributed_loc":132},"2026-10":{"loc":13594,"attributed_loc":11885},"2026-11":{"loc":15310,"attributed_loc":15260}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":50.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1765312712.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".claude/commands/brand.md (claude-code configuration)","ref":".claude/commands/brand.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/brand.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/contribute.md (claude-code configuration)","ref":".claude/commands/contribute.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/contribute.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/design.md (claude-code configuration)","ref":".claude/commands/design.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/design.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/generate-voiceover.md (claude-code configuration)","ref":".claude/commands/generate-voiceover.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/generate-voiceover.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/publish.md (claude-code configuration)","ref":".claude/commands/publish.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/publish.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/record-demo.md (claude-code configuration)","ref":".claude/commands/record-demo.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/record-demo.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/redub.md (claude-code configuration)","ref":".claude/commands/redub.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/redub.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/scene-review.md (claude-code configuration)","ref":".claude/commands/scene-review.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/scene-review.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/setup.md (claude-code configuration)","ref":".claude/commands/setup.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/setup.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/skills.md (claude-code configuration)","ref":".claude/commands/skills.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/skills.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/template.md (claude-code configuration)","ref":".claude/commands/template.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/template.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/thumbnail.md (claude-code configuration)","ref":".claude/commands/thumbnail.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/thumbnail.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/versions.md (claude-code configuration)","ref":".claude/commands/versions.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/versions.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/video.md (claude-code configuration)","ref":".claude/commands/video.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/video.md","weight":0.5},{"kind":"ai-artifact","description":".claude/commands/voice-clone.md (claude-code configuration)","ref":".claude/commands/voice-clone.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/commands/voice-clone.md","weight":0.5},{"kind":"ai-artifact","description":".claude/settings.json (claude-code configuration)","ref":".claude/settings.json","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/settings.json","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/acestep/SKILL.md (claude-code configuration)","ref":".claude/skills/acestep/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/acestep/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/blender/SKILL.md (claude-code configuration)","ref":".claude/skills/blender/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/blender/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/elevenlabs/SKILL.md (claude-code configuration)","ref":".claude/skills/elevenlabs/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/elevenlabs/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/elevenlabs/reference.md (claude-code configuration)","ref":".claude/skills/elevenlabs/reference.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/elevenlabs/reference.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ffmpeg/SKILL.md (claude-code configuration)","ref":".claude/skills/ffmpeg/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ffmpeg/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ffmpeg/reference.md (claude-code configuration)","ref":".claude/skills/ffmpeg/reference.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ffmpeg/reference.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ideogram4/SKILL.md (claude-code configuration)","ref":".claude/skills/ideogram4/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ideogram4/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ideogram4/examples.md (claude-code configuration)","ref":".claude/skills/ideogram4/examples.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ideogram4/examples.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ideogram4/prompting.md (claude-code configuration)","ref":".claude/skills/ideogram4/prompting.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ideogram4/prompting.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/ltx2/SKILL.md (claude-code configuration)","ref":".claude/skills/ltx2/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/ltx2/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/moviepy/SKILL.md (claude-code configuration)","ref":".claude/skills/moviepy/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/moviepy/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/parody-short/SKILL.md (claude-code configuration)","ref":".claude/skills/parody-short/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/parody-short/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/parody-short/context.md (claude-code configuration)","ref":".claude/skills/parody-short/context.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/parody-short/context.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/parody-short/formats.md (claude-code configuration)","ref":".claude/skills/parody-short/formats.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/parody-short/formats.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/parody-short/genres.md (claude-code configuration)","ref":".claude/skills/parody-short/genres.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/parody-short/genres.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/parody-short/people.md (claude-code configuration)","ref":".claude/skills/parody-short/people.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/parody-short/people.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/playwright-recording/SKILL.md (claude-code configuration)","ref":".claude/skills/playwright-recording/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/playwright-recording/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/playwright-recording/reference.md (claude-code configuration)","ref":".claude/skills/playwright-recording/reference.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/playwright-recording/reference.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/qwen-edit/SKILL.md (claude-code configuration)","ref":".claude/skills/qwen-edit/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/qwen-edit/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/qwen-edit/examples.md (claude-code configuration)","ref":".claude/skills/qwen-edit/examples.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/qwen-edit/examples.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/qwen-edit/parameters.md (claude-code configuration)","ref":".claude/skills/qwen-edit/parameters.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/qwen-edit/parameters.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/qwen-edit/prompting.md (claude-code configuration)","ref":".claude/skills/qwen-edit/prompting.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/qwen-edit/prompting.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/SKILL.md (claude-code configuration)","ref":".claude/skills/remotion-official/SKILL.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/SKILL.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/agents/openai.yaml (claude-code configuration)","ref":".claude/skills/remotion-official/agents/openai.yaml","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/agents/openai.yaml","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/assets/remotion-icon.svg (claude-code configuration)","ref":".claude/skills/remotion-official/assets/remotion-icon.svg","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/assets/remotion-icon.svg","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/REFERENCE.md (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/REFERENCE.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/REFERENCE.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/agents/openai.yaml (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/agents/openai.yaml","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/agents/openai.yaml","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/assets/remotion-icon.svg (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/assets/remotion-icon.svg","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/assets/remotion-icon.svg","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/display-captions.md (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/display-captions.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/display-captions.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/import-srt-captions.md (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/import-srt-captions.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/import-srt-captions.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-captions/transcribe-captions.md (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-captions/transcribe-captions.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-captions/transcribe-captions.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-create/REFERENCE.md (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-create/REFERENCE.md","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-create/REFERENCE.md","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-create/agents/openai.yaml (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-create/agents/openai.yaml","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-create/agents/openai.yaml","weight":0.5},{"kind":"ai-artifact","description":".claude/skills/remotion-official/remotion-create/assets/remotion-icon.svg (claude-code configuration)","ref":".claude/skills/remotion-official/remotion-create/assets/remotion-icon.svg","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-create/assets/remotion-icon.svg","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":".claude/commands/brand.md","added_at":1765393436},{"tool":"claude-code","path":".claude/commands/contribute.md","added_at":1765393436},{"tool":"claude-code","path":".claude/commands/design.md","added_at":1765743847},{"tool":"claude-code","path":".claude/commands/generate-voiceover.md","added_at":1765312712},{"tool":"claude-code","path":".claude/commands/publish.md","added_at":1781899077},{"tool":"claude-code","path":".claude/commands/record-demo.md","added_at":1765312712},{"tool":"claude-code","path":".claude/commands/redub.md","added_at":1766950692},{"tool":"claude-code","path":".claude/commands/scene-review.md","added_at":1765579895},{"tool":"claude-code","path":".claude/commands/setup.md","added_at":1774294931},{"tool":"claude-code","path":".claude/commands/skills.md","added_at":1765393436},{"tool":"claude-code","path":".claude/commands/template.md","added_at":1765393436},{"tool":"claude-code","path":".claude/commands/thumbnail.md","added_at":1791828241},{"tool":"claude-code","path":".claude/commands/versions.md","added_at":1766236866},{"tool":"claude-code","path":".claude/commands/video.md","added_at":1765393436},{"tool":"claude-code","path":".claude/commands/voice-clone.md","added_at":1771594733},{"tool":"claude-code","path":".claude/settings.json","added_at":1765393436},{"tool":"claude-code","path":".claude/skills/acestep/SKILL.md","added_at":1774211762},{"tool":"claude-code","path":".claude/skills/blender/SKILL.md","added_at":1794409926},{"tool":"claude-code","path":".claude/skills/elevenlabs/SKILL.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/elevenlabs/reference.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/ffmpeg/SKILL.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/ffmpeg/reference.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/ideogram4/SKILL.md","added_at":1780946934},{"tool":"claude-code","path":".claude/skills/ideogram4/examples.md","added_at":1780946934},{"tool":"claude-code","path":".claude/skills/ideogram4/prompting.md","added_at":1780946934},{"tool":"claude-code","path":".claude/skills/ltx2/SKILL.md","added_at":1774481371},{"tool":"claude-code","path":".claude/skills/moviepy/SKILL.md","added_at":1775679689},{"tool":"claude-code","path":".claude/skills/parody-short/SKILL.md","added_at":1794074596},{"tool":"claude-code","path":".claude/skills/parody-short/context.md","added_at":1794074596},{"tool":"claude-code","path":".claude/skills/parody-short/formats.md","added_at":1794079861},{"tool":"claude-code","path":".claude/skills/parody-short/genres.md","added_at":1794074596},{"tool":"claude-code","path":".claude/skills/parody-short/people.md","added_at":1794074596},{"tool":"claude-code","path":".claude/skills/playwright-recording/SKILL.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/playwright-recording/reference.md","added_at":1765312712},{"tool":"claude-code","path":".claude/skills/qwen-edit/SKILL.md","added_at":1767626626},{"tool":"claude-code","path":".claude/skills/qwen-edit/examples.md","added_at":1767626626},{"tool":"claude-code","path":".claude/skills/qwen-edit/parameters.md","added_at":1767626626},{"tool":"claude-code","path":".claude/skills/qwen-edit/prompting.md","added_at":1767626626},{"tool":"claude-code","path":".claude/skills/remotion-official/SKILL.md","added_at":1769557067},{"tool":"claude-code","path":".claude/skills/remotion-official/agents/openai.yaml","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/assets/remotion-icon.svg","added_at":1790616586},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/REFERENCE.md","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/agents/openai.yaml","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/assets/remotion-icon.svg","added_at":1790616586},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/display-captions.md","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/import-srt-captions.md","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-captions/transcribe-captions.md","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-create/REFERENCE.md","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-create/agents/openai.yaml","added_at":1787779750},{"tool":"claude-code","path":".claude/skills/remotion-official/remotion-create/assets/remotion-icon.svg","added_at":1790616586}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":131.0,"flagged_units":12.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":83835.0,"flagged_loc":36345.0,"flagged_loc_share":0.4335301485059939,"max_loc_per_hour":973.7704918032788,"median_loc_per_hour":158.57504029008862,"pr_timed_units":36.0,"excluded_import_loc":13873.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"4,353 lines of first-party code in ~4.5h (962 lines/hour, 3 commit session)","ref":"17fa894c9ba99844a532fac7723728cf6e28d1ba","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/17fa894c9ba99844a532fac7723728cf6e28d1ba","weight":0.2887207517042314},{"kind":"velocity-burst","description":"3,700 lines of first-party code in ~4.0h (924 lines/hour, 4 commit session)","ref":"7361f9890534d72543c6eff65ab5eb9163d9b15e","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/7361f9890534d72543c6eff65ab5eb9163d9b15e","weight":0.2773074253990284},{"kind":"velocity-burst","description":"3,681 lines of first-party code in ~4.0h (909 lines/hour, 2 commit session)","ref":"d9d56c1779b2073354709cb04ba90fc940f95a76","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/d9d56c1779b2073354709cb04ba90fc940f95a76","weight":0.2726853693668976},{"kind":"velocity-burst","description":"3,619 lines of first-party code in ~4.0h (903 lines/hour, PR #8)","ref":"ac9f7cb15602fe645e8542cbff70f7a78dcd1b60","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/ac9f7cb15602fe645e8542cbff70f7a78dcd1b60","weight":0.2707668860408729},{"kind":"velocity-burst","description":"1,943 lines of first-party code in ~2.7h (722 lines/hour, 9 commit session)","ref":"44dc551f3de9fa91010229832d4d490f8b644b88","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/44dc551f3de9fa91010229832d4d490f8b644b88","weight":0.21660198183319573},{"kind":"velocity-burst","description":"2,837 lines of first-party code in ~4.0h (709 lines/hour, 1 commit session)","ref":"8f2374d012439dbc24016055d98faa47c928c931","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/8f2374d012439dbc24016055d98faa47c928c931","weight":0.21277500000000002},{"kind":"velocity-burst","description":"2,840 lines of first-party code in ~4.0h (709 lines/hour, 2 commit session)","ref":"616aefb4b6a813130c0d496547cf338d2b44729a","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/616aefb4b6a813130c0d496547cf338d2b44729a","weight":0.21257190380483745},{"kind":"velocity-burst","description":"2,328 lines of first-party code in ~3.5h (660 lines/hour, 3 commit session)","ref":"79bdd660e01c461a15183f5f771aed08c919afa9","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/79bdd660e01c461a15183f5f771aed08c919afa9","weight":0.1979716535433071},{"kind":"velocity-burst","description":"3,303 lines of first-party code in ~5.1h (649 lines/hour, 4 commit session)","ref":"0b7ff44e5150c92c9152697a5bc788e5a4f454d4","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/0b7ff44e5150c92c9152697a5bc788e5a4f454d4","weight":0.19456965201265408},{"kind":"velocity-burst","description":"2,580 lines of first-party code in ~4.2h (607 lines/hour, PR #56)","ref":"ebf55f269805039429710bcb9d948d3a6667295c","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/ebf55f269805039429710bcb9d948d3a6667295c","weight":0.18211764705882352},{"kind":"velocity-burst","description":"2,416 lines of first-party code in ~4.3h (556 lines/hour, PR #1)","ref":"e0a094a9c78bf280cfd0ba70958e424d4b3cf27e","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/e0a094a9c78bf280cfd0ba70958e424d4b3cf27e","weight":0.16666326009197746},{"kind":"velocity-burst","description":"2,745 lines of first-party code in ~5.0h (553 lines/hour, 3 commit session)","ref":"a7f7f8eb4095481e51d3e4e693bf3cfb2710eb03","url":"https://github.com/digitalsamba/claude-code-video-toolkit/commit/a7f7f8eb4095481e51d3e4e693bf3cfb2710eb03","weight":0.16594458438287152}],"data":{"flagged_loc_by_commit":{"8f2374d012439dbc24016055d98faa47c928c931":2837,"54ec95213022603fc3f0af3c8fce8e9ea0224472":3671,"d9d56c1779b2073354709cb04ba90fc940f95a76":10,"30d9d4730d5c7366eb3af35c5ce5116d6aa2ef10":185,"5f467b8f1cc51ad42109825d1468b195190bd514":84,"79bdd660e01c461a15183f5f771aed08c919afa9":2059,"303c69214b6f9c81872a56d578645fb186562045":1226,"5bebb53160fdad78c97da85bc8a1399d4b3949e2":495,"a7f7f8eb4095481e51d3e4e693bf3cfb2710eb03":1024,"dfe2091695c480aef2cf831c75d64a14a679aef0":1272,"616aefb4b6a813130c0d496547cf338d2b44729a":1568,"9a7e69108f8e2b7fa934f86480ee0a8555b26773":56,"00d1adab4939690f00d423d1705d7f8f69052cf3":3972,"17fa894c9ba99844a532fac7723728cf6e28d1ba":325,"94ce3ed1d67c1058e69f3cf681fcdf68b18baa18":2604,"c13f4e3972ca4279b273739c72481cbda7a56be9":167,"5a21fece79730e2fd017e827dba2f441275c51cc":525,"0b7ff44e5150c92c9152697a5bc788e5a4f454d4":7,"d8e8ba9a27b1ac777fc6768c787efc4b24353ad8":24,"7f97c0a811845e0bbd976bb23ffb04f6cfdc5060":81,"e62873e41b1b9fe172bda60dc58e8a46990d9ac3":1189,"79958eb2a0daf2f03a1168ba58b67bfd84a3eb05":25,"621aef26123343806409b57a834f0e953fe93912":62,"77c7c53ca249351e72f3d8ccd7266c28afc9f785":188,"d0f2148ad42b32698c549f1f13e9849e9db9e9c6":7,"f55dac6e242dc26f2d688a286f1b266c26c7216a":351,"44dc551f3de9fa91010229832d4d490f8b644b88":16,"55cf341f8123fab9e98d0cb8d835477ae40fb1b6":136,"d2d0020623f2042a98366b7e0b57f66bc69fe5c1":3311,"7361f9890534d72543c6eff65ab5eb9163d9b15e":28,"5b99d27dfd2181bce3421a532b77c2d805650765":225,"e0a094a9c78bf280cfd0ba70958e424d4b3cf27e":2416,"ac9f7cb15602fe645e8542cbff70f7a78dcd1b60":3619,"ebf55f269805039429710bcb9d948d3a6667295c":2580},"excluded_import_commits":["0d96c3b764639079713645c679e9bb5e88e825a4","fde30d3f4575aa8d08a1a86115920ea1c31cd68a"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":39.0,"flagged_releases":1.0,"max_loc_per_day":20592.0},"findings":[],"evidence":[{"kind":"release-burst","description":"v0.14.0 → v0.14.1: 5,447 lines in 0.7 days (7,785.0 lines/day)","ref":"v0.14.0...v0.14.1","url":"https://github.com/digitalsamba/claude-code-video-toolkit/compare/v0.14.0...v0.14.1","weight":0.4}],"data":{"releases":[{"from":"v0.3.0","to":"v0.4.0","loc":488,"days":8.25,"loc_per_day":59.1,"flagged":false},{"from":"v0.4.0","to":"v0.5.0","loc":452,"days":0.04,"loc_per_day":10848.0,"flagged":false},{"from":"v0.5.0","to":"v0.6.0","loc":371,"days":0.15,"loc_per_day":2522.8,"flagged":false},{"from":"v0.6.0","to":"v0.7.0","loc":4292,"days":1.85,"loc_per_day":2314.4,"flagged":false},{"from":"v0.7.0","to":"v0.8.0","loc":2416,"days":5.79,"loc_per_day":417.4,"flagged":false},{"from":"v0.8.0","to":"v0.8.1","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.8.1","to":"v0.9.0","loc":1689,"days":6.47,"loc_per_day":261.1,"flagged":false},{"from":"v0.9.0","to":"v0.9.1","loc":0,"days":12.56,"loc_per_day":0.0,"flagged":false},{"from":"v0.9.1","to":"v0.9.2","loc":528,"days":0.89,"loc_per_day":590.9,"flagged":false},{"from":"v0.9.2","to":"v0.9.3","loc":386,"days":25.07,"loc_per_day":15.4,"flagged":false},{"from":"v0.9.3","to":"archive/feature-sprint-review-v2","loc":3830,"days":0.97,"loc_per_day":3930.6,"flagged":false},{"from":"archive/feature-sprint-review-v2","to":"v0.10.0","loc":2364,"days":4.3,"loc_per_day":549.7,"flagged":false},{"from":"v0.10.0","to":"v0.10.1","loc":858,"days":0.04,"loc_per_day":20592.0,"flagged":false},{"from":"v0.10.1","to":"v0.11.0","loc":1641,"days":18.07,"loc_per_day":90.8,"flagged":false},{"from":"v0.11.0","to":"v0.11.1","loc":232,"days":7.34,"loc_per_day":31.6,"flagged":false},{"from":"v0.11.1","to":"v0.12.0","loc":1541,"days":0.62,"loc_per_day":2492.6,"flagged":false},{"from":"v0.12.0","to":"v0.13.0","loc":3619,"days":1.8,"loc_per_day":2014.2,"flagged":false},{"from":"v0.13.0","to":"v0.13.1","loc":686,"days":1.22,"loc_per_day":560.2,"flagged":false},{"from":"v0.13.1","to":"v0.13.2","loc":14,"days":0.82,"loc_per_day":17.0,"flagged":false},{"from":"v0.13.2","to":"v0.14.0","loc":543,"days":8.05,"loc_per_day":67.4,"flagged":false},{"from":"v0.14.0","to":"v0.14.1","loc":5447,"days":0.7,"loc_per_day":7785.0,"flagged":true},{"from":"v0.14.1","to":"v0.14.2","loc":1717,"days":4.94,"loc_per_day":347.9,"flagged":false},{"from":"v0.14.2","to":"v0.15.0","loc":1025,"days":12.38,"loc_per_day":82.8,"flagged":false},{"from":"v0.15.0","to":"v0.16.0","loc":3732,"days":47.93,"loc_per_day":77.9,"flagged":false},{"from":"v0.16.0","to":"v0.17.0","loc":1280,"days":1.47,"loc_per_day":870.1,"flagged":false},{"from":"v0.17.0","to":"v0.18.0","loc":4406,"days":77.61,"loc_per_day":56.8,"flagged":false},{"from":"v0.18.0","to":"v0.19.0","loc":1844,"days":0.47,"loc_per_day":3894.2,"flagged":false},{"from":"v0.19.0","to":"v0.20.0","loc":2911,"days":4.08,"loc_per_day":714.3,"flagged":false},{"from":"v0.20.0","to":"v0.20.1","loc":23,"days":8.44,"loc_per_day":2.7,"flagged":false},{"from":"v0.20.1","to":"v0.20.2","loc":229,"days":23.47,"loc_per_day":9.8,"flagged":false},{"from":"v0.20.2","to":"v0.21.0","loc":3717,"days":10.46,"loc_per_day":355.4,"flagged":false},{"from":"v0.21.0","to":"v0.21.1","loc":4028,"days":9.09,"loc_per_day":443.2,"flagged":false},{"from":"v0.21.1","to":"v0.22.0","loc":346,"days":5.93,"loc_per_day":58.4,"flagged":false},{"from":"v0.22.0","to":"v0.23.0","loc":3310,"days":1.05,"loc_per_day":3151.9,"flagged":false},{"from":"v0.23.0","to":"v0.24.0","loc":2700,"days":4.0,"loc_per_day":675.5,"flagged":false},{"from":"v0.24.0","to":"v0.25.0","loc":3978,"days":4.11,"loc_per_day":966.7,"flagged":false},{"from":"v0.25.0","to":"v0.26.0","loc":1898,"days":2.03,"loc_per_day":933.8,"flagged":false},{"from":"v0.26.0","to":"v0.27.0","loc":2923,"days":1.66,"loc_per_day":1757.1,"flagged":false},{"from":"v0.27.0","to":"v0.28.0","loc":5884,"days":3.09,"loc_per_day":1906.5,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":73421.0,"index":0.497,"count:narrated_steps":20.0,"per_kloc:narrated_steps":0.272,"files:narrated_steps":4.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":33.0,"per_kloc:emoji_in_code":0.449,"files:emoji_in_code":17.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 1: Legacy app animations","ref":"examples/sprint-review-cho-oyu/remotion/src/components/AppRenameSlide.tsx:190","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/examples/sprint-review-cho-oyu/remotion/src/components/AppRenameSlide.tsx#L190","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 2: Embedded app animations - starts after RN upgrade completes","ref":"examples/sprint-review-cho-oyu/remotion/src/components/AppRenameSlide.tsx:236","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/examples/sprint-review-cho-oyu/remotion/src/components/AppRenameSlide.tsx#L236","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: Clone repository","ref":"tools/dewatermark.py:737","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L737","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: Create virtual environment","ref":"tools/dewatermark.py:760","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L760","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 3: Install dependencies","ref":"tools/dewatermark.py:777","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L777","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 4: Download model weights","ref":"tools/dewatermark.py:807","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L807","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: Find or create template","ref":"tools/dewatermark.py:1550","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L1550","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: Find or create endpoint","ref":"tools/dewatermark.py:1564","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L1564","weight":0.0}],"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":112.0,"findings_high":72.0,"findings_medium":40.0,"findings_low":0.0,"weighted_findings":78.0,"scanned_lines":73421.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-ltx2/app.py","line":591,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-ltx2/app.py:591"},{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-propainter/app.py","line":88,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-propainter/app.py:88"},{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-propainter/app.py","line":90,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-propainter/app.py:90"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"docker/modal-propainter/app.py","line":201,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:docker/modal-propainter/app.py:201"},{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-sadtalker/app.py","line":151,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-sadtalker/app.py:151"},{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-sadtalker/app.py","line":153,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-sadtalker/app.py:153"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"docker/modal-sadtalker/app.py","line":276,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:docker/modal-sadtalker/app.py:276"},{"rule_id":"opengrep/python.django.security.injection.ssrf.ssrf-injection-requests","severity":"high","message":"Data from request object is passed to a new server-side request. This could lead to a server-side request forgery (SSRF). To mitigate, ensure that schemes and hosts are validated against an allowlist, do not forward the response to the user, and ensure proper authentication and transport-layer secur [confidence medium]","path":"docker/modal-upscale/app.py","line":143,"fingerprint":"python.django.security.injection.ssrf.ssrf-injection-requests:docker/modal-upscale/app.py:143"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"docker/runpod-propainter/Dockerfile","line":80,"fingerprint":"dockerfile.security.missing-user:docker/runpod-propainter/Dockerfile:80"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"docker/runpod-propainter/handler.py","line":417,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:docker/runpod-propainter/handler.py:417"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"docker/runpod-qwen3-tts/Dockerfile","line":54,"fingerprint":"dockerfile.security.missing-user:docker/runpod-qwen3-tts/Dockerfile:54"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"docker/runpod-realesrgan/Dockerfile","line":79,"fingerprint":"dockerfile.security.missing-user:docker/runpod-realesrgan/Dockerfile:79"},{"rule_id":"opengrep/dockerfile.security.missing-user","severity":"high","message":"By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium]","path":"docker/runpod-sadtalker/Dockerfile","line":127,"fingerprint":"dockerfile.security.missing-user:docker/runpod-sadtalker/Dockerfile:127"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"docker/runpod-sadtalker/handler.py","line":235,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:docker/runpod-sadtalker/handler.py:235"},{"rule_id":"opengrep/javascript.lang.security.detect-child-process","severity":"high","message":"Detected calls to child_process from a function argument `filePath`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low]","path":"playwright/scripts/record-demo.ts","line":142,"fingerprint":"javascript.lang.security.detect-child-process:playwright/scripts/record-demo.ts:142"},{"rule_id":"opengrep/javascript.lang.security.detect-child-process","severity":"high","message":"Detected calls to child_process from a function argument `filePath`. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low]","path":"playwright/scripts/record-interactive.ts","line":232,"fingerprint":"javascript.lang.security.detect-child-process:playwright/scripts/record-interactive.ts:232"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/bump_remotion.py","line":89,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/bump_remotion.py:89"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/bump_remotion.py","line":118,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/bump_remotion.py:118"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/check_versions.py","line":47,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/check_versions.py:47"},{"rule_id":"opengrep/javascript.lang.security.audit.spawn-shell-true","severity":"high","message":"Found '$SPAWN' with '{shell: process.platform === 'win32'}'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use '{shell: false}' instead. [confidence low]","path":"scripts/render-baseline.mjs","line":46,"fingerprint":"javascript.lang.security.audit.spawn-shell-true:scripts/render-baseline.mjs:46"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"site/site.js","line":46,"fingerprint":"javascript.browser.security.insecure-document-method:site/site.js:46"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `cost.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"site/site.js","line":46,"fingerprint":"javascript.browser.security.insecure-innerhtml:site/site.js:46"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"site/site.js","line":48,"fingerprint":"javascript.browser.security.insecure-document-method:site/site.js:48"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `out.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"site/site.js","line":48,"fingerprint":"javascript.browser.security.insecure-innerhtml:site/site.js:48"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"templates/concept-explainer-short/build.py","line":315,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:templates/concept-explainer-short/build.py:315"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"templates/concept-explainer-short/gen_vo.py","line":95,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:templates/concept-explainer-short/gen_vo.py:95"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/addmusic.py","line":310,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/addmusic.py:310"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/blender_render.py","line":109,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/blender_render.py:109"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/blender_render.py","line":138,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/blender_render.py:138"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/blender_render.py","line":412,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/blender_render.py:412"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/chain_video.py","line":73,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/chain_video.py:73"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/chain_video.py","line":118,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/chain_video.py:118"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/copy_lint.py","line":99,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/copy_lint.py:99"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/cutdown.py","line":500,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/cutdown.py:500"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":379,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:379"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":471,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:471"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":705,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:705"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":766,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:766"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":783,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:783"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":789,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:789"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":800,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:800"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":817,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:817"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":972,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:972"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":1069,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:1069"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":1097,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:1097"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/dewatermark.py","line":1122,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/dewatermark.py:1122"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/locate_watermark.py","line":324,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/locate_watermark.py:324"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/ltx_extend.py","line":63,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ltx_extend.py:63"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/media_ops.py","line":49,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/media_ops.py:49"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/media_ops.py","line":127,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/media_ops.py:127"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/modal_setup.py","line":183,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/modal_setup.py:183"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/modal_setup.py","line":216,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/modal_setup.py:216"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":268,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:268"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":282,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:282"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":304,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:304"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":318,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:318"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":338,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:338"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":358,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:358"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":372,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:372"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":392,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:392"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/notebooklm_brand.py","line":558,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/notebooklm_brand.py:558"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/qc.py","line":181,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/qc.py:181"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/qc.py","line":628,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/qc.py:628"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/qc.py","line":640,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/qc.py:640"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/redub.py","line":615,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/redub.py:615"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/soulx.py","line":135,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/soulx.py:135"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/verify_setup.py","line":34,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/verify_setup.py:34"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/video_job.py","line":1080,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/video_job.py:1080"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args","severity":"high","message":"Detected subprocess function 'run' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium]","path":"tools/video_job.py","line":1080,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-tainted-env-args:tools/video_job.py:1080"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/video_job.py","line":1486,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/video_job.py:1486"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/video_job.py","line":2183,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/video_job.py:2183"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/video_job.py","line":2679,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/video_job.py:2679"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `p` 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":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","line":30,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:.claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:30"},{"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":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","line":35,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:.claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:35"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `p` 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":".claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","line":30,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:.claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:30"},{"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":".claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","line":35,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:.claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:35"},{"rule_id":"opengrep/python.django.security.injection.request-data-write","severity":"medium","message":"Found user-controlled request data passed into '.write(...)'. This could be dangerous if a malicious actor is able to control data into sensitive files. For example, a malicious actor could force rolling of critical log files, or cause a denial-of-service by using up available disk space. Instead, e [confidence medium]","path":"docker/modal-music-gen/app.py","line":187,"fingerprint":"python.django.security.injection.request-data-write:docker/modal-music-gen/app.py:187"},{"rule_id":"opengrep/python.django.security.injection.request-data-write","severity":"medium","message":"Found user-controlled request data passed into '.write(...)'. This could be dangerous if a malicious actor is able to control data into sensitive files. For example, a malicious actor could force rolling of critical log files, or cause a denial-of-service by using up available disk space. Instead, e [confidence medium]","path":"docker/modal-music-gen/app.py","line":198,"fingerprint":"python.django.security.injection.request-data-write:docker/modal-music-gen/app.py:198"},{"rule_id":"opengrep/python.lang.security.audit.eval-detected","severity":"medium","message":"Detected the use of eval(). eval() can be dangerous if used to evaluate dynamic content. If this content can be input from outside the program, this may be a code injection vulnerability. Ensure evaluated content is not definable by external sources. [confidence low]","path":"docker/modal-propainter/app.py","line":127,"fingerprint":"python.lang.security.audit.eval-detected:docker/modal-propainter/app.py:127"},{"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":"lib/brand.ts","line":96,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:96"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `startDir` 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":"lib/brand.ts","line":97,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:97"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `startDir` 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":"lib/brand.ts","line":97,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:97"},{"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":"lib/brand.ts","line":125,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:125"},{"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":"lib/brand.ts","line":125,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:125"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `brandName` 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":"lib/brand.ts","line":127,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:127"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `projectDir` 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":"lib/brand.ts","line":127,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:127"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `brandName` 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":"lib/brand.ts","line":135,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:135"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `projectDir` 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":"lib/brand.ts","line":135,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:135"},{"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":"lib/brand.ts","line":146,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:146"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `toolkitRoot` 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":"lib/brand.ts","line":147,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:147"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `toolkitRoot` 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":"lib/brand.ts","line":149,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:149"},{"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":"lib/brand.ts","line":150,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:150"},{"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":"lib/brand.ts","line":150,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:150"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `name` 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":"lib/brand.ts","line":151,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:151"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `toolkitRoot` 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":"lib/brand.ts","line":151,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:151"},{"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":"lib/brand.ts","line":160,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:160"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `projectDir` 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":"lib/brand.ts","line":162,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:162"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `projectDir` 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":"lib/brand.ts","line":166,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/brand.ts:166"},{"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":"lib/brand.ts","line":228,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:228"},{"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":"lib/brand.ts","line":228,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:228"},{"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":"lib/brand.ts","line":228,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/brand.ts:228"},{"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":"lib/generate-brand-ts.ts","line":46,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:lib/generate-brand-ts.ts:46"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `brandName` 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":"lib/generate-brand-ts.ts","line":48,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/generate-brand-ts.ts:48"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `brandName` 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":"lib/generate-brand-ts.ts","line":52,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:lib/generate-brand-ts.ts:52"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `page` 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":"playwright/scripts/record-interactive.ts","line":378,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:playwright/scripts/record-interactive.ts:378"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `page` 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":"playwright/scripts/record-interactive.ts","line":382,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:playwright/scripts/record-interactive.ts:382"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"scripts/check_versions.py","line":253,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:scripts/check_versions.py:253"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"templates/concept-explainer-short/build.py","line":102,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:templates/concept-explainer-short/build.py:102"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"templates/concept-explainer-short/build.py","line":147,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:templates/concept-explainer-short/build.py:147"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"templates/concept-explainer-short/build.py","line":234,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:templates/concept-explainer-short/build.py:234"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"templates/concept-explainer-short/build.py","line":304,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:templates/concept-explainer-short/build.py:304"},{"rule_id":"opengrep/python.lang.security.insecure-hash-algorithm-sha1","severity":"medium","message":"Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium]","path":"tools/ltx_extend.py","line":54,"fingerprint":"python.lang.security.insecure-hash-algorithm-sha1:tools/ltx_extend.py:54"}],"evidence":[],"data":{"rulesets":["python","typescript","javascript","bash","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":18.0,"vulnerabilities":162.0,"vulns_critical":14.0,"vulns_high":87.0,"vulns_medium":54.0,"vulns_low":4.0,"vulns_unknown":3.0,"penalty":137.0},"findings":[{"rule_id":"osv/GHSA-5x8w-8jj5-q52h","severity":"critical","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-5x8w-8jj5-q52h"},{"rule_id":"osv/GHSA-8g5g-8vmr-9782","severity":"critical","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-8g5g-8vmr-9782"},{"rule_id":"osv/GHSA-xvh5-g6gv-559v","severity":"critical","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-xvh5-g6gv-559v"},{"rule_id":"osv/GHSA-3f63-hfp8-52jq","severity":"critical","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-457, GHSA-3f63-hfp8-52jq","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-3f63-hfp8-52jq"},{"rule_id":"osv/GHSA-332p-7hrc-92wf","severity":"critical","message":"pillow@10.0 (PyPI) is affected by GHSA-332p-7hrc-92wf","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-332p-7hrc-92wf"},{"rule_id":"osv/GHSA-w889-685w-c8fh","severity":"critical","message":"pillow@10.0 (PyPI) is affected by GHSA-w889-685w-c8fh","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-w889-685w-c8fh"},{"rule_id":"osv/GHSA-82r6-8w77-94w6","severity":"critical","message":"anyio@4.13.0 (PyPI) is affected by PYSEC-2026-4025, GHSA-82r6-8w77-94w6","path":"uv.lock","line":null,"fingerprint":"anyio@4.13.0 (PyPI):GHSA-82r6-8w77-94w6"},{"rule_id":"osv/GHSA-6q48-6c7w-9gw2","severity":"critical","message":"certifi@2026.5.20 (PyPI) is affected by PYSEC-2026-4320, GHSA-6q48-6c7w-9gw2","path":"uv.lock","line":null,"fingerprint":"certifi@2026.5.20 (PyPI):GHSA-6q48-6c7w-9gw2"},{"rule_id":"osv/GHSA-5x8w-8jj5-q52h","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-5x8w-8jj5-q52h"},{"rule_id":"osv/GHSA-8g5g-8vmr-9782","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-8g5g-8vmr-9782"},{"rule_id":"osv/GHSA-v9pv-5gc8-w2m6","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-v9pv-5gc8-w2m6"},{"rule_id":"osv/GHSA-xvh5-g6gv-559v","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-xvh5-g6gv-559v"},{"rule_id":"osv/GHSA-332p-7hrc-92wf","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by GHSA-332p-7hrc-92wf","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-332p-7hrc-92wf"},{"rule_id":"osv/GHSA-w889-685w-c8fh","severity":"critical","message":"pillow@11.3.0 (PyPI) is affected by GHSA-w889-685w-c8fh","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-w889-685w-c8fh"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.5.4 (npm) is affected by GHSA-mrhx-c7xc-m3w5; also in showcase/transitions/package-lock.json; also in templates/ai-engineering-review/package-lock.json; also in templates/ds-release-notes/package-lock.json; also in templates/product-demo/package-lock.json; also in templates/sprint-review-v2/package-lock.json; also in templates/sprint-review/package-lock.json","path":"showcase/banner/package-lock.json","line":null,"fingerprint":"zod@4.5.4 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-44wm-f244-xhp3","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-1793, GHSA-44wm-f244-xhp3","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-44wm-f244-xhp3"},{"rule_id":"osv/GHSA-j7hp-h8jx-5ppr","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-1794, GHSA-j7hp-h8jx-5ppr","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-j7hp-h8jx-5ppr"},{"rule_id":"osv/GHSA-8v84-f9pq-wr9x","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-8v84-f9pq-wr9x"},{"rule_id":"osv/GHSA-5x94-69rx-g8h2","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-5x94-69rx-g8h2"},{"rule_id":"osv/GHSA-45hq-cxwh-f6vc","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-45hq-cxwh-f6vc"},{"rule_id":"osv/GHSA-phj9-mv4w-65pm","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-phj9-mv4w-65pm"},{"rule_id":"osv/GHSA-6r8x-57c9-28j4","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-6r8x-57c9-28j4"},{"rule_id":"osv/GHSA-9hw9-ch79-4vh6","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-9hw9-ch79-4vh6"},{"rule_id":"osv/GHSA-xj96-63gp-2gmr","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-xj96-63gp-2gmr"},{"rule_id":"osv/GHSA-62p4-gmf7-7g93","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-62p4-gmf7-7g93"},{"rule_id":"osv/GHSA-jjj6-mw9f-p565","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-jjj6-mw9f-p565"},{"rule_id":"osv/GHSA-vjc4-5qp5-m44j","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-vjc4-5qp5-m44j"},{"rule_id":"osv/GHSA-27h8-gf7j-v5hc","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-27h8-gf7j-v5hc"},{"rule_id":"osv/GHSA-4558-3h8r-v8xp","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-4558-3h8r-v8xp"},{"rule_id":"osv/GHSA-58r4-6rv3-gfh8","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-58r4-6rv3-gfh8"},{"rule_id":"osv/GHSA-7mwm-ghpf-9vrm","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-7mwm-ghpf-9vrm"},{"rule_id":"osv/GHSA-pchr-8j38-3x4p","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-pchr-8j38-3x4p"},{"rule_id":"osv/GHSA-xgh8-jp6q-p5x8","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-xgh8-jp6q-p5x8"},{"rule_id":"osv/GHSA-g842-9rc4-69pw","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-g842-9rc4-69pw"},{"rule_id":"osv/GHSA-3j72-p6qg-6xp7","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-3j72-p6qg-6xp7"},{"rule_id":"osv/GHSA-9v9v-9qvf-h2hj","severity":"high","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-9v9v-9qvf-h2hj"},{"rule_id":"osv/GHSA-22hg-r758-rrw9","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-22hg-r758-rrw9","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-22hg-r758-rrw9"},{"rule_id":"osv/GHSA-5xm2-6676-qcp9","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-5xm2-6676-qcp9","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-5xm2-6676-qcp9"},{"rule_id":"osv/GHSA-65qm-jvmh-6pqg","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-65qm-jvmh-6pqg","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-65qm-jvmh-6pqg"},{"rule_id":"osv/GHSA-c6hw-5grf-ff96","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-c6hw-5grf-ff96","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-c6hw-5grf-ff96"},{"rule_id":"osv/GHSA-f2g6-542v-9j58","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-f2g6-542v-9j58","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-f2g6-542v-9j58"},{"rule_id":"osv/GHSA-g7cr-3p24-7wf7","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-g7cr-3p24-7wf7","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-g7cr-3p24-7wf7"},{"rule_id":"osv/GHSA-gg2r-wvfm-q9rx","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-gg2r-wvfm-q9rx","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-gg2r-wvfm-q9rx"},{"rule_id":"osv/GHSA-j4m9-6w36-pw47","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-j4m9-6w36-pw47","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-j4m9-6w36-pw47"},{"rule_id":"osv/GHSA-jg86-v3jv-hrpm","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-jg86-v3jv-hrpm","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-jg86-v3jv-hrpm"},{"rule_id":"osv/GHSA-mrfp-p49p-3hf2","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-mrfp-p49p-3hf2","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-mrfp-p49p-3hf2"},{"rule_id":"osv/GHSA-p4wg-p73j-c528","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-p4wg-p73j-c528","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-p4wg-p73j-c528"},{"rule_id":"osv/GHSA-q45j-58j2-45rg","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-q45j-58j2-45rg","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-q45j-58j2-45rg"},{"rule_id":"osv/GHSA-xcvg-w56q-r89m","severity":"high","message":"pillow@10.0 (PyPI) is affected by GHSA-xcvg-w56q-r89m","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-xcvg-w56q-r89m"},{"rule_id":"osv/GHSA-cq5v-8q36-5273","severity":"high","message":"aiohttp@3.14.1 (PyPI) is affected by PYSEC-2026-3545, GHSA-cq5v-8q36-5273","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-cq5v-8q36-5273"},{"rule_id":"osv/GHSA-2g87-pp6c-29x5","severity":"high","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-2g87-pp6c-29x5","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-2g87-pp6c-29x5"},{"rule_id":"osv/GHSA-5wr8-gcqf-gqf3","severity":"high","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-5wr8-gcqf-gqf3","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-5wr8-gcqf-gqf3"},{"rule_id":"osv/GHSA-9xw5-w5jj-pvcg","severity":"high","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-9xw5-w5jj-pvcg","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-9xw5-w5jj-pvcg"},{"rule_id":"osv/GHSA-v4x8-3wr5-3wq8","severity":"high","message":"filelock@3.29.3 (PyPI) is affected by GHSA-v4x8-3wr5-3wq8","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-v4x8-3wr5-3wq8"},{"rule_id":"osv/GHSA-27vj-qcqg-25rc","severity":"high","message":"fsspec@2026.4.0 (PyPI) is affected by PYSEC-2026-4217, GHSA-27vj-qcqg-25rc","path":"uv.lock","line":null,"fingerprint":"fsspec@2026.4.0 (PyPI):GHSA-27vj-qcqg-25rc"},{"rule_id":"osv/GHSA-3jp2-3mrg-2vxc","severity":"high","message":"oauthlib@3.3.1 (PyPI) is affected by GHSA-3jp2-3mrg-2vxc","path":"uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-3jp2-3mrg-2vxc"},{"rule_id":"osv/GHSA-7984-qgvg-3j9c","severity":"high","message":"oauthlib@3.3.1 (PyPI) is affected by GHSA-7984-qgvg-3j9c","path":"uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-7984-qgvg-3j9c"},{"rule_id":"osv/GHSA-cfh3-3jmp-rvhc","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2249, GHSA-cfh3-3jmp-rvhc","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-cfh3-3jmp-rvhc"},{"rule_id":"osv/GHSA-whj4-6x5x-4v2j","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2250, GHSA-whj4-6x5x-4v2j","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-whj4-6x5x-4v2j"},{"rule_id":"osv/GHSA-pwv6-vv43-88gr","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2252, GHSA-pwv6-vv43-88gr","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-pwv6-vv43-88gr"},{"rule_id":"osv/GHSA-8v84-f9pq-wr9x","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-8v84-f9pq-wr9x"},{"rule_id":"osv/GHSA-5x94-69rx-g8h2","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-5x94-69rx-g8h2"},{"rule_id":"osv/GHSA-45hq-cxwh-f6vc","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-45hq-cxwh-f6vc"},{"rule_id":"osv/GHSA-phj9-mv4w-65pm","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-phj9-mv4w-65pm"},{"rule_id":"osv/GHSA-6r8x-57c9-28j4","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-6r8x-57c9-28j4"},{"rule_id":"osv/GHSA-9hw9-ch79-4vh6","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-9hw9-ch79-4vh6"},{"rule_id":"osv/GHSA-xj96-63gp-2gmr","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-xj96-63gp-2gmr"},{"rule_id":"osv/GHSA-62p4-gmf7-7g93","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-62p4-gmf7-7g93"},{"rule_id":"osv/GHSA-jjj6-mw9f-p565","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-jjj6-mw9f-p565"},{"rule_id":"osv/GHSA-vjc4-5qp5-m44j","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-vjc4-5qp5-m44j"},{"rule_id":"osv/GHSA-27h8-gf7j-v5hc","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-27h8-gf7j-v5hc"},{"rule_id":"osv/GHSA-4558-3h8r-v8xp","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-4558-3h8r-v8xp"},{"rule_id":"osv/GHSA-4rr5-89j8-mwwm","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4328, GHSA-4rr5-89j8-mwwm","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-4rr5-89j8-mwwm"},{"rule_id":"osv/GHSA-58r4-6rv3-gfh8","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-58r4-6rv3-gfh8"},{"rule_id":"osv/GHSA-7mwm-ghpf-9vrm","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-7mwm-ghpf-9vrm"},{"rule_id":"osv/GHSA-pchr-8j38-3x4p","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-pchr-8j38-3x4p"},{"rule_id":"osv/GHSA-xgh8-jp6q-p5x8","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-xgh8-jp6q-p5x8"},{"rule_id":"osv/GHSA-g842-9rc4-69pw","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-g842-9rc4-69pw"},{"rule_id":"osv/GHSA-3j72-p6qg-6xp7","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-3j72-p6qg-6xp7"},{"rule_id":"osv/GHSA-g4qv-2jxx-769h","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4342, GHSA-g4qv-2jxx-769h","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-g4qv-2jxx-769h"},{"rule_id":"osv/GHSA-9v9v-9qvf-h2hj","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-9v9v-9qvf-h2hj"},{"rule_id":"osv/GHSA-22hg-r758-rrw9","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-22hg-r758-rrw9","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-22hg-r758-rrw9"},{"rule_id":"osv/GHSA-5xm2-6676-qcp9","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-5xm2-6676-qcp9","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-5xm2-6676-qcp9"},{"rule_id":"osv/GHSA-65qm-jvmh-6pqg","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-65qm-jvmh-6pqg","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-65qm-jvmh-6pqg"},{"rule_id":"osv/GHSA-78g4-xqwv-q3g8","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-78g4-xqwv-q3g8","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-78g4-xqwv-q3g8"},{"rule_id":"osv/GHSA-c6hw-5grf-ff96","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-c6hw-5grf-ff96","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-c6hw-5grf-ff96"},{"rule_id":"osv/GHSA-f2g6-542v-9j58","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-f2g6-542v-9j58","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-f2g6-542v-9j58"},{"rule_id":"osv/GHSA-g7cr-3p24-7wf7","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-g7cr-3p24-7wf7","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-g7cr-3p24-7wf7"},{"rule_id":"osv/GHSA-gg2r-wvfm-q9rx","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-gg2r-wvfm-q9rx","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-gg2r-wvfm-q9rx"},{"rule_id":"osv/GHSA-j4m9-6w36-pw47","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-j4m9-6w36-pw47","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-j4m9-6w36-pw47"},{"rule_id":"osv/GHSA-jg86-v3jv-hrpm","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-jg86-v3jv-hrpm","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-jg86-v3jv-hrpm"},{"rule_id":"osv/GHSA-mrfp-p49p-3hf2","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-mrfp-p49p-3hf2","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-mrfp-p49p-3hf2"},{"rule_id":"osv/GHSA-p4wg-p73j-c528","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-p4wg-p73j-c528","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-p4wg-p73j-c528"},{"rule_id":"osv/GHSA-q45j-58j2-45rg","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-q45j-58j2-45rg","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-q45j-58j2-45rg"},{"rule_id":"osv/GHSA-xcvg-w56q-r89m","severity":"high","message":"pillow@11.3.0 (PyPI) is affected by GHSA-xcvg-w56q-r89m","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-xcvg-w56q-r89m"},{"rule_id":"osv/GHSA-2qm8-x737-gmw5","severity":"high","message":"pyasn1@0.6.4 (PyPI) is affected by GHSA-2qm8-x737-gmw5","path":"uv.lock","line":null,"fingerprint":"pyasn1@0.6.4 (PyPI):GHSA-2qm8-x737-gmw5"},{"rule_id":"osv/GHSA-9m75-vc3g-4x39","severity":"high","message":"pyasn1@0.6.4 (PyPI) is affected by GHSA-9m75-vc3g-4x39","path":"uv.lock","line":null,"fingerprint":"pyasn1@0.6.4 (PyPI):GHSA-9m75-vc3g-4x39"},{"rule_id":"osv/GHSA-fm9c-5rcf-2q5p","severity":"high","message":"pyasn1@0.6.4 (PyPI) is affected by GHSA-fm9c-5rcf-2q5p","path":"uv.lock","line":null,"fingerprint":"pyasn1@0.6.4 (PyPI):GHSA-fm9c-5rcf-2q5p"},{"rule_id":"osv/GHSA-mm57-4v3p-rchx","severity":"high","message":"pyasn1@0.6.4 (PyPI) is affected by GHSA-mm57-4v3p-rchx","path":"uv.lock","line":null,"fingerprint":"pyasn1@0.6.4 (PyPI):GHSA-mm57-4v3p-rchx"},{"rule_id":"osv/GHSA-8988-9cw3-xx77","severity":"high","message":"urllib3@2.7.0 (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77","path":"uv.lock","line":null,"fingerprint":"urllib3@2.7.0 (PyPI):GHSA-8988-9cw3-xx77"},{"rule_id":"osv/GHSA-vxq7-64xx-v4gw","severity":"high","message":"urllib3@2.7.0 (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw","path":"uv.lock","line":null,"fingerprint":"urllib3@2.7.0 (PyPI):GHSA-vxq7-64xx-v4gw"},{"rule_id":"osv/PYSEC-2023-175","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2023-175","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):PYSEC-2023-175"},{"rule_id":"osv/GHSA-wjx4-4jcj-g98j","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-165, GHSA-wjx4-4jcj-g98j","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-wjx4-4jcj-g98j"},{"rule_id":"osv/GHSA-4x4j-2g7c-83w6","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2257, GHSA-4x4j-2g7c-83w6","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-4x4j-2g7c-83w6"},{"rule_id":"osv/GHSA-r73j-pqj5-w3x7","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-2874, GHSA-r73j-pqj5-w3x7","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-r73j-pqj5-w3x7"},{"rule_id":"osv/GHSA-fj7v-r99m-22gq","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-3494, GHSA-fj7v-r99m-22gq","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-fj7v-r99m-22gq"},{"rule_id":"osv/GHSA-p8hx-v2p6-rp84","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4337, GHSA-p8hx-v2p6-rp84","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-p8hx-v2p6-rp84"},{"rule_id":"osv/GHSA-4rm8-3hmm-39fg","severity":"medium","message":"pillow@10.0 (PyPI) is affected by PYSEC-2026-4340, GHSA-4rm8-3hmm-39fg","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-4rm8-3hmm-39fg"},{"rule_id":"osv/GHSA-24rc-8hj2-v98c","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-24rc-8hj2-v98c","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-24rc-8hj2-v98c"},{"rule_id":"osv/GHSA-254f-3936-288h","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-254f-3936-288h","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-254f-3936-288h"},{"rule_id":"osv/GHSA-462x-pgg6-55fp","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-462x-pgg6-55fp","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-462x-pgg6-55fp"},{"rule_id":"osv/GHSA-74r2-7ff9-mjj2","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-74r2-7ff9-mjj2","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-74r2-7ff9-mjj2"},{"rule_id":"osv/GHSA-fc9g-5qg7-mf45","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-fc9g-5qg7-mf45","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-fc9g-5qg7-mf45"},{"rule_id":"osv/GHSA-rfgq-q3w2-pmv2","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-rfgq-q3w2-pmv2","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-rfgq-q3w2-pmv2"},{"rule_id":"osv/GHSA-vx6w-vv9f-6gvg","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-vx6w-vv9f-6gvg","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-vx6w-vv9f-6gvg"},{"rule_id":"osv/GHSA-wqgw-9xfh-qf2g","severity":"medium","message":"pillow@10.0 (PyPI) is affected by GHSA-wqgw-9xfh-qf2g","path":"tools/requirements.txt","line":null,"fingerprint":"pillow@10.0 (PyPI):GHSA-wqgw-9xfh-qf2g"},{"rule_id":"osv/GHSA-mf9w-mj56-hr94","severity":"medium","message":"python-dotenv@1.0.0 (PyPI) is affected by PYSEC-2026-2270, GHSA-mf9w-mj56-hr94","path":"tools/requirements.txt","line":null,"fingerprint":"python-dotenv@1.0.0 (PyPI):GHSA-mf9w-mj56-hr94"},{"rule_id":"osv/GHSA-j8r2-6x86-q33q","severity":"medium","message":"requests@2.28.0 (PyPI) is affected by PYSEC-2023-74, GHSA-j8r2-6x86-q33q","path":"tools/requirements.txt","line":null,"fingerprint":"requests@2.28.0 (PyPI):GHSA-j8r2-6x86-q33q"},{"rule_id":"osv/GHSA-9hjg-9r4m-mvj7","severity":"medium","message":"requests@2.28.0 (PyPI) is affected by PYSEC-2026-1872, GHSA-9hjg-9r4m-mvj7","path":"tools/requirements.txt","line":null,"fingerprint":"requests@2.28.0 (PyPI):GHSA-9hjg-9r4m-mvj7"},{"rule_id":"osv/GHSA-9wx4-h78v-vm56","severity":"medium","message":"requests@2.28.0 (PyPI) is affected by PYSEC-2026-1873, GHSA-9wx4-h78v-vm56","path":"tools/requirements.txt","line":null,"fingerprint":"requests@2.28.0 (PyPI):GHSA-9wx4-h78v-vm56"},{"rule_id":"osv/GHSA-gc5v-m9x4-r6x2","severity":"medium","message":"requests@2.28.0 (PyPI) is affected by PYSEC-2026-2275, GHSA-gc5v-m9x4-r6x2","path":"tools/requirements.txt","line":null,"fingerprint":"requests@2.28.0 (PyPI):GHSA-gc5v-m9x4-r6x2"},{"rule_id":"osv/GHSA-mfx4-hv73-q22v","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by PYSEC-2026-3546, GHSA-mfx4-hv73-q22v","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-mfx4-hv73-q22v"},{"rule_id":"osv/GHSA-mq44-7p77-q5h7","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by PYSEC-2026-3547, GHSA-mq44-7p77-q5h7","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-mq44-7p77-q5h7"},{"rule_id":"osv/GHSA-494j-54xm-rwp3","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-494j-54xm-rwp3","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-494j-54xm-rwp3"},{"rule_id":"osv/GHSA-6cjc-53gc-5rqm","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-6cjc-53gc-5rqm","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-6cjc-53gc-5rqm"},{"rule_id":"osv/GHSA-f9xw-jh8m-3mwq","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-f9xw-jh8m-3mwq","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-f9xw-jh8m-3mwq"},{"rule_id":"osv/GHSA-pqxq-w44r-73xw","severity":"medium","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-pqxq-w44r-73xw","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-pqxq-w44r-73xw"},{"rule_id":"osv/GHSA-5p39-cfhj-2xmp","severity":"medium","message":"anyio@4.13.0 (PyPI) is affected by PYSEC-2026-4024, GHSA-5p39-cfhj-2xmp","path":"uv.lock","line":null,"fingerprint":"anyio@4.13.0 (PyPI):GHSA-5p39-cfhj-2xmp"},{"rule_id":"osv/GHSA-69hj-f68j-2879","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-69hj-f68j-2879","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-69hj-f68j-2879"},{"rule_id":"osv/GHSA-8mx5-7m5m-r77g","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-8mx5-7m5m-r77g","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-8mx5-7m5m-r77g"},{"rule_id":"osv/GHSA-cwqr-hh33-gh44","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-cwqr-hh33-gh44","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-cwqr-hh33-gh44"},{"rule_id":"osv/GHSA-fq56-3cx3-fjxp","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-fq56-3cx3-fjxp","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-fq56-3cx3-fjxp"},{"rule_id":"osv/GHSA-j8f7-rjxc-mr56","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-j8f7-rjxc-mr56","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-j8f7-rjxc-mr56"},{"rule_id":"osv/GHSA-rfpc-qcw5-3pc4","severity":"medium","message":"filelock@3.29.3 (PyPI) is affected by GHSA-rfpc-qcw5-3pc4","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-rfpc-qcw5-3pc4"},{"rule_id":"osv/GHSA-6hr6-w5qg-qmwg","severity":"medium","message":"h2@4.3.0 (PyPI) is affected by PYSEC-2026-3628, GHSA-6hr6-w5qg-qmwg","path":"uv.lock","line":null,"fingerprint":"h2@4.3.0 (PyPI):GHSA-6hr6-w5qg-qmwg"},{"rule_id":"osv/GHSA-8v8h-hg4w-mvq2","severity":"medium","message":"hpack@4.1.0 (PyPI) is affected by PYSEC-2026-4053, GHSA-8v8h-hg4w-mvq2","path":"uv.lock","line":null,"fingerprint":"hpack@4.1.0 (PyPI):GHSA-8v8h-hg4w-mvq2"},{"rule_id":"osv/GHSA-54p9-h82j-f925","severity":"medium","message":"multidict@6.7.1 (PyPI) is affected by PYSEC-2026-4244, GHSA-54p9-h82j-f925","path":"uv.lock","line":null,"fingerprint":"multidict@6.7.1 (PyPI):GHSA-54p9-h82j-f925"},{"rule_id":"osv/GHSA-hj66-6f7g-4r5v","severity":"medium","message":"oauthlib@3.3.1 (PyPI) is affected by PYSEC-2026-4113, GHSA-hj66-6f7g-4r5v","path":"uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-hj66-6f7g-4r5v"},{"rule_id":"osv/GHSA-xpv3-w29h-x7cv","severity":"medium","message":"oauthlib@3.3.1 (PyPI) is affected by PYSEC-2026-4114, GHSA-xpv3-w29h-x7cv","path":"uv.lock","line":null,"fingerprint":"oauthlib@3.3.1 (PyPI):GHSA-xpv3-w29h-x7cv"},{"rule_id":"osv/GHSA-wjx4-4jcj-g98j","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-165, GHSA-wjx4-4jcj-g98j","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-wjx4-4jcj-g98j"},{"rule_id":"osv/GHSA-5xmw-vc9v-4wf2","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2251, GHSA-5xmw-vc9v-4wf2","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-5xmw-vc9v-4wf2"},{"rule_id":"osv/GHSA-4x4j-2g7c-83w6","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2257, GHSA-4x4j-2g7c-83w6","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-4x4j-2g7c-83w6"},{"rule_id":"osv/GHSA-r73j-pqj5-w3x7","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-2874, GHSA-r73j-pqj5-w3x7","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-r73j-pqj5-w3x7"},{"rule_id":"osv/GHSA-fj7v-r99m-22gq","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-3494, GHSA-fj7v-r99m-22gq","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-fj7v-r99m-22gq"},{"rule_id":"osv/GHSA-654x-cwwv-5j9c","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4336, GHSA-654x-cwwv-5j9c","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-654x-cwwv-5j9c"},{"rule_id":"osv/GHSA-p8hx-v2p6-rp84","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4337, GHSA-p8hx-v2p6-rp84","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-p8hx-v2p6-rp84"},{"rule_id":"osv/GHSA-4rm8-3hmm-39fg","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by PYSEC-2026-4340, GHSA-4rm8-3hmm-39fg","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-4rm8-3hmm-39fg"},{"rule_id":"osv/GHSA-24rc-8hj2-v98c","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-24rc-8hj2-v98c","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-24rc-8hj2-v98c"},{"rule_id":"osv/GHSA-254f-3936-288h","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-254f-3936-288h","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-254f-3936-288h"},{"rule_id":"osv/GHSA-462x-pgg6-55fp","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-462x-pgg6-55fp","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-462x-pgg6-55fp"},{"rule_id":"osv/GHSA-74r2-7ff9-mjj2","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-74r2-7ff9-mjj2","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-74r2-7ff9-mjj2"},{"rule_id":"osv/GHSA-fc9g-5qg7-mf45","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-fc9g-5qg7-mf45","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-fc9g-5qg7-mf45"},{"rule_id":"osv/GHSA-rfgq-q3w2-pmv2","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-rfgq-q3w2-pmv2","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-rfgq-q3w2-pmv2"},{"rule_id":"osv/GHSA-vx6w-vv9f-6gvg","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-vx6w-vv9f-6gvg","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-vx6w-vv9f-6gvg"},{"rule_id":"osv/GHSA-wqgw-9xfh-qf2g","severity":"medium","message":"pillow@11.3.0 (PyPI) is affected by GHSA-wqgw-9xfh-qf2g","path":"uv.lock","line":null,"fingerprint":"pillow@11.3.0 (PyPI):GHSA-wqgw-9xfh-qf2g"},{"rule_id":"osv/GHSA-h35f-9h28-mq5c","severity":"medium","message":"setuptools@81.0.0 (PyPI) is affected by PYSEC-2026-3447, GHSA-h35f-9h28-mq5c","path":"uv.lock","line":null,"fingerprint":"setuptools@81.0.0 (PyPI):GHSA-h35f-9h28-mq5c"},{"rule_id":"osv/GHSA-rrmf-rvhw-rf47","severity":"medium","message":"torch@2.12.0 (PyPI) is affected by GHSA-rrmf-rvhw-rf47","path":"uv.lock","line":null,"fingerprint":"torch@2.12.0 (PyPI):GHSA-rrmf-rvhw-rf47"},{"rule_id":"osv/GHSA-gh4c-6fx4-qh6g","severity":"medium","message":"urllib3@2.7.0 (PyPI) is affected by PYSEC-2026-4176, GHSA-gh4c-6fx4-qh6g","path":"uv.lock","line":null,"fingerprint":"urllib3@2.7.0 (PyPI):GHSA-gh4c-6fx4-qh6g"},{"rule_id":"osv/GHSA-gx76-c99x-2c96","severity":"low","message":"aiohttp@3.14.1 (PyPI) is affected by GHSA-gx76-c99x-2c96","path":"uv.lock","line":null,"fingerprint":"aiohttp@3.14.1 (PyPI):GHSA-gx76-c99x-2c96"},{"rule_id":"osv/GHSA-567q-5qvw-pf92","severity":"low","message":"filelock@3.29.3 (PyPI) is affected by GHSA-567q-5qvw-pf92","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-567q-5qvw-pf92"},{"rule_id":"osv/GHSA-9vhv-jxww-xfm5","severity":"low","message":"filelock@3.29.3 (PyPI) is affected by GHSA-9vhv-jxww-xfm5","path":"uv.lock","line":null,"fingerprint":"filelock@3.29.3 (PyPI):GHSA-9vhv-jxww-xfm5"},{"rule_id":"osv/GHSA-xmj3-9gf7-h52w","severity":"low","message":"setuptools@81.0.0 (PyPI) is affected by GHSA-xmj3-9gf7-h52w","path":"uv.lock","line":null,"fingerprint":"setuptools@81.0.0 (PyPI):GHSA-xmj3-9gf7-h52w"}],"evidence":[],"data":{"ecosystems":["PyPI","npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":10.0,"findings":63.0,"findings_high":38.0,"findings_medium":8.0,"findings_low":17.0,"penalty":472.6},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/check-versions.yml","line":37,"fingerprint":"unpinned-uses:.github/workflows/check-versions.yml:37"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/check-versions.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/check-versions.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/copy-lint.yml","line":18,"fingerprint":"unpinned-uses:.github/workflows/copy-lint.yml:18"},{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/docker-build.yml","line":20,"fingerprint":"excessive-permissions:.github/workflows/docker-build.yml:20"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/docker-build.yml","line":40,"fingerprint":"template-injection:.github/workflows/docker-build.yml:40"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/docker-build.yml","line":42,"fingerprint":"template-injection:.github/workflows/docker-build.yml:42"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":33,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:33"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":69,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:69"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":79,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:79"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":82,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:82"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":90,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:90"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/docker-build.yml","line":104,"fingerprint":"unpinned-uses:.github/workflows/docker-build.yml:104"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/js-tests.yml","line":24,"fingerprint":"unpinned-uses:.github/workflows/js-tests.yml:24"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/js-tests.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/js-tests.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/lint-python.yml","line":52,"fingerprint":"unpinned-uses:.github/workflows/lint-python.yml:52"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/lint-python.yml","line":55,"fingerprint":"unpinned-uses:.github/workflows/lint-python.yml:55"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pages.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/pages.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pages.yml","line":40,"fingerprint":"unpinned-uses:.github/workflows/pages.yml:40"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pages.yml","line":41,"fingerprint":"unpinned-uses:.github/workflows/pages.yml:41"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pages.yml","line":45,"fingerprint":"unpinned-uses:.github/workflows/pages.yml:45"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/python-tests.yml","line":44,"fingerprint":"unpinned-uses:.github/workflows/python-tests.yml:44"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/python-tests.yml","line":50,"fingerprint":"unpinned-uses:.github/workflows/python-tests.yml:50"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":29,"fingerprint":"template-injection:.github/workflows/release.yml:29"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":30,"fingerprint":"template-injection:.github/workflows/release.yml:30"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":31,"fingerprint":"template-injection:.github/workflows/release.yml:31"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/release.yml","line":32,"fingerprint":"template-injection:.github/workflows/release.yml:32"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/release.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":87,"fingerprint":"unpinned-uses:.github/workflows/release.yml:87"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/render-baseline.yml","line":61,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:61"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/render-baseline.yml","line":62,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:62"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/render-baseline.yml","line":64,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:64"},{"rule_id":"zizmor/template-injection","severity":"high","message":"code injection via template expansion [confidence high]","path":".github/workflows/render-baseline.yml","line":67,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:67"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/render-baseline.yml","line":40,"fingerprint":"unpinned-uses:.github/workflows/render-baseline.yml:40"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/render-baseline.yml","line":43,"fingerprint":"unpinned-uses:.github/workflows/render-baseline.yml:43"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/render-baseline.yml","line":107,"fingerprint":"unpinned-uses:.github/workflows/render-baseline.yml:107"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/render-baseline.yml","line":115,"fingerprint":"unpinned-uses:.github/workflows/render-baseline.yml:115"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/sync-remotion-skills.yml","line":24,"fingerprint":"unpinned-uses:.github/workflows/sync-remotion-skills.yml:24"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/sync-remotion-skills.yml","line":82,"fingerprint":"unpinned-uses:.github/workflows/sync-remotion-skills.yml:82"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":13,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:13"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/check-versions.yml","line":37,"fingerprint":"artipacked:.github/workflows/check-versions.yml:37"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/copy-lint.yml","line":18,"fingerprint":"artipacked:.github/workflows/copy-lint.yml:18"},{"rule_id":"zizmor/template-injection","severity":"medium","message":"code injection via template expansion [confidence medium]","path":".github/workflows/docker-build.yml","line":73,"fingerprint":"template-injection:.github/workflows/docker-build.yml:73"},{"rule_id":"zizmor/template-injection","severity":"medium","message":"code injection via template expansion [confidence medium]","path":".github/workflows/docker-build.yml","line":74,"fingerprint":"template-injection:.github/workflows/docker-build.yml:74"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/lint-python.yml","line":52,"fingerprint":"artipacked:.github/workflows/lint-python.yml:52"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/pages.yml","line":30,"fingerprint":"artipacked:.github/workflows/pages.yml:30"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/python-tests.yml","line":44,"fingerprint":"artipacked:.github/workflows/python-tests.yml:44"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/docker-build.yml","line":32,"fingerprint":"artipacked:.github/workflows/docker-build.yml:32"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/docker-build.yml","line":68,"fingerprint":"artipacked:.github/workflows/docker-build.yml:68"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/js-tests.yml","line":24,"fingerprint":"artipacked:.github/workflows/js-tests.yml:24"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":21,"fingerprint":"artipacked:.github/workflows/release.yml:21"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/render-baseline.yml","line":39,"fingerprint":"artipacked:.github/workflows/render-baseline.yml:39"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/sync-remotion-skills.yml","line":23,"fingerprint":"artipacked:.github/workflows/sync-remotion-skills.yml:23"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/release.yml","line":44,"fingerprint":"template-injection:.github/workflows/release.yml:44"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/release.yml","line":58,"fingerprint":"template-injection:.github/workflows/release.yml:58"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/release.yml","line":70,"fingerprint":"template-injection:.github/workflows/release.yml:70"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/release.yml","line":71,"fingerprint":"template-injection:.github/workflows/release.yml:71"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/release.yml","line":87,"fingerprint":"superfluous-actions:.github/workflows/release.yml:87"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":81,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:81"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":88,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:88"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":96,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:96"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":103,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:103"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":131,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:131"},{"rule_id":"zizmor/template-injection","severity":"info","message":"code injection via template expansion [confidence low]","path":".github/workflows/render-baseline.yml","line":131,"fingerprint":"template-injection:.github/workflows/render-baseline.yml:131"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":1.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.07,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"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":2155.0,"function_nloc":46498.0,"mean_ccn":4.82,"p90_ccn":11.0,"complex_functions":123.0,"long_functions":74.0,"many_param_functions":52.0,"risky_nloc_share":0.3547},"findings":[],"evidence":[{"kind":"complex-function","description":"main in tools/voiceover.py: complexity 122, 443 lines","ref":"tools/voiceover.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/voiceover.py#L1024","weight":1.0},{"kind":"complex-function","description":"normalize_spec in tools/video_job.py: complexity 115, 182 lines","ref":"tools/video_job.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/video_job.py#L729","weight":1.0},{"kind":"complex-function","description":"main in tools/dewatermark.py: complexity 91, 383 lines","ref":"tools/dewatermark.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/dewatermark.py#L1611","weight":1.0},{"kind":"complex-function","description":"main in tools/music_gen.py: complexity 78, 372 lines","ref":"tools/music_gen.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/music_gen.py#L1187","weight":1.0},{"kind":"complex-function","description":"_main in tools/video_job.py: complexity 71, 175 lines","ref":"tools/video_job.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/video_job.py#L2901","weight":1.0},{"kind":"complex-function","description":"main in tools/verify_setup.py: complexity 67, 117 lines","ref":"tools/verify_setup.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/verify_setup.py#L342","weight":1.0},{"kind":"complex-function","description":"main in tools/redub.py: complexity 65, 304 lines","ref":"tools/redub.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/redub.py#L624","weight":1.0},{"kind":"complex-function","description":"generate_audio in tools/qwen3_tts.py: complexity 63, 193 lines","ref":"tools/qwen3_tts.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/qwen3_tts.py#L141","weight":1.0},{"kind":"complex-function","description":"validate in lib/blender/compile.py: complexity 57, 69 lines","ref":"lib/blender/compile.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/lib/blender/compile.py#L52","weight":0.95},{"kind":"complex-function","description":"call_acemusic_api in tools/music_gen.py: complexity 57, 243 lines","ref":"tools/music_gen.py","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/tools/music_gen.py#L294","weight":0.95}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":56497.0,"duplicated_lines":13425.0,"duplicated_share":0.2376,"files":377.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:3 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:3","ref":".claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx#L3","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/example-Root.tsx:6 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx:6","ref":".claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/example-Root.tsx","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/example-Root.tsx#L6","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/flight-path.ts:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/flight-path.ts","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/flight-path.ts#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx:4 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx:4","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx#L4","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx:6 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx:6","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx#L6","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/example-Root.tsx:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/example-Root.tsx","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/example-Root.tsx#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/tokens.ts:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/tokens.ts","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/assets/tokens.ts#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: .claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:1 and .claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs:1","ref":".claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs","url":"https://github.com/digitalsamba/claude-code-video-toolkit/blob/9b0c90d421d2ab32ce8e7522494bddfe185f8aa4/.claude/skills/remotion-official/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs#L1","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":60.0,"weighted_findings":57.0,"scanned_lines":73421.0,"category:best-practice":34.0,"category:correctness":26.0},"findings":[{"rule_id":"opengrep/python.lang.correctness.return-in-init","severity":"high","message":"`return` should never appear inside a class __init__ function. This will cause a runtime error.","path":"lib/blender/timeline.py","line":55,"fingerprint":"python.lang.correctness.return-in-init:lib/blender/timeline.py:55"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/cloud_gpu.py","line":397,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/cloud_gpu.py:397"},{"rule_id":"opengrep/python.lang.correctness.tempfile.tempfile-without-flush","severity":"high","message":"Using 'f.name' without '.flush()' or '.close()' may cause an error because the file may not exist when 'f.name' is used. Use '.flush()' or close the file before using 'f.name'.","path":"tools/voiceover.py","line":992,"fingerprint":"python.lang.correctness.tempfile.tempfile-without-flush:tools/voiceover.py:992"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"docker/modal-ltx2/app.py","line":218,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:docker/modal-ltx2/app.py:218"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"docker/modal-ltx2/app.py","line":321,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:docker/modal-ltx2/app.py:321"},{"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":"docker/modal-sadtalker/app.py","line":313,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:docker/modal-sadtalker/app.py:313"},{"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":"docker/runpod-qwen-edit/download_models.py","line":57,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:docker/runpod-qwen-edit/download_models.py:57"},{"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":"docker/runpod-sadtalker/handler.py","line":299,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:docker/runpod-sadtalker/handler.py:299"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"lib/blender/cameras.py","line":304,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:lib/blender/cameras.py:304"},{"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":"lib/blender/sound.py","line":60,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:lib/blender/sound.py:60"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"lib/components/Captions.tsx","line":138,"fingerprint":"typescript.react.best-practice.react-props-in-state:lib/components/Captions.tsx:138"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"showcase/banner/src/Root.tsx","line":19,"fingerprint":"typescript.react.best-practice.react-props-spreading:showcase/banner/src/Root.tsx:19"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"showcase/banner/src/Root.tsx","line":24,"fingerprint":"typescript.react.best-practice.react-props-spreading:showcase/banner/src/Root.tsx:24"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"showcase/banner/src/Root.tsx","line":25,"fingerprint":"typescript.react.best-practice.react-props-spreading:showcase/banner/src/Root.tsx:25"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"showcase/banner/src/Root.tsx","line":26,"fingerprint":"typescript.react.best-practice.react-props-spreading:showcase/banner/src/Root.tsx:26"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"templates/ds-release-notes/src/Release.tsx","line":73,"fingerprint":"typescript.react.best-practice.react-props-spreading:templates/ds-release-notes/src/Release.tsx:73"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"templates/ds-release-notes/src/room/Room.tsx","line":106,"fingerprint":"typescript.react.best-practice.react-props-spreading:templates/ds-release-notes/src/room/Room.tsx:106"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"templates/product-demo/src/ProductDemo.tsx","line":125,"fingerprint":"typescript.react.best-practice.react-props-spreading:templates/product-demo/src/ProductDemo.tsx:125"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"templates/sprint-review-v2/src/SprintReview.tsx","line":34,"fingerprint":"typescript.react.best-practice.react-props-spreading:templates/sprint-review-v2/src/SprintReview.tsx:34"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"templates/sprint-review/src/SprintReview.tsx","line":31,"fingerprint":"typescript.react.best-practice.react-props-spreading:templates/sprint-review/src/SprintReview.tsx:31"},{"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":"tools/chain_video.py","line":152,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/chain_video.py:152"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/cloud_gpu.py","line":401,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/cloud_gpu.py:401"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/cloud_gpu.py","line":462,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/cloud_gpu.py:462"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/cloud_gpu.py","line":528,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/cloud_gpu.py:528"},{"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":"tools/config.py","line":28,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/config.py:28"},{"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":"tools/config.py","line":195,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/config.py:195"},{"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":"tools/config.py","line":215,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/config.py:215"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/copy_lint.py","line":33,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/copy_lint.py:33"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/copy_lint.py","line":41,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/copy_lint.py:41"},{"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":"tools/dewatermark.py","line":127,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/dewatermark.py:127"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/ideogram4.py","line":291,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/ideogram4.py:291"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/modal_setup.py","line":131,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/modal_setup.py:131"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/modal_setup.py","line":135,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/modal_setup.py:135"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/modal_setup.py","line":143,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/modal_setup.py:143"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/music_gen.py","line":479,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/music_gen.py:479"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/notebooklm_brand.py","line":259,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/notebooklm_brand.py:259"},{"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":"tools/notebooklm_brand.py","line":326,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/notebooklm_brand.py:326"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/qc.py","line":559,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/qc.py:559"},{"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":"tools/redub.py","line":766,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/redub.py:766"},{"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":"tools/redub.py","line":862,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/redub.py:862"},{"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":"tools/redub.py","line":880,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/redub.py:880"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/sixtydb_tts.py","line":118,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/sixtydb_tts.py:118"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/sixtydb_tts.py","line":281,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/sixtydb_tts.py:281"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"tools/sixtydb_tts.py","line":360,"fingerprint":"python.requests.best-practice.use-raise-for-status:tools/sixtydb_tts.py:360"},{"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":"tools/sync_timing.py","line":105,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/sync_timing.py:105"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/video_job.py","line":2845,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/video_job.py:2845"},{"rule_id":"opengrep/python.lang.correctness.common-mistakes.string-concat-in-list","severity":"medium","message":"Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list?","path":"tools/video_job.py","line":3072,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/video_job.py:3072"},{"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":"tools/voiceover.py","line":378,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/voiceover.py:378"},{"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":".claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","line":211,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:.claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:211"},{"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":".claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","line":211,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:.claude/skills/remotion-official/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:211"},{"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":".claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","line":211,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:.claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:211"},{"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":".claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx","line":211,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:.claude/skills/remotion-official/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx:211"},{"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":"lib/generate-brand-ts.ts","line":81,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:lib/generate-brand-ts.ts:81"},{"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":"lib/generate-brand-ts.ts","line":120,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:lib/generate-brand-ts.ts:120"},{"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":"playwright/scripts/flows/form-demo.ts","line":27,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/flows/form-demo.ts:27"},{"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":"playwright/scripts/flows/form-demo.ts","line":27,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/flows/form-demo.ts:27"},{"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":"playwright/scripts/record-demo.ts","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/record-demo.ts:73"},{"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":"playwright/scripts/record-demo.ts","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/record-demo.ts:73"},{"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":"playwright/scripts/record-interactive.ts","line":161,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/record-interactive.ts:161"},{"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":"playwright/scripts/record-interactive.ts","line":161,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:playwright/scripts/record-interactive.ts:161"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.1128,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":4142.0,"source_lines":73421.0,"test_ratio":0.0564,"ci_files":10.0,"cochange_share":0.2881,"cochange_commits":177.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/check-versions.yml","ref":".github/workflows/check-versions.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/copy-lint.yml","ref":".github/workflows/copy-lint.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/docker-build.yml","ref":".github/workflows/docker-build.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/js-tests.yml","ref":".github/workflows/js-tests.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/lint-python.yml","ref":".github/workflows/lint-python.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pages.yml","ref":".github/workflows/pages.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/python-tests.yml","ref":".github/workflows/python-tests.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/release.yml","ref":".github/workflows/release.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/render-baseline.yml","ref":".github/workflows/render-baseline.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/sync-remotion-skills.yml","ref":".github/workflows/sync-remotion-skills.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (unittest)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (ruff, tsc --noEmit)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["unittest"],"lint_commands":["ruff","tsc --noEmit"]},"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":342.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.4291,"check:low_escape_density":1.0,"escapes":71.0,"escapes_per_kloc":0.985},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: examples/blender-in-remotion/tsconfig.json","ref":"examples/blender-in-remotion/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":70869.0,"other_lines":2552.0,"files_blamed":377.0,"blame_failures":0.0,"quality:ai_findings":59.0,"quality:ai_per_kloc":0.833,"quality:other_findings":1.0,"quality:other_per_kloc":0.392,"quality:ratio":2.12,"security:ai_findings":108.0,"security:ai_per_kloc":1.524,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}