{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:01.639216Z","repo":{"ref":{"host":"github.com","owner":"Radioo","name":"573Renderer"},"default_branch":"master","clone_url":"https://github.com/Radioo/573Renderer.git","html_url":"https://github.com/Radioo/573Renderer","description":null,"stars":16,"forks":3,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":6127,"primary_language":"C++","license_spdx":null,"created_at":"2026-07-07T17:26:48Z","pushed_at":"2026-11-14T09:24:51Z","security_policy_url":null,"distribution":{"owner_created_at":"2014-11-03T15:38:49Z","owner_type":"User","release_assets":[{"name":"573Editor.zip","size":14644192,"download_count":2,"release_tag":"v1.3.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.3.0/573Editor.zip"},{"name":"573Renderer.zip","size":50753206,"download_count":2,"release_tag":"v1.3.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.3.0/573Renderer.zip"},{"name":"573Renderer.exe","size":55393280,"download_count":52,"release_tag":"v1.2.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer.exe"},{"name":"573Renderer.pdb","size":156815360,"download_count":8,"release_tag":"v1.2.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer.pdb"},{"name":"573Renderer32.exe","size":43959296,"download_count":7,"release_tag":"v1.2.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer32.exe"},{"name":"573Renderer32.pdb","size":159002624,"download_count":2,"release_tag":"v1.2.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer32.pdb"},{"name":"573Renderer.exe","size":53302784,"download_count":43,"release_tag":"v1.1.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.1.0/573Renderer.exe"},{"name":"573Renderer.pdb","size":139431936,"download_count":8,"release_tag":"v1.1.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.1.0/573Renderer.pdb"},{"name":"573Renderer32.exe","size":42142720,"download_count":6,"release_tag":"v1.1.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.1.0/573Renderer32.exe"},{"name":"573Renderer32.pdb","size":142479360,"download_count":3,"release_tag":"v1.1.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.1.0/573Renderer32.pdb"},{"name":"573Renderer.exe","size":52608000,"download_count":42,"release_tag":"v1.0.1","url":"https://github.com/Radioo/573Renderer/releases/download/v1.0.1/573Renderer.exe"},{"name":"573Renderer.pdb","size":133017600,"download_count":5,"release_tag":"v1.0.1","url":"https://github.com/Radioo/573Renderer/releases/download/v1.0.1/573Renderer.pdb"},{"name":"573Renderer.exe","size":52608000,"download_count":18,"release_tag":"v1.0.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.0.0/573Renderer.exe"},{"name":"573Renderer.pdb","size":133009408,"download_count":5,"release_tag":"v1.0.0","url":"https://github.com/Radioo/573Renderer/releases/download/v1.0.0/573Renderer.pdb"}]}},"commit_sha":"75f504c8835a59b27408940b51fe5814428b9eb1","profile":{"lines_by_language":{"C++":144508,"C":19726,"Python":2341,"Shell":65},"files_by_category":{"source":782,"test":265,"docs":211,"config":78,"other":63,"generated":3,"oversized":1},"source_lines":109469,"test_lines":57171},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.65,"coverage":1.0,"label":"possible","breakdown":{"attributed_share":0.0,"suspected_share":0.451,"estimated_share":0.0,"ai_artifacts":1.0,"flagged_work_units":27.0,"flagged_releases":0.0,"style_index":0.0},"summary":"Weak signals consistent with AI-assisted development. 1 commit(s) carry explicit AI attribution, too few to characterize the codebase."},"quality":{"score":81.6,"confidence":0.9,"coverage":1.0,"label":"strong","breakdown":{"complexity":76.1,"duplication":83.2,"lint":98.4,"testing":100.0,"docs":40.0,"type_safety":40.0,"process":null},"summary":"Code quality is strong: test-to-source ratio 0.52, CI runs tests; 9% of function code in complex or long functions; 3% duplicated lines. Weakest area: docs."},"security":{"score":70.4,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":96.4,"dependencies":95.1,"ci_actions":0.1,"posture":0.0,"scorecard":null},"summary":"Security posture is adequate: 1 known vulnerabilities in 1 dependencies; 12 high-severity SAST findings; 39 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":5.0,"checked":5.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":196.0,"attributed_commits":1.0,"attributed_commit_share":0.00510204081632653,"effective_loc":191568.0,"attributed_loc":2.0,"attributed_loc_share":0.00001044015701996158,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 1 attributed commits, 2 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: on merged branch (7d32ad52bc)","ref":"179339a18ea681bba514203184ea11d7f902d441","url":"https://github.com/Radioo/573Renderer/commit/179339a18ea681bba514203184ea11d7f902d441","weight":0.9}],"data":{"attributed_loc_by_commit":{"179339a18ea681bba514203184ea11d7f902d441":2},"tools":{"claude-code":{"name":"Claude Code","commits":1,"loc":2,"first_seen":1783492623,"last_seen":1783492623}},"monthly":{"2026-07":{"loc":29823,"attributed_loc":2},"2026-08":{"loc":75343,"attributed_loc":0},"2026-09":{"loc":85162,"attributed_loc":0},"2026-10":{"loc":1057,"attributed_loc":0},"2026-11":{"loc":183,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1783445360.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1783445360}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":67.0,"flagged_units":27.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":103107.0,"flagged_loc":86398.0,"flagged_loc_share":0.8379450473779666,"max_loc_per_hour":2804.471931493815,"median_loc_per_hour":483.4700576379116,"pr_timed_units":0.0,"excluded_import_loc":88461.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"3,275 lines of first-party code in ~1.2h (2,804 lines/hour, 1 commit session)","ref":"61d22b79b4b6ea4d542729b651424673476cbe67","url":"https://github.com/Radioo/573Renderer/commit/61d22b79b4b6ea4d542729b651424673476cbe67","weight":0.6},{"kind":"velocity-burst","description":"1,777 lines of first-party code in ~1.0h (1,699 lines/hour, 1 commit session)","ref":"804cea5112c2131820e209801aaeab479c7b7d67","url":"https://github.com/Radioo/573Renderer/commit/804cea5112c2131820e209801aaeab479c7b7d67","weight":0.5097370517928286},{"kind":"velocity-burst","description":"7,646 lines of first-party code in ~4.8h (1,577 lines/hour, 12 commit session)","ref":"c4d0bb7c2504c1092baa48edb3d36da599081f50","url":"https://github.com/Radioo/573Renderer/commit/c4d0bb7c2504c1092baa48edb3d36da599081f50","weight":0.473002634895177},{"kind":"velocity-burst","description":"2,483 lines of first-party code in ~1.6h (1,540 lines/hour, 2 commit session)","ref":"fde0379b773d08a961b131db6274dadcccfc1c31","url":"https://github.com/Radioo/573Renderer/commit/fde0379b773d08a961b131db6274dadcccfc1c31","weight":0.46187392352738554},{"kind":"velocity-burst","description":"3,561 lines of first-party code in ~2.3h (1,529 lines/hour, 3 commit session)","ref":"72d24c8adc5da5d2d568c4d7778dc24c36c7b74a","url":"https://github.com/Radioo/573Renderer/commit/72d24c8adc5da5d2d568c4d7778dc24c36c7b74a","weight":0.45882605583392977},{"kind":"velocity-burst","description":"2,351 lines of first-party code in ~1.5h (1,525 lines/hour, 1 commit session)","ref":"cda3fff90b2a9147fc8014f86cbbe8c0422a6048","url":"https://github.com/Radioo/573Renderer/commit/cda3fff90b2a9147fc8014f86cbbe8c0422a6048","weight":0.4574918918918918},{"kind":"velocity-burst","description":"2,928 lines of first-party code in ~2.2h (1,333 lines/hour, 1 commit session)","ref":"fc24565e759da3d73528f7b8abda2a7d480231b8","url":"https://github.com/Radioo/573Renderer/commit/fc24565e759da3d73528f7b8abda2a7d480231b8","weight":0.3998786039453717},{"kind":"velocity-burst","description":"3,821 lines of first-party code in ~3.2h (1,196 lines/hour, 9 commit session)","ref":"9cc74c2ef5357981293e96772b278b66bb49d081","url":"https://github.com/Radioo/573Renderer/commit/9cc74c2ef5357981293e96772b278b66bb49d081","weight":0.3588729454735194},{"kind":"velocity-burst","description":"2,183 lines of first-party code in ~2.2h (989 lines/hour, 4 commit session)","ref":"7d69a80cfeff851caa44fd28a9b6393ac37d4ea0","url":"https://github.com/Radioo/573Renderer/commit/7d69a80cfeff851caa44fd28a9b6393ac37d4ea0","weight":0.2967824773413897},{"kind":"velocity-burst","description":"1,893 lines of first-party code in ~1.9h (986 lines/hour, 4 commit session)","ref":"acaedd8c6d577c2c74a184a40250a5d6a87eba8f","url":"https://github.com/Radioo/573Renderer/commit/acaedd8c6d577c2c74a184a40250a5d6a87eba8f","weight":0.29573846376392304},{"kind":"velocity-burst","description":"3,837 lines of first-party code in ~4.0h (959 lines/hour, 1 commit session)","ref":"735eb6b09a2166df51f6708b1e572a3d62227eb3","url":"https://github.com/Radioo/573Renderer/commit/735eb6b09a2166df51f6708b1e572a3d62227eb3","weight":0.287775},{"kind":"velocity-burst","description":"2,194 lines of first-party code in ~2.3h (942 lines/hour, 6 commit session)","ref":"71aa63555e8733cc4548804631a2653b87b9677e","url":"https://github.com/Radioo/573Renderer/commit/71aa63555e8733cc4548804631a2653b87b9677e","weight":0.28259033989266547},{"kind":"velocity-burst","description":"3,621 lines of first-party code in ~4.0h (905 lines/hour, 1 commit session)","ref":"6d1a8b628d2849955e2362ddece63996f120f50c","url":"https://github.com/Radioo/573Renderer/commit/6d1a8b628d2849955e2362ddece63996f120f50c","weight":0.271575},{"kind":"velocity-burst","description":"3,501 lines of first-party code in ~4.0h (875 lines/hour, 1 commit session)","ref":"a514422d2e439ff1bcd69db057f2a4df9d088b14","url":"https://github.com/Radioo/573Renderer/commit/a514422d2e439ff1bcd69db057f2a4df9d088b14","weight":0.262575},{"kind":"velocity-burst","description":"2,818 lines of first-party code in ~3.4h (835 lines/hour, 3 commit session)","ref":"2be7a6b1266450f12678eea6adcd0af98c880edd","url":"https://github.com/Radioo/573Renderer/commit/2be7a6b1266450f12678eea6adcd0af98c880edd","weight":0.2505920131741457}],"data":{"flagged_loc_by_commit":{"8c8a394b482425921d526a80d966c3ba0bd22b5b":1146,"3447668b05650e2a15860aaa8073a53bde0c1e14":249,"215de1d097cfd44e63dca45a8fa2604286676981":575,"7d69a80cfeff851caa44fd28a9b6393ac37d4ea0":213,"2d50f16fe9c6b7ba38a27262bc4bdb08771151a8":1684,"2d45374ac5522461c6061681eb7104b0776e8eb3":2504,"3fbdd29e272149c2ca0e819e32af86af87c5e697":24,"fc24565e759da3d73528f7b8abda2a7d480231b8":2928,"4f447718a142eeb8443186b0a9c4a9f5cd35c685":1922,"abfd2efba0339b5320723d7b41bfc7677ea63aaf":997,"1c5774a4abb9ce10b1f68d399e5ee317de73ea30":127,"cda3fff90b2a9147fc8014f86cbbe8c0422a6048":2351,"71b74e6bedd9b1b351d537b0a0cc03d8a3f413eb":1052,"22c7a022d1da6e346fbed8e73f0fdfb02618a0b9":145,"34631f02b93c409545e4d1a56d5b0bcdbd0a98f4":578,"129823af30a6e8795cb8973bd04942461d1599bf":3072,"804cea5112c2131820e209801aaeab479c7b7d67":1777,"0da70f307b33b09880f30764cd4a92158813c72c":2423,"61d22b79b4b6ea4d542729b651424673476cbe67":3275,"735eb6b09a2166df51f6708b1e572a3d62227eb3":3837,"a514422d2e439ff1bcd69db057f2a4df9d088b14":3501,"6d1a8b628d2849955e2362ddece63996f120f50c":3621,"72e3f0eb2cf9d89ec0d228c60fca4a164db2c956":2892,"dbbc7041458cf138e8a638d06125c2296e924db9":1837,"76418e7651969b4cfb4fddd64c90eab52795c266":772,"72d24c8adc5da5d2d568c4d7778dc24c36c7b74a":952,"05397b1e3606c7e2531a84d6363a14a95648d11d":1319,"296cec316fc245fd047388045a9853e1e13001d2":506,"1dedffb3343d3335292408e427ca332b3d1583f2":798,"7bf845c35fe57280fb11815aa5a13ce410c09d42":371,"b698b8317e862995b126ba7865ac742871529ec8":345,"79811d6b25009c37dc7e2c7f8673070d0bd21629":1935,"fde0379b773d08a961b131db6274dadcccfc1c31":548,"b6ae423b6f41bb2c35d0750297127d5d8ed750ef":851,"a5c643c2a98fe0d8a30c17dfe6dd58051fc93778":1170,"3c068dcdc454addeec19fecbef55f5b86b075f03":1109,"053cbbf7a8e2c1074d64aa8879b323f29f075da9":538,"ae409bdb43452487cd0c43be22283469c26c10cb":706,"969042de8eb9b0eb7c3d15a21808e91737a51456":409,"6b61d099ce579489eacecdc4b7ba4d17f2cfee86":178,"0d6ee2bc87980e8cb2dc09211daee3584a17bfde":574,"bf2a55499d2b8150336c19f924d24236b34aed3d":404,"59c8e529273b7a1d26f16b95fd3785dca805c10e":279,"84bad8862e7e42f2f7cac89630670e3fb23366ce":623,"c4d0bb7c2504c1092baa48edb3d36da599081f50":805,"fb0e65c4f1189cd2767267acdf92a0fdba46a09d":241,"7e880276768634f4fae071ec849d51e5da6719e5":740,"502b009b7d80a892108dd3f336b999cec063e4d0":624,"acaedd8c6d577c2c74a184a40250a5d6a87eba8f":288,"489592f1193e4e5da4178bf2c82dbd463fb43adc":904,"7a688fed92544dd040f8c00d91def8f250e3a391":66,"1373099e912938f2ce8c239c5a44a5b271352f3d":203,"6c5904ab9da62159f97741ebed19e1d5ddd4960f":533,"bb0d55d13c18b8a1cdff893ce7677a8bffb29865":275,"71aa63555e8733cc4548804631a2653b87b9677e":213,"9c7d5b72a17aa3e9a6b9627baf962511bf11135c":746,"09cf559c67be0bb6d85a9d2c33fedbcfae08feaf":768,"3ec1d33a7990faf7c65f3ecc3646f37a2630bc25":413,"2e2fb24acc996343dc2e863677a08235dc721925":572,"85029d65257d08e5a7aa473202405d1efd59cfd2":574,"c12d900e226a88790d83f7ca94537f55efbad0cc":162,"b5f1d74fb36ab9eec4925254d825dd5a257f70cb":194,"b91b142c853100559e9a93639806dbd2af560a10":205,"9cc74c2ef5357981293e96772b278b66bb49d081":187,"05e007047ad6e271b2e804449ad3806ec6376009":411,"e354890c2feb384093baf0e6c120de68cbb72b04":745,"e279cc274e7ccf9a74cd5b87c3cce22ac8686857":322,"f88ae55d76d6ef773ea8fdeef14b1c01e9ed0ad2":792,"1d5650a79f96fa6fc0b18602e815a868a7990b3c":488,"53d09d49b5245a8b98e83220d0992aa9ee773d2d":254,"5aebb0fbd7fd34272558f25c32fd375b0c802c6a":145,"815fd8813b92982f9ca9eb92305f6e20ceb7c5ac":246,"e7c599515664bcd8bf35c77934922bb78b92d622":116,"57265340f1704ffb003c7e3690326b8cd57519ce":287,"f0fe0c37fa6b2d3bce104a802dd424712b9582be":170,"9f9781d3356ab2f3f6937e1c11e66bee0133bc80":224,"56a9bdc621bbaee9c6a70801616f168c697544b4":247,"cffc1370481bff7b857e0b4d1accea38475853b9":445,"f7652310fa57cf52dba1a98965e5b9dc131d9dfc":168,"c1c1fd82c08d69098f938bcb94fda347625ec956":125,"0265b25fde4072e1240a6eb1eb7e03f9d0ca2ad9":105,"ddc29af32bf76f5d3b2c860b52b4cdba1d250710":223,"7d1812a8b5e17a5a72b22678903b9d6921df7843":327,"3e549f724d353f14b2bb87a337a8a1d5f0cb01c1":370,"cba40b51b5f82a15e60634095c835a408c869e7f":118,"6a1557b61505698257a8fcf14ed6a95c84eb51f6":157,"c1170c01be750f9411974b4b698c7d488f95ed09":481,"f20eb9ec444e7074e9ada8bb6dd8670e7d295f0a":377,"1818fb5ca005c73250d806dcc43734eb93067d7f":416,"15f6ea78d1271d3b8c72892c60d58352958ab808":291,"75133b568886e07e40ed006ba260e270fbaac01c":359,"e3685224e62e189ec92b89d737b9f9148f21ca5a":444,"9b0019f9f3d47b1ee4587f97a90af04236286189":482,"07400a5d015b638cf5ca6ef657d2d1131f3ea5fb":281,"f699eeeabd035f2016ee425f2f540b9fa00aeae6":239,"b07e9481913a96fc85b989f1fd8b1971919924c0":258,"faa07a6cce24b4a6e607666079642d8ce3041afe":155,"c1281860a49eb120252fca4248ad74df99e8c056":529,"9e1603938a7e8df369726153e1bec74eb4921270":176,"13368d3bb306dd1b086df4dc0d300285600dc0a3":164,"07477e7dd9bbe14e1f41f83ec28ee7e390b4fb60":130,"2784d30d7094b485fe1efdab16fd407fa3f3bbc6":107,"f21b6eaba9fcaf37dee6406ee0e9b70fc72a6f66":344,"b48701f305da096a86eb8ba3d9c9f100eb33795f":85,"84454b7bed0a79fa17656f10fa0a9d8816778a0a":143,"786b5e2c3649ac08a60e5dfa2d030025f4bc627b":441,"872f12683eb62df6f861775fed77e63bc6325190":239,"8aaf16f5bb6b5a80350cdcbc3a311e3fc1f27131":247,"2616824e92d6190b1ce27239bb18663a1b1ff360":175,"e2e3496e5de23b51210117000a4ae0ccc6dfd2a4":531,"2ded326e165b3bb6efdac0b5da79170c1c93fc21":195,"61f13d2dfe9d57d70e0277ed14e56f3848dfc7f2":423,"eb9b729303634b1b3e6a19da47dbc72da616eca4":323,"a3cd7193b42a8115f83ecc4d54d343edf9db21af":378,"daf7405a1f64d392d79216089c26057a0e88ec44":377,"1d584c44cd991dc055ff5d14bf94f3befb14a0ee":2191,"cd5360f3075a27d6578ff7bffce29d511711df10":378,"2be7a6b1266450f12678eea6adcd0af98c880edd":249,"f3350a83ae63755c09525b8950080eb5ebf097fd":2475},"excluded_import_commits":["386d1499ac45155b8353b7d62d81cadc85025d67","477527a3655e6f2632375e9775cd7e0f6b13f0fa","54e1e3932a0a332766a24034196a1c58451edb7d","5e1d55ee3cbb586b0d0f42cf3e8dad59fb8c2810","6132cb618753dc8f704c6cfb995715871d684f52","633a13e29e21275a3b9402c4ce1e129b4766a6aa","7d1808ae9b40b91b25ec7607e046ba1e73458fbd","d2d90995dce8ded33cf52c7e9fceb1e5d3d4ec2b","df08efb2c7a114e1148962f3b3e242e1edfc4cb6","ea41a3e78c9f9e9d37f7f9e919ad3396ac3c8885"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":4.0,"flagged_releases":0.0,"max_loc_per_day":933.3},"findings":[],"evidence":[],"data":{"releases":[{"from":"v1.0.0","to":"v1.0.1","loc":171,"days":0.6,"loc_per_day":285.2,"flagged":false},{"from":"v1.0.1","to":"v1.1.0","loc":20350,"days":33.4,"loc_per_day":609.3,"flagged":false},{"from":"v1.1.0","to":"v1.2.0","loc":26754,"days":35.75,"loc_per_day":748.4,"flagged":false},{"from":"v1.2.0","to":"v1.3.0","loc":55832,"days":59.82,"loc_per_day":933.3,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":109469.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":13.0,"findings_high":12.0,"findings_medium":1.0,"findings_low":0.0,"weighted_findings":11.35,"scanned_lines":109469.0,"parse_errors":22.0},"findings":[{"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/ci/check_editor_starts.py","line":17,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/check_editor_starts.py:17"},{"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/ci/preset_dump.py","line":41,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/preset_dump.py:41"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_output' 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/ci/run_format.py","line":32,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/run_format.py:32"},{"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/ci/run_format.py","line":50,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/run_format.py:50"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_output' 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/ci/run_tidy.py","line":31,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/run_tidy.py:31"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'check_output' 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/ci/run_tidy.py","line":90,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/run_tidy.py:90"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args","severity":"high","message":"Detected subprocess function 'check_output' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium]","path":"tools/ci/run_tidy.py","line":90,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-tainted-env-args:tools/ci/run_tidy.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":"tools/ci/run_tidy.py","line":171,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/ci/run_tidy.py:171"},{"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/ci/run_tidy.py","line":171,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-tainted-env-args:tools/ci/run_tidy.py:171"},{"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/local/preset_sweep.py","line":49,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/local/preset_sweep.py:49"},{"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/local/render_regression.py","line":33,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/local/render_regression.py:33"},{"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/render_regress/regress.py","line":91,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/render_regress/regress.py:91"},{"rule_id":"opengrep/c.lang.security.insecure-use-memset","severity":"medium","message":"When handling sensitive information in a buffer, it's important to ensure  that the data is securely erased before the buffer is deleted or reused.  While `memset()` is commonly used for this purpose, it can leave sensitive  information behind due to compiler optimizations or other factors.  To avoi [confidence low]","path":"src/backend/afp_render_context.h","line":13,"fingerprint":"c.lang.security.insecure-use-memset:src/backend/afp_render_context.h:13"}],"evidence":[],"data":{"rulesets":["c","python","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":1.0,"vulnerabilities":1.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":1.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":3.0},"findings":[{"rule_id":"osv/GHSA-6w46-j5rx-g56g","severity":"medium","message":"pytest@8.4.2 (PyPI) is affected by PYSEC-2026-1845, GHSA-6w46-j5rx-g56g","path":"tools/ci/uv.lock","line":null,"fingerprint":"pytest@8.4.2 (PyPI):GHSA-6w46-j5rx-g56g"}],"evidence":[],"data":{"ecosystems":["PyPI"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":2.0,"findings":45.0,"findings_high":39.0,"findings_medium":0.0,"findings_low":6.0,"penalty":393.9},"findings":[{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/build-renderer.yml","line":16,"fingerprint":"excessive-permissions:.github/workflows/build-renderer.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":56,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:56"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":69,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:69"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":75,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:75"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":92,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:92"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":111,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:111"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":167,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:167"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":176,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:176"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":187,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:187"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":193,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:193"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":204,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:204"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":224,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:224"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":236,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:236"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":242,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:242"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":252,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:252"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":277,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:277"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":284,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:284"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":296,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:296"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":315,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:315"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":327,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:327"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":333,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:333"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":343,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:343"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":374,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:374"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":377,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:377"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":383,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:383"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":389,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:389"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":395,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:395"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/build-renderer.yml","line":404,"fingerprint":"unpinned-uses:.github/workflows/build-renderer.yml:404"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":75,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:75"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":92,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:92"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":111,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:111"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":242,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:242"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":252,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:252"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":284,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:284"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":333,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:333"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":343,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:343"},{"rule_id":"zizmor/cache-poisoning","severity":"high","message":"runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low]","path":".github/workflows/build-renderer.yml","line":395,"fingerprint":"cache-poisoning:.github/workflows/build-renderer.yml:395"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/quality-gates.yml","line":23,"fingerprint":"unpinned-uses:.github/workflows/quality-gates.yml:23"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/quality-gates.yml","line":26,"fingerprint":"unpinned-uses:.github/workflows/quality-gates.yml:26"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build-renderer.yml","line":55,"fingerprint":"artipacked:.github/workflows/build-renderer.yml:55"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build-renderer.yml","line":223,"fingerprint":"artipacked:.github/workflows/build-renderer.yml:223"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build-renderer.yml","line":314,"fingerprint":"artipacked:.github/workflows/build-renderer.yml:314"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/build-renderer.yml","line":373,"fingerprint":"artipacked:.github/workflows/build-renderer.yml:373"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/quality-gates.yml","line":22,"fingerprint":"artipacked:.github/workflows/quality-gates.yml:22"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/build-renderer.yml","line":404,"fingerprint":"superfluous-actions:.github/workflows/build-renderer.yml:404"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":8.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v1.3.0 ships 573Editor.zip (2 downloads)","ref":"573Editor.zip","url":"https://github.com/Radioo/573Renderer/releases/download/v1.3.0/573Editor.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v1.3.0 ships 573Renderer.zip (2 downloads)","ref":"573Renderer.zip","url":"https://github.com/Radioo/573Renderer/releases/download/v1.3.0/573Renderer.zip","weight":0.0},{"kind":"binary-release-asset","description":"release v1.2.0 ships 573Renderer.exe (52 downloads)","ref":"573Renderer.exe","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v1.2.0 ships 573Renderer32.exe (7 downloads)","ref":"573Renderer32.exe","url":"https://github.com/Radioo/573Renderer/releases/download/v1.2.0/573Renderer32.exe","weight":0.0},{"kind":"binary-release-asset","description":"release v1.1.0 ships 573Renderer.exe (43 downloads)","ref":"573Renderer.exe","url":"https://github.com/Radioo/573Renderer/releases/download/v1.1.0/573Renderer.exe","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":5151.0,"function_nloc":69960.0,"mean_ccn":4.11,"p90_ccn":9.0,"complex_functions":63.0,"long_functions":19.0,"many_param_functions":27.0,"risky_nloc_share":0.0911},"findings":[],"evidence":[{"kind":"complex-function","description":"Editor::Window::ShowTimelineMenu in editor/src/editor_timeline_menu.cpp: complexity 74, 184 lines","ref":"editor/src/editor_timeline_menu.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_timeline_menu.cpp#L96","weight":1.0},{"kind":"complex-function","description":"main in editor/src/editor_shot_main.cpp: complexity 73, 214 lines","ref":"editor/src/editor_shot_main.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_shot_main.cpp#L57","weight":1.0},{"kind":"complex-function","description":"Editor::Window::ShowKeyMenu in editor/src/editor_keys.cpp: complexity 47, 136 lines","ref":"editor/src/editor_keys.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_keys.cpp#L330","weight":0.7833333333333333},{"kind":"complex-function","description":"Editor::Icons::Named in editor/src/editor_icons.cpp: complexity 39, 81 lines","ref":"editor/src/editor_icons.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_icons.cpp#L13","weight":0.65},{"kind":"complex-function","description":"AfpScript::PushOperandSize in src/formats/afp_script.cpp: complexity 36, 47 lines","ref":"src/formats/afp_script.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/formats/afp_script.cpp#L21","weight":0.6},{"kind":"complex-function","description":"Editor::Window::ShowPackageMenu in editor/src/editor_window.cpp: complexity 32, 87 lines","ref":"editor/src/editor_window.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_window.cpp#L718","weight":0.5333333333333333},{"kind":"complex-function","description":"Loop::CliAutopilot::Tick in src/loop/cli_autopilot.cpp: complexity 32, 44 lines","ref":"src/loop/cli_autopilot.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/loop/cli_autopilot.cpp#L8","weight":0.5333333333333333},{"kind":"complex-function","description":"Preset::Doc::ReadParam in src/preset/doc/preset_json.cpp: complexity 27, 54 lines","ref":"src/preset/doc/preset_json.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/preset/doc/preset_json.cpp#L238","weight":0.45},{"kind":"complex-function","description":"main in tools/local/render_regression.py: complexity 27, 77 lines","ref":"tools/local/render_regression.py","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/tools/local/render_regression.py#L98","weight":0.45},{"kind":"complex-function","description":"Editor::ScriptLexer::StylesOf in editor/src/editor_script_lexer.cpp: complexity 26, 56 lines","ref":"editor/src/editor_script_lexer.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_script_lexer.cpp#L147","weight":0.43333333333333335}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":75986.0,"duplicated_lines":2325.0,"duplicated_share":0.0306,"files":782.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: editor/src/editor_depth_menu.cpp:88 and editor/src/editor_depth_menu.cpp:106","ref":"editor/src/editor_depth_menu.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_depth_menu.cpp#L88","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: editor/src/editor_ease_editor.h:31 and editor/src/editor_graph.h:43","ref":"editor/src/editor_ease_editor.h","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_ease_editor.h#L31","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: editor/src/editor_project.cpp:86 and editor/src/editor_project.cpp:118","ref":"editor/src/editor_project.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_project.cpp#L86","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: editor/src/editor_selection_bar.cpp:87 and editor/src/editor_timeline_bar.cpp:74","ref":"editor/src/editor_selection_bar.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/editor/src/editor_selection_bar.cpp#L87","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/afp_anim.cpp:424 and src/afp_anim.cpp:453","ref":"src/afp_anim.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/afp_anim.cpp#L424","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/arc_extract.cpp:131 and src/customize_extract.cpp:238","ref":"src/arc_extract.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/arc_extract.cpp#L131","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/arc_extract.h:14 and src/customize_extract.h:17","ref":"src/arc_extract.h","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/arc_extract.h#L14","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/backend/afp_profiles.cpp:9 and src/backend/afp_profiles.cpp:30","ref":"src/backend/afp_profiles.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/backend/afp_profiles.cpp#L9","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/document/anchor_edit.cpp:42 and src/document/span_split.cpp:53","ref":"src/document/anchor_edit.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/document/anchor_edit.cpp#L42","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/document/animation_entries.cpp:416 and src/document/animation_entries.cpp:458","ref":"src/document/animation_entries.cpp","url":"https://github.com/Radioo/573Renderer/blob/75f504c8835a59b27408940b51fe5814428b9eb1/src/document/animation_entries.cpp#L416","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":5.0,"weighted_findings":7.0,"scanned_lines":109469.0,"category:best-practice":1.0,"category:correctness":4.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/ci/check_editor_starts.py","line":24,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/ci/check_editor_starts.py:24"},{"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/ci/check_preset_layers.py","line":48,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/ci/check_preset_layers.py:48"},{"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/ci/check_preset_layers.py","line":54,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/ci/check_preset_layers.py:54"},{"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/ci/check_preset_states.py","line":59,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/ci/check_preset_states.py:59"},{"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/ci/check_preset_states.py","line":65,"fingerprint":"python.lang.correctness.common-mistakes.string-concat-in-list:tools/ci/check_preset_states.py:65"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":1.0,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":57171.0,"source_lines":109469.0,"test_ratio":0.5223,"ci_files":2.0,"cochange_share":0.9061,"cochange_commits":181.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/build-renderer.yml","ref":".github/workflows/build-renderer.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/quality-gates.yml","ref":".github/workflows/quality-gates.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (pytest, ctest)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (ruff)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["pytest","ctest"],"lint_commands":["ruff"]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":80.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":0.0,"other_lines":109469.0,"files_blamed":782.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:other_findings":5.0,"quality:other_per_kloc":0.046,"security:ai_findings":0.0,"security:other_findings":13.0,"security:other_per_kloc":0.119},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}