{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:43:49.908540Z","repo":{"ref":{"host":"github.com","owner":"MuzafferH","name":"prisma-decision-engine"},"default_branch":"main","clone_url":"https://github.com/MuzafferH/prisma-decision-engine.git","html_url":"https://github.com/MuzafferH/prisma-decision-engine","description":"PRISMA — Decision intelligence engine. 1,000 futures. One decision.","stars":5,"forks":1,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":818,"primary_language":"JavaScript","license_spdx":"MIT","created_at":"2026-02-11T22:12:19Z","pushed_at":"2026-02-21T05:33:21Z","security_policy_url":null,"distribution":{"owner_created_at":"2026-01-28T17:32:48Z","owner_type":"User","release_assets":[]}},"commit_sha":"9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6","profile":{"lines_by_language":{"JavaScript":10899},"files_by_category":{"source":21,"docs":17,"config":13,"other":11,"binary":3,"generated":1},"source_lines":10899,"test_lines":0},"pillars":{"ai_provenance":{"score":92.6,"confidence":0.92,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.9259,"suspected_share":0.0741,"estimated_share":0.9259,"ai_artifacts":1.0,"flagged_work_units":1.0,"flagged_releases":null},"summary":"Explicit AI attribution on 93% of first-party code added; an estimated 93% including velocity signals."},"quality":{"score":36.0,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":32.1,"duplication":28.2,"lint":89.7,"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; 38% of function code in complex or long functions; 21% duplicated lines. Weakest area: testing."},"security":{"score":86.5,"confidence":0.85,"coverage":1.0,"label":"strong","breakdown":{"secrets":100.0,"sast":99.2,"dependencies":100.0,"ci_actions":null,"posture":0.0,"scorecard":null},"summary":"Security posture is strong: no high-impact 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":"ok","tool_version":null,"metrics":{"declared":1.0,"checked":1.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":88.0,"attributed_commits":82.0,"attributed_commit_share":0.9318181818181818,"effective_loc":13205.0,"attributed_loc":12226.0,"attributed_loc_share":0.9258614161302537,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 82 attributed commits, 12,226 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8303a8f0d9baac7b3e69b7afbbafa0c545c8c882","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/8303a8f0d9baac7b3e69b7afbbafa0c545c8c882","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0f113b88c2b32f84cf93fb854fc8c0c2a0bbe056","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/0f113b88c2b32f84cf93fb854fc8c0c2a0bbe056","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c9c0bb3fa10842da2788ec022c5c3f0b0273962b","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/c9c0bb3fa10842da2788ec022c5c3f0b0273962b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9cc7f87dae181751bfa3fa11840b472a1135b61d","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/9cc7f87dae181751bfa3fa11840b472a1135b61d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"dc9c6e34e8a131e279fe69d67b9a923a85ff6366","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/dc9c6e34e8a131e279fe69d67b9a923a85ff6366","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d3c7f9e1bdea88ce2c9fb0d2d7cf24a5bda5c156","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/d3c7f9e1bdea88ce2c9fb0d2d7cf24a5bda5c156","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3d46af099f4af051c59db71a76bf50743487762d","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/3d46af099f4af051c59db71a76bf50743487762d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"1fbc1de8447e396564e3add3ff78d8f9e4e18976","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/1fbc1de8447e396564e3add3ff78d8f9e4e18976","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4122efa884ef5003d91492175f6a6928e773a9b7","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/4122efa884ef5003d91492175f6a6928e773a9b7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8fdafeadfff92c55ae7c9cdded05cbef3972a43f","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/8fdafeadfff92c55ae7c9cdded05cbef3972a43f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"74f4913a4cd3d82473e5855ba2b14856cf12f489","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/74f4913a4cd3d82473e5855ba2b14856cf12f489","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4647e29079010c5fbfe64b82dff3749d412595e4","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/4647e29079010c5fbfe64b82dff3749d412595e4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"49d5324f3ed7e695c1bc358faae42ae1db9c5ee9","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/49d5324f3ed7e695c1bc358faae42ae1db9c5ee9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f5fe99f5c65a582c2b99dee76c65d0fed88dbc32","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/f5fe99f5c65a582c2b99dee76c65d0fed88dbc32","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6a27c2eea58c806117ba405f6fc13ed6e104c2dd","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/6a27c2eea58c806117ba405f6fc13ed6e104c2dd","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b57855994b9d089275957324ff7f4dd21a8f59f9","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/b57855994b9d089275957324ff7f4dd21a8f59f9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6a98554aeb3b1c9556255f2adf925fdff1d5ff5e","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/6a98554aeb3b1c9556255f2adf925fdff1d5ff5e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"817e2dd8b9962a6de8bbe5f2bad0650943c0aef7","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/817e2dd8b9962a6de8bbe5f2bad0650943c0aef7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"67ff9182733508cd58dfe06434a103f3e33efda1","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/67ff9182733508cd58dfe06434a103f3e33efda1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f9eea1b4478a82d80800156e728bc7163e98688b","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/f9eea1b4478a82d80800156e728bc7163e98688b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"441a13d59f8347080b7e715bfebb1a491632bc6a","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/441a13d59f8347080b7e715bfebb1a491632bc6a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8c0c262fd2dfcd0916b695747b66dd1285d32ca4","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/8c0c262fd2dfcd0916b695747b66dd1285d32ca4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"12bad422eee441ef1587ac7a88e07266225223ca","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/12bad422eee441ef1587ac7a88e07266225223ca","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"29ee2032dd2844d5d1632c55f34b8db64b849a8e","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/29ee2032dd2844d5d1632c55f34b8db64b849a8e","weight":0.9}],"data":{"attributed_loc_by_commit":{"6223ab4c48923c826dc3527b7013c921523b8904":371,"07974ef91666509edf329883b5ae141e0a0c5af1":319,"2791cac59f5f0d576379051adc9c4035d13e0d24":289,"bf89a0f12e1ec2683a9f81710c9368926656ff42":535,"eab941b75e1c4662e2ae9b88cf6d41d67e70b09f":0,"5aebd26fbfa23131dda3215f6539093412ff7bc1":542,"e04026791af55ae460d20fe75add1ce0f7ae9eb5":0,"377e9444e22a7518799efa5415dd8d23c0d71c27":604,"269377c5136f4f49f330020c180127331b5f6e92":770,"79d0da296e9bc0cb9e53fc32d4f4df929fc03743":122,"03771bc93222ae625130ce2934f41a75802648c0":1232,"f94171afb5864347dc6e12646ecea95cda42e01e":178,"9900888d8afcbd58b78e18ea947872b5f779e7ca":2345,"b7c30fd06ea7ea9fe604353685025c82c93599e9":219,"7e92b40f59b90f17dd8912090b9922ff450eb808":74,"cafdaf58f0095ed422ccd91c4433711f8a5b90e9":28,"cdf70d4385c91db3e8b670f4dbaeda6145222340":7,"9db425865a973e7e98f8dbd102d84765acf0f5d1":20,"11dcb2a588c10bdfeab921bffac57b0d408ba4a2":70,"384c0125a70bd39bfa2481e4c11bb072f2051d0e":0,"34563037cb346da903ef39fc89742e05cd4eb0ee":10,"851f14c22a629d8b77184ff3b85a91beb796f7f0":2,"8e73078fdbab7b54551003b6897120ee0250f205":62,"34da320b8fc6b42ac04bcbe8c8e87f16f4397b27":17,"0852e1134234db29933279094f01256b54d88b45":413,"06fcf53010164f5ce0e6412eea997363bf90501f":1563,"73b39a328a5d6e7035637c37434834ca50e45671":192,"8b56a3b6db5939af27c85e4dc5b7c908292dab6a":390,"63f8e9b5e53feb7a73b2e3b49443da3ad9391efa":0,"2a6aae4331baa82977fdb356388fc45f953d01d5":17,"ad82ae4e44480a4ac0e5bd8bd9221ee131d51275":67,"095b7dd5c723b4a03d9786084906b5dc1b024724":8,"f974636b59a4352dde61a5664b8838f77f05dc05":0,"e17d879ee519feb38b19e1563a02748607394d26":42,"bd45439f45ad088ef6379105771f3e3668c0776a":24,"b479ca7767b2da240e96a6c076f9d8ddd2064166":0,"b383a6fd14242952aebc6ad5e5b35c30017e78f8":0,"86348d7c5bf10feaaa1cc971e017eea347818967":0,"257f5e9d305a47eba13740517ae9a410d8c9fafd":3,"a3a2bf0304af657186cee86af89fbe81e9bd914f":22,"f7bb29b56424ffa4300faf011194d8dccd1d98da":0,"a456a70229ea40cb3ad331f8a5980ef607e535dc":7,"c77d12efc2440f7d15c72a36bde0f5f339bedf66":268,"3a1fa3411f1af2684776f39545ae58c910a9fe92":0,"aa11d051f36ea19d2cefc67a5dfb9bf0dc848e51":222,"425723658dac2ecbaed4ed4ff49bb6b07a514db6":0,"d9aa31a3513492b97552ec5170be65a905528d97":0,"053b47da4bda3e7a364f222866ffec8fe69a5326":51,"44f2cc8e6618d0cb646670cc9baeced0606bc623":0,"cf27a29b4b9b98d4560782af7b86d5a7227dd59a":0,"a906ab76c62b7355dddd89e85b872635538f38f3":70,"c0cb61bf240260b2da01434d8a3e74e23ce35fcf":13,"83366322572da41d662767a64e6e9581792077cc":2,"79154c620e2421c230fb40fd61e083401a575524":0,"ee08cbd7e55d2e1dbf6f94a0c3642302ac9c9db9":539,"0371b45c8748f699c0bc028d3e7b64982c1d1d4a":0,"f3d686f9869529718b2dc0f03524b135fb00628b":85,"29ee2032dd2844d5d1632c55f34b8db64b849a8e":0,"12bad422eee441ef1587ac7a88e07266225223ca":0,"8c0c262fd2dfcd0916b695747b66dd1285d32ca4":0,"441a13d59f8347080b7e715bfebb1a491632bc6a":0,"f9eea1b4478a82d80800156e728bc7163e98688b":0,"67ff9182733508cd58dfe06434a103f3e33efda1":0,"817e2dd8b9962a6de8bbe5f2bad0650943c0aef7":0,"6a98554aeb3b1c9556255f2adf925fdff1d5ff5e":0,"b57855994b9d089275957324ff7f4dd21a8f59f9":0,"6a27c2eea58c806117ba405f6fc13ed6e104c2dd":0,"f5fe99f5c65a582c2b99dee76c65d0fed88dbc32":0,"49d5324f3ed7e695c1bc358faae42ae1db9c5ee9":0,"4647e29079010c5fbfe64b82dff3749d412595e4":0,"74f4913a4cd3d82473e5855ba2b14856cf12f489":0,"8fdafeadfff92c55ae7c9cdded05cbef3972a43f":46,"4122efa884ef5003d91492175f6a6928e773a9b7":29,"1fbc1de8447e396564e3add3ff78d8f9e4e18976":44,"3d46af099f4af051c59db71a76bf50743487762d":42,"d3c7f9e1bdea88ce2c9fb0d2d7cf24a5bda5c156":140,"dc9c6e34e8a131e279fe69d67b9a923a85ff6366":0,"9cc7f87dae181751bfa3fa11840b472a1135b61d":75,"c9c0bb3fa10842da2788ec022c5c3f0b0273962b":36,"0f113b88c2b32f84cf93fb854fc8c0c2a0bbe056":0,"8303a8f0d9baac7b3e69b7afbbafa0c545c8c882":0,"9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6":0},"tools":{"claude-code":{"name":"Claude Code","commits":82,"loc":12226,"first_seen":1770820458,"last_seen":1771652000}},"monthly":{"2026-02":{"loc":13205,"attributed_loc":12226}}},"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":1770819895.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1770819895}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":12.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":13205.0,"flagged_loc":4962.0,"flagged_loc_share":0.375766755017039,"max_loc_per_hour":1576.7675876070264,"median_loc_per_hour":231.6204609839886,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"4,962 lines of first-party code in ~3.1h (1,577 lines/hour, 8 commit session)","ref":"f94171afb5864347dc6e12646ecea95cda42e01e","url":"https://github.com/MuzafferH/prisma-decision-engine/commit/f94171afb5864347dc6e12646ecea95cda42e01e","weight":0.4730302762821079}],"data":{"flagged_loc_by_commit":{"b8fcf0229bbb2cdfddff140a35c6ed5cec78e320":979,"bf89a0f12e1ec2683a9f81710c9368926656ff42":535,"5aebd26fbfa23131dda3215f6539093412ff7bc1":542,"377e9444e22a7518799efa5415dd8d23c0d71c27":604,"269377c5136f4f49f330020c180127331b5f6e92":770,"79d0da296e9bc0cb9e53fc32d4f4df929fc03743":122,"03771bc93222ae625130ce2934f41a75802648c0":1232,"f94171afb5864347dc6e12646ecea95cda42e01e":178},"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":10899.0,"index":0.459,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":2.0,"per_kloc:placeholder":0.184,"files:placeholder":2.0,"count:emoji_in_code":2.0,"per_kloc:emoji_in_code":0.184,"files:emoji_in_code":1.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: // In a real implementation, this would evaluate the outcome formula","ref":"engines/markov.js:271","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/engines/markov.js#L271","weight":0.0},{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: // In a real implementation, this would evaluate the outcome formula","ref":"public/js/markov.js:271","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/markov.js#L271","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":4.0,"findings_high":0.0,"findings_medium":0.0,"findings_low":4.0,"weighted_findings":0.25,"scanned_lines":10899.0,"parse_errors":0.0},"findings":[{"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":"engines/carlo.js","line":165,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:engines/carlo.js:165"},{"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":"public/js/carlo.js","line":277,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:public/js/carlo.js:277"},{"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":"public/js/carlo.js","line":355,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:public/js/carlo.js:355"},{"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":"public/js/carlo.js","line":453,"fingerprint":"javascript.lang.security.audit.unsafe-formatstring:public/js/carlo.js:453"}],"evidence":[],"data":{"rulesets":["javascript"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":0.0,"vulnerabilities":0.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":0.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":0.0},"findings":[],"evidence":[],"data":{"ecosystems":["npm"]},"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":1.0,"signed_commit_share":0.0,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":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":499.0,"function_nloc":7323.0,"mean_ccn":4.43,"p90_ccn":11.0,"complex_functions":30.0,"long_functions":9.0,"many_param_functions":0.0,"risky_nloc_share":0.3783},"findings":[],"evidence":[{"kind":"complex-function","description":"handler in api/chat.js: complexity 72, 424 lines","ref":"api/chat.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/api/chat.js#L98","weight":1.0},{"kind":"complex-function","description":"Chat.handleCSVUpload in public/js/chat.js: complexity 49, 153 lines","ref":"public/js/chat.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/chat.js#L573","weight":0.8166666666666667},{"kind":"complex-function","description":"Dashboard.generateDynamicRecommendations in public/js/dashboard.js: complexity 47, 103 lines","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L1012","weight":0.7833333333333333},{"kind":"complex-function","description":"Chat.sendMessage in public/js/chat.js: complexity 45, 179 lines","ref":"public/js/chat.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/chat.js#L68","weight":0.75},{"kind":"complex-function","description":"handler in api/refine-recommendations.js: complexity 42, 84 lines","ref":"api/refine-recommendations.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/api/refine-recommendations.js#L12","weight":0.7},{"kind":"complex-function","description":"runCarlo in public/js/carlo.js: complexity 38, 112 lines","ref":"public/js/carlo.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/carlo.js#L324","weight":0.6333333333333333},{"kind":"complex-function","description":"Dashboard.runSimulation in public/js/dashboard.js: complexity 30, 97 lines","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L630","weight":0.5},{"kind":"complex-function","description":"Dashboard._renderSliderUpdate in public/js/dashboard.js: complexity 29, 69 lines","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L902","weight":0.48333333333333334},{"kind":"complex-function","description":"Dashboard.renderLayer1 in public/js/dashboard.js: complexity 28, 79 lines","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L457","weight":0.4666666666666667},{"kind":"complex-function","description":"Dashboard.mergePrismaData in public/js/dashboard.js: complexity 28, 55 lines","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L295","weight":0.4666666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":7759.0,"duplicated_lines":1638.0,"duplicated_share":0.2111,"files":21.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: api/chat.js:98 and api/refine-recommendations.js:12","ref":"api/chat.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/api/chat.js#L98","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: data/generate-samples.js:1 and public/data/generate-samples.js:1","ref":"data/generate-samples.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/data/generate-samples.js#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: engines/carlo.js:2 and public/js/carlo.js:2","ref":"engines/carlo.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/engines/carlo.js#L2","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: engines/markov.js:2 and public/js/markov.js:2","ref":"engines/markov.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/engines/markov.js#L2","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: engines/nassim.js:55 and engines/nassim.js:92","ref":"engines/nassim.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/engines/nassim.js#L55","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: engines/nassim.js:277 and public/js/nassim.js:201","ref":"engines/nassim.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/engines/nassim.js#L277","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: public/js/chart-renderer.js:313 and public/js/chart-renderer.js:357","ref":"public/js/chart-renderer.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/chart-renderer.js#L313","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: public/js/chat.js:193 and public/js/chat.js:326","ref":"public/js/chat.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/chat.js#L193","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: public/js/dashboard.js:463 and public/js/dashboard.js:907","ref":"public/js/dashboard.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/dashboard.js#L463","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: public/js/visualizations.js:476 and public/js/visualizations.js:657","ref":"public/js/visualizations.js","url":"https://github.com/MuzafferH/prisma-decision-engine/blob/9100d38c22793441d0dd27fb4ae0fdd8b30ba4b6/public/js/visualizations.js#L476","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":7.0,"weighted_findings":4.75,"scanned_lines":10899.0,"category:correctness":7.0},"findings":[{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"engines/nassim.js","line":240,"fingerprint":"javascript.lang.correctness.no-stringify-keys:engines/nassim.js:240"},{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"engines/nassim.js","line":253,"fingerprint":"javascript.lang.correctness.no-stringify-keys:engines/nassim.js:253"},{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"public/js/nassim.js","line":145,"fingerprint":"javascript.lang.correctness.no-stringify-keys:public/js/nassim.js:145"},{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"public/js/nassim.js","line":155,"fingerprint":"javascript.lang.correctness.no-stringify-keys:public/js/nassim.js:155"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"api/chat.js","line":5,"fingerprint":"javascript.lang.correctness.useless-assignment:api/chat.js:5"},{"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":"public/js/visualizations.js","line":1186,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:public/js/visualizations.js:1186"},{"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":"public/js/visualizations.js","line":1186,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:public/js/visualizations.js:1186"}],"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":10899.0,"test_ratio":0.0,"ci_files":0.0,"cochange_share":0.0,"cochange_commits":50.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":156.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":10132.0,"other_lines":767.0,"files_blamed":21.0,"blame_failures":0.0,"quality:ai_findings":5.0,"quality:ai_per_kloc":0.493,"quality:other_findings":2.0,"quality:other_per_kloc":2.608,"quality:ratio":0.19,"security:ai_findings":3.0,"security:ai_per_kloc":0.296,"security:other_findings":1.0,"security:other_per_kloc":1.304,"security:ratio":0.23},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":["unreviewed-ai-risk"]}