{"$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":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"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"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"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":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"],"owasp":"A07:2025"}},{"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"]},{"target":{"id":"A05:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"],"owasp":"A05:2025"}},{"id":"D30","name":"Dependency Vulnerabilities","shortDescription":{"text":"Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D30","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"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"],"owasp":"A03:2025"}},{"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"]},{"target":{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"],"owasp":"A03:2025"}},{"id":"D43","name":"Malicious Dependencies","shortDescription":{"text":"Malicious Dependencies"},"helpUri":"https://codehealth.canine.dev/dimensions/D43","relationships":[{"target":{"id":"CWE-506","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"A08:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-506"],"owasp":"A08:2025"}},{"id":"D44","name":"Platform End-of-Life","shortDescription":{"text":"Platform End-of-Life"},"helpUri":"https://codehealth.canine.dev/dimensions/D44"},{"id":"AC1","name":"Text alternatives","shortDescription":{"text":"Text alternatives"},"helpUri":"https://codehealth.canine.dev/dimensions/AC1"},{"id":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC4","name":"Keyboard semantics","shortDescription":{"text":"Keyboard semantics"},"helpUri":"https://codehealth.canine.dev/dimensions/AC4"},{"id":"AC5","name":"ARIA correctness","shortDescription":{"text":"ARIA correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/AC5"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX3","name":"Project dependency cycles","shortDescription":{"text":"Project dependency cycles"},"helpUri":"https://codehealth.canine.dev/dimensions/AX3"},{"id":"AX4","name":"Dependency direction","shortDescription":{"text":"Dependency direction"},"helpUri":"https://codehealth.canine.dev/dimensions/AX4"},{"id":"AXB2","name":"Runtime readiness","shortDescription":{"text":"Runtime readiness"},"helpUri":"https://codehealth.canine.dev/dimensions/AXB2"},{"id":"C2","name":"Access Controls","shortDescription":{"text":"Access Controls"},"helpUri":"https://codehealth.canine.dev/dimensions/C2"},{"id":"ED5","name":"Idempotency","shortDescription":{"text":"Idempotency"},"helpUri":"https://codehealth.canine.dev/dimensions/ED5"},{"id":"M1","name":"Documentation (README)","shortDescription":{"text":"Documentation (README)"},"helpUri":"https://codehealth.canine.dev/dimensions/M1"},{"id":"M2","name":"Architecture documentation","shortDescription":{"text":"Architecture documentation"},"helpUri":"https://codehealth.canine.dev/dimensions/M2"},{"id":"M3","name":"Folder \u0026 project structure","shortDescription":{"text":"Folder \u0026 project structure"},"helpUri":"https://codehealth.canine.dev/dimensions/M3"},{"id":"M4","name":"Documentation accuracy","shortDescription":{"text":"Documentation accuracy"},"helpUri":"https://codehealth.canine.dev/dimensions/M4"},{"id":"P1","name":"CI/CD gates","shortDescription":{"text":"CI/CD gates"},"helpUri":"https://codehealth.canine.dev/dimensions/P1"},{"id":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"id":"P3","name":"Security \u0026 performance tooling","shortDescription":{"text":"Security \u0026 performance tooling"},"helpUri":"https://codehealth.canine.dev/dimensions/P3"},{"id":"P4","name":"Deployment \u0026 Rollback","shortDescription":{"text":"Deployment \u0026 Rollback"},"helpUri":"https://codehealth.canine.dev/dimensions/P4"},{"id":"P6","name":"Release Hygiene","shortDescription":{"text":"Release Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/P6"},{"id":"SC1","name":"Supply-chain hygiene","shortDescription":{"text":"Supply-chain hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/SC1"},{"id":"X1","name":"Async correctness","shortDescription":{"text":"Async correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X1"},{"id":"X10","name":"Duplicated predicate","shortDescription":{"text":"Duplicated predicate"},"helpUri":"https://codehealth.canine.dev/dimensions/X10"},{"id":"X12","name":"Unreachable branch","shortDescription":{"text":"Unreachable branch"},"helpUri":"https://codehealth.canine.dev/dimensions/X12"},{"id":"X13","name":"Undrained process stream","shortDescription":{"text":"Undrained process stream"},"helpUri":"https://codehealth.canine.dev/dimensions/X13"},{"id":"X14","name":"Bypassable address classification","shortDescription":{"text":"Bypassable address classification"},"helpUri":"https://codehealth.canine.dev/dimensions/X14"},{"id":"X15","name":"Unvalidated length from an untrusted reader","shortDescription":{"text":"Unvalidated length from an untrusted reader"},"helpUri":"https://codehealth.canine.dev/dimensions/X15"},{"id":"X16","name":"Unfloored truncation loop","shortDescription":{"text":"Unfloored truncation loop"},"helpUri":"https://codehealth.canine.dev/dimensions/X16"},{"id":"X18","name":"Disposal-pattern correctness","shortDescription":{"text":"Disposal-pattern correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/X18"},{"id":"X19","name":"Unrestored process-global state","shortDescription":{"text":"Unrestored process-global state"},"helpUri":"https://codehealth.canine.dev/dimensions/X19"},{"id":"X20","name":"Mistyped argument guard","shortDescription":{"text":"Mistyped argument guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X20"},{"id":"X21","name":"Side-effecting pattern guard","shortDescription":{"text":"Side-effecting pattern guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X21"},{"id":"X22","name":"Contradicted release guard","shortDescription":{"text":"Contradicted release guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X22"},{"id":"X23","name":"Unguarded diagnostic materialisation","shortDescription":{"text":"Unguarded diagnostic materialisation"},"helpUri":"https://codehealth.canine.dev/dimensions/X23"},{"id":"X25","name":"Inert configuration knob","shortDescription":{"text":"Inert configuration knob"},"helpUri":"https://codehealth.canine.dev/dimensions/X25"},{"id":"X26","name":"Unsynchronised callback handoff","shortDescription":{"text":"Unsynchronised callback handoff"},"helpUri":"https://codehealth.canine.dev/dimensions/X26"},{"id":"X28","name":"Index access outside its own emptiness guard","shortDescription":{"text":"Index access outside its own emptiness guard"},"helpUri":"https://codehealth.canine.dev/dimensions/X28"},{"id":"X29","name":"Per-element action decided by a fixed element","shortDescription":{"text":"Per-element action decided by a fixed element"},"helpUri":"https://codehealth.canine.dev/dimensions/X29"},{"id":"X3","name":"Exception handling","shortDescription":{"text":"Exception handling"},"helpUri":"https://codehealth.canine.dev/dimensions/X3"},{"id":"X30","name":"Support guard that admits what it rejects","shortDescription":{"text":"Support guard that admits what it rejects"},"helpUri":"https://codehealth.canine.dev/dimensions/X30"},{"id":"X32","name":"Type resolved by simple name across every loaded assembly","shortDescription":{"text":"Type resolved by simple name across every loaded assembly"},"helpUri":"https://codehealth.canine.dev/dimensions/X32"},{"id":"X5","name":"Nullable reference types","shortDescription":{"text":"Nullable reference types"},"helpUri":"https://codehealth.canine.dev/dimensions/X5"},{"id":"X6","name":"Hand-rolled structured-format parsing","shortDescription":{"text":"Hand-rolled structured-format parsing"},"helpUri":"https://codehealth.canine.dev/dimensions/X6"},{"id":"X7","name":"Silent fallback defaults","shortDescription":{"text":"Silent fallback defaults"},"helpUri":"https://codehealth.canine.dev/dimensions/X7"},{"id":"X9","name":"Subsumed condition operand","shortDescription":{"text":"Subsumed condition operand"},"helpUri":"https://codehealth.canine.dev/dimensions/X9"}]}},"results":[{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): src/Console/PackageResources/AdminlteAssetsResource.php:186-197 | src/Console/PackageResources/PluginsResource.php:272-283 | src/Console/PackageResources/VendorAssetsResource.php:386-397 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. \u2605 These copies have DRIFTED, and that is worth reading before extracting anything: just before the matched lines, \u0060src/Console/PackageResources/VendorAssetsResource.php:380\u0060 calls \u0060exists\u0060 and \u0060src/Console/PackageResources/AdminlteAssetsResource.php:183\u0060 does not \u2014 after which the two agree again for 2 more lines. One of those two behaviours is the intended one and the other is what a copy-paste left behind, so decide which BEFORE unifying them: extracting the shared part will silently settle it, and if the copy that skips the call is the wrong one, that bug is already live."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/PackageResources/AdminlteAssetsResource.php"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"227ba70b01178bbdc08a7addc2778f7eb195244726a8e6182513d86b210b27bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): src/Console/PackageResources/AdminlteAssetsResource.php:248-257 | src/Console/PackageResources/PluginsResource.php:345-354 | src/Console/PackageResources/VendorAssetsResource.php:427-436 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/PackageResources/AdminlteAssetsResource.php"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b024b5b4aee535983664cb812276ee86f57cd01cccadd84f826190b5107760"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): src/View/Components/Form/Input.php:19-34 | src/View/Components/Form/Select.php:28-43 | src/View/Components/Form/Textarea.php:19-34 \u2014 before extracting anything, compare \u0060src/View/Components/Form/Input.php\u0060 and \u0060src/View/Components/Form/Textarea.php\u0060 as WHOLE FILES: 84% of the shorter file\u0027s lines also appear in the other, so this reads as one file having been copied from the other rather than as a helper waiting to be extracted. The 1 duplicated block(s) this scan matched between them are fragments of that copy, not the extent of it \u2014 treat the file pair as the unit. If that is what happened, the fix is to keep one copy and have the other call it (or delete it), which resolves this row and its siblings together \u2014 extracting one helper per block leaves the fork in place. Read the line range as the matched WINDOW rather than a finished unit: at \u0060src/View/Components/Form/Input.php:19\u0060 it runs out through the closing brace of the declaration holding it and carries on into the declaration that follows \u2014 the window is the tail of one member plus the head of the next, so no call can be substituted for those exact lines, and the smallest declaration that contains all of them is the type they sit in. The repeated unit is the member each site sits in: where those members\u0027 bodies are the same, move one whole member to the shared location and have the others delegate to it; where the copies are a run of near-identical overloads or wrappers that differ only in their signatures, the repetition IS the run \u2014 a one-line delegation has no helper inside it to lift \u2014 so generate the run from the set it enumerates, or accept it and keep each member\u0027s own documentation with it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Form/Input.php"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf8b0d2320dbfd34d12e0c2f9384a77eecfb4312532e8f3726eca06b1396cba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): src/Console/AdminLtePluginCommand.php:259-277 | src/Console/AdminLteStatusCommand.php:199-217 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/AdminLtePluginCommand.php"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30d2761d8be001ef034f4e5e9ed08ad142ca331fa27e8540d8633524a73ef24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): src/Console/PackageResources/AuthViewsResource.php:59-63 | src/Console/PackageResources/ErrorViewsResource.php:67-71 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/PackageResources/AuthViewsResource.php"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49dc9c445510bb5c1fea45295ca6bbea0b789e8460fa08747be9593684b75ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/Console/PackageResources/AuthViewsResource.php:75-81 | src/Console/PackageResources/ErrorViewsResource.php:81-87 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/PackageResources/AuthViewsResource.php"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfa70529711df9d7760b49557a46b7aa0e9bc6911aff7c4aa43de99f0f861d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/View/Components/Layout/ContentHeader.php:112-118 | src/View/Components/Widget/Card.php:421-427 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Layout/ContentHeader.php"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd9a68e9909e8dac9042c8d534b680a7aafe0f38f4edd109fc37cb0b329b8c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): src/View/Components/Tool/Modal.php:209-216 | src/View/Components/Widget/Callout.php:86-93 | src/View/Components/Widget/InfoBox.php:132-139 | src/View/Components/Widget/Ribbon.php:91-98 | src/View/Components/Widget/SmallBox.php:99-106 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 5 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 5 times. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Tool/Modal.php"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"3725c780518a5977af51abbeefeeffe167e5a014778ddfb4b1bd94cc5f36fa80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/View/Components/Widget/Progress.php:213-219 | src/View/Components/Widget/Ribbon.php:75-81 | src/View/Components/Widget/UserBlock.php:78-84 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Widget/Progress.php"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a5556f35724a78c00b58221db0433ea9176b5a64bb819b3b7957ec3e195faf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): src/Console/PackageResources/AuthRoutesResource.php:19-30 | src/Console/PackageResources/ConfigResource.php:19-30 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Console/PackageResources/AuthRoutesResource.php"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f760570eca32f4fec9465a4189c069d4390d049f0a6ddc0c0db618a1965c969"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 5): src/View/Components/Form/InputGroupComponent.php:169-175 | src/View/Components/Layout/NavbarCustomMenu.php:44-50 | src/View/Components/Widget/DirectChat.php:285-291 | src/View/Components/Widget/DirectChat.php:301-307 | src/View/Components/Widget/DirectChat.php:317-323 \u2014 there are 5 copies across 3 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Form/InputGroupComponent.php"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"df676134fb5ded52c7d478b6ae0fda506e7f11ec15edfeb4e0685c48218f0919"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/View/Components/Layout/NavbarDropdown.php:295-301 | src/View/Components/Layout/NavbarNotification.php:141-147 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Layout/NavbarDropdown.php"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"569d6450cfa34c3734796de850c40fb0e62ddecf55ef2dbad66fc33b3f28aa48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): src/View/Components/Layout/NavbarDropdown.php:314-320 | src/View/Components/Layout/NavbarDropdownItem.php:173-179 | src/View/Components/Layout/NavbarNotification.php:160-166 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Layout/NavbarDropdown.php"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"07dd192fe7739f0c7caaf42c1ceb17ad346546ae00a0db98228e828e5bbce70d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): src/View/Components/Tool/Datatable.php:217-223 | src/View/Components/Widget/ProfileWidget.php:177-183 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The \u0060return\u0060 at the foot of the matched lines is the enclosing body\u0027s own terminal exit, not an early one: it moves with them unchanged, and each site calls the extracted unit from the position that \u0060return\u0060 occupied \u2014 no decision has to be handed back and re-acted on."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Tool/Datatable.php"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e0af04d9f40e1d6253f2e63ebae8856e382ec4de2b4d8c383bd8f0236bcada7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DirectChat (LCOM4 7): DirectChat\u0027s methods fall into 7 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 7 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Widget/DirectChat.php"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"21df41bd7419072b5873a846f60db9053ec8eb2d37f3b0412206a89485913434"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NavbarDropdown (LCOM4 6): NavbarDropdown\u0027s methods fall into 6 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 6 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Layout/NavbarDropdown.php"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a181b4730051f02774cc4a1b4f5c6e8f43ff296790ebf232d310f0b5ffc476f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InputGroupComponent (LCOM4 4): InputGroupComponent\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Form/InputGroupComponent.php"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"898d9392d3efe742e087704c33a2e463cd850b17414dddef6bf72af854356352"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Modal (LCOM4 4): Modal\u0027s methods fall into 4 groups that share no field and call none of each other, against a bar of more than 3 for this run (LCOM4, configurable \u2014 your repository\u0027s bar is the one quoted here). Each group is a set of methods reachable from one another through shared fields or direct calls, so 4 groups means the type has that many internally-connected clusters with nothing tying them together. Types whose shape makes a high count expected \u2014 and which would otherwise dominate this list \u2014 are excluded before this row is raised, so this is a genuine split candidate rather than a metric reading. It is still a shape, not a defect: confirm the groups match responsibilities you can name before splitting."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Tool/Modal.php"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e2452753c0ab62dfe8a41d499a404b6d270b348eecbeff32771b18c98d7090"}},{"ruleId":"D13","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":"9e5b9dd97139430d05edecfdfd8164b57bec4bb1b302673d5b5fb8a517163740"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D13","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":"5cc25dfd42489f7187ec8938a7b2fb76d2ace76aca4db9cf9a8ab82d2f666eb5"},"taxa":[{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"A07:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 36 significant file(s) lose their only recent owner: resources/views/partials/cwrapper/iframe-assets.blade.php, src/Console/PackageResources/VendorAssetsResource.php, src/View/Components/Widget/Card.php, src/View/Components/Widget/DirectChat.php, src/AdminLteServiceProvider.php, src/Menu/Builder.php, src/View/Components/Tool/Datatable.php, src/View/Components/Widget/Progress.php (\u002B28 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"91a26f1b83ed4390c87b301cd558454899a4803c3bf9fd27b7c39dd4d50e83ae"}},{"ruleId":"D26","level":"note","message":{"text":"Projects may be oversized for their cohesion: 1 of 1 project(s) overshoot their size bounds, lowering Project Cohesion to 0.0/10. The most over is \u0060(repository root)\u0060 (13817 LoC, 105 module-visible types across 16 directories). Review these for cohesion \u2014 draw the boundary inside the module first (group each responsibility into its own package or directory and keep the cross-boundary members non-public), since splitting a published package moves types between packages and breaks consumers."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d5a94650dc74886a0f1f08eb9fb6775f1fc395279ef7e901c970c9d26f767a72"}},{"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":"0cc1d50d6d3be42411d202f2f0d59fdebd9fcee091ec545b828b5bcc55fbb2bd"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"6d8e5626dcad9e406118f8ecefc48d831e459926a51b0d385b8d51d969c08cf8"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"3e5ca4acb4c4be9518df62adee9a525b40fb41bda90772ff07ed478adbb4b458"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"ade059454c8b17b5431691b9fba046db103d10e0dfd7c752640bc4595a13b5ca"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"6ab88d9e173e6c9a9880c3281671adae28cb598cd4c8927786d16bcfb6b3ded0"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f08f5c726eaf53a89dd5d45515608764a3937b2c03fcc8d540564e869308de26"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"5e466f61a7bea0abc777e9dca16dd11615ef22e3eb6b753bca7f4165acf534d0"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"d4e40aa0d7259a865d593f6cb8f706a6d284a02c218bcc48c86388d2701e994e"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"1c740c6d651376057ed15d56b7f35a142368281459290e59355917cb5d4666dd"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"843ae48828152f0209b0ede8faafc9537e8e63ff3c40f3963a9dfa60cfef69b2"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"79c7eb04888fe6b538cb6a6d66bd9e75e69d6d6ca8b095e6f09a2ffe440f5c48"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"33523e121e2265e51bd460943b4938127274e9a29ac25f900f05c357594b42e3"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"a75da11d650460e97d4953fd3b104d027046ce88fc639c27e4e08fc0334727e7"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"f098f4f0a7efd6ea4c28241c5ffc7cfcdb991b2e0aa699010038db71f6a44c3f"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"365b04574d552650e645b82eb3db9e984b0037ea310f61056b47b42b236c43b1"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"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":"119c6a18209c740481cee472fed5352cbe076651a47d9e86b21e5566391d3826"},"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"}},{"id":"A03:2025","toolComponent":{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61"}}]},{"ruleId":"D30","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":"b694dace86fb7d15873b2ddd65002632093db12bc6146d23cde087273cc549f5"},"properties":{"dependency":{"package":"vite","version":"8.2.2","advisory":"[GHSA redacted]","aliases":["[CVE redacted]","[CVE redacted]","[CVE redacted]","[GHSA redacted]","[GHSA redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D30","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":"a143e49def50f6267786be10dea52190e0d09245364207bf6c8be5fcae3b49ff"},"properties":{"dependency":{"package":"source-map-js","version":"1.2.1","advisory":"[GHSA redacted]","aliases":["[CVE redacted]"],"reachability":{"kind":"unknown"}}}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned files with no living knowledge: 1 of 96 analysed file(s) have no living knowledge left \u2014 their last meaningful change has decayed away, so if one breaks, no one currently understands it (counted over production source files of roughly 2,400 bytes or more, excluding vendored, generated and example/demo trees and test files identified by path convention, largest first; 96 of the 206 production source files in this repository met that bar). None is large enough to earn a read-through of its own, so this row stands in for the per-file rows rather than raising one each \u2014 most significant first: src/View/Components/Form/Options.php. Attach the read to the next change that touches one of them: have a second person review that change, and leave behind a short comment or test recording what the file is for, so the knowledge comes back at the cost of a change you were making anyway."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D34","level":"note","message":{"text":"Orphaned file: No one still active in this repository holds living knowledge of this file: everyone who made a meaningful change to it has gone quiet, or what the current team did to it (moves, reformatting, log-level or import edits, renames) never needed understanding it. If it breaks, no one currently understands it. Attach the read to the next change that touches it: have a second person review that change, and leave behind a short comment or test recording what the file is for."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Form/Options.php"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a254efc1fa7118e6eed6bfcf44e4c498de9222e987c51cbf1d6a17659caeeea"}},{"ruleId":"D35","level":"error","message":{"text":"Boundary-crossing change coupling: adminlte.php \u2194 LayoutHelper.php: \u0060config/adminlte.php\u0060 (context config) and \u0060src/Helpers/LayoutHelper.php\u0060 (context Helpers) sit in DIFFERENT parts of the tree yet change together 64% of the time (7 of the 11 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well \u2014 a repo-wide or module-wide sweep is evidence about the sweep rather than about any pair inside it and is left out of BOTH sides of this ratio, while a dependency bump, a formatter/rename sweep, or a commit whose edit to one of the two files was a tool directive such as //go:generate or whitespace only is left out of the shared count ONLY, so the two sides are not taken over identical commit sets) \u2014 the bounded-context boundary may be in the wrong place, or one context is leaking into the other. This is the behavioural boundary violation a static scan can\u0027t see. You can check this without leaving the row: of the 7 shared commits counted here, the most recent 3 are \u006021b94f6d\u0060 Improve preloader animation (#1255); \u006054f3b5ae\u0060 Add preloader animation (#1112); \u00604307ce77\u0060 Revert \u0022AdminLTE  IFrame (#921)\u0022 \u2014 run \u0060git show\u0060 on any of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"config/adminlte.php"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6eb7321226c8b3e1b8107ba11922e643e266ea44213de90f8622f89a78c6fc"}},{"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"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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"},"taxa":[{"id":"CICD-SEC-9","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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"},"taxa":[{"id":"CICD-SEC-8","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"2284995d249406d27cdead34f9e13b6fbbcbaa2ed989fc24d0f1ca55962f4826"},"taxa":[{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"d1d800009f93a595154490880f34243d25a155aff08646889c5ae0c4b6aad3ef"},"taxa":[{"id":"CICD-SEC-4","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"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":"c593d4dbd23724f337bfb8d2c1653812f143ae255bd9b59d4b3e9c37779fa6f4"},"taxa":[{"id":"CICD-SEC-3","toolComponent":{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35"}}]},{"ruleId":"AC2","level":"error","message":{"text":"\u003Cbutton\u003E with no accessible text: A button with no text and no aria-label has no accessible name. Add visible text or an aria-label (an icon-only button still needs one)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/auth/passwords/confirm.blade.php"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"c998b6ebaf30af62a818002f5c35f54e9cb7e9e844c07d7b0606e21827e7ab35"}},{"ruleId":"AC2","level":"error","message":{"text":"Link with no accessible name: A link with no text, aria-label or labelled child (e.g. an icon-only link) has no accessible name, so assistive tech can\u0027t say where it goes. Add visible text or an aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/partials/cwrapper/cwrapper-iframe.blade.php"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"240ab8503a8834ceca42f706c54c0e6b78432a12e97b7f096e2188071511a821"}},{"ruleId":"AC2","level":"error","message":{"text":"Link with no accessible name: A link with no text, aria-label or labelled child (e.g. an icon-only link) has no accessible name, so assistive tech can\u0027t say where it goes. Add visible text or an aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/partials/cwrapper/cwrapper-iframe.blade.php"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"5725fedd0b44f3abf9893b88aefb46a618d21b8c80424f09fcf18d1f147e9858"}},{"ruleId":"AC2","level":"error","message":{"text":"Link with no accessible name: A link with no text, aria-label or labelled child (e.g. an icon-only link) has no accessible name, so assistive tech can\u0027t say where it goes. Add visible text or an aria-label."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/partials/cwrapper/cwrapper-iframe.blade.php"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"f295d75458b5f25d5d24599b01f81e43c3ee4f3c10a11f52d7793b327f363be2"}},{"ruleId":"AC3","level":"warning","message":{"text":"Heading level jumps from h1 to h3: Skipping heading levels breaks the document outline assistive tech relies on. Don\u0027t jump levels \u2014 increase by at most one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/auth/auth-page.blade.php"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0216b990cfd9b45dd75a65d21b346fb922d5ce330d34af009638c8f14a4ae06"}},{"ruleId":"AC3","level":"warning","message":{"text":"Heading level jumps from h3 to h5: Skipping heading levels breaks the document outline assistive tech relies on. Don\u0027t jump levels \u2014 increase by at most one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/components/widget/profile-widget.blade.php"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"dca5e1704b7f7c414e50e7ea16b5440d72e145dc2094719bc362116d835004f4"}},{"ruleId":"AC3","level":"warning","message":{"text":"Heading level jumps from h3 to h5: Skipping heading levels breaks the document outline assistive tech relies on. Don\u0027t jump levels \u2014 increase by at most one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/components/widget/profile-widget.blade.php"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62fea8abf70e4e37c61da5924b34e481312555850e41e5f1556721394ce501a"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/master.blade.php"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31860e8c0c6ccfce137d5ddb5620c1dd3a4f47eb2791f6e0ad59821992563ab"}},{"ruleId":"AC4","level":"warning","message":{"text":"Link used as a button (placeholder href): An \u003Ca href=\u0022#\u0022\u003E (or javascript:) with a click handler is a button dressed as a link \u2014 it announces the wrong role and stops working without JS. Use a \u003Cbutton\u003E for an action."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/partials/navbar/menu-item-dropdown-user-menu.blade.php"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5c2afe2e34c93204df561b698db7cef8c7c52170e2d04c1f7a588f0e6b1ddfe"}},{"ruleId":"AC5","level":"error","message":{"text":"aria-hidden hides a focusable element: aria-hidden=\u0022true\u0022 here hides the subtree from assistive tech, but a focusable descendant stays in the tab order \u2014 a keyboard user can land on a control screen readers can\u0027t see. Add inert, take the descendants out of the tab order (tabindex=\u0022-1\u0022), or drop aria-hidden."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/components/tool/modal.blade.php"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7797891f107852f1075c1e08eef2ea1a5a58b6df1de5e9c37ebcc6a53a4fd98"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 no a11y linter (an accessibility check that can read your UI \u2014 no component framework was detected and your pages are rendered by server-side templates, which neither the JSX/Vue ESLint plugins nor the HTML-template linters can parse; run axe/pa11y over the rendered pages, or assert the accessibility invariants over that rendered HTML in the test suite you already have) and no axe/pa11y/Lighthouse in tests or CI. Start by running that check over your rendered pages in CI. What was searched, so you can tell an absence from a miss: the 67 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"ruleId":"C2","level":"warning","message":{"text":"No authorization: This repository serves requests \u2014 a Laravel route (Route::post) (routes/web.php:21) \u2014 and no route guard, auth-gate middleware, global guard or imperative check that refuses a caller (401/403, an Unauthorized/Forbidden error) was found: its endpoints may be unprotected."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"routes/web.php"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec2aa080ba1f2b2d545acad9ebc97e421682e40e95bc40a7209dd501cbc3e07"}},{"ruleId":"M2","level":"note","message":{"text":"No ADRs: No Architecture Decision Records found \u2014 no conventional ADR directory, no numbered \u0060NNNN-title\u0060 documents in any markup this check reads, and nothing ADR-shaped by content. Design rationale recorded elsewhere (a design-notes tree, a mailing list, pull-request discussion) is not visible to this check and is not re-findable per decision, so a future maintainer cannot ask why one choice was made and get an answer."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"670b3d6e36a756d63097d0dfbf90afd5fc761308800b9354894a07c3f4e4aa14"}},{"ruleId":"M2","level":"note","message":{"text":"No architecture diagram/doc: No C4/Structurizr/PlantUML/Mermaid/Graphviz/D2 diagram, no drawn diagram named for the architecture, no file named \u0060architecture\u0060 or \u0060design\u0060 in any markup this check reads, and nothing in the README, docs or contributor guides that announces the shape \u2014 no \u0060## Architecture\u0060 heading, no \u0022architecture overview\u0022/\u0022high-level design\u0022 phrasing, no \u0022the architecture is \u2026\u0022 introduction, no guided code tour. A shape laid out in prose that never names itself as the architecture is not visible to this check, and neither is one kept outside the repository, so this row reports the absence of a re-findable shape document \u2014 not evidence that nobody wrote the shape down."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"0c190e7c159d1850ee706c3ac4486e151e8a4fe169de4bf61436b9f399654f06"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/overview/requirements\u0060, but \u0060sections/overview/requirements\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"7894a03ce1035f4139834b1a8d075ed2db20b4f0c67746ce6f73da3cf06e74f5"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/overview/installation\u0060, but \u0060sections/overview/installation\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"9799b6a2eaf4870250a98f3b917cb9cb8cef0ac67e58cb03a20f714b63901dd4"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d8019c4cbca232cc7f380d82a78f9eb41a8b3d20c8637b8af615aa8725e0bc"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/basic_configuration\u0060, but \u0060sections/configuration/basic_configuration\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c68903965aa89afc406d06c576354edcfe0668870e612e3f2f4c0403f6000d3"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/menu\u0060, but \u0060sections/configuration/menu\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a5d3dd1c9e42e65021161fe244067a61ce090f75da95b53243cba873863d9d"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/layout_and_styling\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"997891d42ecd5c4ef53e0228ec43bb2bce7e76be94000b7875b6e58e4cd4caf7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/components/components_categories\u0060, but \u0060sections/components/components_categories\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc2c7098b5f4ac8a95b417bf55ee7e369976844809a53952d35ef54dd926b1e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/overview/authentication_views\u0060, but \u0060sections/overview/authentication_views\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbb57e97d61f57452b1d69f0f1e3826773b7bb1085ce5993f5cd5b36bc6e55ef"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/plugins\u0060, but \u0060sections/configuration/plugins\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5ecdf45e321789c002a8369ac6ebe2d3faeeaef75e3f25e21ecd692bd1d6ad"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/iframe_mode\u0060, but \u0060sections/configuration/iframe_mode\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"50aa2aa6c5f4a983d0ca91f51c9f9229d27f2c26b96ebbbb20a4d8dd857ea1c9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/translations\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1b07f6026b6c45481d06887d94128accfc912a7dba5c42104b0cec4f18e38f2"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/index.md links to \u0060/sections/configuration/views_customization\u0060, but \u0060sections/configuration/views_customization\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/index.md"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f79409b09c2ffdf41f00a711913ead1943921d3db0f13241ec8248265b08a1"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md links to \u0060/sections/components/basic_forms_components\u0060, but \u0060sections/components/basic_forms_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"2191e22df83d3830aafd5b8e76f9adbce83e5cec38d7803434acb02775155521"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md links to \u0060/sections/configuration/plugins\u0060, but \u0060sections/configuration/plugins\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d055398e664809098978694982b832e28e74246e025bf821f190d40734e8051"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md links to \u0060/sections/overview/installation\u0060, but \u0060sections/overview/installation\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b0b55f4c5edb99d4c002e978f5e7ecdd487c43941d878da9d3aaf1fd733f0a"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md installs \u0060flatpickr\u0060 (\u0060npm i flatpickr@^4.6\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d08057c8b9498354dec8711bb5adf1b7bd04089f073343366dbbcab627c244e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md links to \u0060/sections/configuration/other#livewire\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d3150443faedb571c08349fd4cf306aabef47d05c5f020cf3895879f9a4121"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md installs \u0060nouislider\u0060 (\u0060npm i nouislider@^15.8\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"188f9a6d3c0ac37deec9bf8db7bf19540cd27072458f41b523521c1698adfee3"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md installs \u0060tom-select\u0060 (\u0060npm i tom-select@^2.3\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab22b246d8ce80bfb37fce2cb9d53cdcb93f666fa9a3e18a76ec344a0d9830b8"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md installs \u0060quill\u0060 (\u0060npm i quill@^2.0\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":1025}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e219a91869698d27465fa63800ddd7910014c27a93b1a103f4c63f3c2572de5"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/advanced_forms_components.md names \u0060quill.bubble.css\u0060, but no file or folder \u0060quill.bubble.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/advanced_forms_components.md"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"e466f65f690d31439abe59f3525940409f1bfcdd00e7980fca525cde3f9732c7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d989bda6d551ca6c2aa2a5c0a1550df2765b7e77e5415a1bd216d1fa3b9b395"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md links to \u0060/sections/components/components_categories#how-to-use-a-component\u0060, but \u0060sections/components/components_categories\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba702a2cbbe14393275e0083e7a759d581e2ca51b556f9ca741ccbc6eb7cdc71"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md links to \u0060/sections/components/advanced_forms_components\u0060, but \u0060sections/components/advanced_forms_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec44533eafc6ea94e5ac5409ff24ba6887c465b1faa4ded5f56041a5f85963e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md links to \u0060/sections/components/widget_components#card\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"785387fba3d1c63cd23d0caff6dc8fff3373ac0f2cf2895a343b3da397a46070"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md links to \u0060/sections/configuration/plugins\u0060, but \u0060sections/configuration/plugins\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1d0f34ea1c2ae40438ff93c7e8404c54db8527c6cc630627868368bf92a47a"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md names \u0060adminlte-select2.min.css\u0060, but no file or folder \u0060adminlte-select2.min.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"adbb5ceb1175d2987749d27a44d7a8edb29da5cfe327ec9aafab1b5fc946c7bf"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/basic_forms_components.md installs \u0060select2\u0060 (\u0060npm i select2@^4.1\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/basic_forms_components.md"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4dac9e64886a2f5187913670113d4a8265389323b5398d00f5d45fc45187dd"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/components/basic_forms_components\u0060, but \u0060sections/components/basic_forms_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"06decb65379ac3208c7c047d51bfa0dd49e3a781f2b6740792a7c46197cc01d7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/components/advanced_forms_components\u0060, but \u0060sections/components/advanced_forms_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ae257ec4cb38ccc4b2f92e75a185ee96615b05258c415a35e2c2106fe9081a"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/components/layout_components\u0060, but \u0060sections/components/layout_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d7536c75814d0626db04f4f8924b077c5403545642292838b2a350871005b5e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/configuration/special_menu_items#navbar-darkmode-widget\u0060, but \u0060sections/configuration/special_menu_items\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfeb2da5181adde024c6524a1e501ff8aef12708bd22043e32c0ccb66422cd8"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/components/tool_components\u0060, but \u0060sections/components/tool_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc078a9b800c68ad84be9204c7e4be1656ea01d1187b4a8a48a824aba5373a94"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/components/widget_components\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"d55d008a93ab103337263b01a55ae99c88df95e3b3a45c2d2fb4357dc425b96c"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e4bb949cab42abf1725193b97be75c0df369b18a16f7a4d9c3592225d5c9ea9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_categories.md links to \u0060/sections/configuration/plugins\u0060, but \u0060sections/configuration/plugins\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_categories.md"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9a8b7f8ec772c49824774e688402aaed37030b3b11db471b4b2920f77e2898"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/components_customization.md names Bootstrap 4, but the manifest declares \u0060bootstrap\u0060 ^5.3.8. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/components_customization.md"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"619bbaaefc0c876bd26c3a29a8987c78cff25b74f785b71cfc78d330df563f4f"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/layout_components.md links to \u0060/sections/configuration/special_menu_items#navbar-darkmode-widget\u0060, but \u0060sections/configuration/special_menu_items\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/layout_components.md"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a84e28fa54954f6d590b049fbf06ed8e5193d1e631257ed43699c683382e275e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/layout_components.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/layout_components.md"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ae73ab6211370f3c5317b051667d0005983f9a137762bc0ea86a0c916c6256"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/layout_components.md links to \u0060/sections/configuration/layout_and_styling#layout\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/layout_components.md"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0f38d3232495589e67307054289dc9f60e11d9df3e668406cd3490691f3a3e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/layout_components.md links to \u0060/sections/components/widget_components#about-the-theme-attribute\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/layout_components.md"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e46185ce79b13588b001e304416d990069757609b3d1629331c6eccc6468ef"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md links to \u0060/sections/configuration/plugins\u0060, but \u0060sections/configuration/plugins\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"59de7750abe262a285a12772608675a02753e8f04cf585125812a7863f1f491c"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md links to \u0060/sections/configuration/translations#accessibility-strings\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"9decd2531860aded63f58e35f449fa4cb787746bb282569c3c8a0aa4f29e4651"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060datatables.net\u0060 (\u0060npm i datatables.net@^2.1 datatables.net-bs5\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff07e20781479b3aa6f606fb1e90bb9612db5625f386bc87255a75872fe62a6"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060datatables.net-bs5\u0060 (\u0060npm i datatables.net@^2.1 datatables.net-bs5\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"122d30d996e0cddd7e38438cababc8e11873805779ba9d67ad4bd2291d3e11b5"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060datatables.net-buttons\u0060 (\u0060npm i datatables.net-buttons@^4.0 datatables.net-buttons-bs5 jszip pdfmake\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"466491cec116dea210a9ab24ff6d3e5d5a24282e07c0ac46af31f03f6cd908ab"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060datatables.net-buttons-bs5\u0060 (\u0060npm i datatables.net-buttons@^4.0 datatables.net-buttons-bs5 jszip pdfmake\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff09d23fcbdcb9109fbaa458688d131497b7ee61e55994a29c0a072610bb2d1c"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060jszip\u0060 (\u0060npm i datatables.net-buttons@^4.0 datatables.net-buttons-bs5 jszip pdfmake\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a050d323b87c65beebef7b3ac7d2da65b65e159a502240f04cf5bd9cfe7447e0"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md installs \u0060pdfmake\u0060 (\u0060npm i datatables.net-buttons@^4.0 datatables.net-buttons-bs5 jszip pdfmake\u0060), but no package.json declares it. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fb402f36b160bbb360c39f35aaaac874852968a87060cd00ebf540701bf158"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md links to \u0060/sections/configuration/other#the-contrast-correction\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e5fef463cece50939f2c3da66439c0947223482c57f83c0a97f54962944a856"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/tool_components.md links to \u0060/sections/components/widget_components#about-the-theme-attribute\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/tool_components.md"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"956babfde611fce58c87157bf4ea144b6163895adcb023b5b260342a9b05149e"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/widget_components.md names \u0060adminlte-colors-v3.css\u0060, but no file or folder \u0060adminlte-colors-v3.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/widget_components.md"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24117e9da7572268e48cdb8f629c3e1a2beda43afa8cce62000ab769e71ae13"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/widget_components.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/widget_components.md"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6cbab057d51cd4eaef084a1dd26b5f4c63a9d3aa77574523b7f70687262805"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/widget_components.md links to \u0060/sections/configuration/other#the-contrast-correction\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/widget_components.md"},"region":{"startLine":1223}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2b38571223b03d43075024de5cfc8f5f85a078ee19a4d39a9f1e202aadb659"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/components/widget_components.md links to \u0060/sections/components/tool_components#datatables\u0060, but \u0060sections/components/tool_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/components/widget_components.md"},"region":{"startLine":1656}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a567ef658dbf577b1d86ab661565190066afbe5261fce17837fd7769e14b8c1"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/basic_configuration.md links to \u0060/sections/configuration/other#assets\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/basic_configuration.md"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab6cd1f714a5358ffc57774b8dd0956a864003650b53c3685e7ff6b1fd477c57"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/basic_configuration.md links to \u0060/sections/configuration/layout_and_styling#color-mode\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/basic_configuration.md"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"060768e9bd01b6789a2cc01ded7848dc548e2e48bd7f9710a6999a5cb9b7ac78"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/basic_configuration.md links to \u0060/sections/configuration/special_menu_items#navbar-darkmode-widget\u0060, but \u0060sections/configuration/special_menu_items\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/basic_configuration.md"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"57dd2e65049ac8b19622649d994dd00eaa3c228b93f481e6a4b31c476395c76d"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/iframe_mode.md links to \u0060/sections/overview/usage#tabbed-iframe-mode\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/iframe_mode.md"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab658110163051aa30d51380f981b26691054b7d5b6052d68b17774a1c27264"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/iframe_mode.md links to \u0060/sections/configuration/translations\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/iframe_mode.md"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6304954ff589746d2c0eab47aae22d3343853401ccaa16bf29dac41eed7f0f1"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/layout_and_styling.md links to \u0060/sections/configuration/basic_configuration#urls\u0060, but \u0060sections/configuration/basic_configuration\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/layout_and_styling.md"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"9036787b2d46f38ab8ee57a8d09e2769b45beae8255800a51def9f8543c75981"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/layout_and_styling.md links to \u0060/sections/overview/events#routes-registered-by-the-package\u0060, but \u0060sections/overview/events\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/layout_and_styling.md"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"d94899cdbb628995a45efab67129ff7479ed5952fbb1d157c67dd73b8d546ea0"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/layout_and_styling.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/layout_and_styling.md"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"7752f82716ea1e92f61a4f55474b766916185de122eae59b56789670243a86a7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/layout_and_styling.md links to \u0060/sections/configuration/translations#accessibility-strings\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/layout_and_styling.md"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5185c8ff224aa95b937a3e3c692bd88841559eb809c34c450133d50ac751dff"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/menu.md links to \u0060/sections/configuration/translations\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/menu.md"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc4e2c39f0a9a5b7433ae52bf9c38924f5b647c759ab4324262a08fd7b80546"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md links to \u0060/sections/configuration/basic_configuration#google-fonts\u0060, but \u0060sections/configuration/basic_configuration\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a280e5834f572e8e44c72bf86dae100cbb4e8e8bacb2a8bb0978a0c04b39a04d"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md names \u0060adminlte-colors.css\u0060, but no file or folder \u0060adminlte-colors.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6e2454ee01c7a762069fe8b00956f6ce12f13509bcddde1250406148015bc10"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md names \u0060adminlte-colors-v3.css\u0060, but no file or folder \u0060adminlte-colors-v3.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc265f245b11a09b1d071a29f2f6c234b4cf0672ceaf322ac598ec83b40d05a"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md links to \u0060/sections/components/widget_components#small-box\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"98add218dccd97628538efdd65b86afeabc82a8637fbd49cd5a69186eac08622"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md links to \u0060/sections/components/tool_components#modal\u0060, but \u0060sections/components/tool_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02c4b2ecf08070a90691192f1610488b5eb7f37f88a0577b0274bf008e34dcc"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md links to \u0060/sections/configuration/layout_and_styling#color-mode\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"60368bdd5673e12a7b8864a90db5a01af13586d3dadc8e3c400c72b8d1d3d4d4"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md names \u0060resources/css/app.css\u0060, but no file or folder \u0060resources/css/app.css\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bec7c1ace423abac090d78beb083cbd56e4926ee1e3cbe348c31361f9791f7c"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/other.md names \u0060resources/js/app.js\u0060, but no file or folder \u0060resources/js/app.js\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/other.md"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b57089519675b2c64ff81ce4337a74a70735b4737325342940732c22b1068c"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/plugins.md links to \u0060/sections/overview/artisan_console_commands#the-adminlte-plugins-command\u0060, but \u0060sections/overview/artisan_console_commands\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/plugins.md"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7c43109d4db8fa96bd409051c939ca6c62f54655501a2b142ebc409df11eb0"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/plugins.md links to \u0060/sections/configuration/other#assets\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/plugins.md"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43e75539b2163d5e7e94bebfe350700e9341a9ad963da0853fde11e517cb636"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/special_menu_items.md links to \u0060/imgs/configuration/special_menu_items/sidebar-menu-search.png\u0060, but \u0060imgs/configuration/special_menu_items/sidebar-menu-search.png\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/special_menu_items.md"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c02b8fa8e3fcb19e075b4fb0023d53d32bb7e4eaa60cc746e203ab5ddcea479"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/special_menu_items.md links to \u0060/imgs/configuration/special_menu_items/navbar-search-open.png\u0060, but \u0060imgs/configuration/special_menu_items/navbar-search-open.png\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/special_menu_items.md"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"3143930db4203604d346731c7fbd2c40ff1f2331f0bce59a1ca187c89037ce7b"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/special_menu_items.md links to \u0060/sections/configuration/layout_and_styling#color-mode\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/special_menu_items.md"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8451ae00de535e05a3790185721d047a7efab50b5deef9d035e581f65ebbaa0"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/special_menu_items.md links to \u0060/imgs/configuration/special_menu_items/dark-mode-button.png\u0060, but \u0060imgs/configuration/special_menu_items/dark-mode-button.png\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/special_menu_items.md"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee3b80a7c015330c2e1ed7b1a7ef9072c0193c8ff1c95374943960b9c63080d"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/overview/authentication_views\u0060, but \u0060sections/overview/authentication_views\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"d756113daab8bb762ecf5b21a7b2c8a02014eeb5d37eff0c7f6960e4065da877"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/configuration/views_customization#error-views\u0060, but \u0060sections/configuration/views_customization\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c9c8a52beac008b9d05267d5b85cf4f8d9fa7b12ced4f012c2f7a65d2b3f3b"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/components/widget_components#direct-chat\u0060, but \u0060sections/components/widget_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b9c38756baccc4534bd6e59a0d5dc65d0e429f212c3ba00e3955494c9f19d5"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/components/tool_components#datatables\u0060, but \u0060sections/components/tool_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a9bf5833c162c94d75e420035b86315cb9edf3e5989830647350ff117be98ef"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/configuration/special_menu_items#navbar-fullscreen-widget\u0060, but \u0060sections/configuration/special_menu_items\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"865ecb823fff35feff54bb1498eaaac4ed75f544596236711a0a01c2b414d1d3"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/configuration/layout_and_styling#right-sidebar\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73b27aff3bfb01402b3db77588c82dad0ac8c544bebe7426e56aa961917839b"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/translations.md links to \u0060/sections/components/layout_components#content-header\u0060, but \u0060sections/components/layout_components\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/translations.md"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e921d30d51c18d73f5af8c191d42e742a06f2aa28ae653566bafabcb1a77c7a9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/views_customization.md links to \u0060/sections/overview/updating\u0060, but \u0060sections/overview/updating\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/views_customization.md"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58c63979fd041d7ac2b3fd830bf9545a33f1735de20157e929540e0eb85d66b"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/views_customization.md names Bootstrap 4, but the manifest declares \u0060bootstrap\u0060 ^5.3.8. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/views_customization.md"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7c3877c7f9517d169f81fabf124241b3a50a9237ca2f02c24844aac2ab13650"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/views_customization.md links to \u0060/sections/overview/upgrading_from_3x\u0060, but \u0060sections/overview/upgrading_from_3x\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/views_customization.md"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"3790e2d704b07621882f00432f9f7b6cb57a5e5b8c7d8544aaee1bac454f2858"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/configuration/views_customization.md links to \u0060/sections/configuration/translations#accessibility-strings\u0060, but \u0060sections/configuration/translations\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/configuration/views_customization.md"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc3992823c1e440524c3b4310a25d0a232457d57e72b7eaf386882ca3b906ad"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/artisan_console_commands.md links to \u0060/sections/overview/updating\u0060, but \u0060sections/overview/updating\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/artisan_console_commands.md"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"cffa47411e69550b75f7210af4c25c39ff82d352b89c65f018440a6b9a5def68"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/artisan_console_commands.md names \u0060public/vendor\u0060, but no file or folder \u0060public/vendor\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/artisan_console_commands.md"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a921c91869534811e31e227f091b94a97e17c46cbedcaeddb32c61c2b683054"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/authentication_views.md links to \u0060/sections/configuration/layout_and_styling\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/authentication_views.md"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"83cff09f7ba02fc2eecc752e85302fd7fbc7b4be38ba427dbd8d3795d87a25ac"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/authentication_views.md names \u0060adminlte.lockscreen.lock\u0060, but no file or folder \u0060adminlte.lockscreen.lock\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/authentication_views.md"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"188d8d80f126e3c8df53c7658b1d04d9ce164f9d1bdbab4f06f0cbc16c6afd57"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/events.md links to \u0060/sections/configuration/menu#dynamic-menu-config\u0060, but \u0060sections/configuration/menu\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/events.md"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea8a4f09596586f753a859ca51362e3c7be13031c7763c929a44904b4890640"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/events.md links to \u0060/sections/configuration/layout_and_styling#color-mode\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/events.md"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a50c9a70a8f680e580e48f1261b73ce7bf7f04f4df7f05115f2f3f9e03fb3e7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/events.md links to \u0060/sections/overview/authentication_views#the-lockscreen\u0060, but \u0060sections/overview/authentication_views\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/events.md"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"25c908d4c76094d2c6e33cf7587cfdf9c3115723e14a170bb1762e081ad811d9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/events.md names \u0060adminlte.lockscreen.lock\u0060, but no file or folder \u0060adminlte.lockscreen.lock\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/events.md"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec3fcdea0a6db7ccac8b0f0457b95c26991ab47de4042906d6895b165ee1c3b"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/installation.md links to \u0060/sections/overview/updating\u0060, but \u0060sections/overview/updating\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/installation.md"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdea9a5588097e0bfa250866eb1f385382f2a711a71ed1ed99954b5593a59b7"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/installation.md names \u0060lang/vendor/adminlte/\u0060, but no file or folder \u0060lang/vendor/adminlte\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/installation.md"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00695bb194431ec49e223010c2bb972b72a55ee8b8379f49ac1218ddc99ce7d"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/installation.md links to \u0060/sections/configuration/other#assets\u0060, but \u0060sections/configuration/other\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/installation.md"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6bd7b5a8afd7c3845bb17d91427e37f5727f95eddf672749a125775b8cf787"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/installation.md links to \u0060/sections/overview/usage\u0060, but \u0060sections/overview/usage\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/installation.md"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b8509b397237bc302c979eb16f734f97afa59bba5c244d7d7b7f09f09878a2"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md names \u0060resources/views/welcome.blade.php\u0060, but no file or folder \u0060resources/views/welcome.blade.php\u0060 exists. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d3f6b8a260f9127a07e247c027ec6a374f901a0d21963953467d36fa8d626ae"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md links to \u0060/sections/overview/authentication_views\u0060, but \u0060sections/overview/authentication_views\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f03e4934b0b10964d0f34c5b6862a9a1ac72e454f0b8326d54b21bb8a4a73c6"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md links to \u0060/sections/configuration/basic_configuration\u0060, but \u0060sections/configuration/basic_configuration\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"779ec012a9687cf9aeb08c3d62423b947d03a19a5c07af78521c2dfa7827f6c9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md links to \u0060/sections/configuration/layout_and_styling\u0060, but \u0060sections/configuration/layout_and_styling\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"4938b1543878a5b3eadf3bbcbe6632d92ae0aa6dcedd583f02b2104a2e754bd9"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md links to \u0060/sections/components/components_categories\u0060, but \u0060sections/components/components_categories\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"df5cc33c5e5b0a4c8ff59a77eca0aa400e78fd9acba52eb436ea4dab494d402f"}},{"ruleId":"M4","level":"note","message":{"text":"README/code drift: docs/sections/overview/usage.md links to \u0060/sections/configuration/views_customization\u0060, but \u0060sections/configuration/views_customization\u0060 does not exist. Checked without a model against the repository: its files and folders, the scripts and dependencies of every package.json, the projects, namespaces, package references and target frameworks of the .NET build, the SDK and Node pins, and the identifiers of every file that is not a document; the documents\u0027 own text never counts. A footprint generated at build time, read only by a platform, or living outside this repository is not seen, and this row is then wrong."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"docs/sections/overview/usage.md"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3702f8d3d9138dbc5e14d21d1be3a1c94ba19acea7ecf97b2366e216858717e"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060! el || typeof window.flatpickr === \u0027undefined\u0027\u0060 appears character-identically in 2 files \u2014 resources/views/components/form/date-range.blade.php, resources/views/components/form/input-date.blade.php. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/components/form/date-range.blade.php"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8ba6b2763dd65f2736f4f36d951b5d341932678fa3405365ad6d39da7c2c0e"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060isset($this-\u003Esize) \u0026\u0026 in_array($this-\u003Esize, [\u0027sm\u0027, \u0027lg\u0027])\u0060 appears character-identically in 2 files \u2014 src/View/Components/Form/InputGroupComponent.php, src/View/Components/Form/SelectBs.php. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/View/Components/Form/InputGroupComponent.php"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1e2337908a7992ed393623cac491d0366440cf8269902b14b307b3e2358f44"}},{"ruleId":"X10","level":"note","message":{"text":"Duplicated predicate: \u0060typeof v === \u0027string\u0027 \u0026\u0026 v.startsWith(\u0027js:\u0027)\u0060 appears character-identically in 2 files \u2014 resources/views/components/form/date-range.blade.php, resources/views/components/form/input-date.blade.php. It is one line, so the duplication detector\u0027s token window never sees it; the copies drift when only one is corrected. Give the condition a name and one home."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"resources/views/components/form/date-range.blade.php"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b135b3534806e34bd185163e45ab88d3fd3e5150c3f094f04e9700e9114a63b"}},{"ruleId":"X3","level":"warning","message":{"text":"Swallowed exception (caught, then discarded): \u0060catch (\\Throwable)\u0060 takes every exception and records none of it \u2014 the body neither logs it, rethrows it, nor even names it, so the failure is discarded as completely as by an empty catch and only the substituted value survives. Log it through whatever this codebase already uses to report problems, narrow the catch to the exception this call can actually raise, or say in a comment on the catch why the failure genuinely cannot matter."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"src/Assets/AdminLteVersion.php"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f1abf4faebf093d8d3bec88f0da9634e080e53f9d5c3de2502b6588f2a77c0"}},{"ruleId":"X5","level":"note","message":{"text":"PHP static analysis does not check null everywhere: 0/1 of this repository\u0027s PHPStan/Psalm configuration(s) run at a level that checks null \u2014 PHPStan level 8 or above (\u0060max\u0060 included), or Psalm \u0060errorLevel\u0060 3 or below (Psalm\u0027s default, with none stated, is 1). A PHPStan level written neither in the file nor in an include inside the repository is 0, PHPStan\u0027s own default. Below those levels the checker removes \u0060null\u0060 from a union before any rule looks, so \u0060$order-\u003Ecustomer()-\u003Ename()\u0060 on a \u0060?Customer\u0060 passes, and the first null reaching it is an \u0060Error: Call to a member function name() on null\u0060 in production."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"4ee877508ebc333ebff2765634874753d7fd67f71ea749a6c333792a59b461d7"}}],"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-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-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":"Missing Support for Integrity Check","shortDescription":{"text":"Missing Support for Integrity Check"},"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-506","guid":"401d6455-56e3-0552-9a39-f77461673e3f","name":"Embedded Malicious Code","shortDescription":{"text":"Embedded Malicious Code"},"helpUri":"https://cwe.mitre.org/data/definitions/506.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in a Command (\u0027Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an OS Command (\u0027OS Command Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)","shortDescription":{"text":"Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"},"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":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)","shortDescription":{"text":"Improper Neutralization of Special Elements used in an SQL Command (\u0027SQL Injection\u0027)"},"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":"Improper Control of Generation of Code (\u0027Code Injection\u0027)","shortDescription":{"text":"Improper Control of Generation of Code (\u0027Code Injection\u0027)"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]},{"name":"OWASP Top 10","guid":"7d1f0c2e-4b6a-4e39-9a51-0b2e8c3d5f61","version":"2025","organization":"OWASP Foundation","informationUri":"https://top10.owasp.org/2025/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10:2025 web application security risks."},"taxa":[{"id":"A03:2025","guid":"168e227c-7735-2e57-bc6e-997affe644c5","name":"Software Supply Chain Failures","shortDescription":{"text":"Software Supply Chain Failures"},"helpUri":"https://top10.owasp.org/2025/A03_2025-Software_Supply_Chain_Failures/"},{"id":"A05:2025","guid":"87e86033-3231-8458-8e4a-5cb82743553a","name":"Injection","shortDescription":{"text":"Injection"},"helpUri":"https://top10.owasp.org/2025/A05_2025-Injection/"},{"id":"A07:2025","guid":"334ddd78-539d-d35c-83dd-253647eb7eaf","name":"Authentication Failures","shortDescription":{"text":"Authentication Failures"},"helpUri":"https://top10.owasp.org/2025/A07_2025-Authentication_Failures/"},{"id":"A08:2025","guid":"84b0c297-710e-9a5f-9335-936ecb260c36","name":"Software or Data Integrity Failures","shortDescription":{"text":"Software or Data Integrity Failures"},"helpUri":"https://top10.owasp.org/2025/A08_2025-Software_or_Data_Integrity_Failures/"}]},{"name":"OWASP Top 10 CI/CD Security Risks","guid":"3c9b2a6e-5d14-4f7b-8e02-6a1d9c4b7f35","organization":"OWASP Foundation","informationUri":"https://owasp.org/www-project-top-10-ci-cd-security-risks/","isComprehensive":false,"shortDescription":{"text":"The OWASP Top 10 CI/CD Security Risks."},"taxa":[{"id":"CICD-SEC-3","guid":"458c83a6-ebf7-cf55-8cc3-b4d949bbf271","name":"Dependency Chain Abuse","shortDescription":{"text":"Dependency Chain Abuse"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-03-Dependency-Chain-Abuse"},{"id":"CICD-SEC-4","guid":"c859d8ea-8b24-a157-9406-94929c10397a","name":"Poisoned Pipeline Execution (PPE)","shortDescription":{"text":"Poisoned Pipeline Execution (PPE)"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-04-Poisoned-Pipeline-Execution"},{"id":"CICD-SEC-8","guid":"b6b2dacf-a168-4957-876e-a8c73ee00eb0","name":"Ungoverned Usage of 3rd Party Services","shortDescription":{"text":"Ungoverned Usage of 3rd Party Services"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-08-Ungoverned-Usage-of-3rd-Party-Services"},{"id":"CICD-SEC-9","guid":"b3d36727-0395-5b51-94c4-5e173d62eab3","name":"Improper Artifact Integrity Validation","shortDescription":{"text":"Improper Artifact Integrity Validation"},"helpUri":"https://owasp.github.io/www-project-top-10-ci-cd-security-risks/CICD-SEC-09-Improper-Artifact-Integrity-Validation"}]}],"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":27,"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."]}]}