{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:19:39.057402Z","repo":{"ref":{"host":"github.com","owner":"spawnia","name":"sailor"},"default_branch":"master","clone_url":"https://github.com/spawnia/sailor.git","html_url":"https://github.com/spawnia/sailor","description":"A typesafe GraphQL client for PHP","stars":95,"forks":20,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":881,"primary_language":"PHP","license_spdx":"MIT","created_at":"2019-09-09T20:14:09Z","pushed_at":"2026-10-15T13:10:01Z","security_policy_url":"https://github.com/spawnia/sailor/security/policy","distribution":{"owner_created_at":"2015-04-28T18:08:37Z","owner_type":"User","release_assets":[]}},"commit_sha":"a6d17438bc5c9dfd20bba1623190ce97f35195c1","profile":{"lines_by_language":{"PHP":20650,"Shell":107},"files_by_category":{"source":408,"other":38,"test":33,"config":30,"docs":9,"generated":1,"binary":1,"vendored":1},"source_lines":17646,"test_lines":3111},"pillars":{"ai_provenance":{"score":21.1,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.211,"suspected_share":0.0,"estimated_share":0.211,"ai_artifacts":2.0,"flagged_work_units":0.0,"flagged_releases":0.0},"summary":"Explicit AI attribution on 21% of first-party code added; an estimated 21% including velocity signals."},"quality":{"score":80.7,"confidence":0.9,"coverage":1.0,"label":"strong","breakdown":{"complexity":100.0,"duplication":17.6,"lint":100.0,"testing":83.8,"docs":100.0,"type_safety":null,"process":null},"summary":"Code quality is strong: test-to-source ratio 0.18, CI runs tests; 0% of function code in complex or long functions; 29% duplicated lines. Weakest area: duplication."},"security":{"score":65.2,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":100.0,"dependencies":48.0,"ci_actions":0.4,"posture":40.0,"scorecard":null},"summary":"Security posture is weak: 32 known vulnerabilities in 8 dependencies; 25 high-severity workflow issues. Weakest area: ci actions."}},"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":5.0,"checked":5.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":339.0,"attributed_commits":22.0,"attributed_commit_share":0.06489675516224189,"effective_loc":28349.0,"attributed_loc":5982.0,"attributed_loc_share":0.21101273413524285,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 21 attributed commits, 5,862 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 1 attributed commits, 120 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"a6d17438bc5c9dfd20bba1623190ce97f35195c1","url":"https://github.com/spawnia/sailor/commit/a6d17438bc5c9dfd20bba1623190ce97f35195c1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"ab9cf26ecb29da9884df4dd66d5ceb30c0c699db","url":"https://github.com/spawnia/sailor/commit/ab9cf26ecb29da9884df4dd66d5ceb30c0c699db","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"beaa80eced1979e52533ab530765d27ab271bcfe","url":"https://github.com/spawnia/sailor/commit/beaa80eced1979e52533ab530765d27ab271bcfe","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"3ea59dbe4063856f0e0f0a9cd43482dda9f062ae","url":"https://github.com/spawnia/sailor/commit/3ea59dbe4063856f0e0f0a9cd43482dda9f062ae","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"654fe64855e5ab0fbc4f8dad396bd2b4f3957512","url":"https://github.com/spawnia/sailor/commit/654fe64855e5ab0fbc4f8dad396bd2b4f3957512","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"e43672814888f80e663a205620be949db71889a2","url":"https://github.com/spawnia/sailor/commit/e43672814888f80e663a205620be949db71889a2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"0134ef2056ccfca7363b7c7450cdea9a5fa5fe2c","url":"https://github.com/spawnia/sailor/commit/0134ef2056ccfca7363b7c7450cdea9a5fa5fe2c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"eccf176baf5b0a9b9d3da3da89f56614e7d63ffb","url":"https://github.com/spawnia/sailor/commit/eccf176baf5b0a9b9d3da3da89f56614e7d63ffb","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"54cf2a6b117c5faf6a8a1be68a2fa3ef7a91f3b7","url":"https://github.com/spawnia/sailor/commit/54cf2a6b117c5faf6a8a1be68a2fa3ef7a91f3b7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"d1d863d5dfd347c5b6abfefd9347f9c00b4a1041","url":"https://github.com/spawnia/sailor/commit/d1d863d5dfd347c5b6abfefd9347f9c00b4a1041","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"e3872bfbe30353557053a92518018c15dc72c52b","url":"https://github.com/spawnia/sailor/commit/e3872bfbe30353557053a92518018c15dc72c52b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"6a89d12a3157fbc0c7d82bc9bc9aed6578c56521","url":"https://github.com/spawnia/sailor/commit/6a89d12a3157fbc0c7d82bc9bc9aed6578c56521","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"8ae23a6df9e63477f6d3262ae1f811cd890bec4f","url":"https://github.com/spawnia/sailor/commit/8ae23a6df9e63477f6d3262ae1f811cd890bec4f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"9b8204595fa16eff474bb71b9bf4a70cc0bffbf8","url":"https://github.com/spawnia/sailor/commit/9b8204595fa16eff474bb71b9bf4a70cc0bffbf8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"ad3c5ec1b52bc0738f2a0c860f6a0b40c1a567c8","url":"https://github.com/spawnia/sailor/commit/ad3c5ec1b52bc0738f2a0c860f6a0b40c1a567c8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"2d78043ae7356c548521893b5c683e261ff32ad1","url":"https://github.com/spawnia/sailor/commit/2d78043ae7356c548521893b5c683e261ff32ad1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0e00644849b4946eb39be01bf52cd73afb3d58b0","url":"https://github.com/spawnia/sailor/commit/0e00644849b4946eb39be01bf52cd73afb3d58b0","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"46a0744ffc69caaf9f34c2312a4fb60298cadfcc","url":"https://github.com/spawnia/sailor/commit/46a0744ffc69caaf9f34c2312a4fb60298cadfcc","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"f7ffffeb836516f7effa5479e287f2fcc99fe52e","url":"https://github.com/spawnia/sailor/commit/f7ffffeb836516f7effa5479e287f2fcc99fe52e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: PR description attribution","ref":"4577b7d87074ed7322f184300d16fe29734974d3","url":"https://github.com/spawnia/sailor/commit/4577b7d87074ed7322f184300d16fe29734974d3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: PR description attribution","ref":"d9ee6cd33ea45a96a9cbeb98a18176c0369804fe","url":"https://github.com/spawnia/sailor/commit/d9ee6cd33ea45a96a9cbeb98a18176c0369804fe","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c26fc3a17d9e50b50b4f9b5873aa00dabe944565","url":"https://github.com/spawnia/sailor/commit/c26fc3a17d9e50b50b4f9b5873aa00dabe944565","weight":0.9}],"data":{"attributed_loc_by_commit":{"c26fc3a17d9e50b50b4f9b5873aa00dabe944565":9,"d9ee6cd33ea45a96a9cbeb98a18176c0369804fe":0,"4577b7d87074ed7322f184300d16fe29734974d3":0,"f7ffffeb836516f7effa5479e287f2fcc99fe52e":120,"46a0744ffc69caaf9f34c2312a4fb60298cadfcc":0,"0e00644849b4946eb39be01bf52cd73afb3d58b0":0,"2d78043ae7356c548521893b5c683e261ff32ad1":0,"ad3c5ec1b52bc0738f2a0c860f6a0b40c1a567c8":0,"9b8204595fa16eff474bb71b9bf4a70cc0bffbf8":0,"8ae23a6df9e63477f6d3262ae1f811cd890bec4f":0,"6a89d12a3157fbc0c7d82bc9bc9aed6578c56521":0,"e3872bfbe30353557053a92518018c15dc72c52b":132,"d1d863d5dfd347c5b6abfefd9347f9c00b4a1041":42,"54cf2a6b117c5faf6a8a1be68a2fa3ef7a91f3b7":35,"eccf176baf5b0a9b9d3da3da89f56614e7d63ffb":167,"0134ef2056ccfca7363b7c7450cdea9a5fa5fe2c":683,"e43672814888f80e663a205620be949db71889a2":190,"654fe64855e5ab0fbc4f8dad396bd2b4f3957512":4604,"3ea59dbe4063856f0e0f0a9cd43482dda9f062ae":0,"beaa80eced1979e52533ab530765d27ab271bcfe":0,"ab9cf26ecb29da9884df4dd66d5ceb30c0c699db":0,"a6d17438bc5c9dfd20bba1623190ce97f35195c1":0},"tools":{"claude-code":{"name":"Claude Code","commits":21,"loc":5862,"first_seen":1768895043,"last_seen":1792069799},"github-copilot":{"name":"GitHub Copilot coding agent","commits":1,"loc":120,"first_seen":1771234459,"last_seen":1771234459}},"monthly":{"2019-09":{"loc":3120,"attributed_loc":0},"2019-11":{"loc":377,"attributed_loc":0},"2019-12":{"loc":770,"attributed_loc":0},"2020-01":{"loc":138,"attributed_loc":0},"2020-03":{"loc":303,"attributed_loc":0},"2020-05":{"loc":0,"attributed_loc":0},"2020-07":{"loc":79,"attributed_loc":0},"2021-02":{"loc":121,"attributed_loc":0},"2021-03":{"loc":498,"attributed_loc":0},"2021-04":{"loc":74,"attributed_loc":0},"2021-05":{"loc":24,"attributed_loc":0},"2021-06":{"loc":3,"attributed_loc":0},"2021-07":{"loc":140,"attributed_loc":0},"2021-08":{"loc":114,"attributed_loc":0},"2021-09":{"loc":58,"attributed_loc":0},"2021-10":{"loc":1,"attributed_loc":0},"2021-11":{"loc":1531,"attributed_loc":0},"2021-12":{"loc":5060,"attributed_loc":0},"2022-01":{"loc":512,"attributed_loc":0},"2022-02":{"loc":10,"attributed_loc":0},"2022-03":{"loc":62,"attributed_loc":0},"2022-04":{"loc":2050,"attributed_loc":0},"2022-05":{"loc":0,"attributed_loc":0},"2022-07":{"loc":887,"attributed_loc":0},"2022-08":{"loc":381,"attributed_loc":0},"2022-09":{"loc":248,"attributed_loc":0},"2022-10":{"loc":905,"attributed_loc":0},"2022-11":{"loc":591,"attributed_loc":0},"2022-12":{"loc":43,"attributed_loc":0},"2023-01":{"loc":16,"attributed_loc":0},"2023-02":{"loc":267,"attributed_loc":0},"2023-03":{"loc":943,"attributed_loc":0},"2023-07":{"loc":4,"attributed_loc":0},"2023-10":{"loc":239,"attributed_loc":0},"2023-11":{"loc":158,"attributed_loc":0},"2023-12":{"loc":0,"attributed_loc":0},"2024-01":{"loc":174,"attributed_loc":0},"2024-04":{"loc":130,"attributed_loc":0},"2024-06":{"loc":35,"attributed_loc":0},"2024-07":{"loc":12,"attributed_loc":0},"2024-08":{"loc":266,"attributed_loc":0},"2024-09":{"loc":0,"attributed_loc":0},"2024-10":{"loc":277,"attributed_loc":0},"2024-11":{"loc":55,"attributed_loc":0},"2025-02":{"loc":762,"attributed_loc":0},"2025-03":{"loc":190,"attributed_loc":0},"2025-04":{"loc":81,"attributed_loc":0},"2025-05":{"loc":2,"attributed_loc":0},"2025-06":{"loc":101,"attributed_loc":0},"2026-01":{"loc":563,"attributed_loc":9},"2026-02":{"loc":120,"attributed_loc":120},"2026-03":{"loc":0,"attributed_loc":0},"2026-04":{"loc":0,"attributed_loc":0},"2026-09":{"loc":1,"attributed_loc":0},"2026-10":{"loc":5853,"attributed_loc":5853}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":2.0,"workflow_agents":0.0,"tools_configured":1.0,"earliest_adoption":1768895043.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".claude/settings.json (claude-code configuration)","ref":".claude/settings.json","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/.claude/settings.json","weight":0.5},{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/CLAUDE.md","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":".claude/settings.json","added_at":1768895043},{"tool":"claude-code","path":"CLAUDE.md","added_at":1771278804}],"workflows":[],"tools":["claude-code"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":153.0,"flagged_units":0.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":5507.0,"pre_ai_era_burst_loc":0.0,"measured_loc":19469.0,"flagged_loc":0.0,"flagged_loc_share":0.0,"max_loc_per_hour":1182.0,"median_loc_per_hour":45.88280431424761,"pr_timed_units":66.0,"excluded_import_loc":8880.0},"findings":[],"evidence":[],"data":{"flagged_loc_by_commit":{},"excluded_import_commits":["654fe64855e5ab0fbc4f8dad396bd2b4f3957512","8e5548f085018932a897f0b66501fc996dad66a5"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"releases":71.0,"flagged_releases":0.0,"max_loc_per_day":4008.0},"findings":[],"evidence":[],"data":{"releases":[{"from":"v0.1.0","to":"v0.2.0","loc":21,"days":0.06,"loc_per_day":371.0,"flagged":false},{"from":"v0.2.0","to":"v0.3.0","loc":436,"days":28.04,"loc_per_day":15.5,"flagged":false},{"from":"v0.3.0","to":"v0.4.0","loc":162,"days":7.97,"loc_per_day":20.3,"flagged":false},{"from":"v0.4.0","to":"v0.4.1","loc":74,"days":9.05,"loc_per_day":8.2,"flagged":false},{"from":"v0.4.1","to":"v0.4.2","loc":24,"days":55.77,"loc_per_day":0.4,"flagged":false},{"from":"v0.4.2","to":"v0.5.0","loc":3,"days":14.24,"loc_per_day":0.2,"flagged":false},{"from":"v0.5.0","to":"v0.6.0","loc":80,"days":25.01,"loc_per_day":3.2,"flagged":false},{"from":"v0.6.0","to":"v0.7.0","loc":60,"days":10.96,"loc_per_day":5.5,"flagged":false},{"from":"v0.7.0","to":"v0.8.0","loc":0,"days":12.06,"loc_per_day":0.0,"flagged":false},{"from":"v0.8.0","to":"v0.9.0","loc":114,"days":5.95,"loc_per_day":19.2,"flagged":false},{"from":"v0.9.0","to":"v0.10.0","loc":58,"days":58.31,"loc_per_day":1.0,"flagged":false},{"from":"v0.10.0","to":"v0.10.1","loc":1,"days":17.65,"loc_per_day":0.1,"flagged":false},{"from":"v0.10.1","to":"v0.10.2","loc":96,"days":16.25,"loc_per_day":5.9,"flagged":false},{"from":"v0.10.2","to":"v0.11.0","loc":1014,"days":20.89,"loc_per_day":48.5,"flagged":false},{"from":"v0.11.0","to":"v0.12.0","loc":421,"days":2.0,"loc_per_day":210.2,"flagged":false},{"from":"v0.12.0","to":"v0.13.0","loc":0,"days":5.72,"loc_per_day":0.0,"flagged":false},{"from":"v0.13.0","to":"v0.14.0","loc":0,"days":6.23,"loc_per_day":0.0,"flagged":false},{"from":"v0.14.0","to":"v0.14.1","loc":390,"days":13.06,"loc_per_day":29.9,"flagged":false},{"from":"v0.14.1","to":"v0.15.0","loc":394,"days":7.0,"loc_per_day":56.3,"flagged":false},{"from":"v0.15.0","to":"v0.16.0","loc":438,"days":6.89,"loc_per_day":63.5,"flagged":false},{"from":"v0.16.0","to":"v0.17.0","loc":38,"days":0.04,"loc_per_day":912.0,"flagged":false},{"from":"v0.17.0","to":"v0.17.1","loc":36,"days":9.83,"loc_per_day":3.7,"flagged":false},{"from":"v0.17.1","to":"v0.18.0","loc":0,"days":19.05,"loc_per_day":0.0,"flagged":false},{"from":"v0.18.0","to":"v0.18.1","loc":5,"days":0.04,"loc_per_day":120.0,"flagged":false},{"from":"v0.18.1","to":"v0.18.2","loc":5,"days":12.99,"loc_per_day":0.4,"flagged":false},{"from":"v0.18.2","to":"v0.19.0","loc":62,"days":22.98,"loc_per_day":2.7,"flagged":false},{"from":"v0.19.0","to":"v0.20.0","loc":1154,"days":34.19,"loc_per_day":33.8,"flagged":false},{"from":"v0.20.0","to":"v0.20.1","loc":5,"days":0.04,"loc_per_day":120.0,"flagged":false},{"from":"v0.20.1","to":"v0.20.2","loc":7,"days":0.04,"loc_per_day":168.0,"flagged":false},{"from":"v0.20.2","to":"v0.21.0","loc":884,"days":13.08,"loc_per_day":67.6,"flagged":false},{"from":"v0.21.0","to":"v0.21.1","loc":233,"days":65.69,"loc_per_day":3.5,"flagged":false},{"from":"v0.21.1","to":"v0.21.2","loc":12,"days":0.09,"loc_per_day":128.9,"flagged":false},{"from":"v0.21.2","to":"v0.22.0","loc":642,"days":5.87,"loc_per_day":109.4,"flagged":false},{"from":"v0.22.0","to":"v0.23.0","loc":272,"days":26.96,"loc_per_day":10.1,"flagged":false},{"from":"v0.23.0","to":"v0.23.1","loc":109,"days":19.99,"loc_per_day":5.5,"flagged":false},{"from":"v0.23.1","to":"v0.24.0","loc":248,"days":28.19,"loc_per_day":8.8,"flagged":false},{"from":"v0.24.0","to":"v0.25.0","loc":655,"days":14.87,"loc_per_day":44.0,"flagged":false},{"from":"v0.25.0","to":"v0.26.0","loc":250,"days":16.05,"loc_per_day":15.6,"flagged":false},{"from":"v0.26.0","to":"v0.26.1","loc":591,"days":19.35,"loc_per_day":30.5,"flagged":false},{"from":"v0.26.1","to":"v0.27.0","loc":59,"days":62.93,"loc_per_day":0.9,"flagged":false},{"from":"v0.27.0","to":"v0.28.0","loc":10,"days":21.87,"loc_per_day":0.5,"flagged":false},{"from":"v0.28.0","to":"v0.28.1","loc":256,"days":12.8,"loc_per_day":20.0,"flagged":false},{"from":"v0.28.1","to":"v0.28.2","loc":1,"days":2.23,"loc_per_day":0.4,"flagged":false},{"from":"v0.28.2","to":"v0.29.0","loc":943,"days":17.84,"loc_per_day":52.8,"flagged":false},{"from":"v0.29.0","to":"v0.29.1","loc":30,"days":210.89,"loc_per_day":0.1,"flagged":false},{"from":"v0.29.1","to":"v0.29.2","loc":213,"days":5.04,"loc_per_day":42.3,"flagged":false},{"from":"v0.29.2","to":"v0.29.3","loc":158,"days":37.28,"loc_per_day":4.2,"flagged":false},{"from":"v0.29.3","to":"v0.30.0","loc":0,"days":25.04,"loc_per_day":0.0,"flagged":false},{"from":"v0.30.0","to":"v0.30.1","loc":13,"days":23.01,"loc_per_day":0.6,"flagged":false},{"from":"v0.30.1","to":"v0.31.0","loc":161,"days":16.72,"loc_per_day":9.6,"flagged":false},{"from":"v0.31.0","to":"v0.31.1","loc":17,"days":97.98,"loc_per_day":0.2,"flagged":false},{"from":"v0.31.1","to":"v0.31.2","loc":61,"days":2.91,"loc_per_day":21.0,"flagged":false},{"from":"v0.31.2","to":"v0.32.0","loc":52,"days":0.08,"loc_per_day":620.9,"flagged":false},{"from":"v0.32.0","to":"v0.32.1","loc":35,"days":52.19,"loc_per_day":0.7,"flagged":false},{"from":"v0.32.1","to":"v0.32.2","loc":12,"days":14.12,"loc_per_day":0.8,"flagged":false},{"from":"v0.32.2","to":"v0.33.0","loc":266,"days":46.7,"loc_per_day":5.7,"flagged":false},{"from":"v0.33.0","to":"v0.33.1","loc":263,"days":47.95,"loc_per_day":5.5,"flagged":false},{"from":"v0.33.1","to":"v0.34.0","loc":14,"days":2.92,"loc_per_day":4.8,"flagged":false},{"from":"v0.34.0","to":"v0.35.0","loc":55,"days":29.18,"loc_per_day":1.9,"flagged":false},{"from":"v0.35.0","to":"v1.0.0","loc":950,"days":139.16,"loc_per_day":6.8,"flagged":false},{"from":"v1.0.0","to":"v1.1.0","loc":83,"days":10.73,"loc_per_day":7.7,"flagged":false},{"from":"v1.1.0","to":"v1.1.1","loc":103,"days":77.89,"loc_per_day":1.3,"flagged":false},{"from":"v1.1.1","to":"v1.1.2","loc":563,"days":211.2,"loc_per_day":2.7,"flagged":false},{"from":"v1.1.2","to":"v1.2.0","loc":0,"days":24.21,"loc_per_day":0.0,"flagged":false},{"from":"v1.2.0","to":"v1.2.1","loc":0,"days":0.84,"loc_per_day":0.0,"flagged":false},{"from":"v1.2.1","to":"v1.2.2","loc":121,"days":198.06,"loc_per_day":0.6,"flagged":false},{"from":"v1.2.2","to":"v1.3.0","loc":132,"days":32.08,"loc_per_day":4.1,"flagged":false},{"from":"v1.3.0","to":"v1.4.0","loc":42,"days":0.04,"loc_per_day":1008.0,"flagged":false},{"from":"v1.4.0","to":"v1.4.1","loc":35,"days":0.04,"loc_per_day":840.0,"flagged":false},{"from":"v1.4.1","to":"v1.4.2","loc":167,"days":0.04,"loc_per_day":4008.0,"flagged":false},{"from":"v1.4.2","to":"v1.5.0","loc":873,"days":3.13,"loc_per_day":279.2,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":17646.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":17646.0,"parse_errors":0.0},"findings":[],"evidence":[],"data":{"rulesets":["php","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":8.0,"vulnerabilities":32.0,"vulns_critical":0.0,"vulns_high":13.0,"vulns_medium":18.0,"vulns_low":1.0,"vulns_unknown":0.0,"penalty":44.0},"findings":[{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@5.0.9 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@5.0.9 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@5.0.9 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@5.0.9 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@6.28.0 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@6.28.0 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-rfgv-xxqx-mfg5","severity":"high","message":"undici@6.28.0 (npm) is affected by GHSA-rfgv-xxqx-mfg5","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-rfgv-xxqx-mfg5"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@6.28.0 (npm) is affected by GHSA-xjj6-f33q-929c","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@6.29.0 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"package-lock.json","line":null,"fingerprint":"undici@6.29.0 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@6.29.0 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"package-lock.json","line":null,"fingerprint":"undici@6.29.0 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@6.29.0 (npm) is affected by GHSA-xjj6-f33q-929c","path":"package-lock.json","line":null,"fingerprint":"undici@6.29.0 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-2m5v-pch6-74hx","severity":"high","message":"undici@7.30.0 (npm) is affected by GHSA-2m5v-pch6-74hx","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-2m5v-pch6-74hx"},{"rule_id":"osv/GHSA-4w7w-5xrc-9h26","severity":"high","message":"undici@7.30.0 (npm) is affected by GHSA-4w7w-5xrc-9h26","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-4w7w-5xrc-9h26"},{"rule_id":"osv/GHSA-qrxm-fqhp-jwvm","severity":"high","message":"undici@7.30.0 (npm) is affected by GHSA-qrxm-fqhp-jwvm","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-qrxm-fqhp-jwvm"},{"rule_id":"osv/GHSA-xjj6-f33q-929c","severity":"high","message":"undici@7.30.0 (npm) is affected by GHSA-xjj6-f33q-929c","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-xjj6-f33q-929c"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@5.0.9 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@5.0.9 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-3g3m-2fjr-6pw4","severity":"medium","message":"glob@13.0.6 (npm) is affected by GHSA-3g3m-2fjr-6pw4","path":"package-lock.json","line":null,"fingerprint":"glob@13.0.6 (npm):GHSA-3g3m-2fjr-6pw4"},{"rule_id":"osv/GHSA-2vr4-cq9g-pvrc","severity":"medium","message":"ip-address@10.5.0 (npm) is affected by GHSA-2vr4-cq9g-pvrc","path":"package-lock.json","line":null,"fingerprint":"ip-address@10.5.0 (npm):GHSA-2vr4-cq9g-pvrc"},{"rule_id":"osv/GHSA-h3mg-xc3c-68pw","severity":"medium","message":"ip-address@10.5.0 (npm) is affected by GHSA-h3mg-xc3c-68pw","path":"package-lock.json","line":null,"fingerprint":"ip-address@10.5.0 (npm):GHSA-h3mg-xc3c-68pw"},{"rule_id":"osv/GHSA-j6r3-76f7-8jcv","severity":"medium","message":"ip-address@10.5.0 (npm) is affected by GHSA-j6r3-76f7-8jcv","path":"package-lock.json","line":null,"fingerprint":"ip-address@10.5.0 (npm):GHSA-j6r3-76f7-8jcv"},{"rule_id":"osv/GHSA-rpw4-54j3-4h4q","severity":"medium","message":"ip-address@10.5.0 (npm) is affected by GHSA-rpw4-54j3-4h4q","path":"package-lock.json","line":null,"fingerprint":"ip-address@10.5.0 (npm):GHSA-rpw4-54j3-4h4q"},{"rule_id":"osv/GHSA-rxp7-6hxx-x8q5","severity":"medium","message":"ip-address@10.5.0 (npm) is affected by GHSA-rxp7-6hxx-x8q5","path":"package-lock.json","line":null,"fingerprint":"ip-address@10.5.0 (npm):GHSA-rxp7-6hxx-x8q5"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@10.2.5 (npm) is affected by GHSA-g3hv-75wg-m249","path":"package-lock.json","line":null,"fingerprint":"minimatch@10.2.5 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-rj75-hqrm-r3gf","severity":"medium","message":"postcss-selector-parser@7.1.4 (npm) is affected by GHSA-rj75-hqrm-r3gf","path":"package-lock.json","line":null,"fingerprint":"postcss-selector-parser@7.1.4 (npm):GHSA-rj75-hqrm-r3gf"},{"rule_id":"osv/GHSA-3wwx-pv8p-q78v","severity":"medium","message":"undici@6.28.0 (npm) is affected by GHSA-3wwx-pv8p-q78v","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-3wwx-pv8p-q78v"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@6.28.0 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@6.28.0 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@6.29.0 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"package-lock.json","line":null,"fingerprint":"undici@6.29.0 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@6.29.0 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"package-lock.json","line":null,"fingerprint":"undici@6.29.0 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-4qv8-2p9j-2685","severity":"medium","message":"undici@7.30.0 (npm) is affected by GHSA-4qv8-2p9j-2685","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-4qv8-2p9j-2685"},{"rule_id":"osv/GHSA-55wc-3pg8-jfw6","severity":"medium","message":"undici@7.30.0 (npm) is affected by GHSA-55wc-3pg8-jfw6","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-55wc-3pg8-jfw6"},{"rule_id":"osv/GHSA-9fm3-97px-rjf6","severity":"medium","message":"undici@7.30.0 (npm) is affected by GHSA-9fm3-97px-rjf6","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-9fm3-97px-rjf6"},{"rule_id":"osv/GHSA-f72v-6w45-q472","severity":"medium","message":"undici@7.30.0 (npm) is affected by GHSA-f72v-6w45-q472","path":"package-lock.json","line":null,"fingerprint":"undici@7.30.0 (npm):GHSA-f72v-6w45-q472"},{"rule_id":"osv/GHSA-r53p-7pc4-xj5r","severity":"low","message":"undici@6.28.0 (npm) is affected by GHSA-r53p-7pc4-xj5r","path":"package-lock.json","line":null,"fingerprint":"undici@6.28.0 (npm):GHSA-r53p-7pc4-xj5r"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":4.0,"findings":42.0,"findings_high":25.0,"findings_medium":16.0,"findings_low":1.0,"penalty":330.3},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":12,"fingerprint":"unpinned-uses:.github/workflows/format.yml:12"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/format.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/format.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":28,"fingerprint":"unpinned-uses:.github/workflows/format.yml:28"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":35,"fingerprint":"unpinned-uses:.github/workflows/format.yml:35"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":39,"fingerprint":"unpinned-uses:.github/workflows/format.yml:39"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":45,"fingerprint":"unpinned-uses:.github/workflows/format.yml:45"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/format.yml","line":51,"fingerprint":"unpinned-uses:.github/workflows/format.yml:51"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/pr-title.yml","line":15,"fingerprint":"unpinned-uses:.github/workflows/pr-title.yml:15"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":15,"fingerprint":"unpinned-uses:.github/workflows/release.yml:15"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/release.yml","line":19,"fingerprint":"unpinned-uses:.github/workflows/release.yml:19"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":14,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:14"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":16,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:16"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":49,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:49"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":51,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:51"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":57,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:57"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":94,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:94"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":96,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:96"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":105,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:105"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":147,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:147"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":149,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:149"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":163,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:163"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":165,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:165"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":171,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:171"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/validate.yml","line":176,"fingerprint":"unpinned-uses:.github/workflows/validate.yml:176"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/format.yml","line":12,"fingerprint":"artipacked:.github/workflows/format.yml:12"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/format.yml","line":35,"fingerprint":"artipacked:.github/workflows/format.yml:35"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/format.yml","line":1,"fingerprint":"excessive-permissions:.github/workflows/format.yml:1"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/format.yml","line":8,"fingerprint":"excessive-permissions:.github/workflows/format.yml:8"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/format.yml","line":32,"fingerprint":"excessive-permissions:.github/workflows/format.yml:32"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/validate.yml","line":14,"fingerprint":"artipacked:.github/workflows/validate.yml:14"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/validate.yml","line":49,"fingerprint":"artipacked:.github/workflows/validate.yml:49"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/validate.yml","line":94,"fingerprint":"artipacked:.github/workflows/validate.yml:94"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/validate.yml","line":147,"fingerprint":"artipacked:.github/workflows/validate.yml:147"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/validate.yml","line":163,"fingerprint":"artipacked:.github/workflows/validate.yml:163"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":3,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:3"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":10,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:10"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":24,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:24"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":69,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:69"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":117,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:117"},{"rule_id":"zizmor/excessive-permissions","severity":"medium","message":"overly broad permissions [confidence medium]","path":".github/workflows/validate.yml","line":159,"fingerprint":"excessive-permissions:.github/workflows/validate.yml:159"},{"rule_id":"zizmor/artipacked","severity":"low","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/release.yml","line":15,"fingerprint":"artipacked:.github/workflows/release.yml:15"}],"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":0.0,"signed_commit_share":0.36,"unpinned_manifests":1.0},"findings":[],"evidence":[{"kind":"posture","description":"Security policy: SECURITY.md","ref":"SECURITY.md","url":null,"weight":0.0},{"kind":"posture","description":"composer.json has no lockfile alongside it (unpinned dependencies)","ref":"composer.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":1509.0,"function_nloc":9622.0,"mean_ccn":1.26,"p90_ccn":2.0,"complex_functions":0.0,"long_functions":0.0,"many_param_functions":0.0,"risky_nloc_share":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":8704.0,"duplicated_lines":2523.0,"duplicated_share":0.2899,"files":408.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Operations/MyBenSampoEnumQuery.php:16 and examples/custom-types/expected/Operations/MyCarbonDateQuery.php:15","ref":"examples/custom-types/expected/Operations/MyBenSampoEnumQuery.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Operations/MyBenSampoEnumQuery.php#L16","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Operations/MyBenSampoEnumQuery/MyBenSampoEnumQuery.php:24 and examples/custom-types/expected/Operations/MyCustomEnumQuery/MyCustomEnumQuery.php:24","ref":"examples/custom-types/expected/Operations/MyBenSampoEnumQuery/MyBenSampoEnumQuery.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Operations/MyBenSampoEnumQuery/MyBenSampoEnumQuery.php#L24","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Operations/MyCarbonDateQuery/MyCarbonDateQuery.php:21 and examples/custom-types/expected/Operations/MyDefaultDateQuery/MyDefaultDateQuery.php:21","ref":"examples/custom-types/expected/Operations/MyCarbonDateQuery/MyCarbonDateQuery.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Operations/MyCarbonDateQuery/MyCarbonDateQuery.php#L21","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Operations/MyEnumInputQuery.php:16 and examples/input/expected/Operations/TakeSomeInput.php:16","ref":"examples/custom-types/expected/Operations/MyEnumInputQuery.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Operations/MyEnumInputQuery.php#L16","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Operations/MyNestedCustomObjectQuery.php:12 and examples/php-keywords/expected/Operations/AllCases.php:12","ref":"examples/custom-types/expected/Operations/MyNestedCustomObjectQuery.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Operations/MyNestedCustomObjectQuery.php#L12","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/TypeConverters/CustomInputConverter.php:7 and examples/custom-types/expected/TypeConverters/CustomOutputConverter.php:7","ref":"examples/custom-types/expected/TypeConverters/CustomInputConverter.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/TypeConverters/CustomInputConverter.php#L7","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Types/BenSampoEnum.php:11 and examples/custom-types/expected/Types/CustomEnum.php:7","ref":"examples/custom-types/expected/Types/BenSampoEnum.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Types/BenSampoEnum.php#L11","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Types/__DirectiveLocation.php:5 and examples/inline-fragments/expected/Types/__DirectiveLocation.php:5","ref":"examples/custom-types/expected/Types/__DirectiveLocation.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Types/__DirectiveLocation.php#L5","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/expected/Types/__TypeKind.php:5 and examples/inline-fragments/expected/Types/__TypeKind.php:5","ref":"examples/custom-types/expected/Types/__TypeKind.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/expected/Types/__TypeKind.php#L5","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: examples/custom-types/sailor.php:25 and examples/inline-fragments/sailor.php:17","ref":"examples/custom-types/sailor.php","url":"https://github.com/spawnia/sailor/blob/a6d17438bc5c9dfd20bba1623190ce97f35195c1/examples/custom-types/sailor.php#L25","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":17646.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.3526,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":3111.0,"source_lines":17646.0,"test_ratio":0.1763,"ci_files":4.0,"cochange_share":0.5353,"cochange_commits":170.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/format.yml","ref":".github/workflows/format.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/pr-title.yml","ref":".github/workflows/pr-title.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/release.yml","ref":".github/workflows/release.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/validate.yml","ref":".github/workflows/validate.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (phpunit)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (phpstan)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["phpunit"],"lint_commands":["phpstan"]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":1.0,"check:changelog":1.0,"readme_lines":430.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":"CONTRIBUTING.md","ref":"CONTRIBUTING.md","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":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":5885.0,"other_lines":11761.0,"files_blamed":408.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}