{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:07.340163Z","repo":{"ref":{"host":"github.com","owner":"rnd-ash","name":"ultimate-nag52-fw"},"default_branch":"dev","clone_url":"https://github.com/rnd-ash/ultimate-nag52-fw.git","html_url":"https://github.com/rnd-ash/ultimate-nag52-fw","description":"Ultimate NAG52 firmware repository","stars":115,"forks":34,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":7485,"primary_language":"C++","license_spdx":"GPL-3.0","created_at":"2021-09-08T07:56:33Z","pushed_at":"2026-11-13T06:27:19Z","security_policy_url":null,"distribution":{"owner_created_at":"2015-09-21T11:31:26Z","owner_type":"User","release_assets":[{"name":"firmware.bin","size":437600,"download_count":6,"release_tag":"dev-ed602818dc08ea6db667e70d1f491a091a13befa","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-ed602818dc08ea6db667e70d1f491a091a13befa/firmware.bin"},{"name":"firmware.elf","size":7348220,"download_count":3,"release_tag":"dev-ed602818dc08ea6db667e70d1f491a091a13befa","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-ed602818dc08ea6db667e70d1f491a091a13befa/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-ed602818dc08ea6db667e70d1f491a091a13befa","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-ed602818dc08ea6db667e70d1f491a091a13befa/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-ed602818dc08ea6db667e70d1f491a091a13befa","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-ed602818dc08ea6db667e70d1f491a091a13befa/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437360,"download_count":4,"release_tag":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a/firmware.bin"},{"name":"firmware.elf","size":7345164,"download_count":3,"release_tag":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437360,"download_count":6,"release_tag":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28/firmware.bin"},{"name":"firmware.elf","size":7345140,"download_count":1,"release_tag":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437376,"download_count":3,"release_tag":"dev-85147c045ea878fe585ae91139c3dea1f477f268","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-85147c045ea878fe585ae91139c3dea1f477f268/firmware.bin"},{"name":"firmware.elf","size":7345212,"download_count":1,"release_tag":"dev-85147c045ea878fe585ae91139c3dea1f477f268","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-85147c045ea878fe585ae91139c3dea1f477f268/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-85147c045ea878fe585ae91139c3dea1f477f268","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-85147c045ea878fe585ae91139c3dea1f477f268/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-85147c045ea878fe585ae91139c3dea1f477f268","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-85147c045ea878fe585ae91139c3dea1f477f268/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437392,"download_count":3,"release_tag":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-f439cbc85459ff3a257a12b2804566faed2c3e5a/firmware.bin"},{"name":"firmware.elf","size":7345192,"download_count":2,"release_tag":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-f439cbc85459ff3a257a12b2804566faed2c3e5a/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-f439cbc85459ff3a257a12b2804566faed2c3e5a/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":1,"release_tag":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-f439cbc85459ff3a257a12b2804566faed2c3e5a/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437376,"download_count":3,"release_tag":"dev-3cc559a892a90419f0d97e373893c594e2a34740","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3cc559a892a90419f0d97e373893c594e2a34740/firmware.bin"},{"name":"firmware.elf","size":7345144,"download_count":2,"release_tag":"dev-3cc559a892a90419f0d97e373893c594e2a34740","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3cc559a892a90419f0d97e373893c594e2a34740/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-3cc559a892a90419f0d97e373893c594e2a34740","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3cc559a892a90419f0d97e373893c594e2a34740/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-3cc559a892a90419f0d97e373893c594e2a34740","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3cc559a892a90419f0d97e373893c594e2a34740/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437280,"download_count":3,"release_tag":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457/firmware.bin"},{"name":"firmware.elf","size":7344680,"download_count":3,"release_tag":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437328,"download_count":4,"release_tag":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4/firmware.bin"},{"name":"firmware.elf","size":7344632,"download_count":2,"release_tag":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437424,"download_count":3,"release_tag":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-4cd6b50a1db37375a2b05d498348fd82652ebba6/firmware.bin"},{"name":"firmware.elf","size":7343732,"download_count":2,"release_tag":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-4cd6b50a1db37375a2b05d498348fd82652ebba6/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":0,"release_tag":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-4cd6b50a1db37375a2b05d498348fd82652ebba6/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-4cd6b50a1db37375a2b05d498348fd82652ebba6/MODULE_SETTINGS.yml"},{"name":"firmware.bin","size":437424,"download_count":2,"release_tag":"dev-3b72fbb873340a305922466c7020433296407d75","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3b72fbb873340a305922466c7020433296407d75/firmware.bin"},{"name":"firmware.elf","size":7343732,"download_count":2,"release_tag":"dev-3b72fbb873340a305922466c7020433296407d75","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3b72fbb873340a305922466c7020433296407d75/firmware.elf"},{"name":"MODULE_SETTINGS.md","size":15352,"download_count":1,"release_tag":"dev-3b72fbb873340a305922466c7020433296407d75","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3b72fbb873340a305922466c7020433296407d75/MODULE_SETTINGS.md"},{"name":"MODULE_SETTINGS.yml","size":27153,"download_count":0,"release_tag":"dev-3b72fbb873340a305922466c7020433296407d75","url":"https://github.com/rnd-ash/ultimate-nag52-fw/releases/download/dev-3b72fbb873340a305922466c7020433296407d75/MODULE_SETTINGS.yml"}]}},"commit_sha":"ed602818dc08ea6db667e70d1f491a091a13befa","profile":{"lines_by_language":{"C":18685,"C++":17623,"Python":1322,"Shell":8},"files_by_category":{"source":178,"docs":21,"config":11,"other":4,"test":2},"source_lines":37520,"test_lines":118},"pillars":{"ai_provenance":{"score":0.0,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0004,"suspected_share":0.1454,"estimated_share":0.0004,"ai_artifacts":1.0,"flagged_work_units":2.0,"flagged_releases":0.0,"style_index":0.053},"summary":"Explicit AI attribution on 0% of first-party code added; an estimated 0% including velocity signals."},"quality":{"score":51.4,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":45.4,"duplication":45.3,"lint":73.6,"testing":35.4,"docs":85.0,"type_safety":40.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.00, no CI test run detected; 26% of function code in complex or long functions; 13% duplicated lines. Weakest area: testing."},"security":{"score":61.7,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":93.6,"sast":97.9,"dependencies":null,"ci_actions":1.3,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 3 high-severity SAST findings; 19 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":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no registry dependencies declared"},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":1842.0,"attributed_commits":4.0,"attributed_commit_share":0.002171552660152009,"effective_loc":122619.0,"attributed_loc":47.0,"attributed_loc_share":0.00038330111972859017,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 4 attributed commits, 47 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ca36791f1742c5ce6aa8d5dba146bdcdd1800595","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/ca36791f1742c5ce6aa8d5dba146bdcdd1800595","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4e9208cfcd4ab36eebe2a1e7158c640c5300a95d","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/4e9208cfcd4ab36eebe2a1e7158c640c5300a95d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9319a83794f90ae1633ab352bdc67fd69056a0d1","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/9319a83794f90ae1633ab352bdc67fd69056a0d1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"55d4ecca4bb9257945f4ea2aeba37aaad618a981","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/55d4ecca4bb9257945f4ea2aeba37aaad618a981","weight":0.9}],"data":{"attributed_loc_by_commit":{"55d4ecca4bb9257945f4ea2aeba37aaad618a981":5,"9319a83794f90ae1633ab352bdc67fd69056a0d1":5,"4e9208cfcd4ab36eebe2a1e7158c640c5300a95d":18,"ca36791f1742c5ce6aa8d5dba146bdcdd1800595":19},"tools":{"claude-code":{"name":"Claude Code","commits":4,"loc":47,"first_seen":1788870507,"last_seen":1788870599}},"monthly":{"2021-09":{"loc":7579,"attributed_loc":0},"2021-10":{"loc":33124,"attributed_loc":0},"2021-11":{"loc":1286,"attributed_loc":0},"2021-12":{"loc":2299,"attributed_loc":0},"2022-01":{"loc":2525,"attributed_loc":0},"2022-02":{"loc":1738,"attributed_loc":0},"2022-03":{"loc":739,"attributed_loc":0},"2022-04":{"loc":1486,"attributed_loc":0},"2022-05":{"loc":1318,"attributed_loc":0},"2022-06":{"loc":2009,"attributed_loc":0},"2022-07":{"loc":1817,"attributed_loc":0},"2022-08":{"loc":3477,"attributed_loc":0},"2022-09":{"loc":2020,"attributed_loc":0},"2022-10":{"loc":564,"attributed_loc":0},"2022-11":{"loc":3034,"attributed_loc":0},"2022-12":{"loc":4693,"attributed_loc":0},"2023-01":{"loc":2245,"attributed_loc":0},"2023-02":{"loc":1282,"attributed_loc":0},"2023-03":{"loc":6103,"attributed_loc":0},"2023-04":{"loc":1954,"attributed_loc":0},"2023-05":{"loc":1083,"attributed_loc":0},"2023-06":{"loc":1899,"attributed_loc":0},"2023-07":{"loc":1800,"attributed_loc":0},"2023-08":{"loc":2849,"attributed_loc":0},"2023-09":{"loc":3482,"attributed_loc":0},"2023-10":{"loc":1877,"attributed_loc":0},"2023-11":{"loc":1084,"attributed_loc":0},"2023-12":{"loc":527,"attributed_loc":0},"2024-01":{"loc":526,"attributed_loc":0},"2024-02":{"loc":409,"attributed_loc":0},"2024-03":{"loc":2145,"attributed_loc":0},"2024-04":{"loc":565,"attributed_loc":0},"2024-05":{"loc":222,"attributed_loc":0},"2024-06":{"loc":1169,"attributed_loc":0},"2024-07":{"loc":963,"attributed_loc":0},"2024-08":{"loc":395,"attributed_loc":0},"2024-09":{"loc":1615,"attributed_loc":0},"2024-10":{"loc":745,"attributed_loc":0},"2024-11":{"loc":664,"attributed_loc":0},"2024-12":{"loc":104,"attributed_loc":0},"2025-01":{"loc":71,"attributed_loc":0},"2025-03":{"loc":189,"attributed_loc":0},"2025-04":{"loc":730,"attributed_loc":0},"2025-05":{"loc":1268,"attributed_loc":0},"2025-06":{"loc":195,"attributed_loc":0},"2025-07":{"loc":268,"attributed_loc":0},"2025-08":{"loc":160,"attributed_loc":0},"2025-09":{"loc":1350,"attributed_loc":0},"2025-10":{"loc":751,"attributed_loc":0},"2025-11":{"loc":677,"attributed_loc":0},"2025-12":{"loc":257,"attributed_loc":0},"2026-01":{"loc":981,"attributed_loc":0},"2026-02":{"loc":1288,"attributed_loc":0},"2026-03":{"loc":1152,"attributed_loc":0},"2026-04":{"loc":2560,"attributed_loc":0},"2026-05":{"loc":662,"attributed_loc":0},"2026-06":{"loc":821,"attributed_loc":0},"2026-07":{"loc":341,"attributed_loc":0},"2026-08":{"loc":731,"attributed_loc":0},"2026-09":{"loc":444,"attributed_loc":47},"2026-10":{"loc":2041,"attributed_loc":0},"2026-11":{"loc":267,"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":1793013791.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/AGENTS.md","weight":0.5}],"data":{"artifacts":[{"tool":"generic-agent","path":"AGENTS.md","added_at":1793013791}],"workflows":[],"tools":["generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":871.0,"flagged_units":2.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":103560.0,"flagged_loc":17829.0,"flagged_loc_share":0.17216106604866743,"max_loc_per_hour":2974.3244153918727,"median_loc_per_hour":55.0,"pr_timed_units":1.0,"excluded_import_loc":19059.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"12,260 lines of first-party code in ~4.1h (2,974 lines/hour, 2 commit session)","ref":"34877d27e0b6de1e60d95496f17e04e62e3b571d","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/34877d27e0b6de1e60d95496f17e04e62e3b571d","weight":0.6},{"kind":"velocity-burst","description":"5,569 lines of first-party code in ~3.1h (1,770 lines/hour, 1 commit session)","ref":"de37a33c829d21fc8c0510df6507e534ed3e1d8c","url":"https://github.com/rnd-ash/ultimate-nag52-fw/commit/de37a33c829d21fc8c0510df6507e534ed3e1d8c","weight":0.5311303426351113}],"data":{"flagged_loc_by_commit":{"5ff82279c75a04ce17db1afd86c19a2060a63fa2":12096,"34877d27e0b6de1e60d95496f17e04e62e3b571d":164,"de37a33c829d21fc8c0510df6507e534ed3e1d8c":5569},"excluded_import_commits":["a80b39e5268218a739991fc44476a76f7a3a5f8f","dc9a512625923e2330cf26b356ba0b6a61f2303e"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":99.0,"flagged_releases":0.0,"max_loc_per_day":4728.0},"findings":[],"evidence":[],"data":{"releases":[{"from":"dev-24095929a2ecdf581c3cb76e039fa822614a446e","to":"dev-071c116427266857d1cda24b88332e58ee7b66f6","loc":154,"days":8.38,"loc_per_day":18.4,"flagged":false},{"from":"dev-071c116427266857d1cda24b88332e58ee7b66f6","to":"dev-fdcf4489936a39d36f91e0c97e039addae59f9fd","loc":239,"days":2.97,"loc_per_day":80.5,"flagged":false},{"from":"dev-fdcf4489936a39d36f91e0c97e039addae59f9fd","to":"dev-6f2ab886fcc9779b40172ec4bee70b4489791ff8","loc":197,"days":0.04,"loc_per_day":4728.0,"flagged":false},{"from":"dev-6f2ab886fcc9779b40172ec4bee70b4489791ff8","to":"dev-586cc5fc5c1702ea30603ec999072a26f2eab9a6","loc":7,"days":0.18,"loc_per_day":39.9,"flagged":false},{"from":"dev-586cc5fc5c1702ea30603ec999072a26f2eab9a6","to":"dev-a3a0171ad7b9df471788331dc3f547b4912638e3","loc":9,"days":1.55,"loc_per_day":5.8,"flagged":false},{"from":"dev-a3a0171ad7b9df471788331dc3f547b4912638e3","to":"dev-1d7f03610f78293ed1591dd86ddfa5ea5904697e","loc":7,"days":1.0,"loc_per_day":7.0,"flagged":false},{"from":"dev-1d7f03610f78293ed1591dd86ddfa5ea5904697e","to":"dev-0fe765f095a014d5ceb0af0fc8fd83e181b09526","loc":1,"days":4.41,"loc_per_day":0.2,"flagged":false},{"from":"dev-0fe765f095a014d5ceb0af0fc8fd83e181b09526","to":"dev-010059cfe91fa395e634947f4f401548c8d94b5d","loc":47,"days":1.52,"loc_per_day":30.9,"flagged":false},{"from":"dev-010059cfe91fa395e634947f4f401548c8d94b5d","to":"dev-2cafe44466273373a94338251f16d59b23c2c643","loc":1,"days":0.04,"loc_per_day":24.0,"flagged":false},{"from":"dev-2cafe44466273373a94338251f16d59b23c2c643","to":"dev-d74bb57117da58a210ca5f002ec25961c9df8612","loc":1,"days":0.96,"loc_per_day":1.0,"flagged":false},{"from":"dev-d74bb57117da58a210ca5f002ec25961c9df8612","to":"dev-8289b64f5a794e7d6e52f6b1437ddca86510f067","loc":2,"days":1.26,"loc_per_day":1.6,"flagged":false},{"from":"dev-8289b64f5a794e7d6e52f6b1437ddca86510f067","to":"dev-58383dbd59935befca746cf0f156d6091ca2f7e8","loc":114,"days":0.17,"loc_per_day":654.9,"flagged":false},{"from":"dev-58383dbd59935befca746cf0f156d6091ca2f7e8","to":"dev-d4ecee65debe434d6131e5b12618674cf6e77c00","loc":9,"days":0.52,"loc_per_day":17.3,"flagged":false},{"from":"dev-d4ecee65debe434d6131e5b12618674cf6e77c00","to":"dev-f066ab28bc6e806988d2085807c002271c1a76e9","loc":2,"days":0.12,"loc_per_day":16.6,"flagged":false},{"from":"dev-f066ab28bc6e806988d2085807c002271c1a76e9","to":"dev-4ae081a30ea10bd48dc20af92814745d4b86bdf5","loc":47,"days":0.13,"loc_per_day":357.7,"flagged":false},{"from":"dev-4ae081a30ea10bd48dc20af92814745d4b86bdf5","to":"dev-30901429ad3375d78f59babcc1bfb2511874a303","loc":47,"days":3.9,"loc_per_day":12.0,"flagged":false},{"from":"dev-30901429ad3375d78f59babcc1bfb2511874a303","to":"dev-98d98eeca8058e4412f9e4f8bc3e2671ce7e175f","loc":1,"days":1.37,"loc_per_day":0.7,"flagged":false},{"from":"dev-98d98eeca8058e4412f9e4f8bc3e2671ce7e175f","to":"dev-adc2d89b042a30a83a5c364d2653bb997aa5e695","loc":6,"days":0.6,"loc_per_day":10.0,"flagged":false},{"from":"dev-adc2d89b042a30a83a5c364d2653bb997aa5e695","to":"dev-543128a0c1623424c78c6882c8ab78cfc16b5749","loc":7,"days":1.33,"loc_per_day":5.3,"flagged":false},{"from":"dev-543128a0c1623424c78c6882c8ab78cfc16b5749","to":"dev-9ddc7d17ff8604ab473dc86b863feb81218ba132","loc":38,"days":3.71,"loc_per_day":10.2,"flagged":false},{"from":"dev-9ddc7d17ff8604ab473dc86b863feb81218ba132","to":"dev-1023079a87bf99e0a90a92d0f8da81a32badf2f7","loc":2,"days":2.04,"loc_per_day":1.0,"flagged":false},{"from":"dev-1023079a87bf99e0a90a92d0f8da81a32badf2f7","to":"dev-3c06fc3e63ea132d866a556f469565791a74129e","loc":91,"days":4.42,"loc_per_day":20.6,"flagged":false},{"from":"dev-3c06fc3e63ea132d866a556f469565791a74129e","to":"dev-976008bf659583014035188e0894ae834210a812","loc":15,"days":0.53,"loc_per_day":28.5,"flagged":false},{"from":"dev-976008bf659583014035188e0894ae834210a812","to":"dev-c142a11da6c67ebc133cc74989dd3afde0bc5fb1","loc":7,"days":2.39,"loc_per_day":2.9,"flagged":false},{"from":"dev-c142a11da6c67ebc133cc74989dd3afde0bc5fb1","to":"dev-35c8ba07c1645fa4145972e338e53949bf1ea32d","loc":3980,"days":0.89,"loc_per_day":4461.1,"flagged":false},{"from":"dev-35c8ba07c1645fa4145972e338e53949bf1ea32d","to":"dev-928a59b7f94ac961cf49d71e2c0aecf33bc0b58e","loc":80,"days":2.22,"loc_per_day":36.1,"flagged":false},{"from":"dev-928a59b7f94ac961cf49d71e2c0aecf33bc0b58e","to":"dev-e925ab2e40b8f59bdff5ae33794ce2236a89e28a","loc":23,"days":0.62,"loc_per_day":37.1,"flagged":false},{"from":"dev-e925ab2e40b8f59bdff5ae33794ce2236a89e28a","to":"dev-6e9d2396972ef4d60cb6c1d20c8437f70d672a35","loc":292,"days":0.23,"loc_per_day":1279.4,"flagged":false},{"from":"dev-6e9d2396972ef4d60cb6c1d20c8437f70d672a35","to":"dev-15b2dbacded80aee3834a692341d20724be221c5","loc":6,"days":0.04,"loc_per_day":144.0,"flagged":false},{"from":"dev-15b2dbacded80aee3834a692341d20724be221c5","to":"dev-975f4ae43a48c9ce9817ef33b1fa3bafebe2b66d","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-975f4ae43a48c9ce9817ef33b1fa3bafebe2b66d","to":"dev-a4677e54ceea5d68c3485f139d09c789107757f7","loc":3,"days":0.04,"loc_per_day":72.0,"flagged":false},{"from":"dev-a4677e54ceea5d68c3485f139d09c789107757f7","to":"dev-3a3cbf979b3ab2f922339da7c799e447727ca73e","loc":2,"days":0.65,"loc_per_day":3.1,"flagged":false},{"from":"dev-3a3cbf979b3ab2f922339da7c799e447727ca73e","to":"dev-bbd4ab65708ce2155f288755e8565fdfad02b402","loc":18,"days":0.24,"loc_per_day":74.9,"flagged":false},{"from":"dev-bbd4ab65708ce2155f288755e8565fdfad02b402","to":"dev-bbf80119cfff1c1952b49a76d848373e991535b8","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-bbf80119cfff1c1952b49a76d848373e991535b8","to":"dev-32614c1870ac80334dfe72c80fb5fd37287737b7","loc":2,"days":0.17,"loc_per_day":11.7,"flagged":false},{"from":"dev-32614c1870ac80334dfe72c80fb5fd37287737b7","to":"dev-e82ce00f42d36f0caac6b75aabadb33e5303ea78","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-e82ce00f42d36f0caac6b75aabadb33e5303ea78","to":"dev-d4ee10210cec286cec87ffe1917caa6c7711c917","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-d4ee10210cec286cec87ffe1917caa6c7711c917","to":"dev-b028594e53987f9025ae73930e7904f716b14764","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-b028594e53987f9025ae73930e7904f716b14764","to":"dev-79caeef365cf3034b19765db91a36191c89a86fb","loc":6,"days":0.04,"loc_per_day":144.0,"flagged":false},{"from":"dev-79caeef365cf3034b19765db91a36191c89a86fb","to":"dev-13fb344693c8760c2e06117e5b01dcff86131491","loc":3,"days":0.04,"loc_per_day":72.0,"flagged":false},{"from":"dev-13fb344693c8760c2e06117e5b01dcff86131491","to":"dev-8a74a6950ad0cae52c7f9fb6779f140f7baa84e5","loc":358,"days":0.98,"loc_per_day":363.7,"flagged":false},{"from":"dev-8a74a6950ad0cae52c7f9fb6779f140f7baa84e5","to":"dev-e03855640d4ebc0af66a485190dee098c35cb6db","loc":2,"days":0.38,"loc_per_day":5.3,"flagged":false},{"from":"dev-e03855640d4ebc0af66a485190dee098c35cb6db","to":"dev-06eba23ebaf5cb4fb56830d89246fefaec07cd18","loc":15,"days":0.15,"loc_per_day":97.7,"flagged":false},{"from":"dev-06eba23ebaf5cb4fb56830d89246fefaec07cd18","to":"dev-12aa9f7976370bbf4aa9e132d3b901643faf20a7","loc":123,"days":0.3,"loc_per_day":411.3,"flagged":false},{"from":"dev-12aa9f7976370bbf4aa9e132d3b901643faf20a7","to":"dev-3d0e2d4e8a85847beaedcf214c2099207dbeed83","loc":2,"days":0.22,"loc_per_day":9.2,"flagged":false},{"from":"dev-3d0e2d4e8a85847beaedcf214c2099207dbeed83","to":"dev-085c7bbe89e7c3a52cc9cf91e7d0ebb27d36aaab","loc":327,"days":2.75,"loc_per_day":119.0,"flagged":false},{"from":"dev-085c7bbe89e7c3a52cc9cf91e7d0ebb27d36aaab","to":"dev-87f09c473a0be66067ed636a131f1d080a7e4969","loc":66,"days":1.01,"loc_per_day":65.1,"flagged":false},{"from":"dev-87f09c473a0be66067ed636a131f1d080a7e4969","to":"dev-2632b7a86b026fc49bcd275750ef59e5d568f949","loc":13,"days":0.09,"loc_per_day":148.6,"flagged":false},{"from":"dev-2632b7a86b026fc49bcd275750ef59e5d568f949","to":"dev-f43cdd45478fc670a82ee1adabc34a90c7e0fe45","loc":1,"days":0.72,"loc_per_day":1.4,"flagged":false},{"from":"dev-f43cdd45478fc670a82ee1adabc34a90c7e0fe45","to":"dev-634f29756c13ad92842cd0b343be152d9d1ce3bc","loc":16,"days":1.76,"loc_per_day":9.1,"flagged":false},{"from":"dev-634f29756c13ad92842cd0b343be152d9d1ce3bc","to":"dev-b2fd8cd0e93107c24f5cd16cae90f5985837b90d","loc":1,"days":0.04,"loc_per_day":24.0,"flagged":false},{"from":"dev-b2fd8cd0e93107c24f5cd16cae90f5985837b90d","to":"dev-4f0a99bc696b060615a278a8b60b8b6f1f3921f5","loc":5,"days":0.04,"loc_per_day":120.0,"flagged":false},{"from":"dev-4f0a99bc696b060615a278a8b60b8b6f1f3921f5","to":"dev-b5b7b109b8198543ca0aa2835d263bc7317ff2fc","loc":6,"days":0.04,"loc_per_day":144.0,"flagged":false},{"from":"dev-b5b7b109b8198543ca0aa2835d263bc7317ff2fc","to":"dev-c98b75b0bf8da5a7df7635f1a8c87e37f665f489","loc":9,"days":0.04,"loc_per_day":216.0,"flagged":false},{"from":"dev-c98b75b0bf8da5a7df7635f1a8c87e37f665f489","to":"dev-6bfa5e1a1d3e81341fbb31277409daa9da78f3de","loc":1,"days":0.04,"loc_per_day":24.0,"flagged":false},{"from":"dev-6bfa5e1a1d3e81341fbb31277409daa9da78f3de","to":"dev-211564081dd9b476d88e97338d1f60d3379adce3","loc":15,"days":0.04,"loc_per_day":360.0,"flagged":false},{"from":"dev-211564081dd9b476d88e97338d1f60d3379adce3","to":"dev-aecd5136fd03764b72baa4a321692b4a509a83b7","loc":9,"days":0.04,"loc_per_day":216.0,"flagged":false},{"from":"dev-aecd5136fd03764b72baa4a321692b4a509a83b7","to":"dev-b23ca77d65b0eaa0d2f5d6361b5f4e471d75cf46","loc":3,"days":0.04,"loc_per_day":72.0,"flagged":false},{"from":"dev-b23ca77d65b0eaa0d2f5d6361b5f4e471d75cf46","to":"dev-7f01c65016806a94f3b322be2edfdfcc026488c6","loc":115,"days":0.39,"loc_per_day":292.9,"flagged":false},{"from":"dev-7f01c65016806a94f3b322be2edfdfcc026488c6","to":"dev-53213a79dbbf96e143ab86d1e7089e0a04466af5","loc":2,"days":0.72,"loc_per_day":2.8,"flagged":false},{"from":"dev-53213a79dbbf96e143ab86d1e7089e0a04466af5","to":"dev-2378ecd81d384442d1198206daac6d25e10c0f0c","loc":0,"days":1.08,"loc_per_day":0.0,"flagged":false},{"from":"dev-2378ecd81d384442d1198206daac6d25e10c0f0c","to":"dev-a188d1cd93f3f4aae3d4378917414927902b7947","loc":140,"days":0.21,"loc_per_day":654.7,"flagged":false},{"from":"dev-a188d1cd93f3f4aae3d4378917414927902b7947","to":"dev-b052647d299d8fcba357e4b7bfd79e351241f288","loc":9,"days":2.11,"loc_per_day":4.3,"flagged":false},{"from":"dev-b052647d299d8fcba357e4b7bfd79e351241f288","to":"dev-fda801c9fb26bb49eb4618f3643b5675fc96799f","loc":15,"days":1.04,"loc_per_day":14.4,"flagged":false},{"from":"dev-fda801c9fb26bb49eb4618f3643b5675fc96799f","to":"dev-a40f5c8521a2d4c77584197ae148bcf262a67532","loc":14,"days":0.96,"loc_per_day":14.6,"flagged":false},{"from":"dev-a40f5c8521a2d4c77584197ae148bcf262a67532","to":"dev-d224e57fa0326d68c149d754552d8105cd28743b","loc":7,"days":0.89,"loc_per_day":7.9,"flagged":false},{"from":"dev-d224e57fa0326d68c149d754552d8105cd28743b","to":"dev-c7e1b5c8fa97ca65a87ea294bfd67b3662ba6c6c","loc":38,"days":0.69,"loc_per_day":54.8,"flagged":false},{"from":"dev-c7e1b5c8fa97ca65a87ea294bfd67b3662ba6c6c","to":"dev-e0171023e535837bd57719c4a622bf61ea640224","loc":22,"days":0.31,"loc_per_day":71.6,"flagged":false},{"from":"dev-e0171023e535837bd57719c4a622bf61ea640224","to":"dev-2189eb228642769c6cd902eff30d3f1d10a9391f","loc":1,"days":0.82,"loc_per_day":1.2,"flagged":false},{"from":"dev-2189eb228642769c6cd902eff30d3f1d10a9391f","to":"dev-b056c98c1d9299182287db40a3bd150ed8b0b300","loc":35,"days":0.04,"loc_per_day":840.0,"flagged":false},{"from":"dev-b056c98c1d9299182287db40a3bd150ed8b0b300","to":"dev-96f314330af52ea6f35b052dc7527222624b64d9","loc":14,"days":0.05,"loc_per_day":308.1,"flagged":false},{"from":"dev-96f314330af52ea6f35b052dc7527222624b64d9","to":"dev-61e7784b431881f6b98ded633d7d6ba209f1271b","loc":2,"days":0.2,"loc_per_day":10.1,"flagged":false},{"from":"dev-61e7784b431881f6b98ded633d7d6ba209f1271b","to":"dev-8c018c7db2fbd5b1e35cdca18e78648fd90b13ad","loc":69,"days":0.87,"loc_per_day":78.9,"flagged":false},{"from":"dev-8c018c7db2fbd5b1e35cdca18e78648fd90b13ad","to":"dev-3a8cb69571b42789d1b1229ebc90ba12ff2cc3a7","loc":28,"days":0.08,"loc_per_day":335.6,"flagged":false},{"from":"dev-3a8cb69571b42789d1b1229ebc90ba12ff2cc3a7","to":"dev-08d356657606c7655f11be5b6600598b21f42714","loc":0,"days":0.99,"loc_per_day":0.0,"flagged":false},{"from":"dev-08d356657606c7655f11be5b6600598b21f42714","to":"dev-76940cf16eaa3fbaacfc47e06386e58200a69ce4","loc":30,"days":0.04,"loc_per_day":720.0,"flagged":false},{"from":"dev-76940cf16eaa3fbaacfc47e06386e58200a69ce4","to":"dev-c1dcdc2b19b9eaa81c4465724a4f7238cbfe76e6","loc":13,"days":0.69,"loc_per_day":18.8,"flagged":false},{"from":"dev-c1dcdc2b19b9eaa81c4465724a4f7238cbfe76e6","to":"dev-65de38bcc5d3097a36431f84b7bd4c5c9256d1c9","loc":1,"days":0.04,"loc_per_day":24.0,"flagged":false},{"from":"dev-65de38bcc5d3097a36431f84b7bd4c5c9256d1c9","to":"dev-21e3b4d2406b23ccbe68faf945580e36a7905b7f","loc":11,"days":0.18,"loc_per_day":59.8,"flagged":false},{"from":"dev-21e3b4d2406b23ccbe68faf945580e36a7905b7f","to":"dev-3b652ec8fcc1f6574fa5a29ff7afebf810cad10d","loc":14,"days":0.82,"loc_per_day":17.1,"flagged":false},{"from":"dev-3b652ec8fcc1f6574fa5a29ff7afebf810cad10d","to":"dev-c838afa0801eb4bbb14bc448e3b8048d1077f3eb","loc":2,"days":0.27,"loc_per_day":7.4,"flagged":false},{"from":"dev-c838afa0801eb4bbb14bc448e3b8048d1077f3eb","to":"dev-b4308e063fc2a37916893b6e25953f663925ffab","loc":0,"days":0.04,"loc_per_day":0.0,"flagged":false},{"from":"dev-b4308e063fc2a37916893b6e25953f663925ffab","to":"dev-41872528311251c4e08832acb084e833b8265c70","loc":0,"days":0.82,"loc_per_day":0.0,"flagged":false},{"from":"dev-41872528311251c4e08832acb084e833b8265c70","to":"dev-bea5cecba535d50b166df4138df0e0a8f549f07a","loc":3,"days":3.14,"loc_per_day":1.0,"flagged":false},{"from":"dev-bea5cecba535d50b166df4138df0e0a8f549f07a","to":"dev-b761f43a651e2d1e241969ac6d04858f71fc71d8","loc":4,"days":1.82,"loc_per_day":2.2,"flagged":false},{"from":"dev-b761f43a651e2d1e241969ac6d04858f71fc71d8","to":"dev-8e0264746dee63b9f25a85182314be0a0ff1d492","loc":34,"days":0.19,"loc_per_day":179.4,"flagged":false},{"from":"dev-8e0264746dee63b9f25a85182314be0a0ff1d492","to":"dev-611efaf07d9eed56aa0fbc8a40b3c7a2bde0a56b","loc":1,"days":0.04,"loc_per_day":24.0,"flagged":false},{"from":"dev-611efaf07d9eed56aa0fbc8a40b3c7a2bde0a56b","to":"dev-a7ae63bc8917100599be110d1125b884876f32f4","loc":81,"days":4.1,"loc_per_day":19.8,"flagged":false},{"from":"dev-a7ae63bc8917100599be110d1125b884876f32f4","to":"dev-3b72fbb873340a305922466c7020433296407d75","loc":17,"days":0.76,"loc_per_day":22.5,"flagged":false},{"from":"dev-3b72fbb873340a305922466c7020433296407d75","to":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","loc":2,"days":0.11,"loc_per_day":18.3,"flagged":false},{"from":"dev-4cd6b50a1db37375a2b05d498348fd82652ebba6","to":"dev-034bb19d7653b83c14ab6140e4f215b13735d9d2","loc":52,"days":0.04,"loc_per_day":1248.0,"flagged":false},{"from":"dev-034bb19d7653b83c14ab6140e4f215b13735d9d2","to":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","loc":1,"days":0.08,"loc_per_day":12.0,"flagged":false},{"from":"dev-60a8a48e2bccf21a9ee6530fc6a80598dbe9fda4","to":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","loc":9,"days":0.98,"loc_per_day":9.2,"flagged":false},{"from":"dev-b6a9edfd74e02edde0ccdab4c8ebbe277ab2a457","to":"dev-3cc559a892a90419f0d97e373893c594e2a34740","loc":37,"days":1.79,"loc_per_day":20.7,"flagged":false},{"from":"dev-3cc559a892a90419f0d97e373893c594e2a34740","to":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","loc":3,"days":0.32,"loc_per_day":9.5,"flagged":false},{"from":"dev-f439cbc85459ff3a257a12b2804566faed2c3e5a","to":"dev-85147c045ea878fe585ae91139c3dea1f477f268","loc":11,"days":1.58,"loc_per_day":7.0,"flagged":false},{"from":"dev-85147c045ea878fe585ae91139c3dea1f477f268","to":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","loc":1,"days":0.43,"loc_per_day":2.3,"flagged":false},{"from":"dev-bc22115fba18f7a7f89881279a663ebb4fbdea5a","to":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","loc":2,"days":0.04,"loc_per_day":48.0,"flagged":false},{"from":"dev-9aca29cf21b7b9717cdfef893c8c4f44d3985f28","to":"dev-ed602818dc08ea6db667e70d1f491a091a13befa","loc":51,"days":2.45,"loc_per_day":20.8,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":37520.0,"index":0.053,"count:narrated_steps":2.0,"per_kloc:narrated_steps":0.053,"files:narrated_steps":2.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":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Step 1. Aquire ALL Sensors","ref":"src/gearbox.cpp:1042","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/gearbox.cpp#L1042","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: // Now we are FAR too late, so we must increase pressure","ref":"src/shifting_algo/shift_crossover.cpp:687","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/shifting_algo/shift_crossover.cpp#L687","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":2.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit a0f4b271f8); removed from the current tree but still retrievable","path":"sdkconfig.unified","line":1415,"fingerprint":"a0f4b271f865dbd8f6b232d15adea936a53775c1:sdkconfig.unified:generic-api-key:1415"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 7302e00470); removed from the current tree but still retrievable","path":"sdkconfig.unified.old","line":1377,"fingerprint":"7302e00470e06ca61f47cce1e34403bdb58f1dc3:sdkconfig.unified.old:generic-api-key:1377"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":3.0,"findings_high":3.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":2.25,"scanned_lines":37520.0,"parse_errors":3.0},"findings":[{"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":"patchappinfo.py","line":125,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:patchappinfo.py:125"},{"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":"patchappinfo.py","line":147,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:patchappinfo.py:147"},{"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":"progname.py","line":71,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:progname.py:71"}],"evidence":[],"data":{"rulesets":["c","python","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":4.0,"findings":35.0,"findings_high":19.0,"findings_medium":13.0,"findings_low":3.0,"penalty":259.8},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/delete-old-dev.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/delete-old-dev.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_documentation.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/deploy_documentation.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy_documentation.yml","line":28,"fingerprint":"unpinned-uses:.github/workflows/deploy_documentation.yml:28"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":18,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:18"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":53,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:53"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":58,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:58"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_dev.yml","line":68,"fingerprint":"unpinned-uses:.github/workflows/fw_build_dev.yml:68"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":18,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:18"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:30"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":53,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:53"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":60,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:60"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/fw_build_main.yml","line":70,"fingerprint":"unpinned-uses:.github/workflows/fw_build_main.yml:70"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/delete-old-dev.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/delete-old-dev.yml:11"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/deploy_documentation.yml","line":14,"fingerprint":"artipacked:.github/workflows/deploy_documentation.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/deploy_documentation.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/deploy_documentation.yml:11"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/fw_build_dev.yml","line":14,"fingerprint":"artipacked:.github/workflows/fw_build_dev.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_dev.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/fw_build_dev.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_dev.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/fw_build_dev.yml:11"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_dev.yml","line":48,"fingerprint":"excessive-permissions:.github/workflows/fw_build_dev.yml:48"},{"rule_id":"zizmor/archived-uses","severity":"medium","message":"action or reusable workflow from archived repository [confidence high]","path":".github/workflows/fw_build_dev.yml","line":58,"fingerprint":"archived-uses:.github/workflows/fw_build_dev.yml:58"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/fw_build_main.yml","line":14,"fingerprint":"artipacked:.github/workflows/fw_build_main.yml:14"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_main.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/fw_build_main.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_main.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/fw_build_main.yml:11"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/fw_build_main.yml","line":48,"fingerprint":"excessive-permissions:.github/workflows/fw_build_main.yml:48"},{"rule_id":"zizmor/archived-uses","severity":"medium","message":"action or reusable workflow from archived repository [confidence high]","path":".github/workflows/fw_build_main.yml","line":60,"fingerprint":"archived-uses:.github/workflows/fw_build_main.yml:60"},{"rule_id":"zizmor/template-injection","severity":"low","message":"code injection via template expansion [confidence high]","path":".github/workflows/deploy_documentation.yml","line":26,"fingerprint":"template-injection:.github/workflows/deploy_documentation.yml:26"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/fw_build_dev.yml","line":68,"fingerprint":"superfluous-actions:.github/workflows/fw_build_dev.yml:68"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/fw_build_main.yml","line":70,"fingerprint":"superfluous-actions:.github/workflows/fw_build_main.yml:70"}],"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.005,"unpinned_manifests":0.0},"findings":[],"evidence":[],"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":1448.0,"function_nloc":16855.0,"mean_ccn":3.34,"p90_ccn":7.0,"complex_functions":40.0,"long_functions":17.0,"many_param_functions":5.0,"risky_nloc_share":0.2635},"findings":[],"evidence":[{"kind":"complex-function","description":"Gearbox::controller_loop in src/gearbox.cpp: complexity 158, 558 lines","ref":"src/gearbox.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/gearbox.cpp#L1031","weight":1.0},{"kind":"complex-function","description":"Gearbox::shift_thread in src/gearbox.cpp: complexity 92, 402 lines","ref":"src/gearbox.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/gearbox.cpp#L592","weight":1.0},{"kind":"complex-function","description":"ShiftingAlgorithm::adaptation_step in src/shifting_algo/s_algo.cpp: complexity 72, 188 lines","ref":"src/shifting_algo/s_algo.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/shifting_algo/s_algo.cpp#L479","weight":1.0},{"kind":"complex-function","description":"TorqueConverter::process_open_or_slip_state in src/torque_converter.cpp: complexity 59, 148 lines","ref":"src/torque_converter.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/torque_converter.cpp#L265","weight":0.9833333333333333},{"kind":"complex-function","description":"Kwp2000_server::process_read_data_local_ident in src/diag/kwp2000.cpp: complexity 48, 162 lines","ref":"src/diag/kwp2000.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/diag/kwp2000.cpp#L507","weight":0.8},{"kind":"complex-function","description":"get_map in src/diag/map_editor.cpp: complexity 47, 83 lines","ref":"src/diag/map_editor.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/diag/map_editor.cpp#L56","weight":0.7833333333333333},{"kind":"complex-function","description":"ClutchSpeedModel::get_clutch_speeds_debug in src/models/clutch_speed.cpp: complexity 41, 134 lines","ref":"src/models/clutch_speed.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/models/clutch_speed.cpp#L48","weight":0.6833333333333333},{"kind":"complex-function","description":"Kwp2000_server::server_loop in src/diag/kwp2000.cpp: complexity 40, 122 lines","ref":"src/diag/kwp2000.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/diag/kwp2000.cpp#L240","weight":0.6666666666666666},{"kind":"complex-function","description":"Gearbox::elapse_shift in src/gearbox.cpp: complexity 37, 214 lines","ref":"src/gearbox.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/gearbox.cpp#L348","weight":0.6166666666666667},{"kind":"complex-function","description":"CrossoverShift::phase_fill in src/shifting_algo/shift_crossover.cpp: complexity 36, 123 lines","ref":"src/shifting_algo/shift_crossover.cpp","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/src/shifting_algo/shift_crossover.cpp#L149","weight":0.6}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":28003.0,"duplicated_lines":3699.0,"duplicated_share":0.1321,"files":178.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: lib/convert.py:59 and lib/convert.py:78","ref":"lib/convert.py","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/convert.py#L59","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/convert.py:273 and lib/customcan_ecus/src/BRAKES.h:22","ref":"lib/convert.py","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/convert.py#L273","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/BRAKES.h:20 and lib/customcan_ecus/src/ENGINE.h:64","ref":"lib/customcan_ecus/src/BRAKES.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/BRAKES.h#L20","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/ENGINE.h:80 and lib/customcan_ecus/src/UN52.h:142","ref":"lib/customcan_ecus/src/ENGINE.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/ENGINE.h#L80","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/ENGINE.h:81 and lib/customcan_ecus/src/EWM.h:72","ref":"lib/customcan_ecus/src/ENGINE.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/ENGINE.h#L81","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/EWM.h:20 and lib/egs51_ecus/src/EWM51.h:20","ref":"lib/customcan_ecus/src/EWM.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/EWM.h#L20","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/EWM.h:57 and lib/egs52_ecus/src/EWM.h:57","ref":"lib/customcan_ecus/src/EWM.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/EWM.h#L57","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/EWM.h:71 and lib/customcan_ecus/src/WHEELS.h:55","ref":"lib/customcan_ecus/src/EWM.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/EWM.h#L71","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/UN52.h:21 and lib/customcan_ecus/src/UN52.h:40","ref":"lib/customcan_ecus/src/UN52.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/UN52.h#L21","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: lib/customcan_ecus/src/WHEELS.h:20 and lib/egs51_ecus/src/GS51.h:106","ref":"lib/customcan_ecus/src/WHEELS.h","url":"https://github.com/rnd-ash/ultimate-nag52-fw/blob/ed602818dc08ea6db667e70d1f491a091a13befa/lib/customcan_ecus/src/WHEELS.h#L20","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":36.0,"weighted_findings":46.0,"scanned_lines":37520.0,"category:best-practice":12.0,"category:maintainability":24.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"lib/convert.py","line":17,"fingerprint":"python.lang.best-practice.open-never-closed:lib/convert.py:17"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"scripts/generate_data.py","line":26,"fingerprint":"python.lang.best-practice.open-never-closed:scripts/generate_data.py:26"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"scripts/generate_data.py","line":27,"fingerprint":"python.lang.best-practice.open-never-closed:scripts/generate_data.py:27"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"scripts/generate_data.py","line":368,"fingerprint":"python.lang.best-practice.open-never-closed:scripts/generate_data.py:368"},{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"scripts/generate_data.py","line":369,"fingerprint":"python.lang.best-practice.open-never-closed:scripts/generate_data.py:369"},{"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/convert.py","line":17,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:lib/convert.py:17"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_iso_tp\" a function or an attribute? If it is a function, you may have meant self.is_iso_tp() because self.is_iso_tp is always true.","path":"lib/convert.py","line":44,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:44"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_number\" a function or an attribute? If it is a function, you may have meant self.is_number() because self.is_number is always true.","path":"lib/convert.py","line":45,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:45"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_bool\" a function or an attribute? If it is a function, you may have meant self.is_bool() because self.is_bool is always true.","path":"lib/convert.py","line":46,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:46"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_char\" a function or an attribute? If it is a function, you may have meant self.is_char() because self.is_char is always true.","path":"lib/convert.py","line":47,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:47"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant self.is_enum() because self.is_enum is always true.","path":"lib/convert.py","line":49,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:49"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_number\" a function or an attribute? If it is a function, you may have meant self.is_number() because self.is_number is always true.","path":"lib/convert.py","line":58,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:58"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_bool\" a function or an attribute? If it is a function, you may have meant self.is_bool() because self.is_bool is always true.","path":"lib/convert.py","line":67,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:67"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant self.is_enum() because self.is_enum is always true.","path":"lib/convert.py","line":69,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:69"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_char\" a function or an attribute? If it is a function, you may have meant self.is_char() because self.is_char is always true.","path":"lib/convert.py","line":71,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:71"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_number\" a function or an attribute? If it is a function, you may have meant self.is_number() because self.is_number is always true.","path":"lib/convert.py","line":77,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:77"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_bool\" a function or an attribute? If it is a function, you may have meant self.is_bool() because self.is_bool is always true.","path":"lib/convert.py","line":86,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:86"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant self.is_enum() because self.is_enum is always true.","path":"lib/convert.py","line":88,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:88"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_char\" a function or an attribute? If it is a function, you may have meant self.is_char() because self.is_char is always true.","path":"lib/convert.py","line":90,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:90"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_bool\" a function or an attribute? If it is a function, you may have meant self.is_bool() because self.is_bool is always true.","path":"lib/convert.py","line":102,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:102"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant self.is_enum() because self.is_enum is always true.","path":"lib/convert.py","line":103,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:103"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_iso_tp\" a function or an attribute? If it is a function, you may have meant self.is_iso_tp() because self.is_iso_tp is always true.","path":"lib/convert.py","line":104,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:104"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_number\" a function or an attribute? If it is a function, you may have meant self.is_number() because self.is_number is always true.","path":"lib/convert.py","line":105,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:105"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_iso_tp\" a function or an attribute? If it is a function, you may have meant self.is_iso_tp() because self.is_iso_tp is always true.","path":"lib/convert.py","line":108,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:108"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_char\" a function or an attribute? If it is a function, you may have meant self.is_char() because self.is_char is always true.","path":"lib/convert.py","line":110,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:110"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_bool\" a function or an attribute? If it is a function, you may have meant self.is_bool() because self.is_bool is always true.","path":"lib/convert.py","line":112,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:112"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant self.is_enum() because self.is_enum is always true.","path":"lib/convert.py","line":114,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:114"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_number\" a function or an attribute? If it is a function, you may have meant self.is_number() because self.is_number is always true.","path":"lib/convert.py","line":116,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:116"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_enum\" a function or an attribute? If it is a function, you may have meant s.is_enum() because s.is_enum is always true.","path":"lib/convert.py","line":173,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:lib/convert.py:173"},{"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/convert.py","line":350,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:lib/convert.py:350"},{"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/convert.py","line":398,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:lib/convert.py:398"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_hashed\" a function or an attribute? If it is a function, you may have meant img.is_hashed() because img.is_hashed is always true.","path":"patchappinfo.py","line":378,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:patchappinfo.py:378"},{"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":"scripts/generate_data.py","line":26,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/generate_data.py:26"},{"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":"scripts/generate_data.py","line":27,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/generate_data.py:27"},{"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":"scripts/generate_data.py","line":211,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/generate_data.py:211"},{"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":"scripts/generate_data.py","line":212,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/generate_data.py:212"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.0063,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0281,"test_lines":118.0,"source_lines":37520.0,"test_ratio":0.0031,"ci_files":4.0,"cochange_share":0.007,"cochange_commits":285.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/delete-old-dev.yml","ref":".github/workflows/delete-old-dev.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/deploy_documentation.yml","ref":".github/workflows/deploy_documentation.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/fw_build_dev.yml","ref":".github/workflows/fw_build_dev.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/fw_build_main.yml","ref":".github/workflows/fw_build_main.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":1.0,"readme_lines":39.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":"CHANGELOG.md","ref":"CHANGELOG.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":45.0,"other_lines":37475.0,"files_blamed":178.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":36.0,"quality:other_per_kloc":0.961,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":3.0,"security:other_per_kloc":0.08},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}