{"$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":"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":"D25","name":"ADR Conformance","shortDescription":{"text":"ADR Conformance"},"helpUri":"https://codehealth.canine.dev/dimensions/D25"},{"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":"_compress (cyclomatic 38): _compress has cyclomatic complexity 38 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/static/workers/lz-worker.js"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1985bf0035dc8fd4d31be8070642271af6f8e1f05b080111cdb783346bec9de"}},{"ruleId":"D1","level":"warning","message":{"text":"_decompress (cyclomatic 32): _decompress has cyclomatic complexity 32 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/static/workers/lz-worker.js"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ed8bc428dc011c819abbc1f14fd916d312ea0362f3baa11773ee5481f533a6"}},{"ruleId":"D2","level":"warning","message":{"text":"_compress (cognitive 124): _compress has cognitive complexity 124 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/static/workers/lz-worker.js"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c5f9176e05801f41c6556b8fccead0075450e7de61456c98c3c4865033e2730"}},{"ruleId":"D2","level":"warning","message":{"text":"_decompress (cognitive 68): _decompress has cognitive complexity 68 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/static/workers/lz-worker.js"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb64983533df4b1f883c67493898f96421e52a49b01fd630a0a30aa14ecfa03"}},{"ruleId":"D2","level":"warning","message":{"text":"injectSitemapLastmod (cognitive 16): injectSitemapLastmod has cognitive complexity 16 (threshold 15)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/plugins/blog-plugin.js"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"1518f5d52855c572f00b1474cef166d0b835eea998644c05d4bbe3661e7a498d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: plugins/blog-plugin.js: FileTooLong \u2014 1072 lines."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/plugins/blog-plugin.js"},"region":{"startLine":0}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fe745596704532e4341d2e4636b9b83f51a6a7e3ac4e50a848740a4c7b38bb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: public/workbox-eac1af49.js: FileTooLong \u2014 2654 lines."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"examples/blog-next-refine-pwa/public/workbox-eac1af49.js"},"region":{"startLine":0}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9db3ba3d67ba3b67c2a721e184a7456b196c38a126f4efe72e3fc651bcfcfaf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: blog-post-page/index.js: FileTooLong \u2014 615 lines."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/src/components/blog/blog-post-page/index.js"},"region":{"startLine":0}}}],"partialFingerprints":{"codehealthFindingId/v1":"d93dc14a76b8c932aca23e3da236a2aa6bda2de2a044f8ae58011f01fc7cae09"}},{"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":"D20","level":"warning","message":{"text":"The decision (web application with Supabase/Refine backend and React frontend) is stated but no consequences/trade-offs are given: Add a Consequences section covering trade-offs such as the need for ongoing Supabase credits, row-level security complexity, and the cost of running an internal web app versus tools like Trello or Asana"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2021-11-12-issue-tracker-refine.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"253b189c36e78df2348bdcc20695419a74382ba6c112b864839fd5bc830f042a"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences/trade-offs are absent from the visible text: Add a Decision section stating exactly how Base64 encoding is applied (input type, JavaScript API call, Base64 string stored) and a Consequences section covering trade-offs such as increased payload size and browser compatibility"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2021-12-22-base64-upload.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34e9ac48f689b4b063754929b6adc4b07d37bd7bcefd7106e75b8e183ccdf01"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision/consequences section (how to display the array as a table and any trade-offs) is not shown before the clip; cannot be flagged as missing: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-01-18-csv-import.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0baa3ef9d43e5c9bde75bbaa82d16ee23c70b58c0902e137960b0edb3e7c5e44"}},{"ruleId":"D20","level":"warning","message":{"text":"The title \u0027Top React JS Frameworks Every Developer Should Know\u0027 is a marketing-style banner with no decision or consequences; it is a comparison post rather than an ADR: Rename to something like \u0027React UI/CRUD Frameworks Decisions and Consequences\u0027 and replace the body with a real decision record (context, explicit framework decision, trade-offs)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-02-21-top-react-frameworks.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c498bcf12bc42870be961927c496b0bfbbd68f2880340f1f3bd891416984ef"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are both absent from the visible text: Add a Context section explaining why a custom invoice generator is needed (e.g. existing software options, lack of customization) and a Consequences section covering trade-offs like development effort vs long-term maintenance"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-02-22-refine-invoice-generator.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2f553eb9aac64b8e28c7412ac9236cff2472ac45312d09f9f039a8046ba94f"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are both absent from the visible text: Add a Context section explaining why a customizable invoice generator is needed (e.g. lack of built-in templates for non-technical users) and a Consequences section covering trade-offs such as maintenance burden or loss of design flexibility when switching vendors."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-03-01-refine-invoice-generator-p2.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d941eaae652a033beb34a73bd8a96a465315a307f98c3a60e9ec78ad414b8d"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs are not visible before the clip marker (the body ends with a review list and clips): "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-03-16-internal-tool-frameworks.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66023ab159738edd2f39fdd8dfd999d204165095e8950efa33eff544a0b68a0"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs are not visible before the clip (the body ends in install steps and the clip marker): "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-03-22-refine-with-react95.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ace8384d1064fe343dafadf1f3675b7911152b935a48b9573f9e1a5823c9fd"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem (the express/server setup and why multipart/form-data upload matters) is present but embedded in code rather than explained; consequences/trade-offs are not shown: Add a one-paragraph problem statement explaining multipart/form-data necessity for file uploads and the trade-offs of using Node\u0027s native fs module vs React Hook Form\u0027s FormData API"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-03-29-react-hook-form-upload.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e29829eded9339090530e43a5673a341d33add74f1549337b6e4149faaed34"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences fall below the threshold (only context/problem plus a one-paragraph decision \u002B features are present): Add a Decision section stating which libraries/frameworks are recommended with an explicit rationale for selection and a Consequences section covering trade-offs such as large bundle size of Ant Design, cost of paid tiers, and learning curve."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-04-29-top-react-component-libraries-and-frameworks-every-developer-should-know.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1bb61dc839b19518d8bf4c15eabb0d9c7b28dac4adeec7b772be662ed3f997"}},{"ruleId":"D20","level":"warning","message":{"text":"No architecture decision; only a promotional banner lists ten free tools with no context/problem and no consequences: Replace with an actual architectural decision (e.g. \u0027Use Supabase as the backend database for real-time storage\u0027 plus its trade-offs) instead of marketing content"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-05-02-high-quality-free-resources.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd4ffc3c09a030d0a171b49b3fb6716a10108b9c4411867669b5634979de8c1"}},{"ruleId":"D20","level":"warning","message":{"text":"The title \u0027Best Open-Source Headless CMS to Try for Your Next Application\u0027 is informative but the body is essentially a list of open-source headless platforms with no context/problem and no consequences/trade-offs (e.g. learning curve, cost, plugin ecosystem) are addressed: Add a Context section explaining why a headless CMS matters over traditional systems (no front-end, content distribution, scalability), then a Decision section selecting one platform and its rationale, plus a Consequences section covering trade-offs like self-hosting costs, learning curve, and plugin dependency"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-05-05-open-source-headless-cms.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dad450a6df07c6f23d67fe1d2ba6da5734273c4e7cda04c7471b98b981a9913"}},{"ruleId":"D20","level":"warning","message":{"text":"Not an architecture decision record \u2014 it is a company announcement post, not an ADR (context/problem, explicit decision, consequences): Convert this into an ADR by stating the funding round\u0027s purpose (e.g. scaling core team to deliver features/scale), the decision (funding raised, allocated funds used for X/Y), and any trade-offs such as dilution or debt."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-06-10-weve-raised-dollar1m-seed-funding.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aee7c40d9d303081640e9f50bffe5e205e7226e3927df1678ad347913a145fc"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is an introduction stating why Node.js matters before diving into ES6 features; there is no explicit decision or consequences section (e.g. trade-offs of learning ES6 vs newer JS versions): Add a Decision section covering the skills and tools explicitly required to become a modern Node.js developer, plus a Consequences section noting any trade-offs such as the need for ongoing ES6/async knowledge"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-09-06-nodejs-developer.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"509cb9a01d3dbd90e66561f38aa30b7fdde675584de9325edeb7a779fc81362f"}},{"ruleId":"D20","level":"warning","message":{"text":"No context/problem and no explicit decision (what Refine will do) are present: Replace the banner-style announcement with an ADR stating what concrete decisions/refactorings/hacks will be done during Hacktoberfest"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-10-04-hacktoberfest.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49f43ca1e434fb0e7b7b959921c5557d3258e81412f244faeddb8f721e026a8"}},{"ruleId":"D20","level":"warning","message":{"text":"Context/problem and consequences/trade-offs are both absent from the visible text: Add a Context section explaining why a responsive navbar is needed (mobile-first navigation, consistent look-and-feel across pages) and a Consequences section covering trade-offs such as Tailwind/Bootstrap integration complexity or Bootstrap dependency"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-10-07-responsive-navbar.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f246b2e06c8863ed4cb8ea81c7a3ddbf3a34d89f4a79e26deace10a524cb5e4"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs of using tooltips (e.g. accessibility, performance) are not visible before the clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-11-29-mui-tooltip.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad70e50ac0a5d45cf5ed1b4a61fed1ced23ce95d4dba120d554f53403b28316"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (how to copy files in Docker) and its consequences/trade-offs are embedded in the How-to section with no dedicated Context/Problem or Consequences section: Add a Context section explaining why copying files between host and container matters (e.g. building multi-stage images, sharing assets), then a Consequences section covering trade-offs like dependency on container ID/name vs volume mounts"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2022-12-28-docker-copy.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec82b2aa22cf76aa80eea3502929d73c15519f07bf7f78d23e4d3896319773a"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is primarily promotional copy with no context/problem and no explicit decision (the hackathon itself is the decision), plus consequences/trade-offs are absent: Replace the announcement content with a focused ADR: state the problem being solved (e.g. lack of an open-source hackathon for Refine developers) and the concrete decision (hackathon date, prizes, team size), then document trade-offs such as how the prize money is allocated or whether teams are allowed to recruit members outside the hackathon"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-01-06-hackaton-january.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0740c26825d53a37b0fe4ac28bf8379a0ccc417f3e7b9e56b07d3500eb9b7cf"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a hackathon winner announcement with no context/problem and no explicit decision (the winners are announced), only a one-line description that reads like a press release: Replace the body with an actual architecture/decision document: state what problem the ADR addresses, the explicit decision (e.g. adopt GraphQL for API layer), and its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-02-28-hackathon-january-winners.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f363bc43b863bf97ed1e4bbd143fd92f1bd7a4f28cca2f103364856c4c57d8b"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is primarily announcement content with no context/problem and no consequences/trade-offs sections: Add a Context/Problem section explaining what v3 was lacking and why v4 fixes it, then a Consequences section covering trade-offs such as reduced bundle size or the codemod process"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-03-13-refine-v4-announcement.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d7e27754d4584f0a047f179d04f571bf291bcf75cf15af4fc8d29289df9d0e"}},{"ruleId":"D20","level":"warning","message":{"text":"Vague title and no context/problem section describing the invoicing problem being solved by this architecture decision: Rename to something like \u0027Invoicer - React PDF Invoice Generator App Architecture\u0027 and add a Context/Problem section explaining why an invoicing app is needed (e.g. existing tools, requirements) before stating the explicit decision"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-04-10-refine-invoicer-1.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc58a27e9e273ce09c763f0d6835e717c877c505744e6c9660428d7cb904ff7"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (CRUD pages for Company/Client/Contact resources using Strapi dataProvider/authProvider props) and consequences/trade-offs are present but the visible text is mostly implementation detail rather than a clear context/problem statement: Add a Context section explaining why CRUD pages matter for an invoice generator app (e.g. managing customer, vendor, contact info efficiently) and a Consequences section on trade-offs like Strapi API token management or auth page boilerplate"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-04-12-refine-invoicer-3.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78589716078bcb3acf9f629f9dbb04df69b90eabcfdcf59c98a9d9f83941155d"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a post/blog describing what will be written rather than an explicit decision with consequences (e.g. Strapi collection/authorization setup and its trade-offs): Add a Consequences section noting the trade-offs of adding CRUD views to the Pdf Invoice Generator app (e.g. increased complexity, need for data permissions) and how it ties into the RefineWeek series goals"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-04-13-refine-invoicer-4.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"720f5241bbdf32d5b0f7c13b97f3846fbd77681edb15de573e681803c010b148"}},{"ruleId":"D20","level":"warning","message":{"text":"No consequences/trade-offs section (e.g. performance cost of rendering PDFs in a modal) present among visible text: Add a Consequences section noting the trade-off of rendering PDFs client-side and how to handle large invoices"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-04-14-refine-invoicer-5.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"618681a66ba45c789b2812af780ed26a18c155a8973c65bc179678f205f98d28"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is pure celebration content with no context/problem and no explicit decision (the hackathon\u0027s purpose, what it addresses, or any constraint being refined), only a list of winners and prizes: Replace the celebratory sections with an objective problem statement (e.g. \u0027hackathons are too short to deliver real impact\u0027) and an explicit decision (e.g. \u0027we will now require hackathon projects to include a measurable outcome such as a live demo or published repo for evaluation\u0027) followed by consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-06-14-refine-hackathon-2.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ded297e02999e55e993c4907ae81ddf135c19da0f6a1634dc30ec775af016212"}},{"ruleId":"D20","level":"warning","message":{"text":"This is a celebratory announcement of winners with no context/problem and no decision (the winning projects are described but there is no architecture or design decision being made), only a list of the top five projects: Replace the body with an actual ADR: state the problem the project addresses, the explicit architectural decision it embodies, and its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-08-04-refine-hackathon-2-winners.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3e021fe379c58872ec0626495b4e6d5cad9c3123bcd5219bd1b5213e54207d"}},{"ruleId":"D20","level":"warning","message":{"text":"The title \u0027How to use Docker Exec command?\u0027 is informative but the body reads more like a list of steps and prerequisites for running the docker exec command rather than a focused decision with consequences: Rephrase the Introduction into a single problem statement (why docker exec matters) plus an explicit Decision section on its purpose, then add Consequences covering trade-offs such as session persistence vs. restart behavior"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-08-18-docker-exec.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"28c5d65e3ccfd3559777998df370993f80cbf4d26d7b4c2113df045fb7dcedd8"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a feature-rich product description with no context/problem and no explicit decision (e.g., what problem this solves or why Refine/GraphQL/Ant Design were chosen), only an authoring guide: Replace the content with a focused ADR: state the concrete problem being solved, the decision (technology stack, specific features to implement), and consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-10-02-refine-crm-overview.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"314cb18d9dbdbff3fadc0cc447b12848ca224ea0ad35c7f4611324f9975b9cae"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a runnable Getting started guide with installation steps (CDN, npm install \u002B import), markup example, and initialization code but no context/problem statement or consequences/trade-offs: Add an introductory Context section explaining why sliders are needed and the shortcomings of alternatives before diving into Swiper\u0027s features"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-12-07-swiper-js.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"adccba57fc5d2391d41ca96ef4728d906d098fa60116e946dfab8e2e73e0e42c"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs (e.g. learning curve for non-CLI users) are not visible before the scanner clips the document: Add a Consequences section noting that the cheat sheet is a reference-style guide rather than an exhaustive decision document and any trade-offs of relying on CLI commands"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-12-15-kubectl-cheat-sheet.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d47a358ec65163c42fc41524d626983e1887d22b122d70cb2890ebe59e1e60e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a tutorial-style guide with only one decision (project planning and concept development) and no explicit decision or consequences; it reads like a long introduction rather than a focused ADR: Convert the text into an ADR by isolating each numbered step as a decision, adding a Decision rationale section explaining why each is required, and a Consequences section on trade-offs (e.g. market research cost vs ROI)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2023-12-26-build-an-app.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1381011881c29c51ddeeb879747ff733e75668dc7701c35ef518734d8e42321a"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision/consequences are present but thin: the body states \u0022you might need to build your own image\u0022 and ends before covering consequences such as container-registry setup cost or the alternative of using a ready-built image; trade-offs are not fully articulated: Add a Consequences section on the registry storage cost (GCP/ECR fees) versus the one-time build, plus an \u0022Alternative: Use a ready-built PostgreSQL image\u0022 option"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-01-22-k8s-postgres.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe76a7e32b499200c8dc1dcfeb0f4a35e50b215faf0fa61c7a62dad8376756e7"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a Docker cheat sheet with installation, version-checking, image-searching/pulling/removal, and a bulleted list of commands; it contains no context/problem statement or consequences/trade-offs.: Add the problem motivating Docker adoption (e.g. portability, isolation) and the decision (keep only one command set per team) with trade-offs such as dependency on Docker desktop for Windows."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-02-12-docker-cheat-sheet.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a52cbe7810c46f74e72155b3b54e6e37aeaff93c114c22aadde3fea65e699f3"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs are absent despite being a real CSS alignment tutorial: Add a Consequences section covering trade-offs such as requiring fixed-height parents for margin-auto or the loss of layout flexibility when using display: flex/grid"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-02-13-css-vertical-align.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eabb21973451fe3424d61422ad3a162be0d600f21190e29be8aaca83cf69203"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs (e.g. learning curve for distributed systems, remote server dependency) are not visible before the clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-02-26-version-control.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6d1c176971f0f9d3333329f3cfa3d1cca857680c9f16531c5cb9dc12c384d8"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a tutorial-style guide with an explicit table-of-contents and detailed subsections (What is CSS Box Shadow / horizontal/vertical offsets / blur radius / spread radius), but the Decision section and consequences/trade-offs are absent; only context/problem and examples are present: Add a short Decision section stating what box-shadow values to use for each purpose, then Consequences noting trade-offs such as performance when multiple shadows are applied"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-02-28-css-box-shadow.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37d8f7c902ba477c418a8bc3247888e252669efdcadf83a07a05b7dd63c92ae"}},{"ruleId":"D20","level":"warning","message":{"text":"The body ends before a decision statement and consequences/trade-offs are visible only beyond the clip marker; the explicit decision and its trade-offs are not yet stated in the visible portion: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-03-05-css-wrap-text.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"255db8a756baec1972c00661cbc0703dc5907797e76c599c1ddd7b58247bc9a2"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly installation and setup steps (virtual environment, install prerequisites, DRF configuration), with only a brief overview/why-choose section and a one-line API creation heading; the context/problem and consequences/trade-offs sections are not present: Add a Context section explaining why REST APIs matter for food delivery apps (data exchange, integration) and a Consequences section covering trade-offs like dependency on DRF, learning curve, and operational complexity"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-04-03-django-rest.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"689e7563048316b58824e6319819303e548edee752e9630b8d5d61e08b2d5c96"}},{"ruleId":"D20","level":"warning","message":{"text":"The visible content is a loose tutorial rather than an explicit Architecture Decision (context/problem \u002B decision \u002B consequences) document: Convert the body into a single Decision by framing each covered topic as a problem/context plus the corresponding decision and its trade-offs."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-04-29-nest-js.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af337fede395821d0ab3eaf8d48853022a4499cf1c7592874123d5336d01aa50"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a pure announcement with no context/problem framing and no explicit decision; it reads like an investor pitch rather than an ADR: Convert the content into a real ADR by identifying the problem/refinement being addressed (e.g. the gap between low-code and scratch for enterprise internal tools), stating the decision (the new product/feature), and documenting consequences/trade-offs"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-05-06-investment-announce.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a04e955dc7c6e76bd752d188ac6b8987019918c0ff5ff74abe00df38a8708e"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly setup/installation content with no context/problem framing or consequences/trade-offs: Add a Context/Problem section explaining why a GraphQL API (not REST) was chosen for the school management system and a Consequences section on trade-offs such as schema evolution friction vs. query flexibility"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-05-07-graphql-with-django.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea26c5a7d5b7f42254774917f944e43f6fa815f2ffe57dc3379de4a35433ce37"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent (the visible text is only an introduction plus prerequisites and a table-of-contents with no explicit decision): Add the actual decision (e.g. \u0022audit app performance using Google Lighthouse\u0022) and its trade-offs (tooling cost, audit frequency) in a Decision section."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-05-24-google-lighthouse.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1c80a45a6a1f4d63c0579de6ea441e1f92dc643a9b5b6727f6c0ce2f46c9bd"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly setup and wireframe content (initializing Refine, selecting options, showing welcome page), with no context/problem or explicit decision/consequences sections: Add a Context section explaining why filtering/search components are needed for the application\u0027s data volume, and a Decision section stating what filter types and search behavior will be implemented; also note any consequences such as performance trade-offs from large datasets"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-06-24-react-content-filtering.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09c14dbbd32636c9b6053594080ffe305c1af61dc4d424c787663b42197fae3"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly setup/installation content (React router V6 prerequisites, installing react-router-dom@6, configuring BrowserRouter in index.js) and routes before the decision/usage of useNavigate hook appears: Insert a dedicated section explaining how to call useNavigate() to perform a redirect from within components, with an example showing navigate({ replace: true }) and its consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-06-24-router-use-navigate.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0e6ef7b520a8fdc3e6e9a9d56d456f6869928af8b24802e952da0fa12e0de1"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a feature list (Streamlined Library Integration, Account-Based Boilerplate Management, Continuous Updates and Maintenance, Batteries loaded, Quickly share previews, Configure in the browser) with no context/problem statement or consequences/trade-offs: Add an Introduction section stating the problem Refine.new solves (e.g. boilerplate creation without codegen, one-size-fits-all project setup) and a Consequences section covering trade-offs such as the 720-combination search burden and the \u0027batteries-loaded\u0027 assumption that all features are present."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-07-25-refine-new-part-1.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ca4203319e6afcd713b88dd0c0025967bd5cbe71f7739155fdd71b18502334"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs (e.g. learning curve, ecosystem/tooling gap) are not visible before the clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-07-30-vite-js.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"833fd5df1c29c84e2ae4e4bf60c9cda441b14c33a6eed01375b34c5abc94d5a5"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (how to install/use Zustand in React projects) and consequences/trade-offs are present but buried under the \u0027What is Zustand?\u0027 explanation; a dedicated Getting started section would make this ADR clear: Add an explicit Decision section covering installation commands, key hooks/API, and a brief Consequences section on trade-offs (e.g. no global state provider abstraction vs. smaller boilerplate)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-07-31-zustand.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d99ca9b327cc4a5026ae5bba30cb28301ed25da208c6b79d325208f1620f40"}},{"ruleId":"D20","level":"warning","message":{"text":"The body begins with setup (project setup, refine.new tool, project steps), but it does not yet state the decision or its consequences; the visible content is mostly boilerplate scaffolding before any real component code appears: Replace the scaffolded setup with a one-paragraph context/problem and an explicit Decision section describing how to create a responsive tooltip using react-tooltip (props, positioning, accessibility), then add Consequences noting trade-offs such as dependency on react-tooltip and its own styling"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-08-04-react-tooltip.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96007e05dc2234bd3dd46c9795ea8a5be6b2f1418729b1b02c58d06e40b0d3fb"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is primarily installation and attribute-reference content with no context/problem framing or consequences/trade-offs: Add a Context/Problem section explaining why HTMX matters (e.g. the need for markup-driven interactivity) and a Consequences section on trade-offs such as dependency on CDNs vs npm install, browser compatibility, and learning curve"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-06-htmx.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc20dc82c86adb7a6db152b14cc966a08828ab67269700c52fca6234d8a2073"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are present but thin: the body states what TanStack Table and React Table are (headless, framework agnostic), with a list of covered topics (\u0027Advanced Column Customization in React Table\u0027, \u0027Accessibility Features in React Table\u0027) and ends before stating any concrete adapter usage or trade-offs.: Add one sentence on how to install the @tanstack/react-table adapter and an explicit decision (e.g. \u0022use the @tanstack/react-table adapter for data grids\u0022) with its consequences, such as the loss of custom styling and the need to manage state outside the adapter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-06-react-table.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b487ae1dca3d32112d6d73784fb7e9abc9d35c132623afc1884d739a7b01d85"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent from the visible text (the body is mostly installation steps for Next.js setup with MantineProvider, no explicit decision or trade-offs): Add a Decision section stating what concrete component/library will be used and why, plus Consequences covering trade-offs such as package dependency size and learning curve"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-09-mantine-ui.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c74b5bd753ea38dbe49f2eca756b6e00e2ac7a1a17fce4c16839b76fb49a981"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs are implied in the comparison but not explicitly stated (e.g. no npm ecosystem tools, learning curve for new users): Add a Consequences section noting that pnpm lacks npm features like global scripts and packages, and note any trade-off of requiring pnpm as the default package manager"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-11-pnpm-guide.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"992afc6f78a9d4ec82d01f204c1079374913b0e6c241b988076d4d740c52af2e"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (which frameworks to master) is stated in the title but the body gives no rationale for choosing them over alternatives and no consequences/trade-offs: Add a Context section explaining why each framework was selected (e.g. React\u0027s ecosystem, Svelte\u0027s simplicity, Vue\u0027s ease of learning) and a Consequences section on trade-offs such as learning curve or tooling dependency"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-16-frameworks-2024.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9078972eee78de5ecac9e284b76f5d1337d99207322bcd48ea04080a579f2736"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent from the visible text (only frameworks with links and a brief framework description appear): Add a Decision section stating which frameworks were selected or recommended for each category (React/Vue/Angular/Blazor) and a Consequences section covering trade-offs such as learning curve, ecosystem maturity, and cross-platform support"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-18-admin-panel-frameworks.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee06b1d6cf3a7be1478917b6c0e32958e2840681d5f0f430f5d0d05b10cdcb6f"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs of choosing gRPC vs REST are not visible before the clip: Add a Consequences section covering trade-offs such as latency/round-trip cost for gRPC versus request/response overhead for REST"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-09-24-grpc-vs-rest.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f9dcba18e5bc64216c9b67c113c3ecf2f800b6c5b74ffd764ceebaf0e09463"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a tutorial table of contents and prerequisites listing plus an introductory paragraph that states what one will learn but gives no context/problem or explicit decision; the real content (the nine covered topics) is cut by the scanner clip marker: Replace the intro with a problem statement motivating Astro (e.g. static site generation vs traditional CMS, speed, ease of setup), and extract the decision (setup steps, project structure, component building) into its own section so it is explicit and consequences/trade-offs are covered"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-10-22-astro-js.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca595436c8d82635cc734ef2415ef9cde0f9ba37c9cfeb9466dafcc7b183f302"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is an explanatory tutorial rather than a formally structured ADR; trade-offs and consequences are not present in the visible text (only \u0027round corners\u0027 vs elliptical corners explained): Convert this into a decision document: state which corner-shape to use by default, when to prefer one over the other, and any performance or layout consequences"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-10-23-css-rounded-corners.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe276d37ee02347f2c33ca5a4137ce9e94e12751e64ff114d3cff0a7458bd70"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs (e.g. over-context usage, performance cost) are not visible before the clip marker: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-10-30-react-context.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2da28b61f9046390dec32426d990a40ea79e3f93dbc4696a093984d882234043"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is a long documentation post about using the keyof operator to define advanced types in TypeScript with examples (the title \u0027Building components with Radix UI\u0027 is unrelated), not an ADR: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-11-06-radix-ui.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e25d248c241c3117f61891a43464ea04d4eabb666e58aa597e6556768e4316e"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (introducing six editors with pros/cons) is stated but the body clips mid-Introduction before a dedicated comparison table or full coverage of each editor\u0027s strengths and weaknesses: Add a dedicated section comparing each listed editor (CodeSandbox, Codepen, JSFiddle, StackBlitz, Glitch, Repl.it) side-by-side by feature set, cost, ease-of-use, and use case. The clip occurs before the comparison table is shown."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-11-11-online-ide.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade9734d8408d950aef2483af9b5f0f36f6c70271bc250a7165eb24fc304a97f"}},{"ruleId":"D20","level":"warning","message":{"text":"Consequences/trade-offs (e.g. learning curve for Go/parallel model) are not visible before the clip: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-11-12-esbuild.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"903d0c39b3a79df1b96f937f28ebfc27f37585c296581c757079eee6fe60c7a4"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly setup/project-setup content with no context/problem framing or consequences/trade-offs: Add a Context section explaining why CSS Grid was chosen over Flexbox for this project and the trade-offs of using Tailwind\u0027s grid classes (e.g. needing to customize tailwind.config.js, learning curve) before stating the decision."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-12-18-tailwind-grid.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aaaf0e19c91e82dfb96371d48c73853855dd9afcb42077b5104fb11bb47446b"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision/consequences (getting started with the card component, variants like outlined/image cards) fall past the clip marker and cannot be confirmed missing: "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-12-26-mui-card.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19d75416a7ec0c4542a5d319a4a905a1d71352fc1ebb2f24c6a651f160493ae"}},{"ruleId":"D20","level":"warning","message":{"text":"Decision and consequences are absent from the visible text (only introduction \u002B table-of-contents plus a one-line description of the article\u0027s purpose): Add a Decision section stating what substring() usage is being documented or clarified, and a Consequences section noting trade-offs such as the difference between slice/substr and substring"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2024-12-31-js-substring.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"526de45ccdb2b59e757d65f1fc1c154ce2658accb5b278f4d804624285d42221"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (how to install and use React Slick in a project) and consequences/trade-offs are present but deferred past the clip; only context/problem and an informative title are visible: Ensure the body ends with a concrete Decision section covering installation, import syntax, and usage code, plus Consequences noting trade-offs such as third-party dependency cost or learning curve"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-01-02-react-slick.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ed1bae33321421c0507160d9f0d20b20c914cc3ff275e6cc19c70f73ad459f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body is mostly benefit-driven with no context/problem and no explicit decision (e.g. \u0022use FastAPI instead of Django/Flask\u0022): Add a Context section stating the problem being solved (slow Python backend frameworks) and an Explicit Decision section comparing FastAPI to alternatives, then Consequences covering trade-offs such as learning curve for new developers"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-01-09-fast-api.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74ec35a5949a66dec0114cd3779f0fc13b23307bda6158a332bc3eec38c82d6a"}},{"ruleId":"D20","level":"warning","message":{"text":"The title \u0027Essentials of TypeScript Classes\u0027 is informative but the body is primarily a tutorial listing features (type annotations, readonly fields, parameter properties, generics, implements), with no context/problem and no consequences/trade-offs section: Add an explicit Context/Problem section explaining why class typing matters for developers working with interfaces or when multiple implementations are needed, then document the trade-offs of adding type annotations to every member"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-01-13-ts-classes.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad0746cee4a39978ec711b8f3f82a772edf8184a3342ccb3b892379d7ca4239"}},{"ruleId":"D20","level":"warning","message":{"text":"The decision (what Bolt.new does and why it matters) is clear but the body ends before covering consequences/trade-offs such as cost, token limits, or how it compares to alternatives: Add a Consequences section addressing pricing tiers, token usage costs, and the trade-off of relying on AI-generated code versus full control over design decisions"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-02-05-bolt-new.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bb0fe8ce5895cf42d992efed9443bab408d451bf0150a718e2adb00564f4dc1"}},{"ruleId":"D20","level":"warning","message":{"text":"No context/problem section (the body begins with an announcement of Claude 4 without stating the problem being solved) and no consequences/trade-offs: Add a Context/Problem section explaining why Refine needs this upgrade (e.g. current output quality, cost, or time spent on styling/configuration) before the decision, then document trade-offs such as increased Refine Credits usage and integration effort"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-05-26-claude4.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1327abc1b0a273e2786df40fe84f1cb902dfe7b1b7e03986fc858671249667f"}},{"ruleId":"D20","level":"warning","message":{"text":"The body clips before the decision\u0027s consequences/trade-offs are visible (the article \u0027explores both their successes and the obstacles they encountered along the way\u0027 but the actual trade-offs of competing against giants like Google/Apple/Mozilla are not shown in the excerpt): "},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-10-08-arc-browser-journey.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d22904cbdc1e78fc08a4fdebafdec15e475a979ebbbe650a960b054761a568c"}},{"ruleId":"D20","level":"warning","message":{"text":"The body compares React Query/TanStack Query/SWR but does not state the problem they solve and only briefly states the decision (React Query is TanStack Query), with no consequences/trade-offs: Add a Context section explaining what each library solves (e.g. caching, background refetching, optimistic updates) for readers who are new to them, and a Consequences section covering trade-offs like API surface area cost vs the single-benefit of rebranding"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/blog/2025-12-01-tanstack-vs-swr.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb33e5e04d7a0a836975e8342914abb2ed3a009eb275951e84a5798f887b435"}},{"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"acf9dab5b3bfcad0f4e0d21b1ca8b5aa2e941cfc91191bf32ac60cbbb58f6c56"},"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":"d6710ba65e224cd5a085ded52f2df9984446137c54fd1c428d66658a5f4ec1fc"},"taxa":[{"id":"CWE-78","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":"5f2fbc015a63809f5d788b2086c942efa1c7d1a5320f1f5e241ca358bfbff74b"},"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":"5f2fbc015a63809f5d788b2086c942efa1c7d1a5320f1f5e241ca358bfbff74b"},"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":"5f2fbc015a63809f5d788b2086c942efa1c7d1a5320f1f5e241ca358bfbff74b"},"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":"d9731553cf55684ebaa203f9fce7d8e1838df685b29d7b5e26b8cb6ac2c39bfe"},"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":"d9731553cf55684ebaa203f9fce7d8e1838df685b29d7b5e26b8cb6ac2c39bfe"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"bb25aabff75bb6240860bfc935c9aaa0f3461a0d935a21aca582706a907cc8bf"},"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":"5f2bc622d50b7fee89e7775dfc08bc0d78f323838bc3ef235e5233e816591e6f"},"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":"5f2bc622d50b7fee89e7775dfc08bc0d78f323838bc3ef235e5233e816591e6f"},"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":"5f2bc622d50b7fee89e7775dfc08bc0d78f323838bc3ef235e5233e816591e6f"},"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":"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":"c5a43d3b5a4a24f7bc9ee0ce72ebd69cf4d40f01b34ecac8981b12961fbbb2c0"}},{"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":"4b80b78f787105cb30a4642bc2ce144267029765795dcba2026b50b77d6a47a5"}},{"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":"4b80b78f787105cb30a4642bc2ce144267029765795dcba2026b50b77d6a47a5"}},{"ruleId":"D31","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":"c06129564eb2a710389735b43e7a344e50989880df6fff4d3d34b8e7a513d8b8"}},{"ruleId":"D31","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":"c83d3d394b1c77a7c510d7a9b40af264a957799323ec3bfbd96959bc94a5fd25"}},{"ruleId":"D31","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":"933dce98ac9c09204a495ecd3ba01e208177a7b61931de7f2e6c36b451d940f6"}},{"ruleId":"D31","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":"1c739e9487482e9eb3f721e65c42afb009499f4010375b893aeac5b777ba34e9"}},{"ruleId":"D31","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":"97f8a4f5499a9e587ddafa3a8de48ad935908118a39185de515dcb017111189f"}},{"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":"7ca19a27086984fc96b9a4d9b8b31f35d22188bf0546f4b34579cd1f81362c43"}},{"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":"18eb898ff845e0389970748a18bc6399ab61a3f1fdeeff1cfdf4530420b838fa"}},{"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":"175166f2ea4fca693e8204041af41b479c3e9d72cfd6a0195d742164830ded2e"}},{"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":"d6a82bb9ce2acbe79eab01bc8dbf896eefa63c5270566e12f3d94ef6b510e038"}},{"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":"6b5cd6bfcb9336866ead2b5cf2dd9728e552cce9a4d6d905eefe34fa3c4ef8b7"}},{"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":"22c0e71fd7f7d73fa907e0686f2f2c573bded565f230c7e9ef321b30f7347888"}},{"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":"4306911f9d6441894d3ad63efb29cac852ad017ad60b3360e4dcbedbb9275a5c"}},{"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":"50c89d331529885169750e518eb8a1bf5695e5a7f5b5b89ac146c283c2e362d6"}},{"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":"b95c3b57ed5ed11a0fe604c7625cc61c48aa2bca530f4f90856977542be4f63a"}},{"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":"d428f68bacef9f8157c425540c3dc57743428b95c54e2a062646136ab604668e"}},{"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":"b72548ad3d992d17e04f1bc3a9691fbf48770f4bba69fd68a0b984a093d5dc59"}},{"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":"20038ea7354cc0aa86e256acae2c0c4ecbe082f2d40e8e47bf8fd88152d57c59"}},{"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":"dfac9f6b58c31c3c827666d038af9988d26462dd21f9a697b3a8276a9a4bf119"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: docgen.js \u2194 docgen.ts: \u0060documentation/plugins/docgen.js\u0060 and \u0060documentation/plugins/docgen.ts\u0060 change together 82% of the time (18 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/plugins/docgen.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c6d4cc3c5866dcc97a93dba9c8c81136cfdd5d0bbeff5dc7b6e5ee3a4e1a0c"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: e2e.ts \u2194 index.d.ts: \u0060cypress/support/e2e.ts\u0060 and \u0060cypress/support/index.d.ts\u0060 change together 77% of the time (10 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"cypress/support/e2e.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ddeb667f17f5ab47454dcd8f8347371d2682605729fdc41fc3de15f683b9e4"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.ts \u2194 integrations.ts: \u0060documentation/src/assets/integration-icons/index.ts\u0060 and \u0060documentation/src/assets/integrations.ts\u0060 change together 68% of the time (19 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"documentation/src/assets/integration-icons/index.ts"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8346843cdbdf0901c15eacee9af4d0787bd15d53794023bb0168cd9f952d1033"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: map.tsx \u2194 check-package.ts: \u0060packages/live-previews/src/scope/map.tsx\u0060 and \u0060packages/live-previews/src/utils/check-package.ts\u0060 change together 62% of the time (10 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/live-previews/src/scope/map.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1c29c9bc0973d7c43e9baf6b4532a626bfa7911324452257b6abfcdb4f70fb"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: preview.tsx \u2194 check-package.ts: \u0060packages/live-previews/pages/preview.tsx\u0060 and \u0060packages/live-previews/src/utils/check-package.ts\u0060 change together 62% of the time (10 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/live-previews/pages/preview.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bd3614075689cdfdd7cfa804020984d9903870b18eb697e3e75699b41c18fac"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.tsx \u2194 index.ts: \u0060packages/cli/src/commands/check-updates/index.tsx\u0060 and \u0060packages/cli/src/commands/update/interactive/index.ts\u0060 change together 60% of the time (6 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/cli/src/commands/check-updates/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"40439ec095a6418308906d129229f6bc0a6c41767d2f879c98c69552ca1565bc"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.tsx \u2194 index.tsx: \u0060packages/mui/src/components/buttons/edit/index.tsx\u0060 and \u0060packages/mui/src/components/buttons/show/index.tsx\u0060 change together 57% of the time (23 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/mui/src/components/buttons/edit/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0752d5543741f4f7c29ea79d4bdf0ae11409073a9eb649520e06db3fa2ada5b8"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.tsx \u2194 index.tsx: \u0060packages/mui/src/components/buttons/create/index.tsx\u0060 and \u0060packages/mui/src/components/buttons/list/index.tsx\u0060 change together 57% of the time (23 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/mui/src/components/buttons/create/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d560b875746540aca98a84eaffc1ea568095438eaaf70aa2c8e038eebeba287"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.tsx \u2194 index.tsx: \u0060packages/mui/src/components/buttons/clone/index.tsx\u0060 and \u0060packages/mui/src/components/buttons/show/index.tsx\u0060 change together 57% of the time (23 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/mui/src/components/buttons/clone/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbe3738bd5721453e972b9256d2049afb3f3a056ec307f968c81e9bcfe5a004"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: index.tsx \u2194 index.tsx: \u0060packages/mui/src/components/buttons/clone/index.tsx\u0060 and \u0060packages/mui/src/components/buttons/list/index.tsx\u0060 change together 57% of the time (23 shared commits) with no explicit dependency \u2014 a hidden/logical coupling. If they belong together, co-locate them; if not, break the coupling."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"packages/mui/src/components/buttons/clone/index.tsx"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbe3738bd5721453e972b9256d2049afb3f3a056ec307f968c81e9bcfe5a004"}},{"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":"d9672904708519fe22ffd293ff552ec940c3e299722213c8bb664fba30ba971f"}},{"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":"474de1d369621e928ac5300daf4bc4a10395d97ac2d6a841b939b4ae771f3bd6"}},{"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":"1e758d1d262c0615e85a89af6d8f2776d153e145b295c98416b84a083f889a57"}},{"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":"da14c462654925e6e91ac88557cb5a8b5582b0221c93710f58a8269e63a2572a"}},{"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":"8c2ea111ea2ede34ba059d08dd295f1db0fe7bc905357972d9f6de61c023257b"}},{"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":"e4d5e443cc57631bb34bd9afa16ed81ea11616b3b6ad9047ea4e94816a32be02"}},{"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":"27fddbb2da50772b67df6dc34cfb15b23abb143a6f876649518055c2dc34a7c1"}},{"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":"b2ceda991a1bfd0932b1fb1da1a1254a965450758791295d6e0617a72b48ffcd"}},{"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":"2ca788d8fe11c277aea89e72df19a6a24bc51a24601a20489d91e587ce41d235"}},{"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":"a6a8c9217ed6b0459a7184c2ae53b70d329d2d8d9d4ca20591018a2f2ea6c146"}},{"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":"a82e2685ffdfed7c247a36cfc62bc829bd122112a16af103021883aa5954baed"}},{"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":"b768c4998ac5798abe564d74cffcf2a3160aa50e70cdffd63528c8d916949bec"}},{"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":"6c576215b836a9199229a3d1c202c33ff3f35de6fd31a256208a15c0c294635d"}},{"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":"b3e0d3a71e2972989055dc1e8c7f89d845a22a565dbc1fca5a8391454e61c502"}},{"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":"11da00a13f5493713a6262a466c7f99380a415fdd8e83dffb978affa6305a806"}},{"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":"510b8cb6f39034066b36f58e61657c31cb8ba6f0165c491e9362e27689fb89dd"}},{"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":"5120d845442010f7dfd94c99fb556274be164d3231b26821d8813e86f4ebdfe2"}},{"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":"ba8a96f24e1d3f1085b80f0f2585a689635f6036cc59020bd0b26aa49413ae5f"}},{"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":"ac5bbdf12646b043bc7f46976665f15e62d1b2204d2d93f297fa8d09e16ecf5a"}},{"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":"82727cff601716619f6097eb6c86c3af5a71af86fad6e25871052281f1d4d9c7"}},{"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":"7aa23e28dd530827af8a4524391e580289b1dd3c5314d1ca7e6c7620e3f7b869"}},{"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":"9a666d0b9d4168b0890731dd357b387e40f3a02051ba73223a4200eb0d7730b9"}},{"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":"0a02e98b03cbd9d0c200d9ded339fe6784d00ce9451d5252f67007ac8f4b79fa"}},{"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":"f9c04b1d6f608fa2d2e9076be61baf72116c6470ebf907d45b12f69819e132d6"}},{"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":"1f450a79bfc3bc3ee5811bc6831842561b314f0f13ef420434db2404a8ad3d21"}},{"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":"7deb29934e29a543b581bfe69b0c8fe124ab9ec41f3b1f7cfc81d066396f3bc2"}},{"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":"f7377a409682fccb3e475227a6d662cffb2706f7813833aae179673f09c6d88f"}},{"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":"f19a09bb1b697416164f7516e9e3df42d5d395af3027bb2214a039a51d47bb6d"}},{"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":"7259a44a7c25ee4ee25c0dcb2472eaaf6414b26271c78197db33b50448bebb49"}},{"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":"bfe195dfd7c9256cdba520f7d889808893f7f501fbb64a70d02ed851523109ea"}},{"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":"f1b3dabfa19186a8876b92565575a95e8446e4db6b9f00a71c041ca6ccd48c66"}},{"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":"bad3fda1cabe91b10ffc0eff31423a9abf4b57ff7595bd358fa518f691756944"}},{"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":"5ca861e79911e594fa9e6381156a591f83060fdbdbed3654410c521f6cf48e99"}},{"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":"a3add06262a58261016e06c14817b50bb9a320cd08ff91dd89211e9e7db95bf6"}},{"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":"13c4c48d91cda6191981164e914ceea2a3ac8898288f07e9473423ffe59403d0"}},{"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":"3d3b5666f1860ff11e85153f22bc49865062585e8e3441ccedfcf395fe533dc2"}},{"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":"e072b48dd1015541c372277ccfefbae79c6c865135824ac3966e0d5099ae67bd"}},{"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":"d89ad6588acbf48746f531e7f5b2bcd955a9bd7d1600c004bc772c2ca8413d51"}},{"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":"a2491a8da33f278f1cb096d7de741f39ac97c16a1144f75f57d256b5c17265c3"}},{"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":"85110d3b0e1d9079a89c3290e04aacfc518aedfbeb5336910e9dceb8db87e5be"}},{"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":"e2eb384cdfd40b0a7da62293e88220f671be9346c62af4eaa774ed7c21a52c9f"}},{"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":"fa94f4a189bd0eff8d929e4c2a9885e0650b8afcb901553aae79064c214f872c"}},{"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":"b41da511fabd365bbe74b7686ef546372d8537f8fe1b5d01d93fd62d1eb16074"}},{"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":"94fa4ee6db8abeb719bb59ead314ac9a1756d9e368a4e564051752233e77615c"}},{"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":"029783d40b5c303ff364cd710170b90668803c7dad57e0dd440d2564754fe4a3"}},{"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":"0e95d118fb836c8728b6949c7861c56538baa10957637dfcf2e0c156c6749808"}},{"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":"9ce4dd6ace02d02aa3c7422626e2d7c985a45b57b84f1593fba78682d998ec04"}},{"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":"235432923324163b3ac3fa4ea9ad857c2c66730e0f21d84d8f545400191370ef"}},{"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":"d5193af8761c8fd24d6af6b77ec6dec3b108409f9ad98b1ff9c28152b9dc6707"}},{"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":"dc3146034330a6833c32d40018ed66c30a32726ff86cdbf3a5dbc0bc182f21ff"}}],"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-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":125,"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."]}]}