{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:00.827847Z","repo":{"ref":{"host":"github.com","owner":"Koschi13","name":"nixos-configuration"},"default_branch":"master","clone_url":"https://github.com/Koschi13/nixos-configuration.git","html_url":"https://github.com/Koschi13/nixos-configuration","description":"My NixOS configuration","stars":3,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":2138,"primary_language":"Python","license_spdx":null,"created_at":"2023-10-07T22:51:53Z","pushed_at":"2026-11-13T11:18:19Z","security_policy_url":null,"distribution":{"owner_created_at":"2016-02-15T12:36:03Z","owner_type":"User","release_assets":[]}},"commit_sha":"ba68752ea4b9b1b5c48ea8e21680d91fdd765d3f","profile":{"lines_by_language":{"Python":4806,"Lua":426,"Shell":412,"Rust":93},"files_by_category":{"other":161,"source":39,"config":18,"docs":14,"binary":7,"test":7,"generated":1},"source_lines":4276,"test_lines":1461},"pillars":{"ai_provenance":{"score":68.6,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.6861,"suspected_share":0.0,"estimated_share":0.6861,"ai_artifacts":0.0,"flagged_work_units":1.0,"flagged_releases":null,"style_index":0.0},"summary":"Explicit AI attribution on 69% of first-party code added; an estimated 69% including velocity signals."},"quality":{"score":55.5,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":78.7,"duplication":85.7,"lint":12.9,"testing":53.8,"docs":40.0,"type_safety":40.0,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.34, no CI test run detected; 8% of function code in complex or long functions; 3% duplicated lines. Weakest area: lint."},"security":{"score":66.5,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":21.1,"dependencies":95.1,"ci_actions":64.1,"posture":20.0,"scorecard":null},"summary":"Security posture is weak: 1 known vulnerabilities in 1 dependencies; 3 high-severity SAST findings; 2 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":12.0,"checked":12.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":470.0,"attributed_commits":14.0,"attributed_commit_share":0.029787234042553193,"effective_loc":6831.0,"attributed_loc":4687.0,"attributed_loc_share":0.6861367296149905,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 14 attributed commits, 4,687 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4","url":"https://github.com/Koschi13/nixos-configuration/commit/5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5d858498ed44f8d8e3d80704b548d300a55f9799","url":"https://github.com/Koschi13/nixos-configuration/commit/5d858498ed44f8d8e3d80704b548d300a55f9799","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"693c3223465ab59939b65581e0d25856dfd100fa","url":"https://github.com/Koschi13/nixos-configuration/commit/693c3223465ab59939b65581e0d25856dfd100fa","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"af3be6a7b15b0a7ab7fef06732c90ce9ea1c26f8","url":"https://github.com/Koschi13/nixos-configuration/commit/af3be6a7b15b0a7ab7fef06732c90ce9ea1c26f8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"24c3c97cba6e8a40812af1506911cea0b6553911","url":"https://github.com/Koschi13/nixos-configuration/commit/24c3c97cba6e8a40812af1506911cea0b6553911","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"98959440e0269f9419f0f6b844074da5919a8246","url":"https://github.com/Koschi13/nixos-configuration/commit/98959440e0269f9419f0f6b844074da5919a8246","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a7b2d653e203670aa91262a8008f304ddfdc182c","url":"https://github.com/Koschi13/nixos-configuration/commit/a7b2d653e203670aa91262a8008f304ddfdc182c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9d2401d87903da79cbcf21012f3b74973bfae371","url":"https://github.com/Koschi13/nixos-configuration/commit/9d2401d87903da79cbcf21012f3b74973bfae371","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"eaf61d367474b2731fa05eb8a11c479b4d19d049","url":"https://github.com/Koschi13/nixos-configuration/commit/eaf61d367474b2731fa05eb8a11c479b4d19d049","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"11f33a9f74d53fb54197403e6e669c895bc2e2a6","url":"https://github.com/Koschi13/nixos-configuration/commit/11f33a9f74d53fb54197403e6e669c895bc2e2a6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e7105e8008c91b9ed2328056a930857694f40484","url":"https://github.com/Koschi13/nixos-configuration/commit/e7105e8008c91b9ed2328056a930857694f40484","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"96e155162c802b240da51acea1534c629f74b0b8","url":"https://github.com/Koschi13/nixos-configuration/commit/96e155162c802b240da51acea1534c629f74b0b8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"2c4297fcec9da68c496b69c38c433cf49e752b83","url":"https://github.com/Koschi13/nixos-configuration/commit/2c4297fcec9da68c496b69c38c433cf49e752b83","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c17c5c3cbb9bbd98ad124ad7789b7a07230fa16b","url":"https://github.com/Koschi13/nixos-configuration/commit/c17c5c3cbb9bbd98ad124ad7789b7a07230fa16b","weight":0.9}],"data":{"attributed_loc_by_commit":{"c17c5c3cbb9bbd98ad124ad7789b7a07230fa16b":0,"96e155162c802b240da51acea1534c629f74b0b8":0,"2c4297fcec9da68c496b69c38c433cf49e752b83":0,"24c3c97cba6e8a40812af1506911cea0b6553911":15,"98959440e0269f9419f0f6b844074da5919a8246":0,"a7b2d653e203670aa91262a8008f304ddfdc182c":0,"9d2401d87903da79cbcf21012f3b74973bfae371":2,"eaf61d367474b2731fa05eb8a11c479b4d19d049":0,"11f33a9f74d53fb54197403e6e669c895bc2e2a6":0,"e7105e8008c91b9ed2328056a930857694f40484":0,"693c3223465ab59939b65581e0d25856dfd100fa":0,"af3be6a7b15b0a7ab7fef06732c90ce9ea1c26f8":0,"5d858498ed44f8d8e3d80704b548d300a55f9799":0,"5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4":4670},"tools":{"claude-code":{"name":"Claude Code","commits":14,"loc":4687,"first_seen":1793691384,"last_seen":1794558701}},"monthly":{"2022-10":{"loc":0,"attributed_loc":0},"2023-10":{"loc":95,"attributed_loc":0},"2023-11":{"loc":4,"attributed_loc":0},"2024-01":{"loc":24,"attributed_loc":0},"2024-02":{"loc":40,"attributed_loc":0},"2024-03":{"loc":0,"attributed_loc":0},"2024-04":{"loc":0,"attributed_loc":0},"2024-05":{"loc":0,"attributed_loc":0},"2024-06":{"loc":0,"attributed_loc":0},"2024-07":{"loc":134,"attributed_loc":0},"2024-08":{"loc":0,"attributed_loc":0},"2024-09":{"loc":0,"attributed_loc":0},"2024-10":{"loc":0,"attributed_loc":0},"2024-11":{"loc":0,"attributed_loc":0},"2024-12":{"loc":0,"attributed_loc":0},"2025-01":{"loc":1,"attributed_loc":0},"2025-02":{"loc":19,"attributed_loc":0},"2025-03":{"loc":213,"attributed_loc":0},"2025-04":{"loc":0,"attributed_loc":0},"2025-05":{"loc":0,"attributed_loc":0},"2025-06":{"loc":17,"attributed_loc":0},"2025-07":{"loc":255,"attributed_loc":0},"2025-08":{"loc":119,"attributed_loc":0},"2025-09":{"loc":13,"attributed_loc":0},"2025-10":{"loc":0,"attributed_loc":0},"2025-11":{"loc":0,"attributed_loc":0},"2025-12":{"loc":21,"attributed_loc":0},"2026-01":{"loc":11,"attributed_loc":0},"2026-02":{"loc":0,"attributed_loc":0},"2026-03":{"loc":0,"attributed_loc":0},"2026-04":{"loc":798,"attributed_loc":0},"2026-05":{"loc":0,"attributed_loc":0},"2026-06":{"loc":0,"attributed_loc":0},"2026-07":{"loc":1,"attributed_loc":0},"2026-08":{"loc":0,"attributed_loc":0},"2026-09":{"loc":0,"attributed_loc":0},"2026-10":{"loc":36,"attributed_loc":0},"2026-11":{"loc":5030,"attributed_loc":4687}}},"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":49.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":6831.0,"flagged_loc":4670.0,"flagged_loc_share":0.6836480749524227,"max_loc_per_hour":1167.5,"median_loc_per_hour":36.75,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"4,670 lines of first-party code in ~4.0h (1,168 lines/hour, 1 commit session)","ref":"5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4","url":"https://github.com/Koschi13/nixos-configuration/commit/5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4","weight":0.35025}],"data":{"flagged_loc_by_commit":{"5f6ce732c3bf4bcf6a399d678ae8248a89a72ad4":4670},"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":4276.0,"index":0.0,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":0.0,"per_kloc:emoji_in_code":0.0,"files:emoji_in_code":0.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":26.0,"findings_high":3.0,"findings_medium":23.0,"findings_low":0.0,"weighted_findings":17.1,"scanned_lines":3850.0,"parse_errors":3.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":"modules/services/theme-switch [n]/theme.py","line":67,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:modules/services/theme-switch [n]/theme.py:67"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args","severity":"high","message":"Detected subprocess function 'run' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium]","path":"modules/services/theme-switch [n]/theme.py","line":68,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-tainted-env-args:modules/services/theme-switch [n]/theme.py:68"},{"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":"modules/services/theme-switch [n]/theme.py","line":73,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:modules/services/theme-switch [n]/theme.py:73"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/base.html","line":27,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/base.html:27"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html","line":16,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html:16"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html","line":26,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html:26"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html","line":36,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/login.html:36"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html","line":20,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html:20"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html","line":45,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html:45"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html","line":108,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/preview.html:108"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html","line":18,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html:18"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html","line":23,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html:23"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html","line":33,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/result.html:33"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/accounts.html","line":19,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/accounts.html:19"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/accounts.html","line":32,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/accounts.html:32"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/names.html","line":4,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/names.html:4"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/processors.html","line":23,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/processors.html:23"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/processors.html","line":37,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/processors.html:37"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html","line":13,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html:13"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html","line":18,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html:18"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html","line":29,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/profile.html:29"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html","line":67,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html:67"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html","line":74,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html:74"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html","line":79,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html:79"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html","line":93,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/settings/rules.html:93"},{"rule_id":"opengrep/python.django.security.django-no-csrf-token","severity":"medium","message":"Manually-created forms in django templates should specify a csrf_token to prevent CSRF attacks. [confidence medium]","path":"packages/firefly-importer-ing/src/firefly_importer_ing/templates/upload.html","line":6,"fingerprint":"python.django.security.django-no-csrf-token:packages/firefly-importer-ing/src/firefly_importer_ing/templates/upload.html:6"}],"evidence":[],"data":{"rulesets":["python","bash","rust"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":1.0,"vulnerabilities":1.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":0.0,"vulns_low":0.0,"vulns_unknown":1.0,"penalty":3.0},"findings":[{"rule_id":"osv/RUSTSEC-2026-0190","severity":"medium","message":"anyhow@1.0.98 (crates.io) is affected by RUSTSEC-2026-0190","path":"packages/compute_aspect_ratio/Cargo.lock","line":null,"fingerprint":"anyhow@1.0.98 (crates.io):RUSTSEC-2026-0190"}],"evidence":[],"data":{"ecosystems":["crates.io"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":4.0,"findings_high":2.0,"findings_medium":1.0,"findings_low":1.0,"penalty":26.7},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/gitleaks.yaml","line":13,"fingerprint":"unpinned-uses:.github/workflows/gitleaks.yaml:13"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/gitleaks.yaml","line":16,"fingerprint":"unpinned-uses:.github/workflows/gitleaks.yaml:16"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/gitleaks.yaml","line":9,"fingerprint":"excessive-permissions:.github/workflows/gitleaks.yaml:9"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/gitleaks.yaml","line":13,"fingerprint":"artipacked:.github/workflows/gitleaks.yaml:13"}],"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":1.0,"check:lockfiles":1.0,"signed_commit_share":1.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":195.0,"function_nloc":2250.0,"mean_ccn":2.94,"p90_ccn":5.0,"complex_functions":1.0,"long_functions":1.0,"many_param_functions":0.0,"risky_nloc_share":0.08},"findings":[],"evidence":[{"kind":"complex-function","description":"transform in packages/firefly-importer-ing/src/firefly_importer_ing/converter.py: complexity 61, 180 lines","ref":"packages/firefly-importer-ing/src/firefly_importer_ing/converter.py","url":"https://github.com/Koschi13/nixos-configuration/blob/ba68752ea4b9b1b5c48ea8e21680d91fdd765d3f/packages/firefly-importer-ing/src/firefly_importer_ing/converter.py#L409","weight":1.0}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":3196.0,"duplicated_lines":82.0,"duplicated_share":0.0257,"files":39.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: scripts/init-new-encrypted-system.sh:10 and scripts/init-new-system.sh:16","ref":"scripts/init-new-encrypted-system.sh","url":"https://github.com/Koschi13/nixos-configuration/blob/ba68752ea4b9b1b5c48ea8e21680d91fdd765d3f/scripts/init-new-encrypted-system.sh#L10","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":18.0,"weighted_findings":31.5,"scanned_lines":3850.0,"category:correctness":6.0,"category:maintainability":12.0},"findings":[{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `_auth_error` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":162,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:162"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `_csrf_error` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":172,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:172"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `_conversion_error` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":180,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:180"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `login` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":385,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:385"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `oauth_start` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":399,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:399"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `oauth_callback` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":414,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:414"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `logout` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":477,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:477"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `forget_profile` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":484,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:484"},{"rule_id":"opengrep/python.lang.maintainability.useless-inner-function","severity":"high","message":"function `_no_upload` is defined inside a function but never used","path":"packages/firefly-importer-ing/src/firefly_importer_ing/web.py","line":671,"fingerprint":"python.lang.maintainability.useless-inner-function:packages/firefly-importer-ing/src/firefly_importer_ing/web.py:671"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"packages/firefly-importer-ing/src/firefly_importer_ing/converter.py","line":154,"fingerprint":"python.lang.maintainability.return-not-in-function:packages/firefly-importer-ing/src/firefly_importer_ing/converter.py:154"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"packages/firefly-importer-ing/src/firefly_importer_ing/converter.py","line":157,"fingerprint":"python.lang.maintainability.return-not-in-function:packages/firefly-importer-ing/src/firefly_importer_ing/converter.py:157"},{"rule_id":"opengrep/python.lang.maintainability.return-not-in-function","severity":"medium","message":"`return` only makes sense inside a function","path":"packages/firefly-importer-ing/src/firefly_importer_ing/converter.py","line":160,"fingerprint":"python.lang.maintainability.return-not-in-function:packages/firefly-importer-ing/src/firefly_importer_ing/converter.py:160"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":23,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:23"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":43,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:43"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":79,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:79"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":83,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:83"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":88,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:88"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"modules/services/sway [Nn]/screenshot.sh","line":92,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:modules/services/sway [Nn]/screenshot.sh:92"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.6833,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.1739,"test_lines":1461.0,"source_lines":4276.0,"test_ratio":0.3417,"ci_files":1.0,"cochange_share":0.0435,"cochange_commits":23.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/gitleaks.yaml","ref":".github/workflows/gitleaks.yaml","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":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":266.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":3226.0,"other_lines":1050.0,"files_blamed":39.0,"blame_failures":0.0,"quality:ai_findings":12.0,"quality:ai_per_kloc":3.72,"quality:other_findings":6.0,"quality:other_per_kloc":5.714,"quality:ratio":0.65,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":3.0,"security:other_per_kloc":2.857,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}