{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:04.039206Z","repo":{"ref":{"host":"github.com","owner":"dormail","name":"gds-viewer-android"},"default_branch":"main","clone_url":"https://github.com/dormail/gds-viewer-android.git","html_url":"https://github.com/dormail/gds-viewer-android","description":"Read-only GDSII chip layout viewer for Android. Opens large .gds/.gds.gz files in seconds; layers, cells, ruler. Built with Claude.","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":551,"primary_language":"Kotlin","license_spdx":"MIT","created_at":"2026-10-16T13:09:37Z","pushed_at":"2026-10-18T13:54:59Z","security_policy_url":"https://github.com/dormail/gds-viewer-android/security/policy","distribution":{"owner_created_at":"2020-01-05T12:43:27Z","owner_type":"User","release_assets":[{"name":"gds-viewer-0.8.apk","size":1461062,"download_count":2,"release_tag":"v0.8","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.8/gds-viewer-0.8.apk"},{"name":"gds-viewer-0.7.apk","size":1455878,"download_count":0,"release_tag":"v0.7","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.7/gds-viewer-0.7.apk"},{"name":"gds-viewer-0.6-debug.apk","size":11886554,"download_count":0,"release_tag":"v0.6","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.6/gds-viewer-0.6-debug.apk"},{"name":"gds-viewer-0.5-debug.apk","size":11886550,"download_count":0,"release_tag":"v0.5","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.5/gds-viewer-0.5-debug.apk"},{"name":"gds-viewer-0.4-debug.apk","size":11869870,"download_count":0,"release_tag":"v0.4","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.4/gds-viewer-0.4-debug.apk"},{"name":"gds-viewer-0.3-debug.apk","size":11835793,"download_count":0,"release_tag":"v0.3","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.3/gds-viewer-0.3-debug.apk"},{"name":"gds-viewer-0.2-debug.apk","size":11835793,"download_count":0,"release_tag":"v0.2","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.2/gds-viewer-0.2-debug.apk"},{"name":"gds-viewer-0.1-debug.apk","size":12173001,"download_count":0,"release_tag":"v0.1","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.1/gds-viewer-0.1-debug.apk"}]}},"commit_sha":"3b29d8eb860499758bf219e05b9844724b49581a","profile":{"lines_by_language":{"Kotlin":9200,"Python":1564},"files_by_category":{"source":45,"config":22,"test":16,"other":8,"docs":7,"binary":2},"source_lines":7816,"test_lines":2948},"pillars":{"ai_provenance":{"score":100.0,"confidence":0.77,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":1.0,"suspected_share":0.0,"estimated_share":1.0,"ai_artifacts":1.0,"flagged_work_units":3.0,"flagged_releases":1.0,"style_index":0.0},"summary":"Explicit AI attribution on 100% of first-party code added; an estimated 100% including velocity signals."},"quality":{"score":71.5,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":59.3,"duplication":98.5,"lint":100.0,"testing":48.9,"docs":85.0,"type_safety":40.0,"process":null},"summary":"Code quality is adequate: test-to-source ratio 0.38, no CI test run detected; 17% of function code in complex or long functions; 0% duplicated lines. Weakest area: type safety."},"security":{"score":89.1,"confidence":0.85,"coverage":1.0,"label":"strong","breakdown":{"secrets":100.0,"sast":100.0,"dependencies":null,"ci_actions":null,"posture":40.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":"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":30.0,"attributed_commits":30.0,"attributed_commit_share":1.0,"effective_loc":12757.0,"attributed_loc":12757.0,"attributed_loc_share":1.0,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 30 attributed commits, 12,757 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"3b29d8eb860499758bf219e05b9844724b49581a","url":"https://github.com/dormail/gds-viewer-android/commit/3b29d8eb860499758bf219e05b9844724b49581a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"bfad836d9a7f285d0a235c52413a95e15d16d861","url":"https://github.com/dormail/gds-viewer-android/commit/bfad836d9a7f285d0a235c52413a95e15d16d861","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e40a3455be19e6c32be3fd65ef097fef665c5db8","url":"https://github.com/dormail/gds-viewer-android/commit/e40a3455be19e6c32be3fd65ef097fef665c5db8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"1c0b6a9d08fea6a3f85e68ac1f87e6ac435a31f1","url":"https://github.com/dormail/gds-viewer-android/commit/1c0b6a9d08fea6a3f85e68ac1f87e6ac435a31f1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"736b333380cebb9b39c1036690417f67e5e0a945","url":"https://github.com/dormail/gds-viewer-android/commit/736b333380cebb9b39c1036690417f67e5e0a945","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d80ba0c4ff4c31884ec3f74aaeb381dc054ae88e","url":"https://github.com/dormail/gds-viewer-android/commit/d80ba0c4ff4c31884ec3f74aaeb381dc054ae88e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7182eefa0be048a7d2f4711a319055d099dd585e","url":"https://github.com/dormail/gds-viewer-android/commit/7182eefa0be048a7d2f4711a319055d099dd585e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"326a1928c9f606f2f56b18930e6e00c092c66d78","url":"https://github.com/dormail/gds-viewer-android/commit/326a1928c9f606f2f56b18930e6e00c092c66d78","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f58dbab20fc5f48e6149ab7756eadd8bb657ae3b","url":"https://github.com/dormail/gds-viewer-android/commit/f58dbab20fc5f48e6149ab7756eadd8bb657ae3b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5b7070ea1a435a9012c934a3962e19965685844a","url":"https://github.com/dormail/gds-viewer-android/commit/5b7070ea1a435a9012c934a3962e19965685844a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"7eed5e9ab86aa02f1e756957e241eaad6b6bd5da","url":"https://github.com/dormail/gds-viewer-android/commit/7eed5e9ab86aa02f1e756957e241eaad6b6bd5da","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"1861c37818bdfc8bf72c06658454897972c22182","url":"https://github.com/dormail/gds-viewer-android/commit/1861c37818bdfc8bf72c06658454897972c22182","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"927cda20035646e03d06e4ecebe2b7ff1a284185","url":"https://github.com/dormail/gds-viewer-android/commit/927cda20035646e03d06e4ecebe2b7ff1a284185","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"82860a992497f5ad94a5c8a7b134731cdbf694ab","url":"https://github.com/dormail/gds-viewer-android/commit/82860a992497f5ad94a5c8a7b134731cdbf694ab","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d570ca5b2b4299ba1355a5b6101bcbe117a66c85","url":"https://github.com/dormail/gds-viewer-android/commit/d570ca5b2b4299ba1355a5b6101bcbe117a66c85","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9","url":"https://github.com/dormail/gds-viewer-android/commit/ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"bda3500c644c6815abeda8f35e43590dc5fafc50","url":"https://github.com/dormail/gds-viewer-android/commit/bda3500c644c6815abeda8f35e43590dc5fafc50","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c00f6b173b9ac56819a94705f7a1eab28b984a73","url":"https://github.com/dormail/gds-viewer-android/commit/c00f6b173b9ac56819a94705f7a1eab28b984a73","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"386772471532952a2d74af8e47a0838c67d4919f","url":"https://github.com/dormail/gds-viewer-android/commit/386772471532952a2d74af8e47a0838c67d4919f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c096414dca6df789fe72415c138225b89ca8f7a7","url":"https://github.com/dormail/gds-viewer-android/commit/c096414dca6df789fe72415c138225b89ca8f7a7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"d7e343be06e940f2cedb3ccd755d8a9d535c614e","url":"https://github.com/dormail/gds-viewer-android/commit/d7e343be06e940f2cedb3ccd755d8a9d535c614e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e3bbe9aff60b202a1977510803de552c8b43e893","url":"https://github.com/dormail/gds-viewer-android/commit/e3bbe9aff60b202a1977510803de552c8b43e893","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"9df8827b23dc498bac2dec596b84b41f88c48933","url":"https://github.com/dormail/gds-viewer-android/commit/9df8827b23dc498bac2dec596b84b41f88c48933","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"6870e151db362a476ce3d56d64b1d670a267a9eb","url":"https://github.com/dormail/gds-viewer-android/commit/6870e151db362a476ce3d56d64b1d670a267a9eb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"ba4318349a0efdba3a0469eecfa92a841c63b76e","url":"https://github.com/dormail/gds-viewer-android/commit/ba4318349a0efdba3a0469eecfa92a841c63b76e","weight":0.9}],"data":{"attributed_loc_by_commit":{"b424ce40448a43c7ee6db4ac74069894dec5e3b7":398,"c9d9ffe025e5c05b3edfeb4f09a5b2f946c550b4":323,"1abc215cd37507a715b3b8fe7cfc07c919870c09":1197,"ec33f4dc13f24a4f27fd5aec4d8a29aa5f7b41d3":1580,"001bb49e95fe98952505852065a3657ddbc12c68":1,"ba4318349a0efdba3a0469eecfa92a841c63b76e":32,"6870e151db362a476ce3d56d64b1d670a267a9eb":230,"9df8827b23dc498bac2dec596b84b41f88c48933":0,"e3bbe9aff60b202a1977510803de552c8b43e893":463,"d7e343be06e940f2cedb3ccd755d8a9d535c614e":212,"c096414dca6df789fe72415c138225b89ca8f7a7":18,"386772471532952a2d74af8e47a0838c67d4919f":776,"c00f6b173b9ac56819a94705f7a1eab28b984a73":1537,"bda3500c644c6815abeda8f35e43590dc5fafc50":1467,"ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9":1241,"82860a992497f5ad94a5c8a7b134731cdbf694ab":346,"d570ca5b2b4299ba1355a5b6101bcbe117a66c85":1259,"927cda20035646e03d06e4ecebe2b7ff1a284185":2,"1861c37818bdfc8bf72c06658454897972c22182":0,"7eed5e9ab86aa02f1e756957e241eaad6b6bd5da":0,"5b7070ea1a435a9012c934a3962e19965685844a":0,"f58dbab20fc5f48e6149ab7756eadd8bb657ae3b":0,"326a1928c9f606f2f56b18930e6e00c092c66d78":1284,"d80ba0c4ff4c31884ec3f74aaeb381dc054ae88e":0,"7182eefa0be048a7d2f4711a319055d099dd585e":238,"736b333380cebb9b39c1036690417f67e5e0a945":4,"1c0b6a9d08fea6a3f85e68ac1f87e6ac435a31f1":47,"e40a3455be19e6c32be3fd65ef097fef665c5db8":0,"bfad836d9a7f285d0a235c52413a95e15d16d861":102,"3b29d8eb860499758bf219e05b9844724b49581a":0},"tools":{"claude-code":{"name":"Claude Code","commits":30,"loc":12757,"first_seen":1792157699,"last_seen":1792331697}},"monthly":{"2026-10":{"loc":12757,"attributed_loc":12757}}},"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":1792250488.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":"CLAUDE.md","added_at":1792250488}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":6.0,"flagged_units":3.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":12757.0,"flagged_loc":11082.0,"flagged_loc_share":0.8686995375088187,"max_loc_per_hour":1984.631217838765,"median_loc_per_hour":950.967665098553,"pr_timed_units":0.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,607 lines of first-party code in ~0.8h (1,985 lines/hour, 3 commit session)","ref":"927cda20035646e03d06e4ecebe2b7ff1a284185","url":"https://github.com/dormail/gds-viewer-android/commit/927cda20035646e03d06e4ecebe2b7ff1a284185","weight":0.5953893653516295},{"kind":"velocity-burst","description":"5,039 lines of first-party code in ~4.3h (1,161 lines/hour, 5 commit session)","ref":"ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9","url":"https://github.com/dormail/gds-viewer-android/commit/ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9","weight":0.34834026755424696},{"kind":"velocity-burst","description":"4,436 lines of first-party code in ~4.7h (951 lines/hour, 9 commit session)","ref":"d7e343be06e940f2cedb3ccd755d8a9d535c614e","url":"https://github.com/dormail/gds-viewer-android/commit/d7e343be06e940f2cedb3ccd755d8a9d535c614e","weight":0.2852902995295659}],"data":{"flagged_loc_by_commit":{"b424ce40448a43c7ee6db4ac74069894dec5e3b7":398,"c9d9ffe025e5c05b3edfeb4f09a5b2f946c550b4":323,"1abc215cd37507a715b3b8fe7cfc07c919870c09":1197,"ec33f4dc13f24a4f27fd5aec4d8a29aa5f7b41d3":1580,"001bb49e95fe98952505852065a3657ddbc12c68":1,"ba4318349a0efdba3a0469eecfa92a841c63b76e":32,"6870e151db362a476ce3d56d64b1d670a267a9eb":230,"e3bbe9aff60b202a1977510803de552c8b43e893":463,"d7e343be06e940f2cedb3ccd755d8a9d535c614e":212,"c096414dca6df789fe72415c138225b89ca8f7a7":18,"386772471532952a2d74af8e47a0838c67d4919f":776,"c00f6b173b9ac56819a94705f7a1eab28b984a73":1537,"bda3500c644c6815abeda8f35e43590dc5fafc50":1467,"ce2ea010ea7b8684c5fda5f92d82640ac1ce3ad9":1241,"82860a992497f5ad94a5c8a7b134731cdbf694ab":346,"d570ca5b2b4299ba1355a5b6101bcbe117a66c85":1259,"927cda20035646e03d06e4ecebe2b7ff1a284185":2},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":7.0,"flagged_releases":1.0,"max_loc_per_day":138390.3},"findings":[],"evidence":[{"kind":"release-burst","description":"v0.6 → v0.7: 6,628 lines in 0.05 days (138,390.3 lines/day)","ref":"v0.6...v0.7","url":"https://github.com/dormail/gds-viewer-android/compare/v0.6...v0.7","weight":0.4}],"data":{"releases":[{"from":"v0.1","to":"v0.2","loc":32,"days":0.04,"loc_per_day":768.0,"flagged":false},{"from":"v0.2","to":"v0.3","loc":230,"days":0.04,"loc_per_day":5520.0,"flagged":false},{"from":"v0.3","to":"v0.4","loc":463,"days":0.04,"loc_per_day":11112.0,"flagged":false},{"from":"v0.4","to":"v0.5","loc":212,"days":0.04,"loc_per_day":5088.0,"flagged":false},{"from":"v0.5","to":"v0.6","loc":18,"days":0.18,"loc_per_day":97.7,"flagged":false},{"from":"v0.6","to":"v0.7","loc":6628,"days":0.05,"loc_per_day":138390.3,"flagged":true},{"from":"v0.7","to":"v0.8","loc":1526,"days":0.43,"loc_per_day":3580.2,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":7816.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":0.0,"findings_high":0.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":0.0,"scanned_lines":7816.0,"parse_errors":0.0},"findings":[],"evidence":[],"data":{"rulesets":["kotlin","python"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":1.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":[{"kind":"posture","description":"Security policy: SECURITY.md","ref":"SECURITY.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":8.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release v0.8 ships gds-viewer-0.8.apk (2 downloads)","ref":"gds-viewer-0.8.apk","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.8/gds-viewer-0.8.apk","weight":0.0},{"kind":"binary-release-asset","description":"release v0.7 ships gds-viewer-0.7.apk (0 downloads)","ref":"gds-viewer-0.7.apk","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.7/gds-viewer-0.7.apk","weight":0.0},{"kind":"binary-release-asset","description":"release v0.6 ships gds-viewer-0.6-debug.apk (0 downloads)","ref":"gds-viewer-0.6-debug.apk","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.6/gds-viewer-0.6-debug.apk","weight":0.0},{"kind":"binary-release-asset","description":"release v0.5 ships gds-viewer-0.5-debug.apk (0 downloads)","ref":"gds-viewer-0.5-debug.apk","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.5/gds-viewer-0.5-debug.apk","weight":0.0},{"kind":"binary-release-asset","description":"release v0.4 ships gds-viewer-0.4-debug.apk (0 downloads)","ref":"gds-viewer-0.4-debug.apk","url":"https://github.com/dormail/gds-viewer-android/releases/download/v0.4/gds-viewer-0.4-debug.apk","weight":0.0}],"data":{"signals":["binary-release-assets"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":410.0,"function_nloc":4787.0,"mean_ccn":3.73,"p90_ccn":8.0,"complex_functions":13.0,"long_functions":3.0,"many_param_functions":15.0,"risky_nloc_share":0.174},"findings":[],"evidence":[{"kind":"complex-function","description":"main in tools/check_gds.py: complexity 102, 219 lines","ref":"tools/check_gds.py","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/tools/check_gds.py#L31","weight":1.0},{"kind":"complex-function","description":"examineChunk in core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt: complexity 33, 70 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt#L116","weight":0.55},{"kind":"complex-function","description":"build_flat in tools/make_stress_gds.py: complexity 28, 107 lines","ref":"tools/make_stress_gds.py","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/tools/make_stress_gds.py#L255","weight":0.4666666666666667},{"kind":"complex-function","description":"handle in core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt: complexity 26, 34 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt#L205","weight":0.43333333333333335},{"kind":"complex-function","description":"build in core/src/main/kotlin/io/github/dormail/gdsviewer/geometry/PathGeometry.kt: complexity 25, 106 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/geometry/PathGeometry.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/geometry/PathGeometry.kt#L22","weight":0.4166666666666667},{"kind":"complex-function","description":"visit in core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt: complexity 19, 40 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/scene/Snapping.kt#L73","weight":0.31666666666666665},{"kind":"complex-function","description":"visible in core/src/main/kotlin/io/github/dormail/gdsviewer/scene/SceneArrayRange.kt: complexity 18, 36 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/scene/SceneArrayRange.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/scene/SceneArrayRange.kt#L22","weight":0.3},{"kind":"complex-function","description":"rulerUp in app/src/main/java/io/github/dormail/gdsviewer/ui/ViewerViewModel.kt: complexity 17, 25 lines","ref":"app/src/main/java/io/github/dormail/gdsviewer/ui/ViewerViewModel.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/app/src/main/java/io/github/dormail/gdsviewer/ui/ViewerViewModel.kt#L611","weight":0.2833333333333333},{"kind":"complex-function","description":"recordName in core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt: complexity 17, 20 lines","ref":"core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/core/src/main/kotlin/io/github/dormail/gdsviewer/db/GdsReader.kt#L342","weight":0.2833333333333333},{"kind":"complex-function","description":"build_photonic in tools/make_stress_gds.py: complexity 17, 76 lines","ref":"tools/make_stress_gds.py","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/tools/make_stress_gds.py#L808","weight":0.2833333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":5690.0,"duplicated_lines":14.0,"duplicated_share":0.0025,"files":45.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: settings.gradle.kts:2 and settings.gradle.kts:16","ref":"settings.gradle.kts","url":"https://github.com/dormail/gds-viewer-android/blob/3b29d8eb860499758bf219e05b9844724b49581a/settings.gradle.kts#L2","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"weighted_findings":0.0,"scanned_lines":7816.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.7544,"check:ci_present":0.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":1.0,"test_lines":2948.0,"source_lines":7816.0,"test_ratio":0.3772,"ci_files":0.0,"cochange_share":0.3636,"cochange_commits":22.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":1.0,"readme_lines":60.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0},{"kind":"docs","description":"CHANGELOG.md","ref":"CHANGELOG.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":7816.0,"other_lines":0.0,"files_blamed":45.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":false},"error":null}],"flags":[]}