{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-13T23:19:57.909735Z","repo":{"ref":{"host":"github.com","owner":"pebbles-hq","name":"pebbles"},"default_branch":"main","clone_url":"https://github.com/pebbles-hq/pebbles.git","html_url":"https://github.com/pebbles-hq/pebbles","description":"A GUI framework for Rust, built from handpicked ideas — a widget model in the spirit of Flutter, reactivity like SolidJS, styling like Tailwind, and pure-Rust GPU rendering on Vello.","stars":0,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":51058,"primary_language":"Rust","license_spdx":"Apache-2.0","created_at":"2026-08-28T14:31:26Z","pushed_at":"2026-11-08T17:00:24Z","security_policy_url":"https://github.com/pebbles-hq/pebbles/security/policy","distribution":{"owner_created_at":"2026-08-28T14:30:54Z","owner_type":"Organization","release_assets":[]}},"commit_sha":"cf775b95efc2e3538b02ea6802e228771491da86","profile":{"lines_by_language":{"Rust":163398,"Python":1879,"Dart":278,"JavaScript":123,"Shell":69},"files_by_category":{"binary":612,"source":583,"test":161,"docs":57,"config":41,"other":28,"generated":3},"source_lines":139317,"test_lines":26430},"pillars":{"ai_provenance":{"score":48.3,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.483,"suspected_share":0.2869,"estimated_share":0.483,"ai_artifacts":0.0,"flagged_work_units":34.0,"flagged_releases":null},"summary":"Explicit AI attribution on 48% of first-party code added; an estimated 48% including velocity signals."},"quality":{"score":70.4,"confidence":0.9,"coverage":1.0,"label":"adequate","breakdown":{"complexity":60.2,"duplication":79.0,"lint":89.2,"testing":84.5,"docs":100.0,"type_safety":40.0,"process":0.0},"summary":"Code quality is adequate: test-to-source ratio 0.19, CI runs tests; 17% of function code in complex or long functions; 4% duplicated lines. Weakest area: process."},"security":{"score":80.1,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":97.6,"dependencies":67.0,"ci_actions":50.0,"posture":80.0,"scorecard":67.1},"summary":"Security posture is adequate: 8 known vulnerabilities in 8 dependencies; 8 high-severity SAST findings. Weakest area: ci actions."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"ok","tool_version":"scorecard v5.3.0","metrics":{"aggregate":5.9,"check:Code-Review":0.0,"check:Dependency-Update-Tool":10.0,"check:Maintained":0.0,"check:Security-Policy":10.0,"check:Dangerous-Workflow":10.0,"check:Token-Permissions":10.0,"check:SAST":0.0,"check:Binary-Artifacts":8.0,"check:Pinned-Dependencies":9.0,"check:CII-Best-Practices":0.0,"check:Fuzzing":10.0,"check:Vulnerabilities":3.0,"check:License":10.0,"check:Branch-Protection":0.0,"check:Contributors":10.0},"findings":[],"evidence":[{"kind":"scorecard-check","description":"Scorecard Code-Review: 0/10 (Found 0/30 approved changesets -- score normalized to 0)","ref":"Code-Review","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Dependency-Update-Tool: 10/10 (update tool detected)","ref":"Dependency-Update-Tool","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Maintained: 0/10 (project was created within the last 90 days. Please review its contents carefully)","ref":"Maintained","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","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/pebbles-hq/pebbles","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/pebbles-hq/pebbles","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Token-Permissions: 10/10 (GitHub workflow tokens follow principle of least privilege)","ref":"Token-Permissions","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.0},{"kind":"scorecard-check","description":"Scorecard SAST: 0/10 (no SAST tool detected)","ref":"SAST","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Binary-Artifacts: 8/10 (binaries present in source code)","ref":"Binary-Artifacts","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.2},{"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/pebbles-hq/pebbles","weight":0.1},{"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/pebbles-hq/pebbles","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Fuzzing: 10/10 (project is fuzzed)","ref":"Fuzzing","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Vulnerabilities: 3/10 (7 existing vulnerabilities detected)","ref":"Vulnerabilities","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.7},{"kind":"scorecard-check","description":"Scorecard License: 10/10 (license file detected)","ref":"License","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.0},{"kind":"scorecard-check","description":"Scorecard Branch-Protection: 0/10 (branch protection not enabled on development/release branches)","ref":"Branch-Protection","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":1.0},{"kind":"scorecard-check","description":"Scorecard Contributors: 10/10 (project has 3 contributing companies or organizations -- score normalized to 10)","ref":"Contributors","url":"https://scorecard.dev/viewer/?uri=github.com/pebbles-hq/pebbles","weight":0.0}],"data":{"date":"2026-11-09T14:45:44Z","commit":"cf775b95efc2e3538b02ea6802e228771491da86","matches_head":true},"error":null},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":30.0,"checked":30.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":616.0,"attributed_commits":315.0,"attributed_commit_share":0.5113636363636364,"effective_loc":243604.0,"attributed_loc":117671.0,"attributed_loc_share":0.4830421503751991,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 315 attributed commits, 117,671 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"cf775b95efc2e3538b02ea6802e228771491da86","url":"https://github.com/pebbles-hq/pebbles/commit/cf775b95efc2e3538b02ea6802e228771491da86","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"7a6de0b5da961bac39e7c563a1ad8091f8ad0153","url":"https://github.com/pebbles-hq/pebbles/commit/7a6de0b5da961bac39e7c563a1ad8091f8ad0153","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"45440d6b344e9ee36743ff548e9c382c8cb157e6","url":"https://github.com/pebbles-hq/pebbles/commit/45440d6b344e9ee36743ff548e9c382c8cb157e6","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"dc2d79f63803d62e6ab9e0f89ac9673944aad845","url":"https://github.com/pebbles-hq/pebbles/commit/dc2d79f63803d62e6ab9e0f89ac9673944aad845","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"a458f48ed269fc820d81339537aaef490bcb1897","url":"https://github.com/pebbles-hq/pebbles/commit/a458f48ed269fc820d81339537aaef490bcb1897","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"ce1c7fd344a48fbc4a5671f85a96f56e58dbabd5","url":"https://github.com/pebbles-hq/pebbles/commit/ce1c7fd344a48fbc4a5671f85a96f56e58dbabd5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"97e236a65a8e10b8c11e461bc828972b6e825085","url":"https://github.com/pebbles-hq/pebbles/commit/97e236a65a8e10b8c11e461bc828972b6e825085","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"5a9fdbd5bb782418abb7cd34e8b69a0da6577fb8","url":"https://github.com/pebbles-hq/pebbles/commit/5a9fdbd5bb782418abb7cd34e8b69a0da6577fb8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"11e51b7237a0b0400ee107b63ae13a10d59501f7","url":"https://github.com/pebbles-hq/pebbles/commit/11e51b7237a0b0400ee107b63ae13a10d59501f7","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"12916d38535fbfa3257335ca35680b81bffb44a4","url":"https://github.com/pebbles-hq/pebbles/commit/12916d38535fbfa3257335ca35680b81bffb44a4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"3f0400c7ec97f56c169e23bf0743a2885012bea4","url":"https://github.com/pebbles-hq/pebbles/commit/3f0400c7ec97f56c169e23bf0743a2885012bea4","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"42f987b7d77e17c259b199832de30ad17962280c","url":"https://github.com/pebbles-hq/pebbles/commit/42f987b7d77e17c259b199832de30ad17962280c","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"a1b61d02b9599b21b32bea161fbd04b7c2ead37f","url":"https://github.com/pebbles-hq/pebbles/commit/a1b61d02b9599b21b32bea161fbd04b7c2ead37f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"977221a2c70c69f4628489c8f851a8e0f58ccfd5","url":"https://github.com/pebbles-hq/pebbles/commit/977221a2c70c69f4628489c8f851a8e0f58ccfd5","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"26711ea599e663f89b6cec6d1cdda44c9f3cab2f","url":"https://github.com/pebbles-hq/pebbles/commit/26711ea599e663f89b6cec6d1cdda44c9f3cab2f","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"85a0cb1a3261771416d302bd886dfd74d23c8868","url":"https://github.com/pebbles-hq/pebbles/commit/85a0cb1a3261771416d302bd886dfd74d23c8868","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"50ae07ad0d994f57fd9810172950a88dd1977707","url":"https://github.com/pebbles-hq/pebbles/commit/50ae07ad0d994f57fd9810172950a88dd1977707","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"b6c0c4491b143b7a9d6550735d0cd509ccfabb16","url":"https://github.com/pebbles-hq/pebbles/commit/b6c0c4491b143b7a9d6550735d0cd509ccfabb16","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"78b521f1f595df03f2ee8b9eae9a40e1a2181ce1","url":"https://github.com/pebbles-hq/pebbles/commit/78b521f1f595df03f2ee8b9eae9a40e1a2181ce1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"d1c9992c94c7c85bbe45694d596c3978962797d8","url":"https://github.com/pebbles-hq/pebbles/commit/d1c9992c94c7c85bbe45694d596c3978962797d8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"a6eb08c68297002dd7bd17d87b30791096b1e40e","url":"https://github.com/pebbles-hq/pebbles/commit/a6eb08c68297002dd7bd17d87b30791096b1e40e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"c8a858a6518b3a9cd3a2784dc90dcc6e1dbcbcc0","url":"https://github.com/pebbles-hq/pebbles/commit/c8a858a6518b3a9cd3a2784dc90dcc6e1dbcbcc0","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"0a95df3f0c53b11f288caab30890054f039de8ad","url":"https://github.com/pebbles-hq/pebbles/commit/0a95df3f0c53b11f288caab30890054f039de8ad","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"ed062ea21bb11d638ae1d9277f66a90fca6f9a19","url":"https://github.com/pebbles-hq/pebbles/commit/ed062ea21bb11d638ae1d9277f66a90fca6f9a19","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: message 'Generated with Claude Code'","ref":"72cee58a2d5f1374384fc7f9bd66758c77f24f45","url":"https://github.com/pebbles-hq/pebbles/commit/72cee58a2d5f1374384fc7f9bd66758c77f24f45","weight":0.9}],"data":{"attributed_loc_by_commit":{"d197137ee4030dd5aa8f3b8340c804106d983502":15855,"a120ffd638187def5e9e42bfc04bbf7d5aa125fb":63,"820de420f8c6febb28b8b7817f6d2c887cef5457":217,"e4bc1f90248bc2814937f1cb0245073b957b4d84":108,"bca89540ed01dd8d95fdb055d8e6a8a195216cf2":34,"01eae0e7172a8a377cc47ea3f30faf5f15d2ff8c":78,"af995873838b73972274a242a38d573409ddf17a":197,"b49391fc1497df0a203892ea5b72cb7a9e97bf94":63,"2f133420d6a52694de11fb438255a58069ff7dfb":68,"66aae14bc531b2efab7ef793d9184ac27a4d4ec1":188,"2eaced75ee8aa7fe1c48f81759d88076565d5a1a":216,"d24d1ffc6978a09cb809eb9b933c4964f48434de":135,"9a3fae9d5b67476c6d7a04c4ab083d80ca659c61":227,"c442b50d459a0574d8276d88a7fce694fd24493b":235,"7acc1fe4d11a7f47685e6d595a6b61fdd4b05d6e":125,"860f0a17ea9d9e5adc70e407cd999b75446248a2":169,"358006e87193736530c6657000da10bbe720036d":352,"4d7e7702aa7978b7ace28ba6b2b18eb193a8a979":334,"cdd163c3597d8049d8f4065c162bfc678f6c4724":156,"1dbebde627040cb01ba53a674ee2d22251886edb":301,"9b3a9f96f25b16e8137a6b445ce73d3bd7487574":294,"23345a859046d3fe5163ef6d485e3b3efc34b5fc":702,"4b95e5d666b1ed9d035d19d9aa16c07682a4e57c":405,"af3224c7bc038bbf2d027b1c33251a5ed2de2ba7":695,"5c81070a43b2c0092c11255c34ceef86ef0cbf8a":916,"fc24a31ee3a94d11d34f81c25cd06a08f9cb1fea":62,"88ddd422c2bb0dfbe91265597782ce38f760dabb":470,"505d7eb8a2db677c0dcc701fcbd2fed39a8b606e":283,"a4c9a8bcb6f9a7960a9676b512457aebd9b2abab":28,"74eda6397dda63207ac0cc39a04d97644ac936ed":490,"9aa08421c92954206c172e02f646f18fdd8bb415":347,"7268f48f224253bc574b93f222e507431bcca883":124,"8309fb9fdac1777df687cf53410be8573d0668df":414,"3d295ada7f9a528767addb0efc31882b46579925":1850,"03580e3e1e3e0ce259f52585961eb7c2b925c4ff":177,"347cc28fc55b9ace0156c1e54b7406921efd2bb5":0,"dca285cbc1145f9474f99d34117f68064ec73aa8":29,"34406cc258c364bb895c557974fae29d3ec42b32":12,"858aace387ce00695b33c59d6658df4f91abec8f":30,"1dd52884167a65e217e76ab8865e03ffa9d27a6b":15,"e4b7133139ea4fcf6e458ef87806d5323a9b08e4":119,"1c50b688d0e82124753dc2d94baa32db2c13177b":736,"0716a5c0b8a3344b90619add5e0fcfccdcec2b20":841,"5beea1d7c5ae65deef5888098d71774ea2291999":277,"6a2a85871f8cae62ea5c72ed96552f0a384830c0":722,"aa6418a482e787339acbf9295048fc473330db2d":84,"8f9f0f588c37c907b736f73478b2ce55703d853c":227,"acc7c256430dbebd297c572bfdb92eaa723a25eb":533,"f04022739e5da81efecc2a49a483e8149433d045":2,"ae82386e51c62cedc81dec0cafb91fde1f5b260a":70,"01a20fa347544593cd1765234b079640db038d17":104,"e5371681e1dc6a28fd4613af8a201771d99c6a23":272,"62aa951b493787b1b0595535d207b0d621743684":287,"0ad0e88bd6716bef707b10a05232be7796375db9":12,"e3c5631cc5fb3ec95cd236d08f0b125b5a9e850e":197,"1b30038ab3b42062260205233a6ebb66cda35129":296,"440e64aeecb4ba68a3dc3282c94f93c30dbf6309":104,"bc6e997a76677cd8bda61b1d0c01998d3d2545a6":531,"28a1bd8195f25855eb854dce4e0392da007bd418":704,"2087ca0a2f4731f557b8bc569ebf2327d444101e":5,"35d52ef3a5b7a6f0dda7fc8c9524d05624aec70d":79,"6349a5a7b27fe7e55067134b8758d42b74141f6b":174,"260970df1414714379117389eef2a41e7b51b24c":216,"e0320a2687c763eff71a52b9a23e96ad98267d72":150,"af80db904ca027df612e0177f8ee6807f254b909":116,"7fad67691d9271c7113de0e131cc9c2d93996cfd":93,"457be47c196b6cb50317dffc879bbe56dd83afab":151,"2eb29dcde646a52fd9bc54762cf49f06843fa626":4,"3a5f4b348143ef5bbadcc566829c671144eb1752":496,"a1bced896036d413d5bb47b068f7ba44d70212de":2,"23140c9bea48a2d4c88b422ec5562f98de6fc9f9":247,"d66c486b2343ea5dd1cb018afdffc3efde20e4b2":624,"4fd8ebf453f8c97c6feadcb8d60bf3c05f7dd6cd":21,"5803cb8a0e0ab66d6cb61b8174adc15f88342069":146,"3ed1cb9dc640dd085d2406c9a4f78f40a86e81f0":417,"5c0524e9407b07038db57eb532c12926ff817eb6":866,"9aa35746c5464fea4b0bdf0973be993fa996ff8f":820,"68ec240f6d2b490b16061cfefce7549190bed960":418,"de2d980ee703aa87feaabc0e5e1ee52fb5406e70":643,"dd0d03cdc2f614a52dd5e9c227823035eb4aac45":29,"3f11849437f9747a63b8623b2eec88922b8359f1":411,"81c7d9a4fc1b00ccacd71ba8fe620ef75f8a6af8":59,"163351135f5ad6855c3570095f2d2a18c709bf39":227,"497e63773e8d62811ad731235843ac91d723a5fd":275,"3e3c4dbd28e66a26981b5591c9dccdc36148946c":115,"f7e0408995138065b046b2241af53cf69bb5af72":150,"b183983d947581579f360e4c79c25d74b7e9868e":0,"c586defa3f6882da20d488e01641b9143632e705":0,"e1a65a700bfede68b5d192ed8113a3f4473d5845":154,"40f171322690651cf7d8aeba61bbb2fdbc3db6e5":889,"7beff8b888193e5660628f47456256eded8a0d49":237,"8af9dd7923ada78f44ae509f67cc036dfb8e636c":152,"b15c87cd07dae1238543c7560db1709412e6a256":217,"b146d57a1d8e5660ecc4eec2b6d78bf4e2da0608":328,"2c14d5e6dcb6a17288e1ac0fe47c6fbea29cd678":140,"56cff99ea6bfcb400ed2421e8e1293178de73026":295,"0202a0ac0acc2f149ba5947e857c014a03deb82d":830,"4c0354c15d03376ed9c3d03aa1f51a9eaf4d6535":337,"99114bebc652c504bcdb0af3c3f1ae615eac91aa":150,"5bd86b8e8c0979a6ef467bf190a2390f3438c2ee":512,"0465110e8875a6961c20ef81e7b3214d26ad5ae2":335,"ca835ee0959247ea233380300e8b2bf369ed9d71":268,"09aab32b34a9971954ab7ccbfa74275299cae866":707,"8bf2678d746c05ec1bf1b840fdd58d2107080eb1":638,"ec5ef5fe34d740f05f2bf997fb013dd24c803072":739,"34e80ced2f35fe79f81898104d4c902f5ecd4ac4":357,"6d0d6bc7f1637ae8cefb20b8480db24633125e2b":399,"dbd2d9af3e02ff8c5152a0ef4bb8313ae1461403":40,"a469fbe6b71a1de38c7cec613c76fc6dec32ac1b":170,"b44f09479cbc309ed031542fc0b63a5b29eabc3d":132,"8c954a319b0b1304f12edde457e3f823347b9e48":151,"69240b98e62d427b0ea38e617aff22f44f89e895":237,"4fd73a0a3a61c657e5fddb964a3a39cfba687b72":186,"f19a8b0e2930f43c839d18606d74e0ff4c44b33b":77,"013cf212d38b3812bc5efe477b1b1b8f905fb5a5":262,"f70dbed00c2cac3004a1ce7fe6d79ac50ded58f4":104,"f8bb3e1ac4f88f9e074ceb04a29d5235d14eb09b":10,"57d12b7060c738b021cd43bd46f0bc4533667c7f":341,"bda038062429f4ba3c06070f6a88d8e3259b8740":441,"1d66df20c60778bca29d786c8635318ae0e76d76":687,"289edd6a025357b5c592b9c365b997a3c7b450ae":34,"994935bcb4a5b68807e2941dd0324448b384c697":34,"feba511f749595b730ed68ed378ea2c24e528392":74,"ab87fc25e3aa80763346097abf247fc4772716fe":607,"f5cf17f3971eed92e206ce444e581c73254f2feb":461,"f781cf3afb4f6dc02a4dc04ca1275114d1846fec":1330,"20efdf6d83cb640097ea9b8d014895faea2a90b5":272,"da077d9bc86c4ad858b1a7bb9179f4593f9026d0":622,"67f502996cc3942a682fc0507658cbcc98e0a134":74,"d05c93d2d9778e882b840acc08a67f4053179934":97,"a5b9678fa5db23cea16919ba48980c0fdbfa9fe7":418,"935031a1f2fea092b9f61279c64102fe5c3c5c90":1154,"6ac96c79493f0cf95281fd80bbfd8761957a7ce0":244,"0641e95fb51be651e487d2f25db5a3bcb6e6d6e6":1628,"0d6526f247d3539e72d4d46fe242a6028f0d6028":504,"22cc48abd11fd9ef6e1f434eb6d6b02c400fefde":668,"8845278d5d636f4315813c4033d8650ac02646c0":432,"4a987a1636f4722b77b80f726256a1e928aecb40":189,"f803a2170edf8a00f86238c264b05f120300c928":1146,"3902ac8b94c8ef70b4cec93410d6bdc9610ca92e":284,"e60298f316ab28400e16a8e775a2f8a7f3ab984c":594,"50e924967976e85c5462fcbc17523bd85b0ca122":161,"f3df090a3f69c3f6bd34d9327e978ad47b17c605":781,"c9f0ce868d51971d3ec8cc663486211d799fc345":930,"e7ef7d90c16d5fa05991fbd317fd2ce316f9f5c0":461,"81481b8cebf7639d447f8b3a9c81601c1636a5a2":311,"ad81c2b265c6f10fc207c9bcfa5852fc47e73fb4":315,"ddd4dc9e565b7f126e1eb499b2ef59cc1406c432":1098,"89a3bb190e68c6c4f826945648cade31513b323c":246,"2842c90d7b8dbf2365cf376e7c34d9e8062d6b32":189,"e8bd280e257c14a0fa3ff55efcecb3f1e2b8e098":89,"0e25ebf7e69d276ff4415d9789c8e9b0a4c53f73":355,"9648811a1af87014f2784f396c4a12a6102c20c1":758,"f5289928c9d7fb0db0da6c7aeb4dfd4aabbf9f2b":247,"6ce3ce18745a167c16bcbb33d47c04036279a291":54,"124446402e83b7f68231d1cbcd7f56277280e5e1":202,"7049748fc921dc1465d093822080fea8661e2624":56,"e02ab3f24617f75aa4445e57a284a12c4fad68d2":269,"9cdaababfdcb8ae72f0acab735812032a1ea75e4":36,"7baae12cbc7c57223e40beecc9c4d561cd9362c3":268,"f2198696106ac894c674b8ebda1467315a9facbe":461,"8cbb78a309f34cd61e1ea6e5766cdf6b28fe0d2a":864,"da45c4f6ab58e3fa31f91b7588379edda4e7b1dc":19,"c83570045c7b579717662dfe44b5a94a59e90749":1158,"6090195026524e1b43fe7697c0296c8e219da970":0,"e460a7e845accb8d5d5fb03789e86512f1a986e2":174,"ebaa86a19b2fc377e0e49208438dcd8fa30fe642":134,"76a4e5e54172da60c4ccddb77368adbf8f1cff1d":15,"18ff65cf101697c5070c47a7470bb2ed8fa8f0dc":41,"dfdbc140eff5b0b7bf91d6fbcc5d0e1c65b9253a":103,"27cc02888959955b18ba84200d1f16fecbb4f409":37,"b5df31bcca75b814d0bd3a41bc9257b6cb1b6e7c":116,"c27dabcf92a76c6408e33eb229ba6a59f5aef301":54,"54cc8af0a29ce02d141c2f6fe8c0142c607ae5a0":288,"893b16bbe1f3cb1cb526d1651ff79347863554ca":94,"1889f7b87382e514e9cb2b758b4595913cea963d":178,"47bbb3e4c141550b61a564d6e956fe367fe09721":11,"8981b2bab100b14337dec48f3fd18ffee7bbd534":171,"bf49e58e12e11bd54c6100e40a2295e2568f00b4":114,"5737004a4290537529ee71a5877abf30ac27e83f":46,"5120335af004bf80299cd20ac9b6e32e022ef8e9":112,"8bad7812e4785b94c9fbdddf92ef144776422aea":0,"31db41c946465c60a74f20b66f338cc442ff254c":0,"f25e7c1a714f08f497689c12e3f2603d51a65550":0,"c8c25d26ad8fe97452bcea2097f438258ef2cb18":0,"9f3d7949eaf31420d43d756ee5ba920fdbadc9e8":317,"23f053d97afa7df7c304b49160277b00f40c033e":0,"8152bb94e4d6f4c291ba7311139412283191a157":280,"e07cac352112874f358021a885e40a12f7be6649":113,"3addbd1314bd35663b2a2ee861452d45e4cc2a85":54,"226d3aaeb49a78c558d4a76fdcb3c958d5d49a30":192,"e36432b232c5bcc5387c84200725dfc580a759dd":74,"b0aba6a6e37434856cbe45c3ce7386d6a6d7d7ea":386,"5d3f08eeed02b4747b9eb8fecb733c4debd9b6df":193,"d5d8c4bad8105b937f12b27474d1ec18fa553a8f":57,"7a486a3dee0dccd85b9d48fc8c9b24775c368f48":541,"b69ac1f357852c49eafa8d88435030eddfd783cd":220,"cd2305631aaab3d36482f320a9a37027b1a83dc1":77,"bdf961c54f93d0ffe10ae2dbda3865d4b47a7827":133,"be5b7ffd00cbc61fce2287f490c6e988cd13e779":152,"d2c73de5b7ceb8af32e8a677c8ad9de40735e124":1,"94280a1d5b59fcc0a5b5ae235ac0c3fb0e5d0f18":106,"8b117223e50d2304dc589936ff35a290d09d742a":16,"5119e741c5a53cfde5f50ae696ac01846b2dd278":115,"7b7e3f755b4204d1b570f32acbce7563383953bd":249,"a25c487045b0819525c264949f277d0c87305eea":94,"aad59e14e46ea0f72026d530a145876dc55a4e1d":254,"5da04ef6735c502fccef2a463847c7e3c0f852c9":430,"465c2ccf7e8534e30b11c4681a27cd6f86a88beb":567,"41ce6f15e7f78a17900750b9d0757ccb842a385c":140,"5161e805f895f83f53c3b8e6d7e432d0d942a659":244,"aca6239b6fdb6cf9b54afe80e211d48924860e8a":3,"616ea2a24662d0871aa02bfa40cd2343f490a80c":78,"29969d3cc416a9803d4c4f7e1b4066eb3eabebb8":112,"392f33ff8b084230f9fc5b6d158630c46e5fa1ec":164,"ead707759613663556027382e85cbb3ca99212ed":92,"6dc5524a7db27da18ead48aea19d94859359cf65":134,"5c4893adc51f7a4bcc021b4def895670cbcd1a64":0,"44b4baecbfca3653e02b55a41663e1382da8d50c":0,"8f553c597014f7e3459e4eb14f7b87ad39697fbf":2,"95d0ab2dd9b9aca2c157d3fdad0425afec38f909":385,"32397b362ca87bc342deec152eab84d3e736a7de":265,"c98c2caa01655f8e4d8c75469fe9aa650032a217":84,"228b93d836bac04253779f28da18bce5900b69d5":170,"08b26756aa5839361c632aa4984742f291fbdd05":273,"30cdbcda782b8a9fb5419a07cdd31487b6c27bf7":284,"ee0bc2b2a16c5b26cd08c71e72c75c72b406014e":258,"72160e153d56f39fdf464f14ed6d4a33765849ef":165,"c8a5c9ff5ac7e6bd5f360477368837ab578bbebc":35,"eb3bd6c5fe8968b2389bb3690e33635e18a36684":110,"985f6f5ba18a0661f1afcc49052ea5b930ddb1d1":340,"c41defa691cc5dcbb9814022a494d93ad6e5d1fd":0,"aedfe6b12b0e9252dde4d393b931e989d5ae9154":0,"e4940ae57447506c63f1c1a48af098275da83d0f":106,"4ccbb62bd532eb560123ad65f4033358b70d753a":178,"9249e42e9c7c9e4eda4e3ce6787ab84db9ba2174":151,"2660db6e5c8a10cb7bcd12bd84330ac61cc4a780":288,"f3bb656d4d53b1601477580b1626ff8910d1a87c":0,"f64e8114426c66776f1931214ecca9442162e06d":0,"3827a65b879d0264b3e0dec6b8b5b31ea89a163a":27,"56ec7b068a627c216a6d654b9e53e0ed64fb201c":0,"92dac7ecafadd14a35195ef0b137c9cc2d6775c9":203,"480326f210f8262465d1683bc5c282a7eaf12a88":591,"dbe0d2fedfc0d91456e8e069801238020b01ff92":34,"03849004f93276b60e9f1931b1313b53bb665fe1":465,"7b19d2dbfff3bcaee8b5a70b05f2fde1af5b48fa":0,"fe3f4365981ef9fc064af880cb6822bcf30e3a94":81,"624b20adb6f33ad271c749f1a9fc8bc7b19467b0":91,"dcf036dff6421b3a0bde12e132988a53109c652f":30,"b57dc0b3d7dcb7101b0c9b7fe5a253a34b420974":74,"346a0c40686ce89e18ee9f9eddfffecb608eaccc":71,"5a1648da0eb9a2b9def525c8dd1c663a483a10bf":75,"2a3a995419bcb221dfec8ceec8fe3c513b1bf867":344,"6cf46b9de2348ab5ee91f42bbd297ddc691ba0ce":15,"7c883b685ed649d0bec5fa1f43d2994f00d2d237":0,"208f377d784328c0f14d9f08a8b56cc64e11b1b7":1,"a0c3decdf70f5d111a240855e5a0760777f327e0":37,"22adfd93c8df0e9f5f0fff52d83f61c00f926b85":73,"d6473ca3dc4e7b036408e397749155773bc26067":0,"006489d2027fc986bd134b69603307c08bb947d4":0,"342bd567bb2f2cdb5fd820c9f05762051e3cdb00":579,"5547c42fa2ecb6ac1dbdcd9131c34a122a7d6771":678,"672a6df5833a421d535fb05d0a652921a56a309f":292,"4cfcff5ea3310eab11b7ea5ea924cc4cfbec3618":8,"60e7661f3719964e4e723c06c232194f10bb9f35":38,"5fa51cea14d6d34d8f723659d9a8d5ee3490c5d7":369,"2989b587d215dae5416eceeee4cedf9ab80d7089":275,"5e54f008fab146ab373e3f04cf9d7ed4b1bf4dc1":13,"a1bcfaf3262ffd2ca80b34b8358c37356a442e18":31,"4be9fb88fb4ba8087dff7d4ab58d678635bc5435":864,"37b81f2444e974d07c95a1ecdeb030e4d9378094":12,"5cfab3b97cf472ebd57af375ef375eed8fe408e0":0,"753b96e015eb4d2b4f7cd26ff54bf73e0e0738bc":12,"188941b2e36246ca12501574811d0a7921d69336":0,"b29d5894e39547d769fd96b5bacdb5ae8b199158":49,"be82a0b0417cf002fb8e87d558c62bd2b8fa4622":197,"68487f19e78023b20ea61a52de6b5b24e1387906":4,"15218ccbd58b9c5cbf4f6b88e633c6199d27cf72":2,"6558ed52e994e7fd87a4d4bf1ae968f827c9189e":0,"7c7a2e7b00ffa74b98b261da9653f99eb4a6c79c":99,"93e15fefe3516f424a8b475a237fdc44bc3923bf":2,"7119024369c4cd3fe6e4def740de2a95a2944a54":37,"cc357a90d04a40c0a0daa1105120341bc68bd902":686,"393d319ea6d871ecffb6f2badb65f65509d5b6b0":785,"41ebb6473bb717e0c5c73ed1f79031d6fee6a48f":532,"84a57ef8546f1508782ac437f293ccc9e9bb76d2":345,"e7d3fb2c42788e5ecf89f396948d2311209f657f":19,"1f71160f1964df2495e5ebbd73e99f08baba2c9a":377,"4e56c4afb196e80e628dba59e578b021af413264":23,"f7dbd2177b55bebd081804019bebbc90d34967f0":1347,"72cee58a2d5f1374384fc7f9bd66758c77f24f45":518,"ed062ea21bb11d638ae1d9277f66a90fca6f9a19":308,"0a95df3f0c53b11f288caab30890054f039de8ad":2,"c8a858a6518b3a9cd3a2784dc90dcc6e1dbcbcc0":340,"a6eb08c68297002dd7bd17d87b30791096b1e40e":36,"d1c9992c94c7c85bbe45694d596c3978962797d8":11,"78b521f1f595df03f2ee8b9eae9a40e1a2181ce1":0,"b6c0c4491b143b7a9d6550735d0cd509ccfabb16":653,"50ae07ad0d994f57fd9810172950a88dd1977707":33,"85a0cb1a3261771416d302bd886dfd74d23c8868":76,"26711ea599e663f89b6cec6d1cdda44c9f3cab2f":21,"977221a2c70c69f4628489c8f851a8e0f58ccfd5":206,"a1b61d02b9599b21b32bea161fbd04b7c2ead37f":39,"42f987b7d77e17c259b199832de30ad17962280c":192,"3f0400c7ec97f56c169e23bf0743a2885012bea4":11029,"12916d38535fbfa3257335ca35680b81bffb44a4":362,"11e51b7237a0b0400ee107b63ae13a10d59501f7":709,"5a9fdbd5bb782418abb7cd34e8b69a0da6577fb8":975,"97e236a65a8e10b8c11e461bc828972b6e825085":1520,"ce1c7fd344a48fbc4a5671f85a96f56e58dbabd5":367,"a458f48ed269fc820d81339537aaef490bcb1897":2219,"dc2d79f63803d62e6ab9e0f89ac9673944aad845":5485,"45440d6b344e9ee36743ff548e9c382c8cb157e6":275,"7a6de0b5da961bac39e7c563a1ad8091f8ad0153":148,"cf775b95efc2e3538b02ea6802e228771491da86":1638},"tools":{"claude-code":{"name":"Claude Code","commits":315,"loc":117671,"first_seen":1788080827,"last_seen":1793410327}},"monthly":{"2026-08":{"loc":51059,"attributed_loc":19415},"2026-09":{"loc":85360,"attributed_loc":0},"2026-10":{"loc":107185,"attributed_loc":98256}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":131.0,"flagged_units":34.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":182643.0,"flagged_loc":131944.0,"flagged_loc_share":0.7224147654166871,"max_loc_per_hour":5046.9000586739685,"median_loc_per_hour":306.8352130800091,"pr_timed_units":1.0,"excluded_import_loc":60961.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"7,168 lines of first-party code in ~1.4h (5,047 lines/hour, 19 commit session)","ref":"e4b7133139ea4fcf6e458ef87806d5323a9b08e4","url":"https://github.com/pebbles-hq/pebbles/commit/e4b7133139ea4fcf6e458ef87806d5323a9b08e4","weight":0.6},{"kind":"velocity-burst","description":"2,393 lines of first-party code in ~0.5h (4,786 lines/hour, 1 commit session)","ref":"17dfb8af743b8a507c87927c7eb95f0efde0357f","url":"https://github.com/pebbles-hq/pebbles/commit/17dfb8af743b8a507c87927c7eb95f0efde0357f","weight":0.6},{"kind":"velocity-burst","description":"2,962 lines of first-party code in ~1.0h (2,990 lines/hour, 1 commit session)","ref":"db6ae8e2edab63f6b47e84487760aa4a70f79f1f","url":"https://github.com/pebbles-hq/pebbles/commit/db6ae8e2edab63f6b47e84487760aa4a70f79f1f","weight":0.6},{"kind":"velocity-burst","description":"1,289 lines of first-party code in ~0.5h (2,578 lines/hour, 2 commit session)","ref":"65e2893ab6818d490f2982fc93e639ed84dc789f","url":"https://github.com/pebbles-hq/pebbles/commit/65e2893ab6818d490f2982fc93e639ed84dc789f","weight":0.6},{"kind":"velocity-burst","description":"8,356 lines of first-party code in ~3.3h (2,500 lines/hour, 31 commit session)","ref":"d66c486b2343ea5dd1cb018afdffc3efde20e4b2","url":"https://github.com/pebbles-hq/pebbles/commit/d66c486b2343ea5dd1cb018afdffc3efde20e4b2","weight":0.6},{"kind":"velocity-burst","description":"1,218 lines of first-party code in ~0.5h (2,436 lines/hour, 1 commit session)","ref":"c9485a3cd6c110661299664dd54273b58822e34b","url":"https://github.com/pebbles-hq/pebbles/commit/c9485a3cd6c110661299664dd54273b58822e34b","weight":0.6},{"kind":"velocity-burst","description":"3,483 lines of first-party code in ~1.7h (1,991 lines/hour, 8 commit session)","ref":"dbd2d9af3e02ff8c5152a0ef4bb8313ae1461403","url":"https://github.com/pebbles-hq/pebbles/commit/dbd2d9af3e02ff8c5152a0ef4bb8313ae1461403","weight":0.5973701762744164},{"kind":"velocity-burst","description":"2,567 lines of first-party code in ~1.4h (1,896 lines/hour, 1 commit session)","ref":"a1f907698f6b3cf779801b66f9791ffaadaebd19","url":"https://github.com/pebbles-hq/pebbles/commit/a1f907698f6b3cf779801b66f9791ffaadaebd19","weight":0.5686892307692307},{"kind":"velocity-burst","description":"5,485 lines of first-party code in ~3.2h (1,740 lines/hour, 1 commit session)","ref":"dc2d79f63803d62e6ab9e0f89ac9673944aad845","url":"https://github.com/pebbles-hq/pebbles/commit/dc2d79f63803d62e6ab9e0f89ac9673944aad845","weight":0.5220586939279104},{"kind":"velocity-burst","description":"6,027 lines of first-party code in ~4.7h (1,274 lines/hour, 11 commit session)","ref":"a9f476812b0a218c367bd9a3c89569d47e8ecaf2","url":"https://github.com/pebbles-hq/pebbles/commit/a9f476812b0a218c367bd9a3c89569d47e8ecaf2","weight":0.3823295154185022},{"kind":"velocity-burst","description":"5,505 lines of first-party code in ~4.4h (1,255 lines/hour, 15 commit session)","ref":"b190ff6c566791822dd84766d5942f31a3025fef","url":"https://github.com/pebbles-hq/pebbles/commit/b190ff6c566791822dd84766d5942f31a3025fef","weight":0.3765056044582357},{"kind":"velocity-burst","description":"9,529 lines of first-party code in ~8.0h (1,188 lines/hour, 19 commit session)","ref":"4a987a1636f4722b77b80f726256a1e928aecb40","url":"https://github.com/pebbles-hq/pebbles/commit/4a987a1636f4722b77b80f726256a1e928aecb40","weight":0.3563106325520202},{"kind":"velocity-burst","description":"7,396 lines of first-party code in ~6.3h (1,183 lines/hour, 17 commit session)","ref":"505e89f72228ab2b0f740ee21f44032ca66e5189","url":"https://github.com/pebbles-hq/pebbles/commit/505e89f72228ab2b0f740ee21f44032ca66e5189","weight":0.35492912686069755},{"kind":"velocity-burst","description":"10,194 lines of first-party code in ~8.9h (1,143 lines/hour, 25 commit session)","ref":"da45c4f6ab58e3fa31f91b7588379edda4e7b1dc","url":"https://github.com/pebbles-hq/pebbles/commit/da45c4f6ab58e3fa31f91b7588379edda4e7b1dc","weight":0.34285821058204347},{"kind":"velocity-burst","description":"3,834 lines of first-party code in ~4.0h (958 lines/hour, 1 commit session)","ref":"8434582f7ee809d48432f55bbc89205d10736148","url":"https://github.com/pebbles-hq/pebbles/commit/8434582f7ee809d48432f55bbc89205d10736148","weight":0.28755}],"data":{"flagged_loc_by_commit":{"9752ae0f1dd0a6852a709a663aec9e45fb4b03b4":278,"580ac525eb2fd4d158805f9a31ec8b65fd190228":321,"fe5f06f67122e00054a883077dbedb8d2fffb45a":135,"b73f3a2638a94ec8f42242592354e20b67cd2a61":669,"ed8afd8bbe387c0801fb687eae7319da32917054":580,"7208cec31a50ba51bebe975e87744599a8cb1e5b":208,"311d4617a0d10352595a674bfd0d9ddf46d67af7":542,"37081a05bdb97f5834348d4584e0fcb985987043":372,"7f35182da0f423902767363de8e8b4ba36b51202":129,"ac52a1a9af8275490ed6a6c7024a1e17b59ea7c4":554,"891e76959938d1837fa46fbadc9208b872925136":263,"ca16028180e64fd3301ddf65b068a6e461f772b0":122,"ce0ae7c2452c5a3ad0656b377133d082b02739f8":73,"21e9d7a6892f461dfc68dee9ed236ec5d2124c69":1200,"b190ff6c566791822dd84766d5942f31a3025fef":59,"c2212b776c079c15ed73258818a8ad06e02c53ec":377,"47b198867e01991d6dd43c29b1c92199d76b50ec":191,"f56a346edb063ad985771387195b65d06e87112e":60,"d06a1c49e7d60e965691a3ad8462e5c6ec16d2bc":547,"1f16a0773b2161a3b61451ad1e0fae3e965f0383":111,"e9e071ed1394a24655a5a1833d5fbe556aa42ae2":418,"87abd824adc2afc51c077804dd303016330014f1":426,"dbe19e915de36a8a6d5223c84319b55f7860bf71":506,"0c62c670de401c7e0426bda287193dcd39eb8bb8":422,"1f42314b9371eb1595f93260e4e07762558100b1":341,"3b809b87fc1f80519e80fc09ae48c46121ffc6f4":127,"aa7c9d37fc3d9bb7364c1a1a55210ebe185734b6":596,"835fb2274edbb121cb6c32de4d41945358ffd84d":142,"93e1593863732ae1306ec872efecd67a5bf2f4da":14,"bad65d204dff15cb4f9aff20dda720b94da7d6dc":14,"f958e579cb17b9850613f82b060872af9794f5b7":56,"0c87c8c1105a842b58ea417091fa1955afa5ace2":457,"d03b783001d2cf6bc193e38d47638f810cb323df":24,"a3db0c403896f59492e8006d60d9c62844a45cb2":120,"af6b3e6c33b55304fe9a8da6430227c6b90c5ddc":879,"f9d8bfdf804858d8f116dd4053c227083d357516":417,"bc1082d7cc2be3006c9d831515c79640ae2d9334":447,"929db1318fdae7148bfcef1435ccf6142d3a2b52":244,"cce70f1b9a10465f4034b0029083136892380f64":415,"94eb2241df8c299da730e80373a9cf6dbe6116d5":459,"75824ffe07955b7ddd7eb4db134eda403f112db6":304,"57351424c8b4f96ec133f6243c47e5e80ead58b4":1,"626d0f73f671479c68c11e33b60f82fc08096929":1248,"38fac9af0fc3937289f097956c1df0d3c41ec591":84,"58c878d01f923a9201d60042f4758fe57b0a6593":69,"8434582f7ee809d48432f55bbc89205d10736148":3834,"a1f907698f6b3cf779801b66f9791ffaadaebd19":2567,"19f7b2fc144ae115e96561be36d610419ee58060":3808,"c4dd85832f24f150da4acaca1c70f042dabd6c74":2879,"8f9186995e663c8210270fa048f6b167e8583af6":593,"a4a04e9f71f2390588ece21f9acdbc1f08d0655d":351,"13616d79ab9f4a19e60ac83e195b5d3aea11efbe":265,"8d189a49c4d4b67dbacf4b3c2ae9f1a421b8783f":263,"9fda0368dde946ba48d2abfc6f619612771b2059":1082,"63c4e7be471cc167e154ad179cc577ffbb35d892":19,"ca9c6c3a16115be53b69edefa869cbd1370df5e3":172,"cffd5ed535cd93be1421d1bc9a6dc9f5f25ca4e8":79,"acfccd320a8b8f26a579430fb6e866d320612a63":26,"6c2b10f046444166d826af88f3af2bf194fb0440":137,"19b63bb2ef90da77030da1aaf19e9d70537cf702":442,"89dbe0e0aee3392ceae2b73cf4b988d7ea748eb2":861,"42f9281aef72fdce2592faf2d462815bc0954589":22,"dfee75b8636fd92a2a545a22379f5246dcc3d475":238,"1739bd0c5a79d2b9ae3203d871ed6b538a39ebd6":38,"411ffb48f833813969891d6721d48b6831f09c61":100,"35bc7a976485448d7fb742270bfd52b7fcaa09ce":67,"155ffe8eb95d6b32e54e2768334dee87dfc25f75":119,"27ed049cbcb6482403e33837bb5f86ea527ea54e":309,"88668869ddc17afccf5e2af2816ac8c253f71e1a":337,"26d86e249ffb8f14e68002e12e2ae52797694dec":120,"3874516dfe1df45535a774ee8de950a12f02cab8":636,"3695246df4d8fe84aa0da919f1080dd3d70c0ae7":235,"ddd2b0bd59eed57ca3eda7b4d0e3aa6d5e9d4629":281,"077b3e7fad9593d55d32f95a965803b851c1e9fd":14,"928baf5950d3a2c83ed703421fbf6b398a08bd56":230,"645f124e09c4b42f107176b8cdf4d4eaac813dc3":781,"92602774ec9d759de1b8c7cb57f1af1f77ccc298":41,"a998538655d44511746e2ac6c331c784a0dc016f":7,"d44b839d6ae034a82876ba03f0d2cb13a5ac3650":600,"5de1723cb007175a57ac5e1fb28144cc9d7b74f8":200,"45862f39481ab012be73b89f9234c33d454e8315":208,"7d996c88925ddecce163d2788e8571db64733e77":121,"54dce944f95678eae97b7458d9479e9f20112412":173,"6f1c7846a901ca3ce73be1ff8720ac89c47d2251":813,"7fb4dd5d57a072273e8bb94281a01ab1117976c5":1176,"7fa410c724fec312388a6666ea8960419438708f":1494,"229e1c982e292cf0706e2163f0a278f8ac072bfd":239,"8d610f744e9f467c6a12bcca47284b4a9b724ebe":544,"a9f476812b0a218c367bd9a3c89569d47e8ecaf2":459,"c454360ccbec97995a6b526c6516aa97af740932":155,"7569495c4031539ef8c514bffe05cbfcf1ca989a":369,"98e3b5d9d7f8da3a3354433f8e0871861e29ff85":178,"3e7bffc12842a0e3d63a3d51ae24bc83077ef7df":568,"3bf9b5ec64f5ad3ae6e3b79005b2e35c3d433ea5":422,"cb9f839ae80d4ff4f4440869c8bcb3f4128c1540":259,"52f5e9bf74a36f53833644bbd67bbcb45af89de6":1372,"c9134f93e81fc7a3bf783b3a63e633b7aa238f8f":438,"7cafbfd1852efa5124aeb10248c6bc272b95b167":488,"1e2a8ec2aa1546a46190fa84ec2d3127ffc38239":207,"5b60534ef542e599b265f51b292ebf27216b95cd":507,"c9a10dd8e43de62acb211051fde76ec780cb7066":361,"d9e44bf484e25a4196036acc1833fdd0cc6a1df8":712,"b2183d292721718587f1359d03a9c70f5baa1706":565,"1ce0be3e3def157209508f7e58b4290b3ed9cac6":2,"6403da08f1b4ad41f90eaff99f460f3fc09165d8":82,"4f91f95d9fe1e979b1eede594bc2a979996d53c6":956,"4daa1efb21674ad0f47c7a8ad614d194491dc567":84,"b7b32aa787ffbad89230e091cb5991c42b0771b1":411,"af16cdc014f360f62705ecf2634a4720d0910d1c":20,"9a63f0460902178ea684495d7c8770cd464bcf5e":1111,"505e89f72228ab2b0f740ee21f44032ca66e5189":5,"8fdd6d844ca34be54ef6e20be7c1677d8e09a7af":75,"db6ae8e2edab63f6b47e84487760aa4a70f79f1f":2962,"ba31ea0be2b43e31f7ae976ef6adda1fa68b8aaf":517,"b2b57b846001353ac7c6a9529a54e5083ba42f51":203,"3199b0616f7055f0d24384fef1b0656428a813e6":286,"e5766255f5efd7c49943acdd0fe43c4be8b6ef6c":83,"21a35119351ae81dbdbe9ceee66dec3b13912d4b":75,"d16f402b14e308bb4febd17976f32c92d68b40c2":319,"e66cf235995483938a465368653f62bb07d73dc3":145,"a47196f378bd3c0326c7e70a8b93b25eedf6ed42":701,"5763cce777aa6afad03b7951c5a11e494ffb5d5c":106,"0e41742281a9ee1833ef55a025c68dd2c35cf71f":170,"b76b2e86459efd06d51d9812c6ccca90f7e1cb1e":2141,"2e6729b37384c785bebdccf964a0c82c4d6c23ef":245,"5732bf47363d69ff73f2ffc662fc7041ff29a062":1118,"e48199c057f4a30f30db73fe356ec56dc953a238":94,"8957e9187fe53fc305b99d8ff3b42c17712f37b5":1170,"e25071ca15d1eafe9b17b8c98adb3213925d2b3e":2,"fceb58c843b9f389d77c30b9ecb1a623b1fd36a6":233,"6da39f6fbb63487e22e3633ee8dc98d2dc3118cb":59,"2bdf0e9821fe22851f44f9dee72271d09eb4b3d4":9,"258e957f03ab86f1f7c4d071a0a00d046e2e33c2":84,"7895661d48e2ebd221fedc298bb7fdd3cf8b2f14":417,"8653dfc5bde5a691b30081d4300e43b0e22420cd":99,"ca0c5fa5bdc40298f3ca9fcfa5a686f123661630":2392,"17dfb8af743b8a507c87927c7eb95f0efde0357f":2393,"f790dc449bc45e92199f33d1bb073226b3d8780e":438,"65e2893ab6818d490f2982fc93e639ed84dc789f":851,"c9485a3cd6c110661299664dd54273b58822e34b":1218,"23345a859046d3fe5163ef6d485e3b3efc34b5fc":702,"4b95e5d666b1ed9d035d19d9aa16c07682a4e57c":405,"af3224c7bc038bbf2d027b1c33251a5ed2de2ba7":695,"5c81070a43b2c0092c11255c34ceef86ef0cbf8a":916,"fc24a31ee3a94d11d34f81c25cd06a08f9cb1fea":62,"88ddd422c2bb0dfbe91265597782ce38f760dabb":470,"505d7eb8a2db677c0dcc701fcbd2fed39a8b606e":283,"a4c9a8bcb6f9a7960a9676b512457aebd9b2abab":28,"74eda6397dda63207ac0cc39a04d97644ac936ed":490,"9aa08421c92954206c172e02f646f18fdd8bb415":347,"7268f48f224253bc574b93f222e507431bcca883":124,"8309fb9fdac1777df687cf53410be8573d0668df":414,"3d295ada7f9a528767addb0efc31882b46579925":1850,"03580e3e1e3e0ce259f52585961eb7c2b925c4ff":177,"dca285cbc1145f9474f99d34117f68064ec73aa8":29,"34406cc258c364bb895c557974fae29d3ec42b32":12,"858aace387ce00695b33c59d6658df4f91abec8f":30,"1dd52884167a65e217e76ab8865e03ffa9d27a6b":15,"e4b7133139ea4fcf6e458ef87806d5323a9b08e4":119,"1c50b688d0e82124753dc2d94baa32db2c13177b":736,"0716a5c0b8a3344b90619add5e0fcfccdcec2b20":841,"5beea1d7c5ae65deef5888098d71774ea2291999":277,"6a2a85871f8cae62ea5c72ed96552f0a384830c0":722,"aa6418a482e787339acbf9295048fc473330db2d":84,"8f9f0f588c37c907b736f73478b2ce55703d853c":227,"acc7c256430dbebd297c572bfdb92eaa723a25eb":533,"f04022739e5da81efecc2a49a483e8149433d045":2,"ae82386e51c62cedc81dec0cafb91fde1f5b260a":70,"01a20fa347544593cd1765234b079640db038d17":104,"e5371681e1dc6a28fd4613af8a201771d99c6a23":272,"62aa951b493787b1b0595535d207b0d621743684":287,"0ad0e88bd6716bef707b10a05232be7796375db9":12,"e3c5631cc5fb3ec95cd236d08f0b125b5a9e850e":197,"1b30038ab3b42062260205233a6ebb66cda35129":296,"440e64aeecb4ba68a3dc3282c94f93c30dbf6309":104,"bc6e997a76677cd8bda61b1d0c01998d3d2545a6":531,"28a1bd8195f25855eb854dce4e0392da007bd418":704,"2087ca0a2f4731f557b8bc569ebf2327d444101e":5,"35d52ef3a5b7a6f0dda7fc8c9524d05624aec70d":79,"6349a5a7b27fe7e55067134b8758d42b74141f6b":174,"260970df1414714379117389eef2a41e7b51b24c":216,"e0320a2687c763eff71a52b9a23e96ad98267d72":150,"af80db904ca027df612e0177f8ee6807f254b909":116,"7fad67691d9271c7113de0e131cc9c2d93996cfd":93,"457be47c196b6cb50317dffc879bbe56dd83afab":151,"2eb29dcde646a52fd9bc54762cf49f06843fa626":4,"3a5f4b348143ef5bbadcc566829c671144eb1752":496,"a1bced896036d413d5bb47b068f7ba44d70212de":2,"23140c9bea48a2d4c88b422ec5562f98de6fc9f9":247,"d66c486b2343ea5dd1cb018afdffc3efde20e4b2":624,"4fd8ebf453f8c97c6feadcb8d60bf3c05f7dd6cd":21,"5803cb8a0e0ab66d6cb61b8174adc15f88342069":146,"3ed1cb9dc640dd085d2406c9a4f78f40a86e81f0":417,"5c0524e9407b07038db57eb532c12926ff817eb6":866,"9aa35746c5464fea4b0bdf0973be993fa996ff8f":820,"68ec240f6d2b490b16061cfefce7549190bed960":418,"de2d980ee703aa87feaabc0e5e1ee52fb5406e70":643,"dd0d03cdc2f614a52dd5e9c227823035eb4aac45":29,"163351135f5ad6855c3570095f2d2a18c709bf39":227,"497e63773e8d62811ad731235843ac91d723a5fd":275,"3e3c4dbd28e66a26981b5591c9dccdc36148946c":115,"f7e0408995138065b046b2241af53cf69bb5af72":150,"e1a65a700bfede68b5d192ed8113a3f4473d5845":154,"40f171322690651cf7d8aeba61bbb2fdbc3db6e5":889,"7beff8b888193e5660628f47456256eded8a0d49":237,"8af9dd7923ada78f44ae509f67cc036dfb8e636c":152,"b15c87cd07dae1238543c7560db1709412e6a256":217,"b146d57a1d8e5660ecc4eec2b6d78bf4e2da0608":328,"2c14d5e6dcb6a17288e1ac0fe47c6fbea29cd678":140,"56cff99ea6bfcb400ed2421e8e1293178de73026":295,"0202a0ac0acc2f149ba5947e857c014a03deb82d":830,"4c0354c15d03376ed9c3d03aa1f51a9eaf4d6535":337,"99114bebc652c504bcdb0af3c3f1ae615eac91aa":150,"0465110e8875a6961c20ef81e7b3214d26ad5ae2":335,"ca835ee0959247ea233380300e8b2bf369ed9d71":268,"09aab32b34a9971954ab7ccbfa74275299cae866":707,"8bf2678d746c05ec1bf1b840fdd58d2107080eb1":638,"ec5ef5fe34d740f05f2bf997fb013dd24c803072":739,"34e80ced2f35fe79f81898104d4c902f5ecd4ac4":357,"6d0d6bc7f1637ae8cefb20b8480db24633125e2b":399,"dbd2d9af3e02ff8c5152a0ef4bb8313ae1461403":40,"1d66df20c60778bca29d786c8635318ae0e76d76":687,"289edd6a025357b5c592b9c365b997a3c7b450ae":34,"994935bcb4a5b68807e2941dd0324448b384c697":34,"feba511f749595b730ed68ed378ea2c24e528392":74,"ab87fc25e3aa80763346097abf247fc4772716fe":607,"f5cf17f3971eed92e206ce444e581c73254f2feb":461,"f781cf3afb4f6dc02a4dc04ca1275114d1846fec":1330,"20efdf6d83cb640097ea9b8d014895faea2a90b5":272,"da077d9bc86c4ad858b1a7bb9179f4593f9026d0":622,"67f502996cc3942a682fc0507658cbcc98e0a134":74,"d05c93d2d9778e882b840acc08a67f4053179934":97,"a5b9678fa5db23cea16919ba48980c0fdbfa9fe7":418,"935031a1f2fea092b9f61279c64102fe5c3c5c90":1154,"6ac96c79493f0cf95281fd80bbfd8761957a7ce0":244,"0641e95fb51be651e487d2f25db5a3bcb6e6d6e6":1628,"0d6526f247d3539e72d4d46fe242a6028f0d6028":504,"22cc48abd11fd9ef6e1f434eb6d6b02c400fefde":668,"8845278d5d636f4315813c4033d8650ac02646c0":432,"4a987a1636f4722b77b80f726256a1e928aecb40":189,"f803a2170edf8a00f86238c264b05f120300c928":1146,"3902ac8b94c8ef70b4cec93410d6bdc9610ca92e":284,"e60298f316ab28400e16a8e775a2f8a7f3ab984c":594,"50e924967976e85c5462fcbc17523bd85b0ca122":161,"f3df090a3f69c3f6bd34d9327e978ad47b17c605":781,"c9f0ce868d51971d3ec8cc663486211d799fc345":930,"e7ef7d90c16d5fa05991fbd317fd2ce316f9f5c0":461,"81481b8cebf7639d447f8b3a9c81601c1636a5a2":311,"ad81c2b265c6f10fc207c9bcfa5852fc47e73fb4":315,"ddd4dc9e565b7f126e1eb499b2ef59cc1406c432":1098,"89a3bb190e68c6c4f826945648cade31513b323c":246,"2842c90d7b8dbf2365cf376e7c34d9e8062d6b32":189,"e8bd280e257c14a0fa3ff55efcecb3f1e2b8e098":89,"0e25ebf7e69d276ff4415d9789c8e9b0a4c53f73":355,"9648811a1af87014f2784f396c4a12a6102c20c1":758,"f5289928c9d7fb0db0da6c7aeb4dfd4aabbf9f2b":247,"6ce3ce18745a167c16bcbb33d47c04036279a291":54,"124446402e83b7f68231d1cbcd7f56277280e5e1":202,"7049748fc921dc1465d093822080fea8661e2624":56,"e02ab3f24617f75aa4445e57a284a12c4fad68d2":269,"9cdaababfdcb8ae72f0acab735812032a1ea75e4":36,"7baae12cbc7c57223e40beecc9c4d561cd9362c3":268,"f2198696106ac894c674b8ebda1467315a9facbe":461,"8cbb78a309f34cd61e1ea6e5766cdf6b28fe0d2a":864,"da45c4f6ab58e3fa31f91b7588379edda4e7b1dc":19,"5119e741c5a53cfde5f50ae696ac01846b2dd278":115,"7b7e3f755b4204d1b570f32acbce7563383953bd":249,"a25c487045b0819525c264949f277d0c87305eea":94,"aad59e14e46ea0f72026d530a145876dc55a4e1d":254,"5da04ef6735c502fccef2a463847c7e3c0f852c9":430,"465c2ccf7e8534e30b11c4681a27cd6f86a88beb":567,"41ce6f15e7f78a17900750b9d0757ccb842a385c":140,"5161e805f895f83f53c3b8e6d7e432d0d942a659":244,"aca6239b6fdb6cf9b54afe80e211d48924860e8a":3,"616ea2a24662d0871aa02bfa40cd2343f490a80c":78,"29969d3cc416a9803d4c4f7e1b4066eb3eabebb8":112,"392f33ff8b084230f9fc5b6d158630c46e5fa1ec":164,"ead707759613663556027382e85cbb3ca99212ed":92,"6dc5524a7db27da18ead48aea19d94859359cf65":134,"2a3a995419bcb221dfec8ceec8fe3c513b1bf867":344,"6cf46b9de2348ab5ee91f42bbd297ddc691ba0ce":15,"208f377d784328c0f14d9f08a8b56cc64e11b1b7":1,"a0c3decdf70f5d111a240855e5a0760777f327e0":37,"22adfd93c8df0e9f5f0fff52d83f61c00f926b85":73,"342bd567bb2f2cdb5fd820c9f05762051e3cdb00":579,"5547c42fa2ecb6ac1dbdcd9131c34a122a7d6771":678,"672a6df5833a421d535fb05d0a652921a56a309f":292,"4cfcff5ea3310eab11b7ea5ea924cc4cfbec3618":8,"60e7661f3719964e4e723c06c232194f10bb9f35":38,"5fa51cea14d6d34d8f723659d9a8d5ee3490c5d7":369,"2989b587d215dae5416eceeee4cedf9ab80d7089":275,"5e54f008fab146ab373e3f04cf9d7ed4b1bf4dc1":13,"a1bcfaf3262ffd2ca80b34b8358c37356a442e18":31,"4be9fb88fb4ba8087dff7d4ab58d678635bc5435":864,"37b81f2444e974d07c95a1ecdeb030e4d9378094":12,"cc357a90d04a40c0a0daa1105120341bc68bd902":686,"393d319ea6d871ecffb6f2badb65f65509d5b6b0":785,"a458f48ed269fc820d81339537aaef490bcb1897":2219,"dc2d79f63803d62e6ab9e0f89ac9673944aad845":5485},"excluded_import_commits":["0d4c9fbd465a6953c3e1afe5d21447389979de4d","20ec2dc673596ab02f654e1097ce4c93193fe379","3f0400c7ec97f56c169e23bf0743a2885012bea4","d197137ee4030dd5aa8f3b8340c804106d983502"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":139317.0,"index":0.093,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":1.0,"per_kloc:placeholder":0.007,"files:placeholder":1.0,"count:emoji_in_code":22.0,"per_kloc:emoji_in_code":0.158,"files:emoji_in_code":10.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[{"kind":"stylometry:placeholder","description":"placeholder or demo-only phrasing: /// popovers work exactly as in a real app).","ref":"crates/pebbles-testing/src/lib.rs:169","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-testing/src/lib.rs#L169","weight":0.0}],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":22.0,"findings_high":8.0,"findings_medium":0.0,"findings_low":14.0,"weighted_findings":9.5,"scanned_lines":139039.0,"parse_errors":2.0},"findings":[{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/desktop-run.py","line":89,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/desktop-run.py:89"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/desktop-run.py","line":362,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/desktop-run.py:362"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/desktop-run.py","line":418,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/desktop-run.py:418"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/desktop-run.py","line":427,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/desktop-run.py:427"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/desktop-run.py","line":527,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/desktop-run.py:527"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/run-for.py","line":21,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/run-for.py:21"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/bench-compare/run.py","line":60,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/bench-compare/run.py:60"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"tools/bench-compare/run.py","line":97,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:tools/bench-compare/run.py:97"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"crates/pebbles-cli/src/bundle.rs","line":416,"fingerprint":"rust.lang.security.temp-dir:crates/pebbles-cli/src/bundle.rs:416"},{"rule_id":"opengrep/rust.lang.security.args","severity":"low","message":"args should not be used for security operations. From the docs: \"The first element is traditionally the path of the executable, but it can be set to arbitrary text, and might not even exist. This means this property should not be relied upon for security purposes.\" [confidence high]","path":"crates/pebbles-cli/src/main.rs","line":72,"fingerprint":"rust.lang.security.args:crates/pebbles-cli/src/main.rs:72"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"crates/pebbles-cli/src/run.rs","line":189,"fingerprint":"rust.lang.security.temp-dir:crates/pebbles-cli/src/run.rs:189"},{"rule_id":"opengrep/rust.lang.security.current-exe","severity":"low","message":"current_exe should not be used for security operations. From the docs: \"The output of this function should not be trusted for anything that might have security implications. Basically, if users can run the executable, they can change the output arbitrarily.\" [confidence high]","path":"crates/pebbles-cli/src/soak.rs","line":575,"fingerprint":"rust.lang.security.current-exe:crates/pebbles-cli/src/soak.rs:575"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"crates/pebbles-cli/src/soak.rs","line":673,"fingerprint":"rust.lang.security.temp-dir:crates/pebbles-cli/src/soak.rs:673"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"crates/pebbles-gpu/src/test_alloc.rs","line":31,"fingerprint":"rust.lang.security.unsafe-usage:crates/pebbles-gpu/src/test_alloc.rs:31"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"crates/pebbles-gpu/src/test_alloc.rs","line":36,"fingerprint":"rust.lang.security.unsafe-usage:crates/pebbles-gpu/src/test_alloc.rs:36"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"crates/pebbles-gpu/src/test_alloc.rs","line":42,"fingerprint":"rust.lang.security.unsafe-usage:crates/pebbles-gpu/src/test_alloc.rs:42"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"crates/pebbles-gpu/src/test_alloc.rs","line":48,"fingerprint":"rust.lang.security.unsafe-usage:crates/pebbles-gpu/src/test_alloc.rs:48"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"crates/pebbles-render/src/text/fonts.rs","line":705,"fingerprint":"rust.lang.security.temp-dir:crates/pebbles-render/src/text/fonts.rs:705"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"crates/pebbles-shell/src/capture.rs","line":438,"fingerprint":"rust.lang.security.temp-dir:crates/pebbles-shell/src/capture.rs:438"},{"rule_id":"opengrep/rust.lang.security.unsafe-usage","severity":"low","message":"Detected 'unsafe' usage, please audit for secure usage [confidence high]","path":"crates/pebbles-shell/src/native_menu.rs","line":112,"fingerprint":"rust.lang.security.unsafe-usage:crates/pebbles-shell/src/native_menu.rs:112"},{"rule_id":"opengrep/rust.lang.security.args","severity":"low","message":"args should not be used for security operations. From the docs: \"The first element is traditionally the path of the executable, but it can be set to arbitrary text, and might not even exist. This means this property should not be relied upon for security purposes.\" [confidence high]","path":"tools/render-check/src/main.rs","line":235,"fingerprint":"rust.lang.security.args:tools/render-check/src/main.rs:235"},{"rule_id":"opengrep/rust.lang.security.temp-dir","severity":"low","message":"temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary directory must use a secure method to create a uniquely named file.  [confidence high]","path":"tools/render-check/src/png_io.rs","line":63,"fingerprint":"rust.lang.security.temp-dir:tools/render-check/src/png_io.rs:63"}],"evidence":[],"data":{"rulesets":["rust","python","javascript","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":8.0,"vulnerabilities":8.0,"vulns_critical":0.0,"vulns_high":0.0,"vulns_medium":2.0,"vulns_low":0.0,"vulns_unknown":6.0,"penalty":24.0},"findings":[{"rule_id":"osv/GHSA-wrw7-89jp-8q8g","severity":"medium","message":"glib@0.18.5 (crates.io) is affected by RUSTSEC-2024-0429, GHSA-wrw7-89jp-8q8g","path":"Cargo.lock","line":null,"fingerprint":"glib@0.18.5 (crates.io):GHSA-wrw7-89jp-8q8g"},{"rule_id":"osv/RUSTSEC-2026-0459","severity":"medium","message":"libsqlite3-sys@0.28.0 (crates.io) is affected by RUSTSEC-2026-0459","path":"Cargo.lock","line":null,"fingerprint":"libsqlite3-sys@0.28.0 (crates.io):RUSTSEC-2026-0459"},{"rule_id":"osv/RUSTSEC-2024-0370","severity":"medium","message":"proc-macro-error@1.0.4 (crates.io) is affected by RUSTSEC-2024-0370","path":"Cargo.lock","line":null,"fingerprint":"proc-macro-error@1.0.4 (crates.io):RUSTSEC-2024-0370"},{"rule_id":"osv/RUSTSEC-2026-0486","severity":"medium","message":"rustix@1.1.4 (crates.io) is affected by RUSTSEC-2026-0486","path":"Cargo.lock","line":null,"fingerprint":"rustix@1.1.4 (crates.io):RUSTSEC-2026-0486"},{"rule_id":"osv/RUSTSEC-2026-0192","severity":"medium","message":"ttf-parser@0.25.1 (crates.io) is affected by RUSTSEC-2026-0192; also in fuzz/Cargo.lock","path":"Cargo.lock","line":null,"fingerprint":"ttf-parser@0.25.1 (crates.io):RUSTSEC-2026-0192"},{"rule_id":"osv/RUSTSEC-2026-0371","severity":"medium","message":"zbus_names@4.3.4 (crates.io) is affected by RUSTSEC-2026-0371","path":"Cargo.lock","line":null,"fingerprint":"zbus_names@4.3.4 (crates.io):RUSTSEC-2026-0371"},{"rule_id":"osv/RUSTSEC-2026-0370","severity":"medium","message":"zvariant@5.15.0 (crates.io) is affected by RUSTSEC-2026-0370","path":"Cargo.lock","line":null,"fingerprint":"zvariant@5.15.0 (crates.io):RUSTSEC-2026-0370"},{"rule_id":"osv/RUSTSEC-2026-0372","severity":"medium","message":"zvariant_derive@5.15.0 (crates.io) is affected by RUSTSEC-2026-0372","path":"Cargo.lock","line":null,"fingerprint":"zvariant_derive@5.15.0 (crates.io):RUSTSEC-2026-0372"}],"evidence":[],"data":{"ecosystems":["crates.io"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":6.0,"findings":30.0,"findings_high":0.0,"findings_medium":30.0,"findings_low":0.0,"penalty":41.6},"findings":[{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":5,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:5"},{"rule_id":"zizmor/dependabot-cooldown","severity":"medium","message":"insufficient cooldown in Dependabot updates [confidence high]","path":".github/dependabot.yml","line":22,"fingerprint":"dependabot-cooldown:.github/dependabot.yml:22"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/bench.yml","line":60,"fingerprint":"artipacked:.github/workflows/bench.yml:60"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/bench.yml","line":144,"fingerprint":"artipacked:.github/workflows/bench.yml:144"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":43,"fingerprint":"artipacked:.github/workflows/ci.yml:43"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":62,"fingerprint":"artipacked:.github/workflows/ci.yml:62"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":108,"fingerprint":"artipacked:.github/workflows/ci.yml:108"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":164,"fingerprint":"artipacked:.github/workflows/ci.yml:164"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":183,"fingerprint":"artipacked:.github/workflows/ci.yml:183"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":200,"fingerprint":"artipacked:.github/workflows/ci.yml:200"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":237,"fingerprint":"artipacked:.github/workflows/ci.yml:237"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":278,"fingerprint":"artipacked:.github/workflows/ci.yml:278"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":315,"fingerprint":"artipacked:.github/workflows/ci.yml:315"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":353,"fingerprint":"artipacked:.github/workflows/ci.yml:353"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":376,"fingerprint":"artipacked:.github/workflows/ci.yml:376"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":412,"fingerprint":"artipacked:.github/workflows/ci.yml:412"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":432,"fingerprint":"artipacked:.github/workflows/ci.yml:432"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":493,"fingerprint":"artipacked:.github/workflows/ci.yml:493"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":540,"fingerprint":"artipacked:.github/workflows/ci.yml:540"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":554,"fingerprint":"artipacked:.github/workflows/ci.yml:554"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":564,"fingerprint":"artipacked:.github/workflows/ci.yml:564"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/ci.yml","line":577,"fingerprint":"artipacked:.github/workflows/ci.yml:577"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/desktop-runs.yml","line":46,"fingerprint":"artipacked:.github/workflows/desktop-runs.yml:46"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/desktop-runs.yml","line":138,"fingerprint":"artipacked:.github/workflows/desktop-runs.yml:138"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/licenses.yml","line":20,"fingerprint":"artipacked:.github/workflows/licenses.yml:20"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":34,"fingerprint":"artipacked:.github/workflows/security.yml:34"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":57,"fingerprint":"artipacked:.github/workflows/security.yml:57"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":80,"fingerprint":"artipacked:.github/workflows/security.yml:80"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":134,"fingerprint":"artipacked:.github/workflows/security.yml:134"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/security.yml","line":165,"fingerprint":"artipacked:.github/workflows/security.yml:165"}],"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":0.0,"check:lockfiles":0.0,"signed_commit_share":0.0,"unpinned_manifests":15.0},"findings":[],"evidence":[{"kind":"posture","description":"Security policy: SECURITY.md","ref":"SECURITY.md","url":null,"weight":0.0},{"kind":"posture","description":"Dependency updates: .github/dependabot.yml","ref":".github/dependabot.yml","url":null,"weight":0.0},{"kind":"posture","description":"crates/pebbles-cli/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-cli/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-core/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-core/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-foundation/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-foundation/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-gpu/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-gpu/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-icons/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-icons/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-macros/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-macros/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-render/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-render/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-shell/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-shell/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-testing/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-testing/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles-widgets/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles-widgets/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"crates/pebbles/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"crates/pebbles/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"tools/bench-compare/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"tools/bench-compare/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"tools/bench-compare/iced/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"tools/bench-compare/iced/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"tools/render-check/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"tools/render-check/Cargo.toml","url":null,"weight":0.3},{"kind":"posture","description":"tools/repo-guard/Cargo.toml has no lockfile alongside it (unpinned dependencies)","ref":"tools/repo-guard/Cargo.toml","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":7343.0,"function_nloc":91609.0,"mean_ccn":2.46,"p90_ccn":5.0,"complex_functions":111.0,"long_functions":66.0,"many_param_functions":27.0,"risky_nloc_share":0.1694},"findings":[],"evidence":[{"kind":"complex-function","description":"main in scripts/desktop-run.py: complexity 229, 354 lines","ref":"scripts/desktop-run.py","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/scripts/desktop-run.py#L712","weight":1.0},{"kind":"complex-function","description":"emit in crates/pebbles-gpu/src/prepare/mod.rs: complexity 175, 542 lines","ref":"crates/pebbles-gpu/src/prepare/mod.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-gpu/src/prepare/mod.rs#L1111","weight":1.0},{"kind":"complex-function","description":"window_event in crates/pebbles-shell/src/app/runner/mod.rs: complexity 101, 356 lines","ref":"crates/pebbles-shell/src/app/runner/mod.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-shell/src/app/runner/mod.rs#L1151","weight":1.0},{"kind":"complex-function","description":"render_scene in crates/pebbles-gpu/src/renderer.rs: complexity 81, 464 lines","ref":"crates/pebbles-gpu/src/renderer.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-gpu/src/renderer.rs#L517","weight":1.0},{"kind":"complex-function","description":"fixture in crates/pebbles-gpu/src/prepare/coverage_tests.rs: complexity 71, 229 lines","ref":"crates/pebbles-gpu/src/prepare/coverage_tests.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-gpu/src/prepare/coverage_tests.rs#L77","weight":1.0},{"kind":"complex-function","description":"render_node in crates/pebbles-widgets/src/components/display/file_explorer/node.rs: complexity 66, 252 lines","ref":"crates/pebbles-widgets/src/components/display/file_explorer/node.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-widgets/src/components/display/file_explorer/node.rs#L20","weight":1.0},{"kind":"complex-function","description":"render_field in crates/pebbles-widgets/src/components/input/text_field.rs: complexity 59, 281 lines","ref":"crates/pebbles-widgets/src/components/input/text_field.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-widgets/src/components/input/text_field.rs#L787","weight":0.9833333333333333},{"kind":"complex-function","description":"secondary_event in crates/pebbles-shell/src/app/runner/windows.rs: complexity 56, 184 lines","ref":"crates/pebbles-shell/src/app/runner/windows.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-shell/src/app/runner/windows.rs#L233","weight":0.9333333333333333},{"kind":"complex-function","description":"op in tools/render-check/src/golden/mod.rs: complexity 56, 276 lines","ref":"tools/render-check/src/golden/mod.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/tools/render-check/src/golden/mod.rs#L302","weight":0.9333333333333333},{"kind":"complex-function","description":"render_button in crates/pebbles-widgets/src/components/input/button.rs: complexity 54, 182 lines","ref":"crates/pebbles-widgets/src/components/input/button.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-widgets/src/components/input/button.rs#L345","weight":0.9}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":103638.0,"duplicated_lines":4074.0,"duplicated_share":0.0393,"files":583.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-cli/src/build.rs:68 and crates/pebbles-cli/src/bundle.rs:256","ref":"crates/pebbles-cli/src/build.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-cli/src/build.rs#L68","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-cli/src/build.rs:126 and crates/pebbles-cli/src/run.rs:287","ref":"crates/pebbles-cli/src/build.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-cli/src/build.rs#L126","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-cli/src/soak.rs:129 and crates/pebbles-widgets/src/components/display/file_explorer/tree.rs:501","ref":"crates/pebbles-cli/src/soak.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-cli/src/soak.rs#L129","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/element/build.rs:150 and crates/pebbles-core/src/element/build.rs:264","ref":"crates/pebbles-core/src/element/build.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/element/build.rs#L150","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/element/build.rs:416 and crates/pebbles-widgets/src/widgets/interaction/pointer_control.rs:57","ref":"crates/pebbles-core/src/element/build.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/element/build.rs#L416","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/element/dispatch.rs:62 and crates/pebbles-core/src/element/dispatch.rs:239","ref":"crates/pebbles-core/src/element/dispatch.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/element/dispatch.rs#L62","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/reactive/bench.rs:89 and crates/pebbles-core/src/reactive/bench.rs:115","ref":"crates/pebbles-core/src/reactive/bench.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/reactive/bench.rs#L89","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/task.rs:131 and crates/pebbles-core/src/task.rs:243","ref":"crates/pebbles-core/src/task.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/task.rs#L131","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-core/src/widget.rs:153 and crates/pebbles-core/src/widget.rs:177","ref":"crates/pebbles-core/src/widget.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-core/src/widget.rs#L153","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: crates/pebbles-foundation/src/layout.rs:23 and crates/pebbles-foundation/src/layout.rs:64","ref":"crates/pebbles-foundation/src/layout.rs","url":"https://github.com/pebbles-hq/pebbles/blob/cf775b95efc2e3538b02ea6802e228771491da86/crates/pebbles-foundation/src/layout.rs#L23","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":28.0,"weighted_findings":63.5,"scanned_lines":139039.0,"category:best-practice":22.0,"category:correctness":6.0},"findings":[{"rule_id":"opengrep/python.lang.best-practice.open-never-closed","severity":"high","message":"file object opened without corresponding close","path":"scripts/desktop-run.py","line":85,"fingerprint":"python.lang.best-practice.open-never-closed:scripts/desktop-run.py:85"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":120,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:120"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":141,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:141"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":419,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:419"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":504,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:504"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":764,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:764"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":773,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:773"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":784,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:784"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":788,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:788"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":793,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:793"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":797,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:797"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":810,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:810"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":813,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:813"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":816,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:816"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":821,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:821"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"scripts/desktop-run.py","line":831,"fingerprint":"python.lang.best-practice.arbitrary-sleep:scripts/desktop-run.py:831"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/bench-compare/run.py","line":66,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/bench-compare/run.py:66"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/bench-compare/run.py","line":69,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/bench-compare/run.py:69"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/bench-compare/run.py","line":78,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/bench-compare/run.py:78"},{"rule_id":"opengrep/python.lang.best-practice.arbitrary-sleep","severity":"high","message":"time.sleep() call; did you mean to leave this in?","path":"tools/bench-compare/run.py","line":105,"fingerprint":"python.lang.best-practice.arbitrary-sleep:tools/bench-compare/run.py:105"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"tools/bench-compare/run.py","line":44,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/bench-compare/run.py:44"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"tools/bench-compare/run.py","line":50,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:tools/bench-compare/run.py:50"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"scripts/gen-tabler.mjs","line":78,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:scripts/gen-tabler.mjs:78"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"scripts/gen-tabler.mjs","line":78,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:scripts/gen-tabler.mjs:78"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"scripts/gen-tabler.mjs","line":82,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:scripts/gen-tabler.mjs:82"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"scripts/gen-tabler.mjs","line":94,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:scripts/gen-tabler.mjs:94"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"scripts/gen-tabler.mjs","line":112,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:scripts/gen-tabler.mjs:112"},{"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":"scripts/wasm-size.sh","line":24,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:scripts/wasm-size.sh:24"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.3794,"check:ci_present":1.0,"check:ci_runs_tests":1.0,"check:ci_runs_lint":1.0,"check:tests_cochange":1.0,"test_lines":26430.0,"source_lines":139317.0,"test_ratio":0.1897,"ci_files":6.0,"cochange_share":0.5175,"cochange_commits":257.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/bench.yml","ref":".github/workflows/bench.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/ci.yml","ref":".github/workflows/ci.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/desktop-runs.yml","ref":".github/workflows/desktop-runs.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/licenses.yml","ref":".github/workflows/licenses.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/scorecard.yml","ref":".github/workflows/scorecard.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI config: .github/workflows/security.yml","ref":".github/workflows/security.yml","url":null,"weight":0.0},{"kind":"ci","description":"CI runs tests (go test, cargo test)","ref":null,"url":null,"weight":0.0},{"kind":"ci","description":"CI runs linters (clippy, rustfmt, cargo fmt)","ref":null,"url":null,"weight":0.0}],"data":{"test_commands":["go test","cargo test"],"lint_commands":["clippy","rustfmt","cargo fmt"]},"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":375.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0},{"kind":"docs","description":"CONTRIBUTING.md","ref":"CONTRIBUTING.md","url":null,"weight":0.0},{"kind":"docs","description":"CHANGELOG.md","ref":"CHANGELOG.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.0,"check:low_escape_density":1.0,"escapes":1.0,"escapes_per_kloc":0.562},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":82760.0,"other_lines":56557.0,"files_blamed":583.0,"blame_failures":0.0,"quality:ai_findings":23.0,"quality:ai_per_kloc":0.278,"quality:other_findings":5.0,"quality:other_per_kloc":0.088,"quality:ratio":3.16,"security:ai_findings":19.0,"security:ai_per_kloc":0.23,"security:other_findings":3.0,"security:other_per_kloc":0.053,"security:ratio":4.34},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":[]}