{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:45:47.012680Z","repo":{"ref":{"host":"github.com","owner":"The-Nils","name":"LineMaker"},"default_branch":"main","clone_url":"https://github.com/The-Nils/LineMaker.git","html_url":"https://github.com/The-Nils/LineMaker","description":"A collection of web-based tools for CNC pen plotting, built for my personal hobby project and 100% generated by AI.","stars":18,"forks":2,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":12521,"primary_language":"JavaScript","license_spdx":"GPL-3.0","created_at":"2025-09-02T20:26:27Z","pushed_at":"2026-03-20T08:28:22Z","security_policy_url":null,"distribution":{"owner_created_at":"2015-08-10T11:22:57Z","owner_type":"User","release_assets":[]}},"commit_sha":"ff5aacd5a592c54a65821d14e6a512bd1f743c93","profile":{"lines_by_language":{"JavaScript":12027},"files_by_category":{"other":20,"source":11,"docs":4,"oversized":3,"config":2,"binary":2},"source_lines":12027,"test_lines":0},"pillars":{"ai_provenance":{"score":20.3,"confidence":0.81,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.2033,"suspected_share":0.2658,"estimated_share":0.2033,"ai_artifacts":1.0,"flagged_work_units":3.0,"flagged_releases":null},"summary":"Explicit AI attribution on 20% of first-party code added; an estimated 20% including velocity signals."},"quality":{"score":46.3,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":79.1,"duplication":56.1,"lint":57.6,"testing":0.0,"docs":65.0,"type_safety":null,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 8% of function code in complex or long functions; 10% duplicated lines. Weakest area: testing."},"security":{"score":62.8,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":47.8,"dependencies":null,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 26 high-severity SAST findings. 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":45.0,"attributed_commits":12.0,"attributed_commit_share":0.26666666666666666,"effective_loc":19205.0,"attributed_loc":3905.0,"attributed_loc_share":0.20333246550377507,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 12 attributed commits, 3,905 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f56abc70d4913d44400d4d3becb8c62a76259e45","url":"https://github.com/The-Nils/LineMaker/commit/f56abc70d4913d44400d4d3becb8c62a76259e45","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7c3d87ba637d64886376c9ed886608f2f11cfb43","url":"https://github.com/The-Nils/LineMaker/commit/7c3d87ba637d64886376c9ed886608f2f11cfb43","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"45c56bbe23f25676d7342f66e1e563b39ba42215","url":"https://github.com/The-Nils/LineMaker/commit/45c56bbe23f25676d7342f66e1e563b39ba42215","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ea5748d63f46cf153e555e496c5e52200d2759c9","url":"https://github.com/The-Nils/LineMaker/commit/ea5748d63f46cf153e555e496c5e52200d2759c9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2be7e2629b73fb61c2acb01e0f52d26183f3c1e2","url":"https://github.com/The-Nils/LineMaker/commit/2be7e2629b73fb61c2acb01e0f52d26183f3c1e2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"18d0146a9e7e11f6a57e64547ec6f0205dd084ac","url":"https://github.com/The-Nils/LineMaker/commit/18d0146a9e7e11f6a57e64547ec6f0205dd084ac","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"05a9cd17ff4274de77a20b377a62d9997a937584","url":"https://github.com/The-Nils/LineMaker/commit/05a9cd17ff4274de77a20b377a62d9997a937584","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3adf519a0019beece0a5d22018cb90da1457e1bb","url":"https://github.com/The-Nils/LineMaker/commit/3adf519a0019beece0a5d22018cb90da1457e1bb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ecd98a34efc1882a497a32d6cf872f17121b9ab0","url":"https://github.com/The-Nils/LineMaker/commit/ecd98a34efc1882a497a32d6cf872f17121b9ab0","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e95d9376a26197a74a4f799a2e1e63bb32420c54","url":"https://github.com/The-Nils/LineMaker/commit/e95d9376a26197a74a4f799a2e1e63bb32420c54","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3c4b0c69c62faf5a624d64206de002cc027ec9a3","url":"https://github.com/The-Nils/LineMaker/commit/3c4b0c69c62faf5a624d64206de002cc027ec9a3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6a4bc5ae60cb5331c6cc066cdab4234ecc429f13","url":"https://github.com/The-Nils/LineMaker/commit/6a4bc5ae60cb5331c6cc066cdab4234ecc429f13","weight":0.9}],"data":{"attributed_loc_by_commit":{"6a4bc5ae60cb5331c6cc066cdab4234ecc429f13":0,"3c4b0c69c62faf5a624d64206de002cc027ec9a3":0,"e95d9376a26197a74a4f799a2e1e63bb32420c54":1746,"ecd98a34efc1882a497a32d6cf872f17121b9ab0":196,"3adf519a0019beece0a5d22018cb90da1457e1bb":0,"05a9cd17ff4274de77a20b377a62d9997a937584":159,"18d0146a9e7e11f6a57e64547ec6f0205dd084ac":414,"2be7e2629b73fb61c2acb01e0f52d26183f3c1e2":947,"ea5748d63f46cf153e555e496c5e52200d2759c9":116,"45c56bbe23f25676d7342f66e1e563b39ba42215":73,"7c3d87ba637d64886376c9ed886608f2f11cfb43":0,"f56abc70d4913d44400d4d3becb8c62a76259e45":254},"tools":{"claude-code":{"name":"Claude Code","commits":12,"loc":3905,"first_seen":1756847524,"last_seen":1758228141}},"monthly":{"2025-08":{"loc":0,"attributed_loc":0},"2025-09":{"loc":18043,"attributed_loc":3905},"2025-12":{"loc":1162,"attributed_loc":0},"2026-03":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":1.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1757167559.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"GEMINI.md (gemini configuration)","ref":"GEMINI.md","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/GEMINI.md","weight":0.5}],"data":{"artifacts":[{"tool":"gemini","path":"GEMINI.md","added_at":1757167559}],"workflows":[],"tools":["gemini"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":20.0,"flagged_units":3.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":19205.0,"flagged_loc":7300.0,"flagged_loc_share":0.38010934652434264,"max_loc_per_hour":613.5,"median_loc_per_hour":236.75,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"2,454 lines of first-party code in ~4.0h (614 lines/hour, 1 commit session)","ref":"6a6ed45c9ba7457c15ebf6cfebe95a8ee10838dd","url":"https://github.com/The-Nils/LineMaker/commit/6a6ed45c9ba7457c15ebf6cfebe95a8ee10838dd","weight":0.18405000000000002},{"kind":"velocity-burst","description":"2,308 lines of first-party code in ~4.4h (526 lines/hour, 2 commit session)","ref":"f56abc70d4913d44400d4d3becb8c62a76259e45","url":"https://github.com/The-Nils/LineMaker/commit/f56abc70d4913d44400d4d3becb8c62a76259e45","weight":0.15767221203112153},{"kind":"velocity-burst","description":"2,538 lines of first-party code in ~5.1h (502 lines/hour, 3 commit session)","ref":"063c17b493888c432533afb387a15fcd9b7cd69c","url":"https://github.com/The-Nils/LineMaker/commit/063c17b493888c432533afb387a15fcd9b7cd69c","weight":0.15066454130709614}],"data":{"flagged_loc_by_commit":{"e95d9376a26197a74a4f799a2e1e63bb32420c54":1746,"ecd98a34efc1882a497a32d6cf872f17121b9ab0":196,"063c17b493888c432533afb387a15fcd9b7cd69c":596,"afe5574e01cbfb846bfd6766178b4fb401d134e8":2054,"f56abc70d4913d44400d4d3becb8c62a76259e45":254,"6a6ed45c9ba7457c15ebf6cfebe95a8ee10838dd":2454},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":12027.0,"index":0.249,"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":6.0,"per_kloc:emoji_in_code":0.499,"files:emoji_in_code":2.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":51.0,"findings_high":26.0,"findings_medium":23.0,"findings_low":2.0,"weighted_findings":25.375,"scanned_lines":12027.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"fieldlines/script.js","line":458,"fingerprint":"javascript.browser.security.insecure-document-method:fieldlines/script.js:458"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `layerItem.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"fieldlines/script.js","line":458,"fingerprint":"javascript.browser.security.insecure-innerhtml:fieldlines/script.js:458"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"hatchmaker/script.js","line":475,"fingerprint":"javascript.browser.security.insecure-document-method:hatchmaker/script.js:475"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `row.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"hatchmaker/script.js","line":475,"fingerprint":"javascript.browser.security.insecure-innerhtml:hatchmaker/script.js:475"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"kaleidoscope/script.js","line":317,"fingerprint":"javascript.browser.security.insecure-document-method:kaleidoscope/script.js:317"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `layerItem.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"kaleidoscope/script.js","line":317,"fingerprint":"javascript.browser.security.insecure-innerhtml:kaleidoscope/script.js:317"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":260,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:260"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `title.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":260,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:260"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":278,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:278"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `offsetXRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":278,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:278"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":289,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:289"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `offsetYRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":289,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:289"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":300,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:300"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `angleRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":300,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:300"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":315,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:315"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `skewRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":315,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:315"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":326,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:326"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `lineSpacingRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":326,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:326"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":338,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:338"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `whitePointRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":338,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:338"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":348,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:348"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `colorRow.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":348,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:348"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":912,"fingerprint":"javascript.browser.security.insecure-document-method:moiremaker/script.js:912"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `layer.group.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"moiremaker/script.js","line":912,"fingerprint":"javascript.browser.security.insecure-innerhtml:moiremaker/script.js:912"},{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"pipemaze/script.js","line":1526,"fingerprint":"javascript.browser.security.insecure-document-method:pipemaze/script.js:1526"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `layerItem.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"pipemaze/script.js","line":1526,"fingerprint":"javascript.browser.security.insecure-innerhtml:pipemaze/script.js:1526"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"fieldlines/script.js","line":458,"fingerprint":"javascript.lang.security.html-in-template-string:fieldlines/script.js:458"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"fieldlines/script.js","line":1306,"fingerprint":"javascript.lang.security.html-in-template-string:fieldlines/script.js:1306"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"fieldlines/script.js","line":1308,"fingerprint":"javascript.lang.security.html-in-template-string:fieldlines/script.js:1308"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"fieldlines/script.js","line":1331,"fingerprint":"javascript.lang.security.html-in-template-string:fieldlines/script.js:1331"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"hatchmaker/script.js","line":475,"fingerprint":"javascript.lang.security.html-in-template-string:hatchmaker/script.js:475"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"hatchmaker/script.js","line":1321,"fingerprint":"javascript.lang.security.html-in-template-string:hatchmaker/script.js:1321"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"hatchmaker/script.js","line":1509,"fingerprint":"javascript.lang.security.html-in-template-string:hatchmaker/script.js:1509"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"kaleidoscope/script.js","line":317,"fingerprint":"javascript.lang.security.html-in-template-string:kaleidoscope/script.js:317"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":269,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:269"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1127,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1127"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1157,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1157"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1169,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1169"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1333,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1333"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1338,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1338"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1359,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1359"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"moiremaker/script.js","line":1365,"fingerprint":"javascript.lang.security.html-in-template-string:moiremaker/script.js:1365"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"pipemaze/script.js","line":1802,"fingerprint":"javascript.lang.security.html-in-template-string:pipemaze/script.js:1802"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-fs-filename","severity":"medium","message":"Detected that function argument `filePath` has entered the fs module. An attacker could potentially control the location of this file, to include going backwards in the directory with '../'. To address this, ensure that user-controlled variables in file paths are validated. [confidence low]","path":"server.js","line":27,"fingerprint":"javascript.lang.security.audit.detect-non-literal-fs-filename:server.js:27"},{"rule_id":"opengrep/javascript.lang.security.audit.path-traversal.path-join-resolve-traversal","severity":"medium","message":"Detected possible user input going into a `path.join` or `path.resolve` function. This could possibly lead to a path traversal vulnerability,  where the attacker can access arbitrary files stored in the file system. Instead, be sure to sanitize or validate user input first. [confidence low]","path":"server.js","line":62,"fingerprint":"javascript.lang.security.audit.path-traversal.path-join-resolve-traversal:server.js:62"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"svg2gcode/script.js","line":1216,"fingerprint":"javascript.lang.security.html-in-template-string:svg2gcode/script.js:1216"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"svg2gcode/script.js","line":1233,"fingerprint":"javascript.lang.security.html-in-template-string:svg2gcode/script.js:1233"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"svg2gcode/script.js","line":1261,"fingerprint":"javascript.lang.security.html-in-template-string:svg2gcode/script.js:1261"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"svg2gcode/script.js","line":1274,"fingerprint":"javascript.lang.security.html-in-template-string:svg2gcode/script.js:1274"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"moiremaker/script.js","line":699,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:moiremaker/script.js:699"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-formatstring","severity":"low","message":"Detected string concatenation with a non-literal variable in a util.format / console.log function. If an attacker injects a format specifier in the string, it will forge the log message. Try to use constant values for the format string. [confidence low]","path":"pipemaze/script.js","line":71,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:pipemaze/script.js:71"}],"evidence":[],"data":{"rulesets":["javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"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":0.0,"signed_commit_share":0.0444,"unpinned_manifests":1.0},"findings":[],"evidence":[{"kind":"posture","description":"package.json has no lockfile alongside it (unpinned dependencies)","ref":"package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":864.0,"function_nloc":9663.0,"mean_ccn":2.65,"p90_ccn":6.0,"complex_functions":7.0,"long_functions":3.0,"many_param_functions":2.0,"risky_nloc_share":0.0782},"findings":[],"evidence":[{"kind":"complex-function","description":"applyConfiguration in hatchmaker/script.js: complexity 34, 65 lines","ref":"hatchmaker/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/hatchmaker/script.js#L1866","weight":0.5666666666666667},{"kind":"complex-function","description":"generateToolpath in svg2gcode/script.js: complexity 27, 160 lines","ref":"svg2gcode/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/svg2gcode/script.js#L762","weight":0.45},{"kind":"complex-function","description":"renderPreview in svg2gcode/script.js: complexity 27, 85 lines","ref":"svg2gcode/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/svg2gcode/script.js#L1042","weight":0.45},{"kind":"complex-function","description":"extractGeometry in svg2gcode/script.js: complexity 20, 96 lines","ref":"svg2gcode/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/svg2gcode/script.js#L493","weight":0.3333333333333333},{"kind":"complex-function","description":"drawPolyline in gcodeGenerator.js: complexity 19, 40 lines","ref":"gcodeGenerator.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/gcodeGenerator.js#L202","weight":0.31666666666666665},{"kind":"complex-function","description":"applyConfiguration in fieldlines/script.js: complexity 18, 50 lines","ref":"fieldlines/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/fieldlines/script.js#L1196","weight":0.3},{"kind":"complex-function","description":"beginProgram in gcodeGenerator.js: complexity 18, 36 lines","ref":"gcodeGenerator.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/gcodeGenerator.js#L37","weight":0.3},{"kind":"complex-function","description":"processChannelChunked in hatchmaker/script.js: complexity 7, 102 lines","ref":"hatchmaker/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/hatchmaker/script.js#L879","weight":0.11666666666666667},{"kind":"complex-function","description":"recompute in svg2gcode/script.js: complexity 7, 122 lines","ref":"svg2gcode/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/svg2gcode/script.js#L355","weight":0.11666666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":8409.0,"duplicated_lines":809.0,"duplicated_share":0.0962,"files":11.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: CurveEditor.js:317 and fieldlines/script.js:122","ref":"CurveEditor.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/CurveEditor.js#L317","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: configManager.js:162 and configManager.js:300","ref":"configManager.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/configManager.js#L162","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: configManager.js:528 and hatchmaker/script.js:1526","ref":"configManager.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/configManager.js#L528","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: fieldlines/script.js:253 and fieldlines/script.js:297","ref":"fieldlines/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/fieldlines/script.js#L253","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: fieldlines/script.js:281 and kaleidoscope/script.js:537","ref":"fieldlines/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/fieldlines/script.js#L281","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: fieldlines/script.js:355 and moiremaker/script.js:158","ref":"fieldlines/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/fieldlines/script.js#L355","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: gcodeGenerator.js:331 and svg2gcode/script.js:974","ref":"gcodeGenerator.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/gcodeGenerator.js#L331","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: hatchmaker/script.js:69 and moiremaker/script.js:28","ref":"hatchmaker/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/hatchmaker/script.js#L69","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: hatchmaker/script.js:606 and hatchmaker/script.js:650","ref":"hatchmaker/script.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/hatchmaker/script.js#L606","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: interactiveCanvas.js:207 and interactiveCanvas.js:284","ref":"interactiveCanvas.js","url":"https://github.com/The-Nils/LineMaker/blob/ff5aacd5a592c54a65821d14e6a512bd1f743c93/interactiveCanvas.js#L207","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":28.0,"weighted_findings":26.5,"scanned_lines":12027.0,"category:best-practice":26.0,"category:correctness":2.0},"findings":[{"rule_id":"opengrep/javascript.lang.best-practice.javascript-confirm","severity":"medium","message":"found confirm() call; should this be in production code?","path":"configManager.js","line":342,"fingerprint":"javascript.lang.best-practice.javascript-confirm:configManager.js:342"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"configManager.js","line":507,"fingerprint":"javascript.lang.best-practice.javascript-alert:configManager.js:507"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-confirm","severity":"medium","message":"found confirm() call; should this be in production code?","path":"configManager.js","line":563,"fingerprint":"javascript.lang.best-practice.javascript-confirm:configManager.js:563"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-confirm","severity":"medium","message":"found confirm() call; should this be in production code?","path":"configManager.js","line":573,"fingerprint":"javascript.lang.best-practice.javascript-confirm:configManager.js:573"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"configManager.js","line":588,"fingerprint":"javascript.lang.best-practice.javascript-alert:configManager.js:588"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-prompt","severity":"medium","message":"found prompt() call; should this be in production code?","path":"fieldlines/script.js","line":1112,"fingerprint":"javascript.lang.best-practice.javascript-prompt:fieldlines/script.js:1112"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"fieldlines/script.js","line":1127,"fingerprint":"javascript.lang.best-practice.javascript-alert:fieldlines/script.js:1127"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"fieldlines/script.js","line":1130,"fingerprint":"javascript.lang.best-practice.javascript-alert:fieldlines/script.js:1130"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"fieldlines/script.js","line":1277,"fingerprint":"javascript.lang.best-practice.javascript-alert:fieldlines/script.js:1277"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1624,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1624"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1680,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1680"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1685,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1685"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1697,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1697"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1751,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1751"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-prompt","severity":"medium","message":"found prompt() call; should this be in production code?","path":"hatchmaker/script.js","line":1755,"fingerprint":"javascript.lang.best-practice.javascript-prompt:hatchmaker/script.js:1755"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"hatchmaker/script.js","line":1781,"fingerprint":"javascript.lang.best-practice.javascript-alert:hatchmaker/script.js:1781"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"moiremaker/script.js","line":1392,"fingerprint":"javascript.lang.best-practice.javascript-alert:moiremaker/script.js:1392"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-prompt","severity":"medium","message":"found prompt() call; should this be in production code?","path":"moiremaker/script.js","line":1396,"fingerprint":"javascript.lang.best-practice.javascript-prompt:moiremaker/script.js:1396"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"moiremaker/script.js","line":1422,"fingerprint":"javascript.lang.best-practice.javascript-alert:moiremaker/script.js:1422"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":1719,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:1719"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":1833,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:1833"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":1896,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:1896"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":1906,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:1906"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":1938,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:1938"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":2047,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:2047"},{"rule_id":"opengrep/javascript.lang.best-practice.javascript-alert","severity":"medium","message":"found alert() call; should this be in production code?","path":"pipemaze/script.js","line":2049,"fingerprint":"javascript.lang.best-practice.javascript-alert:pipemaze/script.js:2049"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"pipemaze/script.js","line":1845,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:pipemaze/script.js:1845"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"pipemaze/script.js","line":1845,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:pipemaze/script.js:1845"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":12027.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":32.0},"findings":[],"evidence":[],"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":0.0,"readme_lines":98.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}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":2972.0,"other_lines":9055.0,"files_blamed":11.0,"blame_failures":0.0,"quality:ai_findings":10.0,"quality:ai_per_kloc":3.365,"quality:other_findings":18.0,"quality:other_per_kloc":1.988,"quality:ratio":1.69,"security:ai_findings":33.0,"security:ai_per_kloc":11.104,"security:other_findings":18.0,"security:other_per_kloc":1.988,"security:ratio":5.59},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}