{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-5+qual-2+sec-2","generated_at":"2026-11-14T14:52:05.708592Z","repo":{"ref":{"host":"github.com","owner":"justinchuby","name":"contact-number-tutorial"},"default_branch":"main","clone_url":"https://github.com/justinchuby/contact-number-tutorial.git","html_url":"https://github.com/justinchuby/contact-number-tutorial","description":null,"stars":1,"forks":0,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":1893,"primary_language":"TypeScript","license_spdx":null,"created_at":"2026-02-15T03:55:29Z","pushed_at":"2026-04-26T16:31:25Z","security_policy_url":null,"distribution":{"owner_created_at":"2015-02-26T03:04:24Z","owner_type":"User","release_assets":[]}},"commit_sha":"2dad0957cb6f609f3ceb62e5356598f737512db1","profile":{"lines_by_language":{"TypeScript":10271,"Python":266,"JavaScript":23},"files_by_category":{"source":43,"config":9,"other":6,"binary":3,"docs":2,"generated":1,"oversized":1},"source_lines":10560,"test_lines":0},"pillars":{"ai_provenance":{"score":85.6,"confidence":0.95,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.8556,"suspected_share":0.0,"estimated_share":0.8556,"ai_artifacts":0.0,"flagged_work_units":1.0,"flagged_releases":null,"style_index":1.515},"summary":"Explicit AI attribution on 86% of first-party code added; an estimated 86% including velocity signals."},"quality":{"score":44.4,"confidence":0.9,"coverage":1.0,"label":"poor","breakdown":{"complexity":18.7,"duplication":59.7,"lint":97.7,"testing":15.0,"docs":40.0,"type_safety":98.5,"process":null},"summary":"Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 56% of function code in complex or long functions; 9% duplicated lines. Weakest area: testing."},"security":{"score":55.9,"confidence":0.85,"coverage":1.0,"label":"weak","breakdown":{"secrets":100.0,"sast":100.0,"dependencies":8.5,"ci_actions":24.2,"posture":0.0,"scorecard":null},"summary":"Security posture is weak: 71 known vulnerabilities in 23 dependencies; 7 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":25.0,"checked":25.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":124.0,"attributed_commits":121.0,"attributed_commit_share":0.9758064516129032,"effective_loc":14563.0,"attributed_loc":12460.0,"attributed_loc_share":0.8555929410149008,"tools_detected":1.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"GitHub Copilot coding agent: 121 attributed commits, 12,460 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"87c2ae476ada6cf7b98e85864d0093a3ba9f4f55","url":"https://github.com/justinchuby/contact-number-tutorial/commit/87c2ae476ada6cf7b98e85864d0093a3ba9f4f55","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"5a8f019bf8d4d3782a14cae40c002cc073caeca4","url":"https://github.com/justinchuby/contact-number-tutorial/commit/5a8f019bf8d4d3782a14cae40c002cc073caeca4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"a5dd57c4614b0b452c278c339615db73d4afe7ee","url":"https://github.com/justinchuby/contact-number-tutorial/commit/a5dd57c4614b0b452c278c339615db73d4afe7ee","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"b834684aea4668d0c9f2af9a7c915247a106ce49","url":"https://github.com/justinchuby/contact-number-tutorial/commit/b834684aea4668d0c9f2af9a7c915247a106ce49","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"84a30aad82b3946991d558abd0df0a9bf77d0226","url":"https://github.com/justinchuby/contact-number-tutorial/commit/84a30aad82b3946991d558abd0df0a9bf77d0226","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"0ec0c0222a87c0980fff356718dfea9794fe4b16","url":"https://github.com/justinchuby/contact-number-tutorial/commit/0ec0c0222a87c0980fff356718dfea9794fe4b16","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"96431543e8fb16f71f7643ab797ca972702a5173","url":"https://github.com/justinchuby/contact-number-tutorial/commit/96431543e8fb16f71f7643ab797ca972702a5173","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"ede4068e0e4ac46a2df9a78dcc4e34c8333a62c4","url":"https://github.com/justinchuby/contact-number-tutorial/commit/ede4068e0e4ac46a2df9a78dcc4e34c8333a62c4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"4d605c8bd425fcda67c9d64db258367e0ae28271","url":"https://github.com/justinchuby/contact-number-tutorial/commit/4d605c8bd425fcda67c9d64db258367e0ae28271","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"a7d686ba9fa78b3e373ec0d2661aca7f73d5f099","url":"https://github.com/justinchuby/contact-number-tutorial/commit/a7d686ba9fa78b3e373ec0d2661aca7f73d5f099","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"114e6f0218b7c66f15231e714f553a08cdef1acc","url":"https://github.com/justinchuby/contact-number-tutorial/commit/114e6f0218b7c66f15231e714f553a08cdef1acc","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"fb0c2d57ef8c9f5318ad4dfdda61b77a95661fed","url":"https://github.com/justinchuby/contact-number-tutorial/commit/fb0c2d57ef8c9f5318ad4dfdda61b77a95661fed","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"ecf719d126b1a644dc32254f139b00c87d427b20","url":"https://github.com/justinchuby/contact-number-tutorial/commit/ecf719d126b1a644dc32254f139b00c87d427b20","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"59ec7e59c41fce10dc4b42e0cac7c839f72e0f73","url":"https://github.com/justinchuby/contact-number-tutorial/commit/59ec7e59c41fce10dc4b42e0cac7c839f72e0f73","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"b89ccab1ee6fdba1dd4ee0dc5187367653978a2b","url":"https://github.com/justinchuby/contact-number-tutorial/commit/b89ccab1ee6fdba1dd4ee0dc5187367653978a2b","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"4e67de0ea11207ae4f1f950cc6c52fda9d3e5648","url":"https://github.com/justinchuby/contact-number-tutorial/commit/4e67de0ea11207ae4f1f950cc6c52fda9d3e5648","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"82c524923f5d94b63234b4a93d95422c2cc4244c","url":"https://github.com/justinchuby/contact-number-tutorial/commit/82c524923f5d94b63234b4a93d95422c2cc4244c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"9ea53cade9aa891c9bbf99a62597e9eb2047482c","url":"https://github.com/justinchuby/contact-number-tutorial/commit/9ea53cade9aa891c9bbf99a62597e9eb2047482c","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"737393650f0021ae21f2974dd95810719092c7f4","url":"https://github.com/justinchuby/contact-number-tutorial/commit/737393650f0021ae21f2974dd95810719092c7f4","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"d8eb4ee044b37a1d21d5bd3fbe53901acc978a04","url":"https://github.com/justinchuby/contact-number-tutorial/commit/d8eb4ee044b37a1d21d5bd3fbe53901acc978a04","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"66f88a2c9a5d872f02b5d1c4c3b1166b8daadee2","url":"https://github.com/justinchuby/contact-number-tutorial/commit/66f88a2c9a5d872f02b5d1c4c3b1166b8daadee2","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"d4bab24d99ea2ffefbad95cf36413cae1dac624a","url":"https://github.com/justinchuby/contact-number-tutorial/commit/d4bab24d99ea2ffefbad95cf36413cae1dac624a","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"94dd732316b8e7fe72844950ff12b90e1ed6dc06","url":"https://github.com/justinchuby/contact-number-tutorial/commit/94dd732316b8e7fe72844950ff12b90e1ed6dc06","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"86e880485b3914e7bd6669fee1d784d6b72a5cb5","url":"https://github.com/justinchuby/contact-number-tutorial/commit/86e880485b3914e7bd6669fee1d784d6b72a5cb5","weight":0.9},{"kind":"attributed-commit","description":"GitHub Copilot coding agent: trailer 'Co-authored-by: Copilot'","ref":"3e9d09ee2efd483cb7748d5c0dc8bb7d6a74ee09","url":"https://github.com/justinchuby/contact-number-tutorial/commit/3e9d09ee2efd483cb7748d5c0dc8bb7d6a74ee09","weight":0.9}],"data":{"attributed_loc_by_commit":{"1a3a1ca495ce0129901499c65fbe4458eeb0b4fe":548,"491894a7c20f140f4d27d0395b81b26282ed1672":195,"2c8629d85bc40d1ee3235568ce8db529e837461d":259,"81202dbc57b80a5f5df3a2ef4f782fdbf4364dff":270,"d6b6760e09800887943c173128f3d02484bf9452":423,"a6fdd48ebb3050c657a1796069fb79be6a90632d":163,"d52ee63733a747154f4dc63210c1954d4577aec8":1661,"a5f26b27d20cc17338e98cda0855541f3b5fbe7d":381,"ae154f0daff51cabf049a3ea6982347c50788af9":205,"44ef87185144ff0ee8d4028012f8babb42b57a84":57,"040b7d00ee0ca0919fd9fe3417bc961b4ab19e29":0,"bdc9d20df230e981bf29d4f32f19cb1fcc11f60d":0,"dfbe1c95ba6a396ae519673eaed5fc5b2b6a58b1":49,"22e702a342c96a731cfe317c2fc3d723ce4edaba":4,"9aa95470d39f17bccadcde319760734f488e762a":966,"634edcef7af2179a014ea80f71e030811ddb81da":364,"962155ebdb63f7248b0bf7c16057e396479231cd":111,"f4a9fe0507209486ffdb5be1fda93e754b4e5b81":224,"ce2d0d5eb4ac6b6072dd85c94bcb69789bcba175":280,"fe9c73530497436e0563dea916dc03cece31543c":164,"c231487938da7d6fddbf9213bd65124df2c3a4f2":89,"baafeb0097345e519c595e3b04b5f8b77cf5c82a":252,"3bf1bb4b7f9521004d6f09d058b76db3d566557f":28,"5970b30da735172cd89cac0e27059c1a6289d67f":69,"1c367e81573008bf8bfa53c0d5f5de2c6c25e632":140,"9bf148f95a64d54bc77d802a9d5418cfc4682c87":187,"9209b0cfd759c2cf7a745b339b16b66698c2a60e":12,"f7f1de7dff2177feabaf6a0109f8fe7976508a41":443,"ee4551591feed1d50bf6de2c1fcb65d93916c490":266,"3f477bd2e1deed0c5ad657660d7a4a0ef25a849b":128,"b25a86a652e2e320da6472cdf4635685fe9fd78a":1,"45aff39ef328b5a0eddc4bc3e6a7e40bed18a284":1,"6cd2dc3cba6e14ac8cd50ce6898265a7d373a5b1":1,"685941fc7f13d80f9889316c9348e81ccaaf78cc":0,"16c1679c9c3c2b25542773971a3e3e1a840053a2":4,"e86ac94c691829830127ce7d05a5ec9380c29a2b":267,"96f6d6c2608c85fce5f7a6c92230b00db1b5e791":4,"94e4249d80553d4eb2251752bb85612fb9608a56":0,"f87efedf4bc22c5b16c4655080d8105ec03724c1":5,"275e97f78de89d668e7759c38e63c2247bf345d3":35,"b8f32e6986077b528bf7ea3bad1cd4570aaa5142":282,"bbcab51758c24186d6993ad57b9cfa9d3a57bd21":387,"4a4d05198f84399444b47a2a335c4cfe437851e8":87,"71408dbdc4288fca22237d7cd0f873a277bb8a54":34,"e77014c67858d7a82f250308ce8a4d20d3511461":47,"f0083e02b37d6502fe659e200beedfe05e30246c":102,"1d7e700896281a8358b3eb5117a90091d23d0b6d":32,"5f67269d2f8b011b25c9f1d199e081803518ac81":81,"1b052f1239f6bdcd6f1071a43dc4c8539a0ca684":102,"f9c7cb9073edfced93d8a263b28bdae9174a61b3":6,"cc90d4dbbea1a5a3d25e3051b825aa2d664323a6":45,"f171a51c9cd3233e97fd880044b80b43c69d734a":88,"e0281f6563171f668a08b7632f953348cd608aca":5,"4c46b2f8b31e752ea7fc2f411565b68820a71503":3,"688995fdee09ef501fd52acbb12e524e72e2dcc2":347,"0f89bd1ff7f32429d62960968d15a121a227a910":2,"235b8e60331bb613e47dba8126d85c5c4857b99c":25,"81356c9868ed790c17bfe6565059f3d5be983920":8,"95659899ca6f5e5549ac5e2b5db903748e2e30e7":14,"3dc7880b9217d4fdd125f1416e27b9d33615cc51":23,"10669781b9621c14423a89b27fdfd3adffffda90":17,"068b751a6586fdaa4c22a61203048d914fe28c5a":75,"561189e65a26ade28b6bb83429f9d9cef217085c":269,"d17a641b9aed1586a08f6381ea192480b6410107":103,"2d83a52b5708f7f23e92350e405712d059020a25":9,"ed8095b9a1fd162e36243fccd53942275e3b96f9":74,"c3e7705962e05b4c731d69ebdc3fd7651f32228b":2,"4b3aea29cddff142de4cc6913375863cec93fcc0":26,"542c80fbdedd3eb9b00b5d9184f444c78f9a5403":12,"a28012f30a22739634312346fd0f47f4badff546":1,"5b1388b84dc084061271c12267bd41288b07731a":24,"ae533b1585055df2a43423dedcd23089d17ff43f":66,"15cd06b24279fef487fadec8635556f30a68a6a1":77,"f0016a501fae9f72bc307fed7ee2463fa4b3c1d2":1,"5f7037485e5e80863c1f3defa977fe8368ecb411":3,"7d165f68bb0df8a66b957df8488fd390eb2b032a":0,"2077d6fddd8fbe66ac42d4dcaa6795e7c4ee2406":2,"c723e114e7320ec0e4aa30ddd4033919ee5a4252":194,"5925516fee4ca79889558a0d7a09828643653c13":7,"b01e16b1afc393229ae26bf7dde0d921c7c3521e":11,"c5364ab7af4a6c52fd5889c2f76e858ef0468bdf":11,"ba4abc984641bdc7d181f07145f227dc857c320d":0,"b78e3ef2e7300d70c518c3891e2fd1dd582eaf02":12,"c70fdc13b0779c9ce8d40f1b69834f8a55efe26b":0,"df55f0625fe9ae36cdb146d027593b71abdc28fe":0,"c80a96c600514c4c64269234bc6e6076defa91b3":0,"21cece3d583c35f81933d6beaefa675cb2bbcf65":0,"5ea5704ec247e7042164361f34bd5b697c5feada":11,"eb3d1db7a68eb9750429c030dc5ec8eff3360352":11,"ac442e701c273cb69659c17f90f866c757de109d":2,"b4e06fa54660d91b226d600a190a657ad3235e11":122,"fae4339b2150fd187f8b632460b92c6de9368317":1,"0726ef459b74e3a6dd315c527339f7e80b09ca53":206,"3b49567a4dcb43e0a52bba254c2d445d135b1c64":210,"2331d67a6bfa99ae781c8540a92cd28b30915a43":7,"4cb7e3b2c98ada48301e94318670f99ac2087e5b":2,"3e9d09ee2efd483cb7748d5c0dc8bb7d6a74ee09":32,"86e880485b3914e7bd6669fee1d784d6b72a5cb5":46,"94dd732316b8e7fe72844950ff12b90e1ed6dc06":11,"d4bab24d99ea2ffefbad95cf36413cae1dac624a":56,"66f88a2c9a5d872f02b5d1c4c3b1166b8daadee2":152,"d8eb4ee044b37a1d21d5bd3fbe53901acc978a04":19,"737393650f0021ae21f2974dd95810719092c7f4":17,"9ea53cade9aa891c9bbf99a62597e9eb2047482c":1,"82c524923f5d94b63234b4a93d95422c2cc4244c":30,"4e67de0ea11207ae4f1f950cc6c52fda9d3e5648":15,"b89ccab1ee6fdba1dd4ee0dc5187367653978a2b":1,"59ec7e59c41fce10dc4b42e0cac7c839f72e0f73":242,"ecf719d126b1a644dc32254f139b00c87d427b20":65,"fb0c2d57ef8c9f5318ad4dfdda61b77a95661fed":79,"114e6f0218b7c66f15231e714f553a08cdef1acc":90,"a7d686ba9fa78b3e373ec0d2661aca7f73d5f099":49,"4d605c8bd425fcda67c9d64db258367e0ae28271":0,"ede4068e0e4ac46a2df9a78dcc4e34c8333a62c4":2,"96431543e8fb16f71f7643ab797ca972702a5173":0,"0ec0c0222a87c0980fff356718dfea9794fe4b16":4,"84a30aad82b3946991d558abd0df0a9bf77d0226":2,"b834684aea4668d0c9f2af9a7c915247a106ce49":0,"a5dd57c4614b0b452c278c339615db73d4afe7ee":1,"5a8f019bf8d4d3782a14cae40c002cc073caeca4":1,"87c2ae476ada6cf7b98e85864d0093a3ba9f4f55":1},"tools":{"github-copilot":{"name":"GitHub Copilot coding agent","commits":121,"loc":12460,"first_seen":1771126640,"last_seen":1771348959}},"monthly":{"2026-02":{"loc":12460,"attributed_loc":12460},"2026-04":{"loc":2103,"attributed_loc":0}}},"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":21.0,"flagged_units":1.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":14563.0,"flagged_loc":9557.0,"flagged_loc_share":0.6562521458490695,"max_loc_per_hour":1305.0068274920345,"median_loc_per_hour":244.0,"pr_timed_units":10.0,"excluded_import_loc":0.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"9,557 lines of first-party code in ~7.3h (1,305 lines/hour, 50 commit session)","ref":"4c46b2f8b31e752ea7fc2f411565b68820a71503","url":"https://github.com/justinchuby/contact-number-tutorial/commit/4c46b2f8b31e752ea7fc2f411565b68820a71503","weight":0.39150204824761037}],"data":{"flagged_loc_by_commit":{"1a3a1ca495ce0129901499c65fbe4458eeb0b4fe":548,"491894a7c20f140f4d27d0395b81b26282ed1672":195,"2c8629d85bc40d1ee3235568ce8db529e837461d":259,"81202dbc57b80a5f5df3a2ef4f782fdbf4364dff":270,"d6b6760e09800887943c173128f3d02484bf9452":423,"a6fdd48ebb3050c657a1796069fb79be6a90632d":163,"d52ee63733a747154f4dc63210c1954d4577aec8":1661,"a5f26b27d20cc17338e98cda0855541f3b5fbe7d":381,"ae154f0daff51cabf049a3ea6982347c50788af9":205,"44ef87185144ff0ee8d4028012f8babb42b57a84":57,"dfbe1c95ba6a396ae519673eaed5fc5b2b6a58b1":49,"22e702a342c96a731cfe317c2fc3d723ce4edaba":4,"9aa95470d39f17bccadcde319760734f488e762a":966,"634edcef7af2179a014ea80f71e030811ddb81da":364,"962155ebdb63f7248b0bf7c16057e396479231cd":111,"f4a9fe0507209486ffdb5be1fda93e754b4e5b81":224,"ce2d0d5eb4ac6b6072dd85c94bcb69789bcba175":280,"fe9c73530497436e0563dea916dc03cece31543c":164,"c231487938da7d6fddbf9213bd65124df2c3a4f2":89,"baafeb0097345e519c595e3b04b5f8b77cf5c82a":252,"3bf1bb4b7f9521004d6f09d058b76db3d566557f":28,"5970b30da735172cd89cac0e27059c1a6289d67f":69,"1c367e81573008bf8bfa53c0d5f5de2c6c25e632":140,"9bf148f95a64d54bc77d802a9d5418cfc4682c87":187,"9209b0cfd759c2cf7a745b339b16b66698c2a60e":12,"f7f1de7dff2177feabaf6a0109f8fe7976508a41":443,"ee4551591feed1d50bf6de2c1fcb65d93916c490":266,"3f477bd2e1deed0c5ad657660d7a4a0ef25a849b":128,"b25a86a652e2e320da6472cdf4635685fe9fd78a":1,"45aff39ef328b5a0eddc4bc3e6a7e40bed18a284":1,"6cd2dc3cba6e14ac8cd50ce6898265a7d373a5b1":1,"16c1679c9c3c2b25542773971a3e3e1a840053a2":4,"e86ac94c691829830127ce7d05a5ec9380c29a2b":267,"96f6d6c2608c85fce5f7a6c92230b00db1b5e791":4,"f87efedf4bc22c5b16c4655080d8105ec03724c1":5,"275e97f78de89d668e7759c38e63c2247bf345d3":35,"b8f32e6986077b528bf7ea3bad1cd4570aaa5142":282,"bbcab51758c24186d6993ad57b9cfa9d3a57bd21":387,"4a4d05198f84399444b47a2a335c4cfe437851e8":87,"71408dbdc4288fca22237d7cd0f873a277bb8a54":34,"e77014c67858d7a82f250308ce8a4d20d3511461":47,"f0083e02b37d6502fe659e200beedfe05e30246c":102,"1d7e700896281a8358b3eb5117a90091d23d0b6d":32,"5f67269d2f8b011b25c9f1d199e081803518ac81":81,"1b052f1239f6bdcd6f1071a43dc4c8539a0ca684":102,"f9c7cb9073edfced93d8a263b28bdae9174a61b3":6,"cc90d4dbbea1a5a3d25e3051b825aa2d664323a6":45,"f171a51c9cd3233e97fd880044b80b43c69d734a":88,"e0281f6563171f668a08b7632f953348cd608aca":5,"4c46b2f8b31e752ea7fc2f411565b68820a71503":3},"excluded_import_commits":[]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":10560.0,"index":1.515,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":32.0,"per_kloc:emoji_in_code":3.03,"files:emoji_in_code":11.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":0.0,"findings_high":0.0,"findings_medium":0.0,"findings_low":0.0,"weighted_findings":0.0,"scanned_lines":10560.0,"parse_errors":0.0},"findings":[],"evidence":[],"data":{"rulesets":["typescript","javascript","python"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":23.0,"vulnerabilities":71.0,"vulns_critical":0.0,"vulns_high":43.0,"vulns_medium":23.0,"vulns_low":5.0,"vulns_unknown":0.0,"penalty":148.0},"findings":[{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-3jxr-9vmj-r5cp","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-3jxr-9vmj-r5cp","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-3jxr-9vmj-r5cp"},{"rule_id":"osv/GHSA-6j4f-fj2g-mc7p","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-6j4f-fj2g-mc7p","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-6j4f-fj2g-mc7p"},{"rule_id":"osv/GHSA-mh99-v99m-4gvg","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-mh99-v99m-4gvg","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-mh99-v99m-4gvg"},{"rule_id":"osv/GHSA-qhr7-859c-m2p7","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-qhr7-859c-m2p7","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-qhr7-859c-m2p7"},{"rule_id":"osv/GHSA-rgw5-rvv9-x895","severity":"high","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-rgw5-rvv9-x895","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-rgw5-rvv9-x895"},{"rule_id":"osv/GHSA-73wf-gq98-2v4g","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-73wf-gq98-2v4g","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-73wf-gq98-2v4g"},{"rule_id":"osv/GHSA-c83g-rgw3-j3cx","severity":"high","message":"browserslist@4.28.1 (npm) is affected by GHSA-c83g-rgw3-j3cx","path":"package-lock.json","line":null,"fingerprint":"browserslist@4.28.1 (npm):GHSA-c83g-rgw3-j3cx"},{"rule_id":"osv/GHSA-px8p-9vwx-vf98","severity":"high","message":"fflate@0.6.10 (npm) is affected by GHSA-px8p-9vwx-vf98","path":"package-lock.json","line":null,"fingerprint":"fflate@0.6.10 (npm):GHSA-px8p-9vwx-vf98"},{"rule_id":"osv/GHSA-px8p-9vwx-vf98","severity":"high","message":"fflate@0.8.2 (npm) is affected by GHSA-px8p-9vwx-vf98","path":"package-lock.json","line":null,"fingerprint":"fflate@0.8.2 (npm):GHSA-px8p-9vwx-vf98"},{"rule_id":"osv/GHSA-25h7-pfq9-p65f","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-25h7-pfq9-p65f","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-25h7-pfq9-p65f"},{"rule_id":"osv/GHSA-rf6f-7fwh-wjgh","severity":"high","message":"flatted@3.3.3 (npm) is affected by GHSA-rf6f-7fwh-wjgh","path":"package-lock.json","line":null,"fingerprint":"flatted@3.3.3 (npm):GHSA-rf6f-7fwh-wjgh"},{"rule_id":"osv/GHSA-2883-xcg3-v3hh","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-2883-xcg3-v3hh","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-2883-xcg3-v3hh"},{"rule_id":"osv/GHSA-52cp-r559-cp3m","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-52cp-r559-cp3m","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-52cp-r559-cp3m"},{"rule_id":"osv/GHSA-5p4m-2wfm-xmqj","severity":"high","message":"js-yaml@4.1.1 (npm) is affected by GHSA-5p4m-2wfm-xmqj","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-5p4m-2wfm-xmqj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@3.1.2 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"package-lock.json","line":null,"fingerprint":"minimatch@3.1.2 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-23c5-xmqv-rm74","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-23c5-xmqv-rm74","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-23c5-xmqv-rm74"},{"rule_id":"osv/GHSA-3ppc-4f35-3m26","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-3ppc-4f35-3m26","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-3ppc-4f35-3m26"},{"rule_id":"osv/GHSA-7r86-cg39-jmmj","severity":"high","message":"minimatch@9.0.5 (npm) is affected by GHSA-7r86-cg39-jmmj","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-7r86-cg39-jmmj"},{"rule_id":"osv/GHSA-28wg-ghj8-5hjv","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-28wg-ghj8-5hjv"},{"rule_id":"osv/GHSA-2v37-7h3g-55p8","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-2v37-7h3g-55p8"},{"rule_id":"osv/GHSA-xwg4-73v4-xw9w","severity":"high","message":"nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w","path":"package-lock.json","line":null,"fingerprint":"nanoid@3.3.11 (npm):GHSA-xwg4-73v4-xw9w"},{"rule_id":"osv/GHSA-c2c7-rcm5-vvqj","severity":"high","message":"picomatch@4.0.3 (npm) is affected by GHSA-c2c7-rcm5-vvqj","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-c2c7-rcm5-vvqj"},{"rule_id":"osv/GHSA-6g55-p6wh-862q","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-6g55-p6wh-862q"},{"rule_id":"osv/GHSA-r28c-9q8g-f849","severity":"high","message":"postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-r28c-9q8g-f849"},{"rule_id":"osv/GHSA-49rj-9fvp-4h2h","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-49rj-9fvp-4h2h","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-49rj-9fvp-4h2h"},{"rule_id":"osv/GHSA-8646-j5j9-6r62","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-8646-j5j9-6r62","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-8646-j5j9-6r62"},{"rule_id":"osv/GHSA-8x6r-g9mw-2r78","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-8x6r-g9mw-2r78","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-8x6r-g9mw-2r78"},{"rule_id":"osv/GHSA-chx6-hx7r-mcp5","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-chx6-hx7r-mcp5","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-chx6-hx7r-mcp5"},{"rule_id":"osv/GHSA-qwww-vcr4-c8h2","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-qwww-vcr4-c8h2","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-qwww-vcr4-c8h2"},{"rule_id":"osv/GHSA-rxv8-25v2-qmq8","severity":"high","message":"react-router@7.13.0 (npm) is affected by GHSA-rxv8-25v2-qmq8","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-rxv8-25v2-qmq8"},{"rule_id":"osv/GHSA-mw96-cpmx-2vgc","severity":"high","message":"rollup@4.57.1 (npm) is affected by GHSA-mw96-cpmx-2vgc","path":"package-lock.json","line":null,"fingerprint":"rollup@4.57.1 (npm):GHSA-mw96-cpmx-2vgc"},{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-587h-7wmj-h5pm","severity":"high","message":"vite@7.3.1 (npm) is affected by GHSA-587h-7wmj-h5pm","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-587h-7wmj-h5pm"},{"rule_id":"osv/GHSA-p9ff-h696-f583","severity":"high","message":"vite@7.3.1 (npm) is affected by GHSA-p9ff-h696-f583","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-p9ff-h696-f583"},{"rule_id":"osv/GHSA-v2wj-q39q-566r","severity":"high","message":"vite@7.3.1 (npm) is affected by GHSA-v2wj-q39q-566r","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-v2wj-q39q-566r"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.3.6 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"package-lock.json","line":null,"fingerprint":"zod@4.3.6 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-p498-v437-472g","severity":"medium","message":"@humanfs/node@0.16.7 (npm) is affected by GHSA-p498-v437-472g","path":"package-lock.json","line":null,"fingerprint":"@humanfs/node@0.16.7 (npm):GHSA-p498-v437-472g"},{"rule_id":"osv/GHSA-2g4f-4pwh-qvx6","severity":"medium","message":"ajv@6.12.6 (npm) is affected by GHSA-2g4f-4pwh-qvx6","path":"package-lock.json","line":null,"fingerprint":"ajv@6.12.6 (npm):GHSA-2g4f-4pwh-qvx6"},{"rule_id":"osv/GHSA-w5vr-8v7q-w6rv","severity":"medium","message":"baseline-browser-mapping@2.9.19 (npm) is affected by GHSA-w5vr-8v7q-w6rv","path":"package-lock.json","line":null,"fingerprint":"baseline-browser-mapping@2.9.19 (npm):GHSA-w5vr-8v7q-w6rv"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@1.1.12 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@1.1.12 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-f886-m6hf-6m8v","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-f886-m6hf-6m8v","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-f886-m6hf-6m8v"},{"rule_id":"osv/GHSA-q2hr-2g5m-vwhr","severity":"medium","message":"brace-expansion@2.0.2 (npm) is affected by GHSA-q2hr-2g5m-vwhr","path":"package-lock.json","line":null,"fingerprint":"brace-expansion@2.0.2 (npm):GHSA-q2hr-2g5m-vwhr"},{"rule_id":"osv/GHSA-h67p-54hq-rp68","severity":"medium","message":"js-yaml@4.1.1 (npm) is affected by GHSA-h67p-54hq-rp68","path":"package-lock.json","line":null,"fingerprint":"js-yaml@4.1.1 (npm):GHSA-h67p-54hq-rp68"},{"rule_id":"osv/GHSA-g3hv-75wg-m249","severity":"medium","message":"minimatch@9.0.5 (npm) is affected by GHSA-g3hv-75wg-m249","path":"package-lock.json","line":null,"fingerprint":"minimatch@9.0.5 (npm):GHSA-g3hv-75wg-m249"},{"rule_id":"osv/GHSA-3v7f-55p6-f55p","severity":"medium","message":"picomatch@4.0.3 (npm) is affected by GHSA-3v7f-55p6-f55p","path":"package-lock.json","line":null,"fingerprint":"picomatch@4.0.3 (npm):GHSA-3v7f-55p6-f55p"},{"rule_id":"osv/GHSA-fxqj-rqcc-2cmp","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-fxqj-rqcc-2cmp","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-fxqj-rqcc-2cmp"},{"rule_id":"osv/GHSA-qx2v-qp2m-jg93","severity":"medium","message":"postcss@8.5.6 (npm) is affected by GHSA-qx2v-qp2m-jg93","path":"package-lock.json","line":null,"fingerprint":"postcss@8.5.6 (npm):GHSA-qx2v-qp2m-jg93"},{"rule_id":"osv/GHSA-2j2x-hqr9-3h42","severity":"medium","message":"react-router@7.13.0 (npm) is affected by GHSA-2j2x-hqr9-3h42","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-2j2x-hqr9-3h42"},{"rule_id":"osv/GHSA-337j-9hxr-rhxg","severity":"medium","message":"react-router@7.13.0 (npm) is affected by GHSA-337j-9hxr-rhxg","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-337j-9hxr-rhxg"},{"rule_id":"osv/GHSA-f22v-gfqf-p8f3","severity":"medium","message":"react-router@7.13.0 (npm) is affected by GHSA-f22v-gfqf-p8f3","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-f22v-gfqf-p8f3"},{"rule_id":"osv/GHSA-h8fp-f39c-q6mh","severity":"medium","message":"react-router@7.13.0 (npm) is affected by GHSA-h8fp-f39c-q6mh","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-h8fp-f39c-q6mh"},{"rule_id":"osv/GHSA-wrjc-x8rr-h8h6","severity":"medium","message":"react-router@7.13.0 (npm) is affected by GHSA-wrjc-x8rr-h8h6","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-wrjc-x8rr-h8h6"},{"rule_id":"osv/GHSA-4w7w-66w2-5vf9","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-4w7w-66w2-5vf9","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-4w7w-66w2-5vf9"},{"rule_id":"osv/GHSA-698v-4r3x-3vcv","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-698v-4r3x-3vcv","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-698v-4r3x-3vcv"},{"rule_id":"osv/GHSA-fx2h-pf6j-xcff","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-fx2h-pf6j-xcff","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-fx2h-pf6j-xcff"},{"rule_id":"osv/GHSA-r825-w8mm-5pxw","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-r825-w8mm-5pxw","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-r825-w8mm-5pxw"},{"rule_id":"osv/GHSA-rq7h-c2jc-7f22","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-rq7h-c2jc-7f22","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-rq7h-c2jc-7f22"},{"rule_id":"osv/GHSA-v6wh-96g9-6wx3","severity":"medium","message":"vite@7.3.1 (npm) is affected by GHSA-v6wh-96g9-6wx3","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-v6wh-96g9-6wx3"},{"rule_id":"osv/GHSA-4x5r-pxfx-6jf8","severity":"low","message":"@babel/core@7.29.0 (npm) is affected by GHSA-4x5r-pxfx-6jf8","path":"package-lock.json","line":null,"fingerprint":"@babel/core@7.29.0 (npm):GHSA-4x5r-pxfx-6jf8"},{"rule_id":"osv/GHSA-g7r4-m6w7-qqqr","severity":"low","message":"esbuild@0.27.3 (npm) is affected by GHSA-g7r4-m6w7-qqqr","path":"package-lock.json","line":null,"fingerprint":"esbuild@0.27.3 (npm):GHSA-g7r4-m6w7-qqqr"},{"rule_id":"osv/GHSA-238p-pmpm-9mq7","severity":"low","message":"katex@0.16.28 (npm) is affected by GHSA-238p-pmpm-9mq7","path":"package-lock.json","line":null,"fingerprint":"katex@0.16.28 (npm):GHSA-238p-pmpm-9mq7"},{"rule_id":"osv/GHSA-84g9-w2xq-vcv6","severity":"low","message":"react-router@7.13.0 (npm) is affected by GHSA-84g9-w2xq-vcv6","path":"package-lock.json","line":null,"fingerprint":"react-router@7.13.0 (npm):GHSA-84g9-w2xq-vcv6"},{"rule_id":"osv/GHSA-9jrq-w75r-8gcw","severity":"low","message":"vite@7.3.1 (npm) is affected by GHSA-9jrq-w75r-8gcw","path":"package-lock.json","line":null,"fingerprint":"vite@7.3.1 (npm):GHSA-9jrq-w75r-8gcw"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":8.0,"findings_high":7.0,"findings_medium":1.0,"findings_low":0.0,"penalty":85.2},"findings":[{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/deploy.yml","line":10,"fingerprint":"excessive-permissions:.github/workflows/deploy.yml:10"},{"rule_id":"zizmor/excessive-permissions","severity":"high","message":"overly broad permissions [confidence high]","path":".github/workflows/deploy.yml","line":11,"fingerprint":"excessive-permissions:.github/workflows/deploy.yml:11"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":22,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:22"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":25,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:25"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":37,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:37"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":40,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:40"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy.yml","line":53,"fingerprint":"unpinned-uses:.github/workflows/deploy.yml:53"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/deploy.yml","line":21,"fingerprint":"artipacked:.github/workflows/deploy.yml:21"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":1.0,"signed_commit_share":0.0081,"unpinned_manifests":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":0.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[],"data":{"signals":[],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":293.0,"function_nloc":7841.0,"mean_ccn":6.12,"p90_ccn":5.0,"complex_functions":14.0,"long_functions":13.0,"many_param_functions":0.0,"risky_nloc_share":0.5595},"findings":[],"evidence":[{"kind":"complex-function","description":"Chapter2 in src/chapters/Chapter2.tsx: complexity 276, 778 lines","ref":"src/chapters/Chapter2.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter2.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter6 in src/chapters/Chapter6.tsx: complexity 118, 439 lines","ref":"src/chapters/Chapter6.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter6.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter5 in src/chapters/Chapter5.tsx: complexity 115, 391 lines","ref":"src/chapters/Chapter5.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter5.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter7 in src/chapters/Chapter7.tsx: complexity 108, 476 lines","ref":"src/chapters/Chapter7.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter7.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter4 in src/chapters/Chapter4.tsx: complexity 107, 371 lines","ref":"src/chapters/Chapter4.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter4.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter9 in src/chapters/Chapter9.tsx: complexity 103, 384 lines","ref":"src/chapters/Chapter9.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter9.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter8 in src/chapters/Chapter8.tsx: complexity 90, 292 lines","ref":"src/chapters/Chapter8.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter8.tsx#L5","weight":1.0},{"kind":"complex-function","description":"Chapter10 in src/chapters/Chapter10.tsx: complexity 80, 282 lines","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L5","weight":1.0},{"kind":"complex-function","description":"Chapter3 in src/chapters/Chapter3.tsx: complexity 61, 200 lines","ref":"src/chapters/Chapter3.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter3.tsx#L6","weight":1.0},{"kind":"complex-function","description":"Chapter11 in src/chapters/Chapter11.tsx: complexity 59, 222 lines","ref":"src/chapters/Chapter11.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter11.tsx#L5","weight":0.9833333333333333}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":8755.0,"duplicated_lines":754.0,"duplicated_share":0.0861,"files":43.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter1.tsx:7 and src/chapters/Chapter12.tsx:5","ref":"src/chapters/Chapter1.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter1.tsx#L7","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter1.tsx:240 and src/chapters/Chapter2.tsx:924","ref":"src/chapters/Chapter1.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter1.tsx#L240","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter1.tsx:270 and src/chapters/Chapter10.tsx:342","ref":"src/chapters/Chapter1.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter1.tsx#L270","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter10.tsx:6 and src/chapters/Chapter11.tsx:6","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L6","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter10.tsx:42 and src/chapters/Chapter9.tsx:43","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L42","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter10.tsx:310 and src/chapters/Chapter5.tsx:456","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L310","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter10.tsx:313 and src/chapters/Chapter4.tsx:424","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L313","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter10.tsx:344 and src/chapters/Chapter2.tsx:956","ref":"src/chapters/Chapter10.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter10.tsx#L344","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter11.tsx:267 and src/chapters/Chapter3.tsx:217","ref":"src/chapters/Chapter11.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter11.tsx#L267","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: src/chapters/Chapter11.tsx:268 and src/chapters/Chapter2.tsx:892","ref":"src/chapters/Chapter11.tsx","url":"https://github.com/justinchuby/contact-number-tutorial/blob/2dad0957cb6f609f3ceb62e5356598f737512db1/src/chapters/Chapter11.tsx#L268","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":4.0,"weighted_findings":1.0,"scanned_lines":10560.0,"category:correctness":4.0},"findings":[{"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":"src/chapters/Chapter5.tsx","line":307,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/chapters/Chapter5.tsx:307"},{"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":"src/chapters/Chapter5.tsx","line":307,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/chapters/Chapter5.tsx:307"},{"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":"src/chapters/Chapter5.tsx","line":340,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/chapters/Chapter5.tsx:340"},{"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":"src/chapters/Chapter5.tsx","line":340,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:src/chapters/Chapter5.tsx:340"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":0.0,"check:test_ratio":0.0,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.0,"test_lines":0.0,"source_lines":10560.0,"test_ratio":0.0,"ci_files":1.0,"cochange_share":0.0,"cochange_commits":110.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/deploy.yml","ref":".github/workflows/deploy.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":0.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":63.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.9748,"check:low_escape_density":1.0,"escapes":1.0,"escapes_per_kloc":0.095},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: tsconfig.app.json","ref":"tsconfig.app.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":8792.0,"other_lines":1768.0,"files_blamed":43.0,"blame_failures":0.0,"quality:ai_findings":4.0,"quality:ai_per_kloc":0.455,"quality:other_findings":0.0,"quality:other_per_kloc":0.0,"security:ai_findings":0.0,"security:ai_per_kloc":0.0,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":["unreviewed-ai-risk"]}