{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:00.897405Z","repo":{"ref":{"host":"github.com","owner":"LightForgeLabsStudio","name":"AIDE"},"default_branch":"master","clone_url":"https://github.com/LightForgeLabsStudio/AIDE.git","html_url":"https://github.com/LightForgeLabsStudio/AIDE","description":"AIDE: AI-Assisted Development Environment - Universal framework for AI-assisted software development workflows","stars":0,"forks":2,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":481,"primary_language":"Python","license_spdx":"MIT","created_at":"2025-12-11T13:46:10Z","pushed_at":"2026-10-05T15:20:21Z","security_policy_url":null,"distribution":{"owner_created_at":"2025-12-05T20:31:37Z","owner_type":"Organization","release_assets":[]}},"commit_sha":"6251d6a31fca563d508f17ddeaf065ad72fe4f18","profile":{"lines_by_language":{"Python":1636,"PowerShell":625,"Shell":459},"files_by_category":{"docs":70,"source":13,"config":6},"source_lines":2720,"test_lines":0},"pillars":{"ai_provenance":{"score":19.1,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.1908,"suspected_share":0.0,"estimated_share":0.1908,"ai_artifacts":0.0,"flagged_work_units":0.0,"flagged_releases":null,"style_index":0.919},"summary":"Explicit AI attribution on 19% of first-party code added; an estimated 19% including velocity signals."},"quality":{"score":28.9,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":24.2,"duplication":25.3,"lint":34.2,"testing":15.0,"docs":65.0,"type_safety":40.0,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 47% of function code in complex or long functions; 23% duplicated lines. Weakest area: testing."},"security":{"score":58.0,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":60.6,"dependencies":null,"ci_actions":23.2,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 4 high-severity SAST findings; 7 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":131.0,"attributed_commits":45.0,"attributed_commit_share":0.3435114503816794,"effective_loc":3946.0,"attributed_loc":753.0,"attributed_loc_share":0.19082615306639636,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 42 attributed commits, 753 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 3 attributed commits, 0 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (a50f7fcb59)","ref":"b12b41723eb539574fdaf81c1384d960a4ef22ff","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/b12b41723eb539574fdaf81c1384d960a4ef22ff","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fe45349c6615e4bc6f2d404e46c66898b7f7ae0f","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/fe45349c6615e4bc6f2d404e46c66898b7f7ae0f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"30b374810a24238c12ddeb3a5e569546dce71ba7","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/30b374810a24238c12ddeb3a5e569546dce71ba7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"bd3d6bc48c2b22808d1fbb46e46ede81b388c889","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/bd3d6bc48c2b22808d1fbb46e46ede81b388c889","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"547e0653169c886045370f2c69e7a5d20f19a557","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/547e0653169c886045370f2c69e7a5d20f19a557","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fd93cf20bf10874b950e59cfc688095c2bc0d5bd","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/fd93cf20bf10874b950e59cfc688095c2bc0d5bd","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"35c2ca4c64bdf4b8f77f04b24b4a3a7147e71798","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/35c2ca4c64bdf4b8f77f04b24b4a3a7147e71798","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"63b10284751d9cbaa2b18d454bd7731196e9875a","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/63b10284751d9cbaa2b18d454bd7731196e9875a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-authored-by: Claude'","ref":"fb43b29131c5bcec6bf835393d00c7ca9b551c2e","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/fb43b29131c5bcec6bf835393d00c7ca9b551c2e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c352a0e69ad3768c8adbbc95a7bf26e111b7040d","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/c352a0e69ad3768c8adbbc95a7bf26e111b7040d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5c33e6c8558b521820acd635ba00d8982d276e15","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/5c33e6c8558b521820acd635ba00d8982d276e15","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ecae094535e432f0917abe6eab5272ca214bca0f","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/ecae094535e432f0917abe6eab5272ca214bca0f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b6944a77475986e7dd7aba88d08c25b6654f9fec","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/b6944a77475986e7dd7aba88d08c25b6654f9fec","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"cc4b36021da291631da049a030b5fc536354ede4","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/cc4b36021da291631da049a030b5fc536354ede4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"87379711b8151361ae655ec60807455802aff51f","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/87379711b8151361ae655ec60807455802aff51f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ed43a1842424e06797d7bb694c62015e11e8a483","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/ed43a1842424e06797d7bb694c62015e11e8a483","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"895ac42d133173f4d6895b803b0793b46bcf4358","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/895ac42d133173f4d6895b803b0793b46bcf4358","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0318717e357e8e634ae58c1f5b1f619c630707c2","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/0318717e357e8e634ae58c1f5b1f619c630707c2","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: trailer 'Co-authored-by: Codex'","ref":"fc9ce4417f527460d61779e0170ca54ab1ff22aa","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/fc9ce4417f527460d61779e0170ca54ab1ff22aa","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0cedbfd7896f9ad989feb33ee54e8ace2f563ae4","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/0cedbfd7896f9ad989feb33ee54e8ace2f563ae4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7bce70c77534d0b6d99d8a5bb77ab1e722d9899b","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/7bce70c77534d0b6d99d8a5bb77ab1e722d9899b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2ceba4b876577ceb40ce6563a02c6972d4628d6b","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/2ceba4b876577ceb40ce6563a02c6972d4628d6b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a2111a1fb4ec77da7eadde9b488ac6543d1689cb","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/a2111a1fb4ec77da7eadde9b488ac6543d1689cb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a793fda80ad42243fdbca3bc0704f5985362898f","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/a793fda80ad42243fdbca3bc0704f5985362898f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8a0c09c4562d7823b8b9dd4379c1ae17cfa2cddd","url":"https://github.com/LightForgeLabsStudio/AIDE/commit/8a0c09c4562d7823b8b9dd4379c1ae17cfa2cddd","weight":0.9}],"data":{"attributed_loc_by_commit":{"623f24be78af914a4aeecf5a03d8ab328a9fd395":0,"ce0c83df60024d93643a935ea380408a0721ff45":0,"c767c05a2cd5a3a25b081c0c3082b4e1b737ab70":0,"85f2d200c971308d05a70fbaccaafdb228293c64":0,"db1c8904835944cc1c329bbbad215f4d866f527c":0,"e129de84b72f08d9e46adb3e48061288bcf98c7b":0,"518a6881ce4d21f1ea750d79321bcb3aaf233aac":0,"af25548d8f691c687391a20bb7ed64a322249e7d":0,"79d24e2b8dec3650e7233b5709cb62a75bcfb3fe":0,"7c4486608c9aefe3cbede420a372076d08aefddf":0,"3cedc41ddac90bb5af269890ea8121fecacc3c85":0,"42a0604bfd2721b722de80893b1a080d3c853b51":0,"3c15e5533bcb8f4a713bd8332d69e816841bd86d":0,"ea3dfe7aaf359ce5db6d5297760ccd33ca19bbc6":0,"7b4961fce035342c8e86545dd548517ffebb54e1":0,"2160666092a4cb427975ddbd2332d758d49fdee5":0,"bbe67dabd35cb069f5bcd99a559665907c265b86":0,"3837db331b1f1098c20cbf034cd03028a9461053":0,"d0b0e89f1e471ee314f84237c225778df76e74d8":12,"9491e16cbe6f4a84741609f3ec76f6167c70ffab":0,"8a0c09c4562d7823b8b9dd4379c1ae17cfa2cddd":0,"a793fda80ad42243fdbca3bc0704f5985362898f":0,"a2111a1fb4ec77da7eadde9b488ac6543d1689cb":0,"2ceba4b876577ceb40ce6563a02c6972d4628d6b":0,"7bce70c77534d0b6d99d8a5bb77ab1e722d9899b":208,"0cedbfd7896f9ad989feb33ee54e8ace2f563ae4":0,"fc9ce4417f527460d61779e0170ca54ab1ff22aa":0,"0318717e357e8e634ae58c1f5b1f619c630707c2":53,"895ac42d133173f4d6895b803b0793b46bcf4358":0,"ed43a1842424e06797d7bb694c62015e11e8a483":22,"87379711b8151361ae655ec60807455802aff51f":42,"cc4b36021da291631da049a030b5fc536354ede4":217,"b6944a77475986e7dd7aba88d08c25b6654f9fec":36,"ecae094535e432f0917abe6eab5272ca214bca0f":0,"5c33e6c8558b521820acd635ba00d8982d276e15":0,"c352a0e69ad3768c8adbbc95a7bf26e111b7040d":0,"fb43b29131c5bcec6bf835393d00c7ca9b551c2e":0,"63b10284751d9cbaa2b18d454bd7731196e9875a":0,"35c2ca4c64bdf4b8f77f04b24b4a3a7147e71798":163,"fd93cf20bf10874b950e59cfc688095c2bc0d5bd":0,"547e0653169c886045370f2c69e7a5d20f19a557":0,"bd3d6bc48c2b22808d1fbb46e46ede81b388c889":0,"30b374810a24238c12ddeb3a5e569546dce71ba7":0,"fe45349c6615e4bc6f2d404e46c66898b7f7ae0f":0,"b12b41723eb539574fdaf81c1384d960a4ef22ff":0},"tools":{"claude-code":{"name":"Claude Code","commits":42,"loc":753,"first_seen":1765565876,"last_seen":1789834449},"openai-codex":{"name":"OpenAI Codex","commits":3,"loc":0,"first_seen":1767382554,"last_seen":1790780565}},"monthly":{"2025-12":{"loc":99,"attributed_loc":0},"2026-01":{"loc":2736,"attributed_loc":753},"2026-02":{"loc":544,"attributed_loc":0},"2026-03":{"loc":216,"attributed_loc":0},"2026-04":{"loc":0,"attributed_loc":0},"2026-05":{"loc":242,"attributed_loc":0},"2026-06":{"loc":101,"attributed_loc":0},"2026-08":{"loc":0,"attributed_loc":0},"2026-09":{"loc":8,"attributed_loc":0},"2026-10":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":27.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":3946.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":137.6169174461163,"median_loc_per_hour":54.0,"pr_timed_units":8.0,"excluded_import_loc":0.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"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":2720.0,"index":0.919,"count:narrated_steps":1.0,"per_kloc:narrated_steps":0.368,"files:narrated_steps":1.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":3.0,"per_kloc:emoji_in_code":1.103,"files:emoji_in_code":2.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: # First, update Epic if present","ref":"tools/issue-creator/issue-creator.py:738","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L738","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":4.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":3.0,"scanned_lines":2095.0,"parse_errors":0.0},"findings":[{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/issue-creator/issue-creator.py","line":375,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/issue-creator/issue-creator.py:375"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/issue-creator/issue-creator.py","line":620,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/issue-creator/issue-creator.py:620"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/issue-creator/issue-creator.py","line":629,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/issue-creator/issue-creator.py:629"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/issue-creator/issue-creator.py","line":637,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/issue-creator/issue-creator.py:637"}],"evidence":[],"data":{"rulesets":["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":3.0,"findings":13.0,"findings_high":7.0,"findings_medium":5.0,"findings_low":1.0,"penalty":87.6},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/codex-skills.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/codex-skills.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/codex-skills.yml","line":23,"fingerprint":"unpinned-uses:.github/workflows/codex-skills.yml:23"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/codex-skills.yml","line":30,"fingerprint":"unpinned-uses:.github/workflows/codex-skills.yml:30"},{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/pr-body-check.yml","line":6,"fingerprint":"dangerous-triggers:.github/workflows/pr-body-check.yml:6"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pr-body-check.yml","line":13,"fingerprint":"unpinned-uses:.github/workflows/pr-body-check.yml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/workflow-gen-check.yml","line":11,"fingerprint":"unpinned-uses:.github/workflows/workflow-gen-check.yml:11"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/workflow-gen-check.yml","line":12,"fingerprint":"unpinned-uses:.github/workflows/workflow-gen-check.yml:12"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/codex-skills.yml","line":16,"fingerprint":"artipacked:.github/workflows/codex-skills.yml:16"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/pr-body-check.yml","line":13,"fingerprint":"artipacked:.github/workflows/pr-body-check.yml:13"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/pr-body-check.yml","line":10,"fingerprint":"excessive-permissions:.github/workflows/pr-body-check.yml:10"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/workflow-gen-check.yml","line":11,"fingerprint":"artipacked:.github/workflows/workflow-gen-check.yml:11"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/workflow-gen-check.yml","line":8,"fingerprint":"excessive-permissions:.github/workflows/workflow-gen-check.yml:8"},{"rule_id":"zizmor/superfluous-actions","severity":"info","message":"action functionality is already included by the runner [confidence high]","path":".github/workflows/codex-skills.yml","line":30,"fingerprint":"superfluous-actions:.github/workflows/codex-skills.yml:30"}],"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.1679,"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":54.0,"function_nloc":980.0,"mean_ccn":5.54,"p90_ccn":22.0,"complex_functions":6.0,"long_functions":1.0,"many_param_functions":0.0,"risky_nloc_share":0.4724},"findings":[],"evidence":[{"kind":"complex-function","description":"main in tools/issue-creator/issue-creator.py: complexity 28, 125 lines","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L865","weight":0.4666666666666667},{"kind":"complex-function","description":"process_updates in tools/issue-creator/issue-creator.py: complexity 27, 61 lines","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L690","weight":0.45},{"kind":"complex-function","description":"update_issue in tools/issue-creator/issue-creator.py: complexity 25, 58 lines","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L578","weight":0.4166666666666667},{"kind":"complex-function","description":"process_specs in tools/issue-creator/issue-creator.py: complexity 23, 52 lines","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L800","weight":0.38333333333333336},{"kind":"complex-function","description":"main in tools/migrate-type-labels.py: complexity 23, 74 lines","ref":"tools/migrate-type-labels.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/migrate-type-labels.py#L167","weight":0.38333333333333336},{"kind":"complex-function","description":"parse_spec_file in tools/issue-creator/issue-creator.py: complexity 22, 93 lines","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L222","weight":0.36666666666666664}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":1990.0,"duplicated_lines":456.0,"duplicated_share":0.2291,"files":13.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: skills/install-claude.ps1:4 and skills/install-codex.ps1:4","ref":"skills/install-claude.ps1","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/skills/install-claude.ps1#L4","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: skills/install-claude.sh:8 and skills/install-codex.sh:8","ref":"skills/install-claude.sh","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/skills/install-claude.sh#L8","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: skills/install-claude.sh:109 and skills/install-qwen.sh:109","ref":"skills/install-claude.sh","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/skills/install-claude.sh#L109","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: tools/issue-creator/issue-creator.py:43 and tools/set-issue-type.py:16","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L43","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: tools/issue-creator/issue-creator.py:44 and tools/migrate-type-labels.py:27","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L44","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: tools/issue-creator/issue-creator.py:346 and tools/issue-creator/issue-creator.py:580","ref":"tools/issue-creator/issue-creator.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/issue-creator/issue-creator.py#L346","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: tools/migrate-type-labels.py:28 and tools/set-issue-type.py:18","ref":"tools/migrate-type-labels.py","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/migrate-type-labels.py#L28","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: tools/validate_pr_body.ps1:102 and tools/validate_pr_body.ps1:116","ref":"tools/validate_pr_body.ps1","url":"https://github.com/LightForgeLabsStudio/AIDE/blob/6251d6a31fca563d508f17ddeaf065ad72fe4f18/tools/validate_pr_body.ps1#L102","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":9.0,"weighted_findings":9.0,"scanned_lines":2095.0,"category:best-practice":2.0,"category:maintainability":7.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"tools/issue-creator/issue-creator.py","line":146,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/issue-creator/issue-creator.py:146"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant s.is_epic() because s.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":705,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:705"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant s.is_epic() because s.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":717,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:717"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant s.is_epic() because s.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":735,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:735"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant spec.is_epic() because spec.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":747,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:747"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant spec.is_epic() because spec.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":811,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:811"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant s.is_epic() because s.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":856,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:856"},{"rule_id":"opengrep/python.lang.maintainability.is-function-without-parentheses","severity":"medium","message":"Is \"is_epic\" a function or an attribute? If it is a function, you may have meant spec.is_epic() because spec.is_epic is always true.","path":"tools/issue-creator/issue-creator.py","line":1000,"fingerprint":"python.lang.maintainability.is-function-without-parentheses:tools/issue-creator/issue-creator.py:1000"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"tools/set-issue-type.py","line":36,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/set-issue-type.py:36"}],"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":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":2720.0,"test_ratio":0.0,"ci_files":3.0,"cochange_share":0.0,"cochange_commits":32.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/codex-skills.yml","ref":".github/workflows/codex-skills.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pr-body-check.yml","ref":".github/workflows/pr-body-check.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/workflow-gen-check.yml","ref":".github/workflows/workflow-gen-check.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":0.0,"readme_lines":165.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":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":1.0,"escapes_per_kloc":0.611},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":573.0,"other_lines":2147.0,"files_blamed":13.0,"blame_failures":0.0,"quality:ai_findings":5.0,"quality:ai_per_kloc":8.726,"quality:other_findings":4.0,"quality:other_per_kloc":1.863,"quality:ratio":4.68,"security:ai_findings":2.0,"security:ai_per_kloc":3.49,"security:other_findings":2.0,"security:other_per_kloc":0.932,"security:ratio":3.74},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}