{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T15:50:51.110674Z","repo":{"ref":{"host":"github.com","owner":"Homebrew","name":"brew"},"default_branch":"main","clone_url":"https://github.com/Homebrew/brew.git","html_url":"https://github.com/Homebrew/brew","description":"🍺 The Package Manager for Everywhere","stars":50330,"forks":11425,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":131799,"primary_language":"Ruby","license_spdx":"BSD-2-Clause","created_at":"2016-03-06T05:08:38Z","pushed_at":"2026-11-14T15:45:17Z","security_policy_url":"https://github.com/Homebrew/brew/security/policy","distribution":{"owner_created_at":"2012-03-05T16:21:25Z","owner_type":"Organization","release_assets":[{"name":"Homebrew.pkg","size":154292112,"download_count":28259,"release_tag":"7.0.13","url":"https://github.com/Homebrew/brew/releases/download/7.0.13/Homebrew.pkg"},{"name":"Homebrew.pkg","size":152451269,"download_count":33809,"release_tag":"7.0.12","url":"https://github.com/Homebrew/brew/releases/download/7.0.12/Homebrew.pkg"},{"name":"Homebrew.pkg","size":151797234,"download_count":33844,"release_tag":"7.0.11","url":"https://github.com/Homebrew/brew/releases/download/7.0.11/Homebrew.pkg"},{"name":"Homebrew.pkg","size":150923747,"download_count":33414,"release_tag":"7.0.10","url":"https://github.com/Homebrew/brew/releases/download/7.0.10/Homebrew.pkg"},{"name":"Homebrew.pkg","size":149711309,"download_count":50571,"release_tag":"7.0.9","url":"https://github.com/Homebrew/brew/releases/download/7.0.9/Homebrew.pkg"},{"name":"Homebrew.pkg","size":149115201,"download_count":16568,"release_tag":"7.0.8","url":"https://github.com/Homebrew/brew/releases/download/7.0.8/Homebrew.pkg"},{"name":"Homebrew.pkg","size":149550332,"download_count":34415,"release_tag":"7.0.7","url":"https://github.com/Homebrew/brew/releases/download/7.0.7/Homebrew.pkg"},{"name":"Homebrew.pkg","size":148807841,"download_count":62019,"release_tag":"7.0.6","url":"https://github.com/Homebrew/brew/releases/download/7.0.6/Homebrew.pkg"},{"name":"Homebrew.pkg","size":148826390,"download_count":1314,"release_tag":"7.0.5","url":"https://github.com/Homebrew/brew/releases/download/7.0.5/Homebrew.pkg"},{"name":"Homebrew.pkg","size":148075766,"download_count":34102,"release_tag":"7.0.4","url":"https://github.com/Homebrew/brew/releases/download/7.0.4/Homebrew.pkg"}]}},"commit_sha":"097e0b5957555b85dc4194eef06218a2aeab851f","profile":{"lines_by_language":{"Ruby":347213,"Shell":6465,"Python":43,"C#":34,"Objective-C":21},"files_by_category":{"source":1093,"test":1000,"generated":721,"other":373,"docs":116,"config":97,"binary":76,"vendored":9},"source_lines":173796,"test_lines":179980},"pillars":{"ai_provenance":{"score":1.2,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.0121,"suspected_share":0.0471,"estimated_share":0.0121,"ai_artifacts":5.0,"flagged_work_units":17.0,"flagged_releases":0.0,"style_index":0.083},"summary":"Explicit AI attribution on 1% of first-party code added; an estimated 1% including velocity signals."},"quality":{"score":86.6,"confidence":0.9,"coverage":1.0,"label":"strong","breakdown":{"complexity":64.8,"duplication":78.0,"lint":99.7,"testing":100.0,"docs":100.0,"type_safety":40.0,"process":100.0},"summary":"Code quality is strong: test-to-source ratio 1.04, CI runs tests; 14% of function code in complex or long functions; 4% duplicated lines. Weakest area: type safety."},"security":{"score":82.0,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":81.9,"sast":92.2,"dependencies":100.0,"ci_actions":59.5,"posture":100.0,"scorecard":41.2},"summary":"Security posture is adequate: 35 high-severity SAST findings; 3 high-severity workflow issues. Weakest area: scorecard."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.6.0","metrics":{"aggregate":5.9,"check:Code-Review":10.0,"check:Maintained":10.0,"check:Dangerous-Workflow":10.0,"check:CII-Best-Practices":0.0,"check:Token-Permissions":0.0,"check:Binary-Artifacts":0.0,"check:Fuzzing":0.0,"check:License":10.0,"check:Pinned-Dependencies":9.0,"check:Signed-Releases":0.0,"check:Security-Policy":10.0,"check:Branch-Protection":4.0,"check:SAST":10.0,"check:Packaging":10.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Code-Review: 10/10 (all changesets reviewed)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Maintained: 10/10 (30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10)","ref":"Maintained","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Dangerous-Workflow: 10/10 (no dangerous workflow patterns detected)","ref":"Dangerous-Workflow","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard CII-Best-Practices: 0/10 (no effort to earn an OpenSSF best practices badge detected)","ref":"CII-Best-Practices","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Token-Permissions: 0/10 (detected GitHub workflow tokens with excessive permissions)","ref":"Token-Permissions","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 0/10 (binaries present in source code)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Fuzzing: 0/10 (project is not fuzzed)","ref":"Fuzzing","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":1.0},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Pinned-Dependencies: 9/10 (dependency not pinned by hash detected -- score normalized to 9)","ref":"Pinned-Dependencies","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.1},{"kind":"scorecard-check","description":"Scorecard Signed-Releases: 0/10 (Project has not signed or included provenance with any releases.)","ref":"Signed-Releases","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Security-Policy: 10/10 (security policy file detected)","ref":"Security-Policy","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Branch-Protection: 4/10 (branch protection is not maximal on development and all release branches)","ref":"Branch-Protection","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.6},{"kind":"scorecard-check","description":"Scorecard SAST: 10/10 (SAST tool is run on all commits)","ref":"SAST","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Packaging: 10/10 (packaging workflow detected)","ref":"Packaging","url":"https://scorecard.dev/viewer/?uri=github.com/Homebrew/brew","weight":0.0}],"data":{"date":"2026-11-09","commit":"bc63375ac3a4d6debb1ceb441ae6e22854f0909a","matches_head":false},"error":null},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":1.0,"checked":1.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":33915.0,"attributed_commits":235.0,"attributed_commit_share":0.006929087424443462,"effective_loc":746366.0,"attributed_loc":9006.0,"attributed_loc_share":0.012066466050168416,"tools_detected":4.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 140 attributed commits, 4,030 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Claude Code: 90 attributed commits, 4,617 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 4 attributed commits, 305 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"Cursor agent: 1 attributed commits, 54 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"237a47e761688a402326a32bc249bbcbd8c4c2be","url":"https://github.com/Homebrew/brew/commit/237a47e761688a402326a32bc249bbcbd8c4c2be","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (6071b1f1bb)","ref":"783b9e5eef19bff38953cac3a1d936dca3e90773","url":"https://github.com/Homebrew/brew/commit/783b9e5eef19bff38953cac3a1d936dca3e90773","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: on merged branch (3264f71d24)","ref":"c0854395c8e24cd6dccae7194cbf3b1632bc779a","url":"https://github.com/Homebrew/brew/commit/c0854395c8e24cd6dccae7194cbf3b1632bc779a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: on merged branch (3264f71d24)","ref":"f4402a51a774353c6ab75cfc086f0486618b6f68","url":"https://github.com/Homebrew/brew/commit/f4402a51a774353c6ab75cfc086f0486618b6f68","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"ccdf5e593b0dbb7fd02116f9dae65e20f05a2834","url":"https://github.com/Homebrew/brew/commit/ccdf5e593b0dbb7fd02116f9dae65e20f05a2834","weight":0.9},{"kind":"attributed-commit","description":"Cursor agent: trailer 'Co-authored-by: Cursor'","ref":"867ebd86494865a96938b7b3b02ee30a5e1d164a","url":"https://github.com/Homebrew/brew/commit/867ebd86494865a96938b7b3b02ee30a5e1d164a","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"7d714cd81ae8d5d88a5a0f29b4c28bc2738cbc98","url":"https://github.com/Homebrew/brew/commit/7d714cd81ae8d5d88a5a0f29b4c28bc2738cbc98","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"beb9bf27fe5a39c9679681f877a7631de7050e43","url":"https://github.com/Homebrew/brew/commit/beb9bf27fe5a39c9679681f877a7631de7050e43","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"590816c8e056b94513ffebaddaa47ae8ab843fa2","url":"https://github.com/Homebrew/brew/commit/590816c8e056b94513ffebaddaa47ae8ab843fa2","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"b41be7915c9aff2a102857d56c80dd04c9b11d29","url":"https://github.com/Homebrew/brew/commit/b41be7915c9aff2a102857d56c80dd04c9b11d29","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"c9907afe9956bbb4f7943abc105eb850596ba38f","url":"https://github.com/Homebrew/brew/commit/c9907afe9956bbb4f7943abc105eb850596ba38f","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"d5f86b0818d53a03596c54ff7300db5f69fac7cd","url":"https://github.com/Homebrew/brew/commit/d5f86b0818d53a03596c54ff7300db5f69fac7cd","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"80bf383a67b57a842f245dfcb65e06dd6463094b","url":"https://github.com/Homebrew/brew/commit/80bf383a67b57a842f245dfcb65e06dd6463094b","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"9fe057afacc7e5b1025a887653b0044580e77486","url":"https://github.com/Homebrew/brew/commit/9fe057afacc7e5b1025a887653b0044580e77486","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"4e35c7c03a7683928e439d76bc4720c2875f56e6","url":"https://github.com/Homebrew/brew/commit/4e35c7c03a7683928e439d76bc4720c2875f56e6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'claude.ai/code'","ref":"a923f2766191e00a95ae92ed28fa97cdc64686a2","url":"https://github.com/Homebrew/brew/commit/a923f2766191e00a95ae92ed28fa97cdc64686a2","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: on merged branch (64a9bfcf4d)","ref":"cbd163bd6bfca8ebff0fd330b2ab15864420e2c3","url":"https://github.com/Homebrew/brew/commit/cbd163bd6bfca8ebff0fd330b2ab15864420e2c3","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: on merged branch (64a9bfcf4d)","ref":"b75d1b1105b12d6f28c9c6bd4d456251046de849","url":"https://github.com/Homebrew/brew/commit/b75d1b1105b12d6f28c9c6bd4d456251046de849","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: on merged branch (64a9bfcf4d)","ref":"b0f0ab217875f771850a52f3c1f188857a6de525","url":"https://github.com/Homebrew/brew/commit/b0f0ab217875f771850a52f3c1f188857a6de525","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'claude.ai/code'","ref":"7e2cd509d4d822179d4c6f6b0dfa291019a5d4dc","url":"https://github.com/Homebrew/brew/commit/7e2cd509d4d822179d4c6f6b0dfa291019a5d4dc","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"f453ee9b9883c6ec0f51402e778a57ec0f7ac06c","url":"https://github.com/Homebrew/brew/commit/f453ee9b9883c6ec0f51402e778a57ec0f7ac06c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a18dc37375559228e73879e2c3051c63e3d7d98c","url":"https://github.com/Homebrew/brew/commit/a18dc37375559228e73879e2c3051c63e3d7d98c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"41481eb5a07b43899e163bc386a05fc6ed60ac06","url":"https://github.com/Homebrew/brew/commit/41481eb5a07b43899e163bc386a05fc6ed60ac06","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'claude.ai/code'","ref":"678b955aff5602d46e6b9af69a2172f407a7a612","url":"https://github.com/Homebrew/brew/commit/678b955aff5602d46e6b9af69a2172f407a7a612","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'claude.ai/code'","ref":"c791ca532e8ab083cd8e5991e7eaa32663a218d4","url":"https://github.com/Homebrew/brew/commit/c791ca532e8ab083cd8e5991e7eaa32663a218d4","weight":0.9}],"data":{"attributed_loc_by_commit":{"7ad5460336f26d68c515a4c6b3f01c0b35031bdd":0,"985a91952aac82a99592363c5b2ec74f64c9e6f5":0,"ebb71682ab79616466b748f9e1da5ee25e743e94":18,"aaefb351b4a814e0c5795c4de7b8eccdb328d964":0,"64311c288940d2227978069744e599e06d0008e8":31,"23971854b02088bace7aadeeed4cff3ed8561e17":24,"e6ba71c5b118132f9bad5c3eff4839e4d0b782df":9,"cbe347782c3eb222ac14f7b1c38d21753d9d056a":86,"e22af1138883c892d585e215c05f63213df41050":44,"d785e2024b9e5ae1ce05f239d019db429b54e88d":30,"4ad7d59a255586c03bb2e4cb58c079bbc336fa97":84,"4ee43fbde119c2ba1ea623b77fc771810a066c4d":142,"9328a55c54f99722a11e39a7c1283c94134c040d":77,"cfa73266209977d0e3658659994d60bd17790b44":18,"d0ad96a9b343e4a3c121c7291419e78356a5ee49":39,"51565f97ae106ed12863ec4de61cb353b1772492":0,"c3934c8d8b2214a20286a7a255277e8da2ff5a9c":20,"42d4f3d8b920cb70fff7c1f9e12b1d9544a9064a":26,"7f6b4bee933a775a7c978f56e99218cd8e21a92b":48,"8b10231085c28f838dd9be4d3f42feefb6170cfa":20,"63fee348f75d7b4dcc15e9a5b6755b628612fe80":0,"a9cd0c4b5dfae6b177e9079518fdf7154bbe1831":83,"88b7d2900a59d13f148c07aae0ada910c1df2685":9,"6be546a5bcbeffc377b5065d70156485c9de63b3":0,"45a2ef9159a54f75b6055afee45dee939f26f17a":1,"ac6f770cdcdfa35dfdfe2565d222d5223442b686":21,"f973bea35ce988e797971627f84efaca9eff3afd":0,"a8b4d115f276d96127ec582635f0248c635bd3e3":4,"12ea343c9fbd030a67d1b2bfa4b88f794451994c":3,"25ed81f14b133d464b88842e113788bcdd307a5e":2,"6297f98d06b73a40d9d10641ec1ab57f26b72d55":112,"07091cfbeaf1080643ce4c5260d598b591436633":24,"3e413b45210c6876a6a01fe05de549187e2bef69":84,"088fa1abdd31b4e446b10eb6b9a6a7cd2091b123":40,"b1bd71c412e7993a4d7cac74d75605aef0292a21":66,"48f7d5680cf954a2b33815a0a6294af68fe545ff":21,"2bd0b81a1aa0ffb1bdda0e4b19b028ca272fbad5":71,"042e4c6723d74c52a4c755fd7f9a09723d1ce056":0,"42bfe4da1ab1c8387c30646a394599231e818a10":2,"8484bfc0d1faa3c2ea243924416f99204e10e126":88,"0e8e680cbf5811e7552ca51cd98fc3c9ec59d2a4":83,"4e0dd47bab3e6408324fbbdae174265d54f8f977":83,"3eb0e5dcb9474c2ca4f3b49a6b2b2b73951bc618":39,"098a252fce158339869b1266ec88a276b12a9af6":80,"39b154a5b442b9b23cfe7d40332ae23d5c03a16e":4,"01f05a149ba38526a4c4f0b0461a031523ccb600":10,"11c96a2a5c1b54f55a2ccb54a0d29642a9c45ad0":5,"58dcff12a26d7615d19f3d54fb55898c84091482":0,"8d5bb3b1a57326b147b99bf6bd4583b3442cdac9":0,"4be42254ba211a69deb1f2e3d4fb4a0c84c9d610":296,"c3a557e5b881738e2be63024e6c284a57c059310":83,"9a7eee5bd28fd00a8221f7f7fcb6b4fb44ee9f7b":7,"a24ff24443224bd73116eaab1b83c748dd3f797f":94,"74912b6c774f5dce56022fd79c6743d9b90ef1b2":1,"8f9650c1189a30ab8f323193148071b5ba61b567":2,"535dd6000a7618e018ee8432af845373dbc750ad":0,"3ac2a537cb2cf30e84a8a481ad6b2937b35fb9f0":9,"cd2ee2f6895db7bcfc66ee69bc8a0359d46c2fde":47,"5c50e6994dfcefdb14d151613cae45ca8ee22a10":2,"e7790410eb4f4dcb9af0350cca98e4c46c9621f4":5,"b6e5109a2e232a72699e48d6222b3041133666b2":4,"877fb577a8c2bfe0654ac5d8c4f797859a3300bd":1,"7e365f0150548518b27219be8f2a7558df665881":0,"cfbb4b3d50ed4947a1bd842dd816e4c84b2e4fb8":1,"35fa8956de176161ca2271897b029079a55480c2":0,"d8eaf6d62e11cc5fb4d9ff1d0e77d597201bd2be":1,"c45cd0327defeb5d495cf493cd32503e0a802e64":1,"9b7444566b4c478364c307eff2e20cbff97e0f1d":0,"835d6092e0b9a1c85c37f58f96f976853eabd614":0,"c0cf64bcafe1147b83400421a9756b8d9ba89a59":0,"95c90b3297c0242b7e724e631bc3c0011c1e2054":13,"bc7621c6c3f5f0ed4ecf7832cf9c40f589685b05":16,"f3966cc91e008988d4ae81b54ceaf481f9097c2d":1,"d1813f79dd2c68505eca2dbd99a5079dfe05ad01":1,"45b7a6a95c64868b343f1612f02b369ca99ebff7":0,"82f7e3d9e97bec8df0ff671611b85fa265e4bd17":1,"0819fa1d5cc3f7041e8fa5dce0de8cd7116f7e27":6,"65831314a9efd472849a17e2ab0ba883f2c07ecd":12,"b5e531e5e30e935c274f8c9e81107bf2ab5c2a80":9,"0ebc772a37faeec404e09aa4fd212ec25b3a0dca":0,"1e0827b73b5b2469be646183e9cb27bfe0e16db4":102,"630ee42e1ea07ec7db346e2facd0fca6915a2b5b":1,"2c5c1c412c1771e4c82594061ddf8161c91f5e87":1,"00d6ce63ca4805294635bd2d7652f78895dbabb4":8,"9290e1be7ef94ef97f13d900646c90d376519152":4,"b7e85318d44924afe4ca1d6e5d0212a66f0a9565":1,"9ddeeed5792a418dc43c4377ff7a151fe40eb935":4,"655fe687e9ae239b458b292a317a7fd64f6bd235":0,"7f333c6b51a8f1c5f955c80e20a8057edc92c067":43,"4a18171733da46e4aa431f3c39bdcef12c22a3d7":47,"e0f07cf69b9fd33865c97e90425dfe842b35af80":86,"4d2c2c98452a7c684b752df3d3d5521968633400":118,"2687e45650f01051efd9c8ca9d5b5660f9b802c8":9,"2e9e97a8d1e7612da3d764d976e112f6125f152c":312,"fb6e7b946672c4151cbba3d44bddfbe5d3146967":0,"3efedbcf973b2db5cf2e9b89c291a8f15a2909bc":0,"17fcedfd9d39c08614e6d3c6638dc21727eef638":100,"a6e85aa3cde36651fdd6186807bad2c684cb662c":55,"8bfcf089d2fcf70a85769012226d896c5a0a6c8f":123,"d4336777e0dd7c8173995dce5f1440852af233ac":65,"c3d3615b6154279f96c232e72cbf7c2212397c14":8,"751c81214342b2aef8e572c29d43b84efdb25096":0,"b694d232c5892c6c152eb4e5b165599725a9d281":0,"5330301bd22c1905b4c9b2198aad0f6bb945ae7c":5,"b981367855889ca3bfe7d386c2ae8d7c2cf77340":20,"ea5dd50005005c3b9f4ae579e1f02a82369a1648":6,"e975749efdd138e0982854d4070476cb44237d6a":1,"7276dd47a227f3cff69624fe4d61bf24791a0ef7":107,"abc532b63c536325210742bfebce821327526cf6":7,"30974a996b4b22394609789487ffc73e763cebf1":3,"a2e01c36be5d07897c1c8bdb3b87677d88fb9bca":0,"145b305c54de08cb23a2495af5c95c729ba26900":58,"8817a580a2a7e1316815c5613848e3d0af81ba36":22,"0ca48d8cd0dc15e3af4a7f46f82bb8df6e6fd2ac":13,"98e9a9c63325e74ed3e959aa6c7bbb6c2069b446":129,"302fbc6151730661b7a2dd8e0a82f805509b5ec5":10,"8d78cb9f358b0ffb64d414437bbf492330549a78":28,"6269e11960f36c96bfd5efb4a7d4a5391f4d8127":239,"8ec25ba7d972de61c08c71521640fb174e0ee0d9":0,"2f4ffcf8f33cea28671dc9920edc3bb14fd1e633":0,"17861d27173848381743547e3e426b4dee35269c":36,"a6ac45c8a5508d2a7ebbbb2844cc825fad9084d1":80,"977cf7ec3bb2b8d9a10b7315692e8b20f6c03b03":27,"3d654f8f662e47bfad4f519eaa1937c69ca45721":1,"6f89ecbc8070132b17160b5ef9b37aee9b028f08":9,"ec19eadb4a586f733851fc539f2ee61282631894":1,"c9f2220c59dbd63dbb6e1a6e6d123046ff6e78d4":1,"6c237beceb4180f3634e99e0bb0dc173fb1a49b3":737,"356d84d84d58ba3be1ac91f50e6187a72c195886":16,"a2d76a841be78a4273775f1135facbb089e46837":5,"3fa754a9420995ffa5512b5fa0c7892bb1836aa6":0,"28cb0c4f12d3ed075114e9a571f2c23adcf97e9a":58,"7b6631d1880d29e872ad2cb0c5467ecef34b98a3":0,"54e9364398e4b1d632b4e99adf80cb9caa6cab48":0,"39ee3285ab6ab0da9dfbff01dd076efea382b0d4":9,"726f2847c8f1e7df7f379d044fd8cabbac339b06":11,"af03ab555ead3c7885eb15d34dfab86e8a13b35d":4,"92869c31ea9703f55a1ead544a79016cf3206dd5":4,"7aeb235a88d735a4a0facca4b1576531263e0382":1,"e6ad1ad429813de92c07cc3f6d9f71217b6df209":1,"557f0910b3bcc036f1d8dc29f0d92632d856568f":52,"ab98e4b5732c5bf194a5acd6667274148dfb232f":46,"c0d5e326df5862f13933f79988fe02c7d431887b":3,"a96fb77e286e7c7dd1834acf2cc496194774711d":1,"d5ef0e9394b8744feba7721d9ecb1011431cf9ec":81,"e9df7eea96263d08fce87d8b8c7ed490630b57e3":76,"0da081282072b7acef20059024b9335298bb0f04":29,"512372e3548b1481f656a00cb068a6efb8f5a155":17,"53033bf6a10ff189033bea21c0708fe81820f8b3":3,"e54c9d32631c3f89a84311105863b2189454005d":2,"e60da2d4e52f4bbcf2c925f1d3e934d40477403f":11,"cbdac5d19cbd4215ad08807c4512e3093c38d32b":91,"16f81703b674ec8e8cacab7280ab9303f3f937b3":53,"551303163a1c57837fdf365d81eadae0f1edeb6b":51,"f12fab6b008d3322f2ceba0ef5a2a52ff5ccb9cc":9,"367a2e2c3e10921311137c8c947cbd9b8ed5fc49":2,"ada1594676c913edeaa0d7afe33242765baa7a13":57,"b71042b7c27dedc773c79716c2c4e95fee8c4fe7":0,"b361e6b95fc33d9cd3b487b8375eff300e7da339":77,"8afc96d27677fd234eaa226f04b3cd11935347ff":1,"3c1b38ce56d2bd0a26aba2cbb26d5a8186e2bada":5,"07886575267c073fcfe43b2141ca436cfed0b3f8":3,"efa0434c0506263b57b8d19ac7551384db64db04":1,"1bd7371064ce818b094fb809abfc28914dd41381":75,"0349a22185c55ea957b1b87b91f80f61a9e4ecce":35,"a778a655737f69ca5a7cad2e22b405ac625b37bc":108,"ec23d482549df53cf64ce202a109070d7cf6a1c4":45,"72d5c03c8ab14e065e75ee4e9d878de6f4a9c983":0,"3f8abc75f150123d6b25581d8cfeb53a5b57c639":6,"3592fc05f1f14b90f9caff72b61cb55883883482":2,"0b0daeeaa2b14dac79361ae581e50767a815fa11":4,"3510d9fd84b4b3fb64e88a240662c434d66e50b2":11,"f9c460cb0dab583db689ffb931ee49f8822b0749":6,"cfc2370b4eb2518e8456ad2266db0f518ec29bc7":50,"e59c1f47bf7ae42f4984605d6531927ac64b89cc":20,"f285a1586e64e274e8290fd8ebc92b43cf278628":101,"1838274fba4a5a5d8275f23530c9fad128ad233a":10,"b5bda5a6bae0cd8f3d6cca3ba520b2be9f2b768c":1,"22c0e9581b1ce303b3225f63e10df79d369da0ed":1,"5983b25765c42f5b6d6220319e9ac545b1f5a9c6":88,"77d20963e050b46a4102e4af2b99f2c810edfe17":1,"359d1f7f605b2366a8dc7a5d8f032ff6e35537cb":26,"e5bd6b750c5861804df66a0a6673126b60fa45c8":6,"253baf4038bd35aa894946d04c0338dfb78d6666":3,"9d1706f921f0f012f0f50d6148721161d1f524c5":53,"7d546e73149ddf09ec20d5e52cf11b15b4c19b5a":66,"bd4ca196b863f3bd579b8ac55170162d68e8167c":31,"336c86f69ee43f7c2c9d8fbf77990c5f785cc5b8":1,"b6f952569abe69c0cc57032aac7d52ac672a3852":4,"220f5e5c4bcc83227590e6bb20f1967e3fe41601":3,"ba4837942b6faec083b984d865b3c11f625b12b0":76,"627cf1179bcf2f3784ce0f83a11ca344426e6151":35,"9f23c03c545f1505eedfa9c1b445caa2fee8f470":66,"bc9a9e64a76a539fc053fb0e4e7ae1d81861b360":59,"5fe0f9156a4b808ed612e23ac67a3e2853e1f6e3":0,"d4fb3fc04b21e39b5697b7aecd1a1d1d4d3dadc9":3,"99e7f7f2ada95cc5c0e01a972fc724591009b022":0,"8caef6b7fb98fca5bd863e0f1c82b0d944f5111e":1,"85491b60e232437138530b8474d59e8375ef99bc":1,"94392d030734f6fb6c2cb08c0b624f492107e534":25,"3cd4b81833ba5cd154212a87a83bcc2935ee0e53":31,"8114bb85d377d1a1e1900b85b7c390318b8ff0fc":25,"94a4412d4f46aef945fb878c72534e684b1dec6d":51,"1be772fa4ad9ef44f3bcd7776c152874fa5c6758":22,"14ff5bed5ebd8c2a0b2ebef1280bc36ef93c25b4":24,"2b2bcf5135eb4d7b0a85f115101e42d6030be322":0,"10e43c882d9024c18eb100eea2935bb8d8580303":4,"fa7c1ef68fc7943b0bee9b20c95eba24a8dc4b6a":0,"9391c398b832b8f6604fba5c9189365e3885c708":38,"29cb5e338a49290d813aa063312b7b79c5d10732":241,"678b955aff5602d46e6b9af69a2172f407a7a612":3,"c791ca532e8ab083cd8e5991e7eaa32663a218d4":1,"41481eb5a07b43899e163bc386a05fc6ed60ac06":2,"a18dc37375559228e73879e2c3051c63e3d7d98c":12,"f453ee9b9883c6ec0f51402e778a57ec0f7ac06c":1,"7e2cd509d4d822179d4c6f6b0dfa291019a5d4dc":0,"b0f0ab217875f771850a52f3c1f188857a6de525":37,"b75d1b1105b12d6f28c9c6bd4d456251046de849":1,"cbd163bd6bfca8ebff0fd330b2ab15864420e2c3":8,"a923f2766191e00a95ae92ed28fa97cdc64686a2":41,"4e35c7c03a7683928e439d76bc4720c2875f56e6":1,"9fe057afacc7e5b1025a887653b0044580e77486":1,"80bf383a67b57a842f245dfcb65e06dd6463094b":1,"d5f86b0818d53a03596c54ff7300db5f69fac7cd":1,"c9907afe9956bbb4f7943abc105eb850596ba38f":0,"b41be7915c9aff2a102857d56c80dd04c9b11d29":7,"590816c8e056b94513ffebaddaa47ae8ab843fa2":2,"beb9bf27fe5a39c9679681f877a7631de7050e43":49,"7d714cd81ae8d5d88a5a0f29b4c28bc2738cbc98":1,"867ebd86494865a96938b7b3b02ee30a5e1d164a":54,"ccdf5e593b0dbb7fd02116f9dae65e20f05a2834":1,"f4402a51a774353c6ab75cfc086f0486618b6f68":390,"c0854395c8e24cd6dccae7194cbf3b1632bc779a":245,"783b9e5eef19bff38953cac3a1d936dca3e90773":20,"237a47e761688a402326a32bc249bbcbd8c4c2be":997},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":140,"loc":4030,"first_seen":1745338435,"last_seen":1794408017},"claude-code":{"name":"Claude Code","commits":90,"loc":4617,"first_seen":1754401104,"last_seen":1792226018},"openai-codex":{"name":"OpenAI Codex","commits":4,"loc":305,"first_seen":1769327043,"last_seen":1792702008},"cursor":{"name":"Cursor agent","commits":1,"loc":54,"first_seen":1790627817,"last_seen":1790627817}},"monthly":{"2012-12":{"loc":11,"attributed_loc":0},"2013-01":{"loc":23,"attributed_loc":0},"2013-03":{"loc":442,"attributed_loc":0},"2013-05":{"loc":15,"attributed_loc":0},"2013-06":{"loc":188,"attributed_loc":0},"2013-07":{"loc":591,"attributed_loc":0},"2013-08":{"loc":1526,"attributed_loc":0},"2013-09":{"loc":1689,"attributed_loc":0},"2013-10":{"loc":2171,"attributed_loc":0},"2013-11":{"loc":629,"attributed_loc":0},"2013-12":{"loc":1217,"attributed_loc":0},"2014-01":{"loc":331,"attributed_loc":0},"2014-02":{"loc":844,"attributed_loc":0},"2014-03":{"loc":2160,"attributed_loc":0},"2014-04":{"loc":1177,"attributed_loc":0},"2014-05":{"loc":818,"attributed_loc":0},"2014-06":{"loc":2113,"attributed_loc":0},"2014-07":{"loc":1574,"attributed_loc":0},"2014-08":{"loc":1002,"attributed_loc":0},"2014-09":{"loc":2286,"attributed_loc":0},"2014-10":{"loc":1035,"attributed_loc":0},"2014-11":{"loc":581,"attributed_loc":0},"2014-12":{"loc":1549,"attributed_loc":0},"2015-01":{"loc":670,"attributed_loc":0},"2015-02":{"loc":943,"attributed_loc":0},"2015-03":{"loc":606,"attributed_loc":0},"2015-04":{"loc":1250,"attributed_loc":0},"2015-05":{"loc":1202,"attributed_loc":0},"2015-06":{"loc":1393,"attributed_loc":0},"2015-07":{"loc":1049,"attributed_loc":0},"2015-08":{"loc":5570,"attributed_loc":0},"2015-09":{"loc":1591,"attributed_loc":0},"2015-10":{"loc":731,"attributed_loc":0},"2015-11":{"loc":699,"attributed_loc":0},"2015-12":{"loc":2164,"attributed_loc":0},"2016-01":{"loc":4889,"attributed_loc":0},"2016-02":{"loc":985,"attributed_loc":0},"2016-03":{"loc":996,"attributed_loc":0},"2016-04":{"loc":4255,"attributed_loc":0},"2016-05":{"loc":1811,"attributed_loc":0},"2016-06":{"loc":1752,"attributed_loc":0},"2016-07":{"loc":3684,"attributed_loc":0},"2016-08":{"loc":18060,"attributed_loc":0},"2016-09":{"loc":13785,"attributed_loc":0},"2016-10":{"loc":3710,"attributed_loc":0},"2016-11":{"loc":1491,"attributed_loc":0},"2016-12":{"loc":1839,"attributed_loc":0},"2017-01":{"loc":1790,"attributed_loc":0},"2017-02":{"loc":17008,"attributed_loc":0},"2017-03":{"loc":3586,"attributed_loc":0},"2017-04":{"loc":3040,"attributed_loc":0},"2017-05":{"loc":3838,"attributed_loc":0},"2017-06":{"loc":2077,"attributed_loc":0},"2017-07":{"loc":2834,"attributed_loc":0},"2017-08":{"loc":4713,"attributed_loc":0},"2017-09":{"loc":907,"attributed_loc":0},"2017-10":{"loc":4197,"attributed_loc":0},"2017-11":{"loc":1343,"attributed_loc":0},"2017-12":{"loc":1210,"attributed_loc":0},"2018-01":{"loc":1253,"attributed_loc":0},"2018-02":{"loc":1540,"attributed_loc":0},"2018-03":{"loc":2465,"attributed_loc":0},"2018-04":{"loc":2784,"attributed_loc":0},"2018-05":{"loc":1852,"attributed_loc":0},"2018-06":{"loc":2820,"attributed_loc":0},"2018-07":{"loc":6009,"attributed_loc":0},"2018-08":{"loc":5135,"attributed_loc":0},"2018-09":{"loc":4727,"attributed_loc":0},"2018-10":{"loc":4519,"attributed_loc":0},"2018-11":{"loc":2102,"attributed_loc":0},"2018-12":{"loc":328,"attributed_loc":0},"2019-01":{"loc":2206,"attributed_loc":0},"2019-02":{"loc":1677,"attributed_loc":0},"2019-03":{"loc":1679,"attributed_loc":0},"2019-04":{"loc":3197,"attributed_loc":0},"2019-05":{"loc":795,"attributed_loc":0},"2019-06":{"loc":204,"attributed_loc":0},"2019-07":{"loc":613,"attributed_loc":0},"2019-08":{"loc":940,"attributed_loc":0},"2019-09":{"loc":791,"attributed_loc":0},"2019-10":{"loc":1485,"attributed_loc":0},"2019-11":{"loc":1005,"attributed_loc":0},"2019-12":{"loc":519,"attributed_loc":0},"2020-01":{"loc":587,"attributed_loc":0},"2020-02":{"loc":716,"attributed_loc":0},"2020-03":{"loc":1759,"attributed_loc":0},"2020-04":{"loc":3918,"attributed_loc":0},"2020-05":{"loc":1532,"attributed_loc":0},"2020-06":{"loc":5282,"attributed_loc":0},"2020-07":{"loc":7648,"attributed_loc":0},"2020-08":{"loc":11382,"attributed_loc":0},"2020-09":{"loc":4790,"attributed_loc":0},"2020-10":{"loc":4809,"attributed_loc":0},"2020-11":{"loc":7466,"attributed_loc":0},"2020-12":{"loc":7400,"attributed_loc":0},"2021-01":{"loc":14935,"attributed_loc":0},"2021-02":{"loc":4822,"attributed_loc":0},"2021-03":{"loc":4556,"attributed_loc":0},"2021-04":{"loc":4206,"attributed_loc":0},"2021-05":{"loc":2335,"attributed_loc":0},"2021-06":{"loc":1695,"attributed_loc":0},"2021-07":{"loc":2905,"attributed_loc":0},"2021-08":{"loc":2373,"attributed_loc":0},"2021-09":{"loc":2771,"attributed_loc":0},"2021-10":{"loc":1725,"attributed_loc":0},"2021-11":{"loc":1679,"attributed_loc":0},"2021-12":{"loc":871,"attributed_loc":0},"2022-01":{"loc":971,"attributed_loc":0},"2022-02":{"loc":575,"attributed_loc":0},"2022-03":{"loc":736,"attributed_loc":0},"2022-04":{"loc":481,"attributed_loc":0},"2022-05":{"loc":1690,"attributed_loc":0},"2022-06":{"loc":3065,"attributed_loc":0},"2022-07":{"loc":3902,"attributed_loc":0},"2022-08":{"loc":4855,"attributed_loc":0},"2022-09":{"loc":2235,"attributed_loc":0},"2022-10":{"loc":985,"attributed_loc":0},"2022-11":{"loc":1286,"attributed_loc":0},"2022-12":{"loc":1352,"attributed_loc":0},"2023-01":{"loc":1789,"attributed_loc":0},"2023-02":{"loc":6357,"attributed_loc":0},"2023-03":{"loc":7471,"attributed_loc":0},"2023-04":{"loc":9301,"attributed_loc":0},"2023-05":{"loc":4261,"attributed_loc":0},"2023-06":{"loc":1716,"attributed_loc":0},"2023-07":{"loc":2156,"attributed_loc":0},"2023-08":{"loc":1270,"attributed_loc":0},"2023-09":{"loc":1589,"attributed_loc":0},"2023-10":{"loc":774,"attributed_loc":0},"2023-11":{"loc":1499,"attributed_loc":0},"2023-12":{"loc":2479,"attributed_loc":0},"2024-01":{"loc":3990,"attributed_loc":0},"2024-02":{"loc":5194,"attributed_loc":0},"2024-03":{"loc":15568,"attributed_loc":0},"2024-04":{"loc":7920,"attributed_loc":0},"2024-05":{"loc":2136,"attributed_loc":0},"2024-06":{"loc":2699,"attributed_loc":0},"2024-07":{"loc":5127,"attributed_loc":0},"2024-08":{"loc":2735,"attributed_loc":0},"2024-09":{"loc":4820,"attributed_loc":0},"2024-10":{"loc":1726,"attributed_loc":0},"2024-11":{"loc":1811,"attributed_loc":0},"2024-12":{"loc":1407,"attributed_loc":0},"2025-01":{"loc":1709,"attributed_loc":0},"2025-02":{"loc":7830,"attributed_loc":0},"2025-03":{"loc":11597,"attributed_loc":0},"2025-04":{"loc":3162,"attributed_loc":0},"2025-05":{"loc":1150,"attributed_loc":0},"2025-06":{"loc":6285,"attributed_loc":0},"2025-07":{"loc":3526,"attributed_loc":18},"2025-08":{"loc":7310,"attributed_loc":791},"2025-09":{"loc":7375,"attributed_loc":356},"2025-10":{"loc":2929,"attributed_loc":967},"2025-11":{"loc":6488,"attributed_loc":102},"2025-12":{"loc":5321,"attributed_loc":3},"2026-01":{"loc":4821,"attributed_loc":129},"2026-02":{"loc":11469,"attributed_loc":634},"2026-03":{"loc":20182,"attributed_loc":760},"2026-04":{"loc":14048,"attributed_loc":1210},"2026-05":{"loc":39967,"attributed_loc":30},"2026-06":{"loc":23102,"attributed_loc":940},"2026-07":{"loc":40556,"attributed_loc":1255},"2026-08":{"loc":26972,"attributed_loc":44},"2026-09":{"loc":42245,"attributed_loc":114},"2026-10":{"loc":22592,"attributed_loc":656},"2026-11":{"loc":19355,"attributed_loc":997}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":5.0,"workflow_agents":0.0,"tools_configured":3.0,"earliest_adoption":1758723202.0},"findings":[],"evidence":[{"kind":"ai-artifact","description":".claude/settings.json (claude-code configuration)","ref":".claude/settings.json","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/.claude/settings.json","weight":0.5},{"kind":"ai-artifact","description":"CLAUDE.md (claude-code configuration)","ref":"CLAUDE.md","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/CLAUDE.md","weight":0.5},{"kind":"ai-artifact","description":"AGENTS.md (generic-agent configuration)","ref":"AGENTS.md","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":"docs/AGENTS.md (generic-agent configuration)","ref":"docs/AGENTS.md","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/docs/AGENTS.md","weight":0.5},{"kind":"ai-artifact","description":".cursor/hooks.json (cursor configuration)","ref":".cursor/hooks.json","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/.cursor/hooks.json","weight":0.5}],"data":{"artifacts":[{"tool":"claude-code","path":".claude/settings.json","added_at":1760018920},{"tool":"claude-code","path":"CLAUDE.md","added_at":1770053422},{"tool":"generic-agent","path":"AGENTS.md","added_at":1758723202},{"tool":"generic-agent","path":"docs/AGENTS.md","added_at":1775414196},{"tool":"cursor","path":".cursor/hooks.json","added_at":1760018920}],"workflows":[],"tools":["claude-code","cursor","generic-agent"]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"work_units":16165.0,"flagged_units":17.0,"pre_ai_era_bursts":4.0,"pre_ai_era_measured_loc":264565.0,"pre_ai_era_burst_loc":9073.0,"measured_loc":710816.0,"flagged_loc":35157.0,"flagged_loc_share":0.0494600571737271,"max_loc_per_hour":2359.417273673257,"median_loc_per_hour":55.5,"pr_timed_units":0.0,"excluded_import_loc":35550.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"2,032 lines of first-party code in ~1.7h (1,181 lines/hour, 4 commit session)","ref":"ec249da5f70e29ad66d0268ebaa973c20cb302ae","url":"https://github.com/Homebrew/brew/commit/ec249da5f70e29ad66d0268ebaa973c20cb302ae","weight":0.35424697336561745},{"kind":"velocity-burst","description":"1,133 lines of first-party code in ~1.0h (1,110 lines/hour, 1 commit session)","ref":"ea2892f8ee58494623fc3c15cc8ce81b9124e6e6","url":"https://github.com/Homebrew/brew/commit/ea2892f8ee58494623fc3c15cc8ce81b9124e6e6","weight":0.3328726877040261},{"kind":"velocity-burst","description":"1,732 lines of first-party code in ~1.6h (1,075 lines/hour, 3 commit session)","ref":"613ae9b9496e455391800608ba7f4de20947020a","url":"https://github.com/Homebrew/brew/commit/613ae9b9496e455391800608ba7f4de20947020a","weight":0.3223991726990693},{"kind":"velocity-burst","description":"3,846 lines of first-party code in ~4.0h (962 lines/hour, 1 commit session)","ref":"46d728bad94289141fc91b47270247302a4c2d3b","url":"https://github.com/Homebrew/brew/commit/46d728bad94289141fc91b47270247302a4c2d3b","weight":0.28845},{"kind":"velocity-burst","description":"1,626 lines of first-party code in ~1.7h (955 lines/hour, 1 commit session)","ref":"03b815df829669cc1d12b5f7b30540077876bf57","url":"https://github.com/Homebrew/brew/commit/03b815df829669cc1d12b5f7b30540077876bf57","weight":0.2864263578535312},{"kind":"velocity-burst","description":"2,353 lines of first-party code in ~2.5h (949 lines/hour, 16 commit session)","ref":"a2492c25a2d66a687e41bf4b27968e5782057dbe","url":"https://github.com/Homebrew/brew/commit/a2492c25a2d66a687e41bf4b27968e5782057dbe","weight":0.28466898174078636},{"kind":"velocity-burst","description":"3,786 lines of first-party code in ~4.0h (946 lines/hour, 2 commit session)","ref":"7472e3191c6c75b86207b14654afed9fb58c72b3","url":"https://github.com/Homebrew/brew/commit/7472e3191c6c75b86207b14654afed9fb58c72b3","weight":0.2837726420986883},{"kind":"velocity-burst","description":"2,422 lines of first-party code in ~2.9h (829 lines/hour, 1 commit session)","ref":"1f6de78efa9e7a9b987cc88e4094e546b17e3124","url":"https://github.com/Homebrew/brew/commit/1f6de78efa9e7a9b987cc88e4094e546b17e3124","weight":0.24874096614682384},{"kind":"velocity-burst","description":"2,966 lines of first-party code in ~4.0h (736 lines/hour, 2 commit session)","ref":"204ea7e964ab4c3e751afea5ee51b624bfbc7c6f","url":"https://github.com/Homebrew/brew/commit/204ea7e964ab4c3e751afea5ee51b624bfbc7c6f","weight":0.22071797698615037},{"kind":"velocity-burst","description":"2,633 lines of first-party code in ~4.0h (658 lines/hour, 1 commit session)","ref":"4c0e9ca1223b41ee5dafd2ca342d36eb68dbede1","url":"https://github.com/Homebrew/brew/commit/4c0e9ca1223b41ee5dafd2ca342d36eb68dbede1","weight":0.19747499999999998},{"kind":"velocity-burst","description":"2,603 lines of first-party code in ~4.0h (651 lines/hour, 1 commit session)","ref":"3ef52e484428f6acbdc3316ac650de4b255c8e94","url":"https://github.com/Homebrew/brew/commit/3ef52e484428f6acbdc3316ac650de4b255c8e94","weight":0.195225},{"kind":"velocity-burst","description":"1,125 lines of first-party code in ~1.8h (621 lines/hour, 3 commit session)","ref":"4c1998c75753bba578f895953237c0b3ffc2497d","url":"https://github.com/Homebrew/brew/commit/4c1998c75753bba578f895953237c0b3ffc2497d","weight":0.1862354383813611},{"kind":"velocity-burst","description":"2,164 lines of first-party code in ~3.5h (612 lines/hour, 3 commit session)","ref":"9fae2b1344f94f5d45835da8e973f876f7a61d4f","url":"https://github.com/Homebrew/brew/commit/9fae2b1344f94f5d45835da8e973f876f7a61d4f","weight":0.18364922206506365},{"kind":"velocity-burst","description":"1,070 lines of first-party code in ~1.9h (553 lines/hour, 6 commit session)","ref":"6d53ee38ba70e75a3e8b920a9a286a1355a521c9","url":"https://github.com/Homebrew/brew/commit/6d53ee38ba70e75a3e8b920a9a286a1355a521c9","weight":0.16596294700560102},{"kind":"velocity-burst","description":"1,387 lines of first-party code in ~2.7h (521 lines/hour, 1 commit session)","ref":"cd65e94cef9548ee5464a63f2b12bffdb2d11d88","url":"https://github.com/Homebrew/brew/commit/cd65e94cef9548ee5464a63f2b12bffdb2d11d88","weight":0.15641223765270962}],"data":{"flagged_loc_by_commit":{"ea2892f8ee58494623fc3c15cc8ce81b9124e6e6":1133,"cd65e94cef9548ee5464a63f2b12bffdb2d11d88":1387,"4c0e9ca1223b41ee5dafd2ca342d36eb68dbede1":2633,"1086345856b30e23e86971780ac11224648bfe58":3617,"7472e3191c6c75b86207b14654afed9fb58c72b3":169,"fb58f4ad0b54e5e1845de63b7014f636606c4eec":178,"8c375459574eff89652a929a2a1e74019cf69927":915,"7e580b76a89b0123e7f8ed268d3a8402c62fc320":141,"0c8f0ac0970564cb7c425e3c484a18616bb34a13":78,"0dc0566a73b0b10443d19183391dfccd587241d6":126,"4c1998c75753bba578f895953237c0b3ffc2497d":921,"b312752fc0b13d4c7ad8e9a1aa13fbc20d493c6b":141,"204ea7e964ab4c3e751afea5ee51b624bfbc7c6f":2825,"1f6de78efa9e7a9b987cc88e4094e546b17e3124":2422,"0726d8c7ca778b5f3cb830639a1d412826eefe92":378,"31986b7edd6b83cfdc0787c4a9e4d4a5aeafab46":352,"074427b90b22c548b35ae943154eb947eb5bb78a":516,"ec249da5f70e29ad66d0268ebaa973c20cb302ae":786,"91c7396908ca4b1ccd5db40b283302871f1dee5b":203,"859cbed12220c33d618e861cd3aa771fd694c9d8":493,"9fae2b1344f94f5d45835da8e973f876f7a61d4f":1468,"49036b92a3e6406d7d31018a16d8abb88e6d8a12":858,"76fdf66f27e5da9ac69ff122abb5bbff40ff2157":220,"613ae9b9496e455391800608ba7f4de20947020a":654,"f99d39faf9f0700a54fbb2d766aadc05a06280a8":232,"665bda0fbd9fdd36689498fecb1e94881dea0b95":642,"0caaa1fa3659a3111ca96e2854949d090b837c73":97,"ae249ec282c7552d5658c11a8310180c4ce43343":73,"2e90749f9f1db97c7f1e65ce885ef526f8471fbe":1,"dc062bea52670ac7db50f5eee67c1648fc089368":634,"6d362ccb3b74834185ee5307c3bd79cc5cfc4a28":139,"177bab38c74be0a41e3f1f3c74df974fd193701c":90,"1436b06e906c93b153cc7e116f5abb6430fc5c7b":90,"0d04f198d2c8fd4c0782290c8c922c4803821bab":58,"e0519d736a9a69b5ed154b7370fd040008c91e23":176,"827e943803da5746622a6739dacd16539cf4b1d7":106,"445d81db2e84f74d2d0171fcfe807247baed1adb":242,"ba5f392d4c66229a10d81e764a0cdec7efc8755d":348,"bdf8fbc1addaa80faf2169b9ea63fbbee2ab12db":57,"46d758d5cf792e7f591bec395faf4fe9aeb937d3":25,"7bef4b010cb725773938def8e43bc463550897d3":95,"c789bf4475a419e9bdd5f2985c8b5ba4ad730233":54,"084f63ef222a5a51856d77cc276431f3de925420":162,"7f9748bd03ee72947b775c3b40ef7ce0446b8af9":74,"a2492c25a2d66a687e41bf4b27968e5782057dbe":3,"03b815df829669cc1d12b5f7b30540077876bf57":1626,"46d728bad94289141fc91b47270247302a4c2d3b":3846,"3ef52e484428f6acbdc3316ac650de4b255c8e94":2603,"9963b6bb9bef34d6f2383b39b4ebe4a0743e1852":203,"df6e7a638792251a777653ad294f3f8e110d7663":64,"0df30eb6c9339814aa9fa4af7f5685724ff8c957":31,"faf548e838f4ca8535f8f5016a4336e56e450920":179,"b390ec387ad396b012886c4588841f90da9b6669":299,"6d53ee38ba70e75a3e8b920a9a286a1355a521c9":294},"excluded_import_commits":["0c1321f1b1bb7646f09001d339e89e6a7f75bd32","97d86619f18a5b3a804c11435e7e9045709e54f2","b86c8efb79b3ed835d552c4d7416640ef10caf21","bdeca530ff6dc5a26d493501ed50ceab81faea00","e81f4ab7deeb40308f240be5ea00091fc8786d7a"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-5","metrics":{"releases":99.0,"flagged_releases":0.0,"max_loc_per_day":2721.7},"findings":[],"evidence":[],"data":{"releases":[{"from":"4.5.5","to":"4.5.6","loc":475,"days":3.28,"loc_per_day":145.0,"flagged":false},{"from":"4.5.6","to":"4.5.7","loc":517,"days":4.36,"loc_per_day":118.7,"flagged":false},{"from":"4.5.7","to":"4.5.8","loc":2830,"days":9.22,"loc_per_day":307.1,"flagged":false},{"from":"4.5.8","to":"4.5.9","loc":1708,"days":14.2,"loc_per_day":120.3,"flagged":false},{"from":"4.5.9","to":"4.5.10","loc":377,"days":5.87,"loc_per_day":64.2,"flagged":false},{"from":"4.5.10","to":"4.5.11","loc":1247,"days":7.73,"loc_per_day":161.3,"flagged":false},{"from":"4.5.11","to":"4.5.12","loc":225,"days":2.56,"loc_per_day":87.9,"flagged":false},{"from":"4.5.12","to":"4.5.13","loc":853,"days":1.78,"loc_per_day":478.2,"flagged":false},{"from":"4.5.13","to":"4.6.0","loc":1378,"days":10.35,"loc_per_day":133.1,"flagged":false},{"from":"4.6.0","to":"4.6.1","loc":471,"days":6.48,"loc_per_day":72.7,"flagged":false},{"from":"4.6.1","to":"4.6.2","loc":162,"days":0.19,"loc_per_day":854.1,"flagged":false},{"from":"4.6.2","to":"4.6.3","loc":12,"days":0.26,"loc_per_day":45.6,"flagged":false},{"from":"4.6.3","to":"4.6.4","loc":2041,"days":5.53,"loc_per_day":369.3,"flagged":false},{"from":"4.6.4","to":"4.6.5","loc":2193,"days":4.94,"loc_per_day":443.6,"flagged":false},{"from":"4.6.5","to":"4.6.6","loc":11,"days":0.09,"loc_per_day":123.3,"flagged":false},{"from":"4.6.6","to":"4.6.7","loc":522,"days":2.23,"loc_per_day":233.7,"flagged":false},{"from":"4.6.7","to":"4.6.8","loc":624,"days":8.6,"loc_per_day":72.5,"flagged":false},{"from":"4.6.8","to":"4.6.9","loc":29,"days":1.52,"loc_per_day":19.0,"flagged":false},{"from":"4.6.9","to":"4.6.10","loc":88,"days":3.97,"loc_per_day":22.1,"flagged":false},{"from":"4.6.10","to":"4.6.11","loc":1315,"days":6.96,"loc_per_day":188.9,"flagged":false},{"from":"4.6.11","to":"4.6.12","loc":2582,"days":7.68,"loc_per_day":336.3,"flagged":false},{"from":"4.6.12","to":"4.6.13","loc":210,"days":0.16,"loc_per_day":1297.0,"flagged":false},{"from":"4.6.13","to":"4.6.14","loc":34,"days":3.96,"loc_per_day":8.6,"flagged":false},{"from":"4.6.14","to":"4.6.15","loc":51,"days":1.74,"loc_per_day":29.4,"flagged":false},{"from":"4.6.15","to":"4.6.16","loc":559,"days":5.66,"loc_per_day":98.8,"flagged":false},{"from":"4.6.16","to":"4.6.17","loc":1349,"days":9.54,"loc_per_day":141.4,"flagged":false},{"from":"4.6.17","to":"4.6.18","loc":381,"days":6.66,"loc_per_day":57.2,"flagged":false},{"from":"4.6.18","to":"4.6.19","loc":807,"days":7.11,"loc_per_day":113.5,"flagged":false},{"from":"4.6.19","to":"4.6.20","loc":371,"days":5.13,"loc_per_day":72.3,"flagged":false},{"from":"4.6.20","to":"5.0.0","loc":1010,"days":10.9,"loc_per_day":92.7,"flagged":false},{"from":"5.0.0","to":"5.0.1","loc":11,"days":0.35,"loc_per_day":31.1,"flagged":false},{"from":"5.0.1","to":"5.0.2","loc":768,"days":4.02,"loc_per_day":190.9,"flagged":false},{"from":"5.0.2","to":"5.0.3","loc":1396,"days":3.74,"loc_per_day":372.8,"flagged":false},{"from":"5.0.3","to":"5.0.4","loc":2859,"days":10.93,"loc_per_day":261.7,"flagged":false},{"from":"5.0.4","to":"5.0.5","loc":847,"days":6.45,"loc_per_day":131.3,"flagged":false},{"from":"5.0.5","to":"5.0.6","loc":2036,"days":8.51,"loc_per_day":239.3,"flagged":false},{"from":"5.0.6","to":"5.0.7","loc":1017,"days":3.36,"loc_per_day":303.1,"flagged":false},{"from":"5.0.7","to":"5.0.8","loc":1033,"days":9.64,"loc_per_day":107.2,"flagged":false},{"from":"5.0.8","to":"5.0.9","loc":1073,"days":6.83,"loc_per_day":157.1,"flagged":false},{"from":"5.0.9","to":"5.0.10","loc":568,"days":7.38,"loc_per_day":77.0,"flagged":false},{"from":"5.0.10","to":"5.0.11","loc":382,"days":5.83,"loc_per_day":65.5,"flagged":false},{"from":"5.0.11","to":"5.0.12","loc":896,"days":7.35,"loc_per_day":121.9,"flagged":false},{"from":"5.0.12","to":"5.0.13","loc":2284,"days":7.59,"loc_per_day":301.1,"flagged":false},{"from":"5.0.13","to":"5.0.14","loc":4410,"days":6.56,"loc_per_day":672.3,"flagged":false},{"from":"5.0.14","to":"5.0.15","loc":2143,"days":13.94,"loc_per_day":153.7,"flagged":false},{"from":"5.0.15","to":"5.0.16","loc":2975,"days":7.42,"loc_per_day":400.7,"flagged":false},{"from":"5.0.16","to":"5.1.0","loc":5324,"days":9.47,"loc_per_day":562.4,"flagged":false},{"from":"5.1.0","to":"5.1.1","loc":9738,"days":11.41,"loc_per_day":853.7,"flagged":false},{"from":"5.1.1","to":"5.1.2","loc":5969,"days":7.07,"loc_per_day":844.5,"flagged":false},{"from":"5.1.2","to":"5.1.3","loc":932,"days":0.83,"loc_per_day":1127.6,"flagged":false},{"from":"5.1.3","to":"5.1.4","loc":2926,"days":5.85,"loc_per_day":499.9,"flagged":false},{"from":"5.1.4","to":"5.1.5","loc":1124,"days":1.68,"loc_per_day":670.0,"flagged":false},{"from":"5.1.5","to":"5.1.6","loc":2626,"days":6.01,"loc_per_day":437.3,"flagged":false},{"from":"5.1.6","to":"5.1.7","loc":4730,"days":4.53,"loc_per_day":1043.8,"flagged":false},{"from":"5.1.7","to":"5.1.8","loc":2601,"days":8.96,"loc_per_day":290.1,"flagged":false},{"from":"5.1.8","to":"5.1.9","loc":1346,"days":7.26,"loc_per_day":185.3,"flagged":false},{"from":"5.1.9","to":"5.1.10","loc":1245,"days":3.07,"loc_per_day":405.2,"flagged":false},{"from":"5.1.10","to":"5.1.11","loc":6637,"days":3.26,"loc_per_day":2038.3,"flagged":false},{"from":"5.1.11","to":"5.1.12","loc":13053,"days":7.98,"loc_per_day":1635.0,"flagged":false},{"from":"5.1.12","to":"5.1.13","loc":1890,"days":3.02,"loc_per_day":625.2,"flagged":false},{"from":"5.1.13","to":"5.1.14","loc":4772,"days":3.1,"loc_per_day":1539.7,"flagged":false},{"from":"5.1.14","to":"5.1.15","loc":6413,"days":9.69,"loc_per_day":662.1,"flagged":false},{"from":"5.1.15","to":"6.0.0","loc":11713,"days":8.05,"loc_per_day":1454.9,"flagged":false},{"from":"6.0.0","to":"6.0.1","loc":332,"days":0.55,"loc_per_day":607.7,"flagged":false},{"from":"6.0.1","to":"6.0.2","loc":3614,"days":3.52,"loc_per_day":1025.7,"flagged":false},{"from":"6.0.2","to":"6.0.3","loc":4155,"days":6.77,"loc_per_day":613.4,"flagged":false},{"from":"6.0.3","to":"6.0.4","loc":2180,"days":3.03,"loc_per_day":719.3,"flagged":false},{"from":"6.0.4","to":"6.0.5","loc":291,"days":1.35,"loc_per_day":215.2,"flagged":false},{"from":"6.0.5","to":"6.0.6","loc":511,"days":3.23,"loc_per_day":158.1,"flagged":false},{"from":"6.0.6","to":"6.0.7","loc":2431,"days":6.08,"loc_per_day":399.9,"flagged":false},{"from":"6.0.7","to":"6.0.8","loc":1397,"days":0.74,"loc_per_day":1893.6,"flagged":false},{"from":"6.0.8","to":"6.0.9","loc":1048,"days":0.97,"loc_per_day":1075.8,"flagged":false},{"from":"6.0.9","to":"6.0.10","loc":4641,"days":5.57,"loc_per_day":832.6,"flagged":false},{"from":"6.0.10","to":"6.0.11","loc":4419,"days":1.62,"loc_per_day":2721.7,"flagged":false},{"from":"6.0.11","to":"6.0.12","loc":5834,"days":5.67,"loc_per_day":1028.9,"flagged":false},{"from":"6.0.12","to":"6.0.13","loc":10416,"days":6.8,"loc_per_day":1530.7,"flagged":false},{"from":"6.0.13","to":"6.0.14","loc":8198,"days":3.94,"loc_per_day":2081.8,"flagged":false},{"from":"6.0.14","to":"6.0.15","loc":2501,"days":2.59,"loc_per_day":966.6,"flagged":false},{"from":"6.0.15","to":"6.0.16","loc":6684,"days":7.39,"loc_per_day":904.3,"flagged":false},{"from":"6.0.16","to":"6.0.17","loc":233,"days":1.17,"loc_per_day":199.2,"flagged":false},{"from":"6.0.17","to":"6.0.18","loc":2986,"days":5.74,"loc_per_day":520.5,"flagged":false},{"from":"6.0.18","to":"6.0.19","loc":6421,"days":6.72,"loc_per_day":955.5,"flagged":false},{"from":"6.0.19","to":"6.0.20","loc":4009,"days":3.13,"loc_per_day":1282.6,"flagged":false},{"from":"6.0.20","to":"6.0.21","loc":5894,"days":5.4,"loc_per_day":1091.9,"flagged":false},{"from":"6.0.21","to":"6.0.22","loc":6941,"days":3.81,"loc_per_day":1823.7,"flagged":false},{"from":"6.0.22","to":"7.0.0","loc":21289,"days":8.05,"loc_per_day":2645.9,"flagged":false},{"from":"7.0.0","to":"7.0.1","loc":228,"days":0.29,"loc_per_day":779.8,"flagged":false},{"from":"7.0.1","to":"7.0.2","loc":930,"days":2.05,"loc_per_day":452.6,"flagged":false},{"from":"7.0.2","to":"7.0.3","loc":2719,"days":1.02,"loc_per_day":2657.2,"flagged":false},{"from":"7.0.3","to":"7.0.4","loc":826,"days":0.96,"loc_per_day":858.9,"flagged":false},{"from":"7.0.4","to":"7.0.5","loc":1868,"days":3.8,"loc_per_day":491.7,"flagged":false},{"from":"7.0.5","to":"7.0.6","loc":30,"days":0.2,"loc_per_day":149.6,"flagged":false},{"from":"7.0.6","to":"7.0.7","loc":5316,"days":6.4,"loc_per_day":830.3,"flagged":false},{"from":"7.0.7","to":"7.0.8","loc":4045,"days":6.52,"loc_per_day":620.6,"flagged":false},{"from":"7.0.8","to":"7.0.9","loc":1803,"days":3.85,"loc_per_day":468.9,"flagged":false},{"from":"7.0.9","to":"7.0.10","loc":8184,"days":10.86,"loc_per_day":753.4,"flagged":false},{"from":"7.0.10","to":"7.0.11","loc":4869,"days":7.03,"loc_per_day":693.0,"flagged":false},{"from":"7.0.11","to":"7.0.12","loc":10854,"days":6.76,"loc_per_day":1606.0,"flagged":false},{"from":"7.0.12","to":"7.0.13","loc":9274,"days":6.87,"loc_per_day":1350.8,"flagged":false}]},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":173796.0,"index":0.083,"count:narrated_steps":5.0,"per_kloc:narrated_steps":0.029,"files:narrated_steps":3.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":3.0,"per_kloc:emoji_in_code":0.017,"files:emoji_in_code":3.0,"count:assistant_voice":4.0,"per_kloc:assistant_voice":0.023,"files:assistant_voice":4.0},"findings":[],"evidence":[{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 1: Sort by formula full name while putting tap formulae behind core formulae.","ref":"Library/Homebrew/bundle/brew.rb:421","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/brew.rb#L421","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Step 2: Sort by formula dependency topology.","ref":"Library/Homebrew/bundle/brew.rb:433","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/brew.rb#L433","weight":0.0},{"kind":"stylometry:assistant_voice","description":"assistant-style phrasing left in code: ohai \"Ignoring workflow #{workflow} as requested by `--ignore-missing-artifacts`\"","ref":"Library/Homebrew/dev-cmd/pr-pull.rb:163","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/dev-cmd/pr-pull.rb#L163","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # First, check that we won't encounter an error in the middle of uploading bottles.","ref":"Library/Homebrew/github_packages.rb:123","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/github_packages.rb#L123","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # Next, upload the bottles after checking them all.","ref":"Library/Homebrew/github_packages.rb:132","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/github_packages.rb#L132","weight":0.0},{"kind":"stylometry:assistant_voice","description":"assistant-style phrasing left in code: # Even if we don't install this formula, mark it as requested when appropriate.","ref":"Library/Homebrew/install/check.rb:189","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/install/check.rb#L189","weight":0.0},{"kind":"stylometry:narrated_steps","description":"step-by-step narration comment: # First, attempt to resolve the keg to a formula","ref":"Library/Homebrew/installed_dependents.rb:34","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/installed_dependents.rb#L34","weight":0.0},{"kind":"stylometry:assistant_voice","description":"assistant-style phrasing left in code: # Commands to install missing dependencies without marking them as requested.","ref":"Library/Homebrew/missing.rb:17","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/missing.rb#L17","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":1.0,"secrets_low_confidence":5.0},"findings":[{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in the current tree (test/docs/example file)","path":"docs/_layouts/base.html","line":3,"fingerprint":"docs/_layouts/base.html:generic-api-key:3"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 372365e0f9); removed from the current tree but still retrievable","path":"Library/Homebrew/utils/analytics.rb","line":14,"fingerprint":"372365e0f9df9604711a332557de0577db7a424c:Library/Homebrew/utils/analytics.rb:generic-api-key:14"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 02a55fd792); removed from the current tree but still retrievable","path":"Library/Homebrew/data/spdx/spdx_licenses.json","line":785,"fingerprint":"02a55fd792d38bf92d411f558bf3f637049a0b1f:Library/Homebrew/data/spdx/spdx_licenses.json:generic-api-key:785"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 623840a304); removed from the current tree but still retrievable","path":".github/workflows/tests.yml","line":163,"fingerprint":"623840a304eae1b12c3f4671171f376b1c7365a8:.github/workflows/tests.yml:generic-api-key:163"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit bc28ee0f6d); removed from the current tree but still retrievable","path":"Library/Homebrew/data/spdx.json","line":578,"fingerprint":"bc28ee0f6dc24f17369ec11e2d0e6ba4f893364a:Library/Homebrew/data/spdx.json:generic-api-key:578"},{"rule_id":"gitleaks/generic-api-key","severity":"low","message":"Possible generic-api-key secret in history (commit 803f9dd4a3); removed from the current tree but still retrievable","path":"Library/Homebrew/dev-cmd/spdx.json","line":229,"fingerprint":"803f9dd4a346b517c592c9ac6f3c2799073eab5a:Library/Homebrew/dev-cmd/spdx.json:generic-api-key:229"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":64.0,"findings_high":35.0,"findings_medium":29.0,"findings_low":0.0,"weighted_findings":40.15,"scanned_lines":173796.0,"parse_errors":10.0},"findings":[{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":".github/scripts/approve_stale_lead_maintainer_prs.rb","line":42,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:.github/scripts/approve_stale_lead_maintainer_prs.rb:42"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/bundle/extensions/winget.rb","line":14,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/bundle/extensions/winget.rb:14"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cask_dependent.rb","line":9,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cask_dependent.rb:9"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cli/parser.rb","line":32,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cli/parser.rb:32"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cmd/info.rb","line":27,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cmd/info.rb:27"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cmd/upgrade.rb","line":20,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cmd/upgrade.rb:20"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cmd/upgrade.rb","line":28,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cmd/upgrade.rb:28"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/cmd/uses.rb","line":18,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/cmd/uses.rb:18"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/compilers/compiler_selector.rb","line":8,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/compilers/compiler_selector.rb:8"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/debrew.rb","line":35,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/debrew.rb:35"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/advisory-match.rb","line":681,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/advisory-match.rb:681"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/advisory-match.rb","line":1305,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/advisory-match.rb:1305"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/advisory-match.rb","line":1325,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/advisory-match.rb:1325"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/benchmark.rb","line":30,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/benchmark.rb:30"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/benchmark.rb","line":36,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/benchmark.rb:36"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/bump.rb","line":37,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/bump.rb:37"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/dev-cmd/bump.rb","line":45,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/dev-cmd/bump.rb:45"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/os/linux/elf.rb","line":211,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/os/linux/elf.rb:211"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/rubocops/extend/formula_cop.rb","line":22,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/rubocops/extend/formula_cop.rb:22"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/rubocops/shared/install_steps_helper.rb","line":149,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/rubocops/shared/install_steps_helper.rb:149"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_feeds.rb","line":10,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_feeds.rb:10"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_history.rb","line":13,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_history.rb:13"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_history.rb","line":20,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_history.rb:20"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_history.rb","line":28,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_history.rb:28"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_history.rb","line":38,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_history.rb:38"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/formula_history.rb","line":45,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/formula_history.rb:45"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/utils/analytics/influx.rb","line":15,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/utils/analytics/influx.rb:15"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/version.rb","line":103,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/version.rb:103"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/advisory_overrides.rb","line":16,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/advisory_overrides.rb:16"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/advisory_overrides.rb","line":21,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/advisory_overrides.rb:21"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/history.rb","line":20,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/history.rb:20"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/match.rb","line":48,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/match.rb:48"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/match.rb","line":97,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/match.rb:97"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/match.rb","line":131,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/match.rb:131"},{"rule_id":"opengrep/ruby.lang.security.model-attributes-attr-accessible","severity":"high","message":"Checks for models that do not use attr_accessible. This means there is no limiting of which variables can be manipulated through mass assignment. For newer Rails applications, parameters should be allowlisted using strong parameters. For older Rails versions, they should be allowlisted using strong_ [confidence low]","path":"Library/Homebrew/vulns/vulnerability.rb","line":16,"fingerprint":"ruby.lang.security.model-attributes-attr-accessible:Library/Homebrew/vulns/vulnerability.rb:16"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside Open3.capture3. Audit the input to 'Open3.capture3'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":".github/scripts/approve_stale_lead_maintainer_prs.rb","line":561,"fingerprint":"ruby.lang.security.dangerous-exec:.github/scripts/approve_stale_lead_maintainer_prs.rb:561"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside IO.popen. Audit the input to 'IO.popen'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/bundle.rb","line":33,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/bundle.rb:33"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside IO.popen. Audit the input to 'IO.popen'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/bundle/extensions/winget.rb","line":522,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/bundle/extensions/winget.rb:522"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/cmd/log.rb","line":84,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/cmd/log.rb:84"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/completions.rb","line":326,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/completions.rb:326"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/completions.rb","line":508,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/completions.rb:508"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/completions.rb","line":667,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/completions.rb:667"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/dev-cmd/bottle.rb","line":162,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/dev-cmd/bottle.rb:162"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump-cask-pr.rb","line":561,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump-cask-pr.rb:561"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump-cask-pr.rb","line":582,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump-cask-pr.rb:582"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump-cask-pr.rb","line":611,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump-cask-pr.rb:611"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump-formula-pr.rb","line":1006,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump-formula-pr.rb:1006"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump-formula-pr.rb","line":1009,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump-formula-pr.rb:1009"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/dev-cmd/bump.rb","line":630,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/dev-cmd/bump.rb:630"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/extend/os/mac/sandbox.rb","line":183,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/extend/os/mac/sandbox.rb:183"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside IO.popen. Audit the input to 'IO.popen'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/formula_assertions.rb","line":55,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/formula_assertions.rb:55"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/formula_creator.rb","line":158,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/formula_creator.rb:158"},{"rule_id":"opengrep/ruby.lang.security.weak-hashes-md5","severity":"medium","message":"Should not use md5 to generate hashes. md5 is proven to be vulnerable through the use of brute-force attacks. Could also result in collisions, leading to potential collision attacks. Use SHA256 or other hashing functions instead. [confidence medium]","path":"Library/Homebrew/formulary.rb","line":885,"fingerprint":"ruby.lang.security.weak-hashes-md5:Library/Homebrew/formulary.rb:885"},{"rule_id":"opengrep/ruby.rails.security.audit.xss.manual-template-creation","severity":"medium","message":"Detected manual creation of an ERB template. Manual creation of templates may expose your application to server-side template injection (SSTI) or cross-site scripting (XSS) attacks if user input is used to create the template. Instead, create a '.erb' template file and use 'render'. [confidence low]","path":"Library/Homebrew/manpages.rb","line":66,"fingerprint":"ruby.rails.security.audit.xss.manual-template-creation:Library/Homebrew/manpages.rb:66"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside Open3.popen2e. Audit the input to 'Open3.popen2e'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/mcp_server.rb","line":409,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/mcp_server.rb:409"},{"rule_id":"opengrep/bash.lang.security.ifs-tampering","severity":"medium","message":"The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS=\",\" read -a my_array'. [confidence low]","path":"Library/Homebrew/shims/linux/super/bin/make","line":7,"fingerprint":"bash.lang.security.ifs-tampering:Library/Homebrew/shims/linux/super/bin/make:7"},{"rule_id":"opengrep/bash.lang.security.ifs-tampering","severity":"medium","message":"The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS=\",\" read -a my_array'. [confidence low]","path":"Library/Homebrew/shims/mac/super/bin/xcrun","line":57,"fingerprint":"bash.lang.security.ifs-tampering:Library/Homebrew/shims/mac/super/bin/xcrun:57"},{"rule_id":"opengrep/bash.lang.security.ifs-tampering","severity":"medium","message":"The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS=\",\" read -a my_array'. [confidence low]","path":"Library/Homebrew/shims/mac/super/bin/xcrun","line":71,"fingerprint":"bash.lang.security.ifs-tampering:Library/Homebrew/shims/mac/super/bin/xcrun:71"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside Process.spawn. Audit the input to 'Process.spawn'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/system_command.rb","line":550,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/system_command.rb:550"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside exec. Audit the input to 'exec'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/system_command.rb","line":558,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/system_command.rb:558"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/test_bot/test_cleanup.rb","line":21,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/test_bot/test_cleanup.rb:21"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside system. Audit the input to 'system'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/test_bot/test_formulae.rb","line":246,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/test_bot/test_formulae.rb:246"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside spawn. Audit the input to 'spawn'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/utils/analytics.rb","line":83,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/utils/analytics.rb:83"},{"rule_id":"opengrep/ruby.lang.security.dangerous-exec","severity":"medium","message":"Detected non-static command inside Process.spawn. Audit the input to 'Process.spawn'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium]","path":"Library/Homebrew/utils/shell.rb","line":69,"fingerprint":"ruby.lang.security.dangerous-exec:Library/Homebrew/utils/shell.rb:69"}],"evidence":[],"data":{"rulesets":["ruby","bash","python","dockerfile"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":0.0,"vulnerabilities":0.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":0.0,"vulns_low":0.0,"vulns_unknown":0.0,"penalty":0.0},"findings":[],"evidence":[],"data":{"ecosystems":["PyPI","RubyGems"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":24.0,"findings":3.0,"findings_high":3.0,"findings_medium":0.0,"findings_low":0.0,"penalty":31.2},"findings":[{"rule_id":"zizmor/dangerous-triggers","severity":"high","message":"use of fundamentally insecure workflow trigger [confidence medium]","path":".github/workflows/stale-issues-and-prs.yml","line":13,"fingerprint":"dangerous-triggers:.github/workflows/stale-issues-and-prs.yml:13"},{"rule_id":"zizmor/unpinned-images","severity":"high","message":"unpinned image references [confidence high]","path":".github/workflows/tests.yml","line":449,"fingerprint":"unpinned-images:.github/workflows/tests.yml:449"},{"rule_id":"zizmor/unpinned-images","severity":"high","message":"unpinned image references [confidence high]","path":".github/workflows/tests.yml","line":449,"fingerprint":"unpinned-images:.github/workflows/tests.yml:449"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":1.0,"check:dependency_updates":1.0,"check:signed_commits":1.0,"check:lockfiles":1.0,"signed_commit_share":0.505,"unpinned_manifests":0.0},"findings":[],"evidence":[{"kind":"posture","description":"Security policy: https://github.com/Homebrew/brew/security/policy","ref":"https://github.com/Homebrew/brew/security/policy","url":null,"weight":0.0},{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":10.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"binary-release-asset","description":"release 7.0.13 ships Homebrew.pkg (28259 downloads)","ref":"Homebrew.pkg","url":"https://github.com/Homebrew/brew/releases/download/7.0.13/Homebrew.pkg","weight":0.0},{"kind":"binary-release-asset","description":"release 7.0.12 ships Homebrew.pkg (33809 downloads)","ref":"Homebrew.pkg","url":"https://github.com/Homebrew/brew/releases/download/7.0.12/Homebrew.pkg","weight":0.0},{"kind":"binary-release-asset","description":"release 7.0.11 ships Homebrew.pkg (33844 downloads)","ref":"Homebrew.pkg","url":"https://github.com/Homebrew/brew/releases/download/7.0.11/Homebrew.pkg","weight":0.0},{"kind":"binary-release-asset","description":"release 7.0.10 ships Homebrew.pkg (33414 downloads)","ref":"Homebrew.pkg","url":"https://github.com/Homebrew/brew/releases/download/7.0.10/Homebrew.pkg","weight":0.0},{"kind":"binary-release-asset","description":"release 7.0.9 ships Homebrew.pkg (50571 downloads)","ref":"Homebrew.pkg","url":"https://github.com/Homebrew/brew/releases/download/7.0.9/Homebrew.pkg","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":7889.0,"function_nloc":87057.0,"mean_ccn":3.18,"p90_ccn":7.0,"complex_functions":148.0,"long_functions":36.0,"many_param_functions":74.0,"risky_nloc_share":0.1448},"findings":[],"evidence":[{"kind":"complex-function","description":"run_install_step in Library/Homebrew/install_steps.rb: complexity 82, 208 lines","ref":"Library/Homebrew/install_steps.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/install_steps.rb#L1002","weight":1.0},{"kind":"complex-function","description":"audit_deps in Library/Homebrew/formula_auditor.rb: complexity 73, 192 lines","ref":"Library/Homebrew/formula_auditor.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/formula_auditor.rb#L337","weight":1.0},{"kind":"complex-function","description":"self.resource_version in Library/Homebrew/livecheck/livecheck.rb: complexity 71, 169 lines","ref":"Library/Homebrew/livecheck/livecheck.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/livecheck/livecheck.rb#L916","weight":1.0},{"kind":"complex-function","description":"self.installed_dependent_names in Library/Homebrew/cmd/info.rb: complexity 65, 244 lines","ref":"Library/Homebrew/cmd/info.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/cmd/info.rb#L161","weight":1.0},{"kind":"complex-function","description":"self.fetch_json_api_file in Library/Homebrew/api.rb: complexity 55, 133 lines","ref":"Library/Homebrew/api.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/api.rb#L50","weight":0.9166666666666666},{"kind":"complex-function","description":"audit_specs in Library/Homebrew/formula_auditor.rb: complexity 52, 119 lines","ref":"Library/Homebrew/formula_auditor.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/formula_auditor.rb#L855","weight":0.8666666666666667},{"kind":"complex-function","description":"run in Library/Homebrew/cmd/install.rb: complexity 49, 297 lines","ref":"Library/Homebrew/cmd/install.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/cmd/install.rb#L179","weight":0.8166666666666667},{"kind":"complex-function","description":"self.load_other_tap_strategies in Library/Homebrew/livecheck/livecheck.rb: complexity 49, 158 lines","ref":"Library/Homebrew/livecheck/livecheck.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/livecheck/livecheck.rb#L54","weight":0.8166666666666667},{"kind":"complex-function","description":"audit_signing in Library/Homebrew/cask/audit.rb: complexity 45, 84 lines","ref":"Library/Homebrew/cask/audit.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/cask/audit.rb#L629","weight":0.75},{"kind":"complex-function","description":"query in Library/Homebrew/utils/analytics/influx.rb: complexity 43, 128 lines","ref":"Library/Homebrew/utils/analytics/influx.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/utils/analytics/influx.rb#L134","weight":0.7166666666666667}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":122944.0,"duplicated_lines":5090.0,"duplicated_share":0.0414,"files":1093.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/analytics/subcommand/off.rb:1 and Library/Homebrew/analytics/subcommand/on.rb:1","ref":"Library/Homebrew/analytics/subcommand/off.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/analytics/subcommand/off.rb#L1","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/api/cask.rb:21 and Library/Homebrew/api/formula.rb:119","ref":"Library/Homebrew/api/cask.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/api/cask.rb#L21","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/api/cask_struct.rb:47 and Library/Homebrew/api/formula_struct.rb:77","ref":"Library/Homebrew/api/cask_struct.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/api/cask_struct.rb#L47","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bottle.rb:133 and Library/Homebrew/retryable_download.rb:52","ref":"Library/Homebrew/bottle.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bottle.rb#L133","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/build.rb:101 and Library/Homebrew/build.rb:114","ref":"Library/Homebrew/build.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/build.rb#L101","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bundle/brew.rb:69 and Library/Homebrew/bundle/cask.rb:38","ref":"Library/Homebrew/bundle/brew.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/brew.rb#L69","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bundle/brew.rb:524 and Library/Homebrew/bundle/package_type.rb:151","ref":"Library/Homebrew/bundle/brew.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/brew.rb#L524","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bundle/checker.rb:57 and Library/Homebrew/bundle/checker.rb:68","ref":"Library/Homebrew/bundle/checker.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/checker.rb#L57","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bundle/extensions/cargo.rb:128 and Library/Homebrew/bundle/extensions/uv.rb:331","ref":"Library/Homebrew/bundle/extensions/cargo.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/extensions/cargo.rb#L128","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: Library/Homebrew/bundle/extensions/cargo.rb:274 and Library/Homebrew/bundle/extensions/flatpak.rb:219","ref":"Library/Homebrew/bundle/extensions/cargo.rb","url":"https://github.com/Homebrew/brew/blob/097e0b5957555b85dc4194eef06218a2aeab851f/Library/Homebrew/bundle/extensions/cargo.rb#L274","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":7.0,"weighted_findings":1.75,"scanned_lines":173796.0,"category:correctness":7.0},"findings":[{"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":"Library/Homebrew/cask/utils/rmdir.sh","line":30,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cask/utils/rmdir.sh:30"},{"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":"Library/Homebrew/cask/utils/rmdir.sh","line":36,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cask/utils/rmdir.sh:36"},{"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":"Library/Homebrew/cask/utils/rmdir.sh","line":40,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cask/utils/rmdir.sh:40"},{"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":"Library/Homebrew/cmd/update.sh","line":609,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cmd/update.sh:609"},{"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":"Library/Homebrew/cmd/update.sh","line":625,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cmd/update.sh:625"},{"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":"Library/Homebrew/cmd/update.sh","line":670,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/cmd/update.sh:670"},{"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":"Library/Homebrew/utils/as_user.sh","line":83,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:Library/Homebrew/utils/as_user.sh:83"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":1.0,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":179980.0,"source_lines":173796.0,"test_ratio":1.0356,"ci_files":24.0,"cochange_share":0.8534,"cochange_commits":232.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/actionlint.yml","ref":".github/workflows/actionlint.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/approve-stale-lead-maintainer-prs.yml","ref":".github/workflows/approve-stale-lead-maintainer-prs.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/autogenerated-files.yml","ref":".github/workflows/autogenerated-files.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/check-issues.yml","ref":".github/workflows/check-issues.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/check-prs.yml","ref":".github/workflows/check-prs.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/codeql-analysis.yml","ref":".github/workflows/codeql-analysis.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/commit-style.yml","ref":".github/workflows/commit-style.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/copilot-setup-steps.yml","ref":".github/workflows/copilot-setup-steps.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/docker.yml","ref":".github/workflows/docker.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/docs.yml","ref":".github/workflows/docs.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (rspec, rake test)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (shellcheck)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["rspec","rake test"],"lint_commands":["shellcheck"]},"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":74.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE.txt","ref":"LICENSE.txt","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":"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":2793.0,"other_lines":171003.0,"files_blamed":1093.0,"blame_failures":0.0,"quality:ai_findings":0.0,"quality:ai_per_kloc":0.0,"quality:other_findings":7.0,"quality:other_per_kloc":0.041,"quality:ratio":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":62.0,"security:other_per_kloc":0.363,"security:ratio":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}