{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D7","name":"Architectural Integrity","shortDescription":{"text":"Architectural Integrity"},"helpUri":"https://codehealth.canine.dev/dimensions/D7"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D31","name":"IaC \u0026 Container Security","shortDescription":{"text":"IaC \u0026 Container Security"},"helpUri":"https://codehealth.canine.dev/dimensions/D31","relationships":[{"target":{"id":"CWE-1032","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-732","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-16","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1032","CWE-732","CWE-16"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}},{"id":"D38","name":"OSV Dependency Vulnerabilities","shortDescription":{"text":"OSV Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D38","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"patch (cyclomatic 48): patch has cyclomatic complexity 48 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos_hot_reload/src/patch.js"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"9144f7bc669b4a18c70214a62a08ccd2ce33fc81fb4b8fb555b6f10d06ce76c9"}},{"ruleId":"D1","level":"warning","message":{"text":"buildActualChildren (cyclomatic 28): buildActualChildren has cyclomatic complexity 28 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos_hot_reload/src/patch.js"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a53dc16e4fcc8d9f772583a3de91947909cb4b48881153fcfa5fe31df312e8"}},{"ruleId":"D1","level":"warning","message":{"text":"clickToReq (cyclomatic 18): clickToReq has cyclomatic complexity 18 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9997927e2b1ae9f6027f66771ac508c41e56c4f4e386597e0235042cd7405d64"}},{"ruleId":"D1","level":"warning","message":{"text":"replaceFor (cyclomatic 16): replaceFor has cyclomatic complexity 16 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d36ac4dd04e4bd6b397854d13636affa4dbf1c598576be421a3acc4af12bb0"}},{"ruleId":"D2","level":"warning","message":{"text":"patch (cognitive 124): patch has cognitive complexity 124 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos_hot_reload/src/patch.js"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d55efb36dbd85c5a981686cdb27bc99d565ac3067c446f14755915328dc24d4"}},{"ruleId":"D2","level":"warning","message":{"text":"buildActualChildren (cognitive 84): buildActualChildren has cognitive complexity 84 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos_hot_reload/src/patch.js"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc73a40544b2d6ce5478b23ebb29bf064033588faa10f4b80ab68886485a90f"}},{"ruleId":"D2","level":"warning","message":{"text":"replaceFor (cognitive 22): replaceFor has cognitive complexity 22 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"6527f0c6365134a5245e6f9fbdac0867b6c2d4a6397bb6e8e8d0f6397b7a9355"}},{"ruleId":"D2","level":"warning","message":{"text":"diffRange (cognitive 18): diffRange has cognitive complexity 18 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ff0e748b19b62afe6a50d3ebdce7368cc54c4db7dc0e4d45cb7dee39729c753"}},{"ruleId":"D2","level":"warning","message":{"text":"clickToReq (cognitive 17): clickToReq has cognitive complexity 17 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e70924bd234c154bdfc48ea6cc3935c6c110e90e3d47d6942a1e7caa132181e"}},{"ruleId":"D2","level":"warning","message":{"text":"traverse (cognitive 16): traverse has cognitive complexity 16 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/island_script.js"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"fafffff9aa5f550bc2a90aba9dd16d82123d1ce75bbc1aa99bcc064c48e24419"}},{"ruleId":"D8","level":"error","message":{"text":"No automated tests: No automated tests \u2014 the solution has no test code. Untested code is the largest single risk to changing it safely."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"3132564c6310e5d01a231f252a02d5d2f5a542c0a8fa29a14c89693f1e3df871"}},{"ruleId":"D9","level":"note","message":{"text":"No tests found: No test projects found in the repository."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"c9bf64cbb5a4ae13d6bcd01fa3bc8d2879d860c73bc67f176ee3c2cecb8adce3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: leptos/src/hydration/islands_routing.js: leptos/src/hydration/islands_routing.js changed 2 times in last 90 days, max complexity 18. 2 of those changes were fix/bug commits \u2014 a defect-dense hotspot worth prioritising."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"leptos/src/hydration/islands_routing.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66dc730b8a6a3f4d34f38a2026d99664368a26516786dbbb6b8ebacd31c5142e"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002701_introduction\u0027 is a numbered section header with no content and the body is an HTML redirect pointing to documentation (leptos.dev) rather than describing any architectural decision: Replace the redirect with the actual decision statement and replace the canonical link with the correct ADR body"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/01_introduction.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2532057190f24c38e7ffd00a8214b1f22a415c97091dcae85402295939e27a"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision; the body is an external book reference: Replace with the actual ADR content: state what problem global state causes, which approach is chosen (e.g. use cases, trade-offs), and any consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/15_global_state.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5026ec7c752ada82a147080f29efbae672d5a10580d1ce64f9079b05adb9eee"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book resource page; no context/problem or explicit decision for the referenced resources: Replace with a self-contained rationale and consequences for choosing these resources over alternatives"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/async/10_resources.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"712529b601057dd99c7c5fa5bd6b2c72a55b91652c7f7357f376e40781243665"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only redirect to an external book page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing what suspense is, why it matters, and the Suspense component\u0027s role, plus the consequences of not using it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/async/11_suspense.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c99b8c13fda1cff56846211a549779e3f2c7d1c2c3885faa4f9d714c64ff58e"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context or decision; the body is clipped by the refresh meta: Replace with an ADR describing the transition concern (e.g. suspense vs. forced render) and the explicit decision (use Suspense/force_render), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/async/12_transition.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35f031ba8538d1e3b0d0a7f756c9e136158e14cf8d023a9f9170d3be2ac48634"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only redirect to an external book page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing the problem (e.g. why actions matter) and the concrete decision (e.g. how to write them), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/async/13_actions.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7cc84131e6218c122bf67452d21c49c6cb5b3cc208552c7dc54949f02ab764"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only documentation reference; no context/problem and no explicit decision: Replace with an ADR describing the problem motivating create-effect (e.g. reactivity cost) and the concrete decision (e.g. use .on() or .create_effect()) plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/reactivity/14_create_effect.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c52f844f82738feddb371918ee5cb1f8e4c9618ce52d2eccad3f541db68fdd1"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and refresh meta redirect are present; no context/problem or explicit decision: Replace with the actual ADR content: what routing problem is being solved, which routes/paths are being handled, and the concrete decisions (e.g. route guards, nested layouts) plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/router/16_routes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f084c0a785816a85663a85b5aeaa4905ad807358e390e055e80d0f6ada6b53ea"}},{"ruleId":"D20","level":"warning","message":{"text":"No context/problem and no consequences; only a canonical link is present: State the problem nested routing introduces (e.g. shared navigation state) and its trade-offs such as component reordering or stale-state handling before linking to the book"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/router/17_nested_routing.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"678a6a4bd0a1c5cb25a7bf2902387296d0e3f93fa2ce86cf81f9f9772edd52ab"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book rather than an ADR; no context/problem or explicit decision in the visible text: Replace with an actual ADR describing the routing/params/query handling problem and the concrete decisions made for it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/router/18_params_and_queries.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4daf59ec7c2a796dcc10b26517784915987b3081be2eedf29e39807a9bd9c263"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a redirect link to an external documentation page; no context/problem and no decision are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/router/20_form.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aba442c6d3106a2cd897cab540d65751dc0b129a9be4e14aaadce35a4201c2f"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book rather than an ADR; no context, decision, or consequences are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/server/25_server_functions.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c588c0e51aa90430d4cd79a5b86e6dbc8565eee0f3ed7d9090c6f73d3c681d3e"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing what extractors are needed, why they matter for component rendering, and the specific extractor types/behavior covered"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/server/26_extractors.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8f6d99e2a3cce5eabe247299f45b3bc46d4707e43aa1096271e9701db8cc3cc"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a redirect to an internal documentation page; no context/problem and no explicit decision in the body: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/server/27_response.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4049395821cf22e92ab37cdcd63d592e4856b345efc56f5cbbc61b74cb9282d3"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision in the visible portion: Add an explanatory sentence stating what Cargo \u002B Leptos does for this project (e.g. server-side rendering) and why it is needed over alternatives like Actix/async-trait."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/ssr/21_cargo_leptos.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37aa15ce3ddb53e990da2d9eaf38a037432d5674fe3d90641c4c62949cbf76f7"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external SSR book chapter rather than an ADR; no context, decision, or consequences are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/ssr/22_life_cycle.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9a45ccc3a20e70c8109cdd4956cd75683dc08ea3a27ca19c602ccc294b069d"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision; the body is clipped by the scanner: Add an informative title above the link (e.g. \u0022SSR Mode Configuration\u0022) and describe the problem/situation motivating SSR mode selection plus the explicit decision/strategy in the document"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/ssr/23_ssr_modes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2a1d937d397682cafa376683206ded09358acc08ad2bb464fe75d81ed3c886"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or consequences; the body is clipped by the scanner: Add an informative title stating what hydration bugs are fixed (e.g. \u0022Reactivity drift during server-to-client hydration\u0022) and describe the problem it addresses so readers know why they need this decision, plus any trade-offs such as increased build/tooling complexity or loss of browser-specific polyfill support"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/ssr/24_hydration_bugs.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ccc3f2bdab56e5e770112e21e1761b39f08ff808ba0b6debf23811d59b9d35"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision in the visible portion: Replace with an ADR describing why basic components matter (e.g. encapsulating UI glue), what they are, and the consequences of not having them"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/01_basic_component.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c0fd65943c71e9e82392cc008a226ed25831116a66c23534795e681ff20706"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only reference to an external book rather than an ADR; no context/problem and no explicit decision: Replace with the actual ADR content describing the problem motivating dynamic attributes (e.g. runtime field mutation) and the concrete decision (how to declare/update them, supported types), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/02_dynamic_attributes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1b37e1181233c52ab9eafa4bee9a27b51a53de88cb830c173f4188395073bb"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page rather than an ADR; no context, decision, or consequences are present: Replace the link with a real ADR describing component design goals, the explicit decisions (e.g. state model, layout strategy), and trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/03_components.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39194f5801f663a47c143441837dbe77d4818b11f3ab629ca6c6c9be87606aeb"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision is a link to documentation rather than an explicit decision statement; no context and no consequences: Replace the canonical link with a self-contained description of why iteration matters for component design and how it is implemented in this framework"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/04_iteration.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c2299e995b3e5c9d86596956f6e5ca01f6fb2c2463d0a0ba68bc4550b593e9"}},{"ruleId":"D20","level":"warning","message":{"text":"Only the canonical link appears; no context/problem and no explicit decision in the visible portion: Add a Context section explaining why iteration is needed (e.g. frequent feature requests) and an Explicit Decision stating what iteration policy applies (e.g. weekly sprints with backlog). Then document Consequences such as burn rate or review burden."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/04b_iteration.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d6581d98e9db141a7e4007b946d19e566541bc3b24f5e79ded4942a53aecca"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link to an external documentation page rather than an ADR; no context/problem or explicit decision: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/05_forms.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"685588560d2cb1b77fa7ceab1c41b22f45c81475780367e3442fe537d6cf7008"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002706_control_flow\u0027 is a stub; no context/problem and no explicit decision in the visible portion. The canonical link points to an external book rather than an ADR.: Replace with a real ADR: state what control-flow pattern or tooling was needed, the problem it solves, and the concrete decision (e.g., which Rust/Leptos construct) plus its consequences."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/06_control_flow.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7e569f48f7e1c1f8dd115a5600a23c67a7353e6ff0550ac4dcd219a0018dbf"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page rather than an ADR; no context, decision, or consequences are present: Replace the link with a self-contained ADR describing error-handling policy, trade-offs of default behavior vs. custom handlers, and how errors propagate through components"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/07_errors.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0e3b0c6dfb1e300059853bb35cedfda9fb7aecb4c88af6d85b7548540e89a6"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only reference to an external book rather than an ADR; no context/problem or decision: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/08_parent_child.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aabac551ad105bc1afee9446efb29c785f196c94804350581f6813673056560"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002709_component_children\u0027 is a numbered decision stub with no context or consequences; the canonical documentation link points to an internal book rather than a real ADR: Replace with a full ADR: state the problem (e.g. nested components breaking layout/props), the explicit decision (how children are passed, rendered, scoped), and trade-offs such as shadow DOM or re-render cost"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book/src/view/09_component_children.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fb0efcd8ac02e8aa647a9c7d1ef266756145025d85c57eda0d9d9898c7aeb9"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002701_introduction\u0027 is a numbered section header with no content and the body is an HTML redirect pointing to documentation (leptos.dev) rather than describing any architectural decision: Replace the redirect with the actual decision statement and replace the canonical link with the correct ADR body"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/01_introduction.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bd88279b0975c8182f5e591528fde401ebf9c518996f32a4c8e0550c8e5066"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision; the body is an external book reference: Replace with the actual ADR content: state what problem global state causes, which approach is chosen (e.g. use cases, trade-offs), and any consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/15_global_state.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6982223ce46cc2c8625860dce05c7468a850630060f6918e5368155dbcd1326"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book resource page; no context/problem or explicit decision for the referenced resources: Replace with a self-contained rationale and consequences for choosing these resources over alternatives"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/async/10_resources.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8617e823f7e9dfb1ee74e7d3862c7ef294565f00095cf52571b7c6c74fc3cc"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only redirect to an external book page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing what suspense is, why it matters, and the Suspense component\u0027s role, plus the consequences of not using it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/async/11_suspense.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de8a95b4703d5aee72ee815b566f3c2e99b74a3599a8b12920a65351e64e09e7"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context or decision; the body is clipped by the refresh meta: Replace with an ADR describing the transition concern (e.g. suspense vs. forced render) and the explicit decision (use Suspense/force_render), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/async/12_transition.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"739bfcb6309d54bcca0608ff9da53488984b6c3ec2bf351ff72b5b94685cb7c2"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only redirect to an external book page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing the problem (e.g. why actions matter) and the concrete decision (e.g. how to write them), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/async/13_actions.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f707e6eda1cbf989cabd9ca2dcc2b657525ece2ef2024857193c7c5aec8745a2"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only documentation reference; no context/problem and no explicit decision: Replace with an ADR describing the problem motivating create-effect (e.g. reactivity cost) and the concrete decision (e.g. use .on() or .create_effect()) plus its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/reactivity/14_create_effect.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c1825a764e7351c620561baa55681c58dc4a0d8845b6dee55b4411dda84894"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and refresh meta redirect are present; no context/problem or explicit decision: Replace with the actual ADR content: what routing problem is being solved, which routes/paths are being handled, and the concrete decisions (e.g. route guards, nested layouts) plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/router/16_routes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"beca83b4468c0ef3d9e989a58e278ffd7f9ca43b48322144d299e4de2290c98b"}},{"ruleId":"D20","level":"warning","message":{"text":"No context/problem and no consequences; only a canonical link is present: State the problem nested routing introduces (e.g. shared navigation state) and its trade-offs such as component reordering or stale-state handling before linking to the book"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/router/17_nested_routing.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96d5da3da5ecf2b5948b5ffabd956089eddcba5f9674f4ff41c610cdd465c4d"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book rather than an ADR; no context/problem or explicit decision in the visible text: Replace with an actual ADR describing the routing/params/query handling problem and the concrete decisions made for it"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/router/18_params_and_queries.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d3d11fd6b2d5248f603da6177e31a9b306c152fdc271a7dc4fecb481f003bd"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a redirect link to an external documentation page; no context/problem and no decision are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/router/20_form.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"757b24815ff896c84ddc05c1717409deb7ba3f8747b87ff87cd57b17208b27a5"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external book rather than an ADR; no context, decision, or consequences are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/server/25_server_functions.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e753c9d844eae78228eb4a605f1297888a5e18ed2cc05baa2915a5c29e1247fc"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page; no context/problem and no explicit decision in the body: Replace with a self-contained ADR describing what extractors are needed, why they matter for component rendering, and the specific extractor types/behavior covered"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/server/26_extractors.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c9c97fcd3f624bb3567b604c7089f4dfcabbe2e61c53aa69b37b0195ef638b"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a redirect to an internal documentation page; no context/problem and no explicit decision in the body: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/server/27_response.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b89e046b25da7b3c5769a45731da15dbed0b7b04e7702e241697cc038bb502"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision in the visible portion: Add an explanatory sentence stating what Cargo \u002B Leptos does for this project (e.g. server-side rendering) and why it is needed over alternatives like Actix/async-trait."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/ssr/21_cargo_leptos.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3882907f799f0e1881bd17dc05147ddedb379a6bc6fc30a88468180772dc9368"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external SSR book chapter rather than an ADR; no context, decision, or consequences are present: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/ssr/22_life_cycle.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"984681e83c2abc086403c4269df3ddc5a37fc335da59b50e446d8a64547bf4b6"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision; the body is clipped by the scanner: Add an informative title above the link (e.g. \u0022SSR Mode Configuration\u0022) and describe the problem/situation motivating SSR mode selection plus the explicit decision/strategy in the document"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/ssr/23_ssr_modes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0ea3cee106df866b035d24cbc6dfbe43751552ee2afd1e374d80a960ee2b83"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or consequences; the body is clipped by the scanner: Add an informative title stating what hydration bugs are fixed (e.g. \u0022Reactivity drift during server-to-client hydration\u0022) and describe the problem it addresses so readers know why they need this decision, plus any trade-offs such as increased build/tooling complexity or loss of browser-specific polyfill support"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/ssr/24_hydration_bugs.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6476c4760358b64fab34d904fb5824c66bdadfc1fe0ae12e4d12256d2dfda8bf"}},{"ruleId":"D20","level":"warning","message":{"text":"Only a canonical link and no context/problem or decision in the visible portion: Replace with an ADR describing why basic components matter (e.g. encapsulating UI glue), what they are, and the consequences of not having them"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/01_basic_component.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33741e2365edb476f32f4a50ffc8932822b3d7451b0ff8274da1aae81940b7c"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only reference to an external book rather than an ADR; no context/problem and no explicit decision: Replace with the actual ADR content describing the problem motivating dynamic attributes (e.g. runtime field mutation) and the concrete decision (how to declare/update them, supported types), plus consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/02_dynamic_attributes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc8950e52cdeb2318da3114729547c3651cbb24f79051637294689aa26db2894"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page rather than an ADR; no context, decision, or consequences are present: Replace the link with a real ADR describing component design goals, the explicit decisions (e.g. state model, layout strategy), and trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/03_components.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dedc78cf38ebfb4951ba377e8122505b307df11649e8bc2dff8a6955c4d02e85"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision is a link to documentation rather than an explicit decision statement; no context and no consequences: Replace the canonical link with a self-contained description of why iteration matters for component design and how it is implemented in this framework"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/04_iteration.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52abaf5dc53c5bed875ec81c7f96860688842e08d39a889bfcc7b7ac1e31c31f"}},{"ruleId":"D20","level":"warning","message":{"text":"Only the canonical link appears; no context/problem and no explicit decision in the visible portion: Add a Context section explaining why iteration is needed (e.g. frequent feature requests) and an Explicit Decision stating what iteration policy applies (e.g. weekly sprints with backlog). Then document Consequences such as burn rate or review burden."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/04b_iteration.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"56763f6425cdcfae01e17ce9d7b19f347965d76a21b589d87297a387f21495f6"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link to an external documentation page rather than an ADR; no context/problem or explicit decision: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/05_forms.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4d6dc730a76084ab13fda4934bceadd2c4b42a59bb297e29777fa7ac0fb547"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002706_control_flow\u0027 is a stub; no context/problem and no explicit decision in the visible portion. The canonical link points to an external book rather than an ADR.: Replace with a real ADR: state what control-flow pattern or tooling was needed, the problem it solves, and the concrete decision (e.g., which Rust/Leptos construct) plus its consequences."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/06_control_flow.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b291d9c79a5a4ed623b92adb13ff96fcbedbcdab596c50b07e401295ce741a29"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a canonical link pointing to an external documentation page rather than an ADR; no context, decision, or consequences are present: Replace the link with a self-contained ADR describing error-handling policy, trade-offs of default behavior vs. custom handlers, and how errors propagate through components"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/07_errors.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c654d4169fc574fcc51afc1087257852506fcdb071ee36d31bdb64ae9549f4d"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a link-only reference to an external book rather than an ADR; no context/problem or decision: Replace with the actual ADR content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/08_parent_child.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f003f0e3e607d3bf84b35ec60b9daea8adfaea05d50f94b133283f5a111809"}},{"ruleId":"D20","level":"warning","message":{"text":"Title \u002709_component_children\u0027 is a numbered decision stub with no context or consequences; the canonical documentation link points to an internal book rather than a real ADR: Replace with a full ADR: state the problem (e.g. nested components breaking layout/props), the explicit decision (how children should be passed, allowed props), and trade-offs such as loss of component nesting depth"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/book_ru/src/view/09_component_children.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ec5ecb1a47625696e71a3cd514b21c104acfc1dd9c4adeb00bb98aebc54db8"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"61b123a3ccbbdf12d15e94e72f7264d137275a1e1278953889b27a19a9a97e42"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd75c9af4a10a478cac41bcc4dbc85dae833ed861c483f60468b6ce63b145a90"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd75c9af4a10a478cac41bcc4dbc85dae833ed861c483f60468b6ce63b145a90"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bd75c9af4a10a478cac41bcc4dbc85dae833ed861c483f60468b6ce63b145a90"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0dbb915274563a1a1c7710b67a8c19d2a107f22fcaf0daddfce999f66be50e9d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0dbb915274563a1a1c7710b67a8c19d2a107f22fcaf0daddfce999f66be50e9d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0089df89d8b08a0713c84f6eb4e7ebce8c6cdedcd13ab648a12e551ca63ba73"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0089df89d8b08a0713c84f6eb4e7ebce8c6cdedcd13ab648a12e551ca63ba73"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2ffd9f664ab3ee19a2719180ffc1fcb22a8ce0958532327c04a7936510321995"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dc705fe33b671122d829d328f2c00668832172c1f041b86d2d52bb200c1c0d75"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"dc705fe33b671122d829d328f2c00668832172c1f041b86d2d52bb200c1c0d75"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"566043c9b4682dfd6fe56eaf3efdf6eb2cc5ec13b270f5f12e62f04951dd8ad9"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"abd4ba6a92728d41c667d5da4d913f0dffe117f896250e273032f2aada57d003"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"456d33c1ab49e27da72ffcfe208ab0f1a26e5b2924e9155e266283efede10f22"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"56f39ec7c033ad81229a04e2a5197d073910d2109661f530f13180bf3bed8965"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D31","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ff085d341703651ae47d0e990edf1629a903b58c51c7b2252d41ff01baadaff9"}},{"ruleId":"D31","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9d1873f5c5ca6fba46b1c6c42fa0c05450185a3355853824df5317a1e069a65e"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0e17f71490e4d120a48b2b2881ab866c93b272bef2febb673a3e8e42b2c288ab"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"98b19af8644204c2602f2d59bb7cc265a6b41c99ed90d3b07032d0eaeb97841e"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7acdbf4426c315be0192f0be74a3cef647775b256cd20026182aa0be7d728163"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cfd6cf3d27fc52ffba1791848d8484fa77840536abb68064ab88e5799481c334"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a7bb808919e52f6ac44faaf96b3bde9b1507059dcf6d2d72baebb71e705afe41"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f31448114db756417b8baa0a118417468ef360dcda665dac12acd4c4b52f1694"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b597a578aa3a23340cf6b6c2a63b65d11236585529c92be2be2e3d62b0637f41"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"830e6eea33bdd93d34ea633b09970e0d1fbdb2dcf8fbd5c647e58efcf6bacdae"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ab0108f41847fcd13cc509fdbf813a4e8c5049c79bc0ffc92c8b47e0f6ecc5f9"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"adfdbd2890d207e723e3d5899b9500d84987408c38f526c41a5f6f293da6646d"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7cd363d33d090a65e062417fff7c003a0ff4fd76423c93fbaa59dbe6d9037a89"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ee14f454f51c8ee35668c9fbd0b542cdc7d6f88f3dccbcef6551017b2ab2cc72"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bb8da4a368d206f4793f6890e9a26e884443e8045077b68dd312192cab7145e9"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e18a4c6754b7289a1b1809f882d59c2b22771b9ae108d9f8e52357b772f8fb9a"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"941e5c258fcd0a6529f4eaac7950b034051cab3c036d479eb0509cc7fe0bfe12"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f5491fc43377a23e932d7fd2b73041a6c86052a90be88cb4997a8b494c9108b7"}},{"ruleId":"D38","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"48c643d64555f1312f168568df9d205889fc4f3e6c87624ee848e9f1910f0a59"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"afd7e63dd5ad776fc3c76bd5ab0997e370ad908dad2245106fc808370ea55d8a"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c7a805a36fc3104060ed627bce5b530a559600da781c81f5dd82531ca2905cff"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"21d29e9fc94997f2fc743f904945cce2fd777ddd42529b54762bd6b213569950"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d0aad59bc79e0b6df5f1a072fd1613ebd329d58d457dc0cf5590cc2631ff7936"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5a1bd7472640626ee341ccd487f729bf1314688c141162362f71f64a2648ed0f"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d27768bf56ef43f42746d085d7d84329eacda52989a956d8a667f4a584b69054"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"416d2ea152bc525474e10b2fcb44fcd20cf765aaa5c4b7ca81b08d353328fd80"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"109494366297458a3bb16941e0246e86acef1a07af83520c84877a1616022291"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"15d6e58aed15d43a2773235fba096a763073b03faf28b951dddf5963ed494944"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c1c88e67b70b0e8cbd5018f9b6cbd42acf37a7f522e06a9c17c2b3e7d8db396e"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"99bbf297cc1a87ee46b7faf365847f541b6e30056b88115fa3711d4174d60273"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f50885c12fb55b5e6616b1cdc459749ba27c23b412f784649e1cccba65f5fd59"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f1fabc28de3a591be4432828a9f5792fe602ceda94839b00d2573e946560675d"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2b79e3f60274805531c877c6c83555cce0a7eb48d0a42c8b6b4ebb74b4cd4b32"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bae5fbe9936e3a88630ca181a98cb07ff753aa11105b5bc743d4149268520aef"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"80fd1f10f73f5b4db4ad28ef4b70b7cc5184756868ba1d4be3909edda86cf3ad"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"99f3c1409b2f48b77ea747cea1bb279053477af16071ca8d4979eb67e57e176a"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1f58f6f6888fde9947d030e4498e5c412516eeeed006ff795ba7361273c91e45"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"08ba96a4cf5f90f0ead11286ec710869cdae8f29a7becc8553896758acbe6e0e"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ba04b3c3e915b952e41f06becc308dd81752f7ba86302d00c32aec482ae7c0a2"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"568531122d9482ea49a06912255c103d601943c4f6741216d1d2264197bf04e6"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"18a0a3e3f78c4985ac749bfc659e9ebe37160bfc1b36cefc058292048b4a4514"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"41555d1464333e6b4976ed4807b0539e97d70d93ab5613d9c8a6680646016f65"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f9141126bcee03d0b4bea83f99441bb504462f7eb03360b2e66a8429b11772a6"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"276fdfdd71a53530ff5f8d2aeec44e38fc9601d0bbae24691d05c3302a4bdd4f"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ddb7a0f3de834c1584e9148f4df3e38113f3f1e7a7add876f2fc485f9761c3cd"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3b2431bd37e5ac51ccd87d3bda954fefbe0b6f9e3dfa7a35aab724a2155ee3a9"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"034220953601e1a5bf21ca89813ccb926ed00fd7dbf9ab72a2d93bc0b056d784"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"006f8525ff6856613672c8b33f21166dce86192706a0adb5468c9d1dd767bc36"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ce0f2c85369dbdc57468ec4f3bcc33131590cfbb5a22fa9e564954aa5dcb1b82"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a4cdae5a7208e2774b0f91188c727d297ec13c12d8be56fc56a7331610efdfe3"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e2abecca83fbc998d2262ad8360307aa3e3bb9e96eac997d5459c82e19d4d154"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"31f8918f2dbbc3cd13c6e534182b7b2ea646d5183f83b0b708e4096a0f8cf5b8"}},{"ruleId":"D38","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b64dcffc59cf9ea83a0d9b00e75471ce108565b3f4f7d775cd1532e0b0e26f68"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1032","guid":"5f21e517-68aa-a650-9a25-5771ef024637","name":"OWASP Top Ten \u2014 Security Misconfiguration category","shortDescription":{"text":"OWASP Top Ten \u2014 Security Misconfiguration category"},"helpUri":"https://cwe.mitre.org/data/definitions/1032.html"},{"id":"CWE-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-16","guid":"659db3ea-affc-8453-8add-c1218fbfcb92","name":"Configuration","shortDescription":{"text":"Configuration"},"helpUri":"https://cwe.mitre.org/data/definitions/16.html"},{"id":"CWE-259","guid":"ae9ad959-fbb6-9d5e-892d-3dca66da0b69","name":"Use of Hard-coded Password","shortDescription":{"text":"Use of Hard-coded Password"},"helpUri":"https://cwe.mitre.org/data/definitions/259.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-732","guid":"1da27e8f-b330-7650-ab63-bd61953eae5d","name":"Incorrect Permission Assignment for Critical Resource","shortDescription":{"text":"Incorrect Permission Assignment for Critical Resource"},"helpUri":"https://cwe.mitre.org/data/definitions/732.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":97,"secretScannerRunsExcluded":0}},"redactionTokens":["A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."]}]}