{"$schema":"https://json.schemastore.org/sarif-2.1.0.json","version":"2.1.0","runs":[{"tool":{"driver":{"name":"codehealth","informationUri":"https://codehealth.canine.dev","rules":[{"id":"D1","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D1"},{"id":"D2","name":"Cognitive Complexity","shortDescription":{"text":"Cognitive Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/D2"},{"id":"D3","name":"God Classes","shortDescription":{"text":"God Classes"},"helpUri":"https://codehealth.canine.dev/dimensions/D3"},{"id":"D4","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/D4"},{"id":"D5","name":"Coupling","shortDescription":{"text":"Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D5"},{"id":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D10","name":"Test Quality","shortDescription":{"text":"Test Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D10"},{"id":"D11","name":"Test Reliability","shortDescription":{"text":"Test Reliability"},"helpUri":"https://codehealth.canine.dev/dimensions/D11"},{"id":"D12","name":"Dependency Hygiene","shortDescription":{"text":"Dependency Hygiene"},"helpUri":"https://codehealth.canine.dev/dimensions/D12"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D14","name":"License Compliance","shortDescription":{"text":"License Compliance"},"helpUri":"https://codehealth.canine.dev/dimensions/D14"},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D18","name":"Solution Shape","shortDescription":{"text":"Solution Shape"},"helpUri":"https://codehealth.canine.dev/dimensions/D18"},{"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":"D24","name":"Comment Value","shortDescription":{"text":"Comment Value"},"helpUri":"https://codehealth.canine.dev/dimensions/D24"},{"id":"D26","name":"Project Cohesion","shortDescription":{"text":"Project Cohesion"},"helpUri":"https://codehealth.canine.dev/dimensions/D26"},{"id":"D27","name":"Navigability","shortDescription":{"text":"Navigability"},"helpUri":"https://codehealth.canine.dev/dimensions/D27"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"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"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"}]}},"results":[{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: Features_DependOn_Common: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"edca718b66c81b58f2fcad50793e6d33178720f61e245a0dee01a374c0a544a3"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: Host_DependOn_Features: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe3235d43d0fc89ab4a16b4f356a24d3c0dea78dd6bbd9a143b697f12d72614"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: Common_DependOn_Nothing: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22b341d8a37d77ec11f4bfae0cd37d32a1ba32be9d496d5b4d89156a58d19f8"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: Features_DontDependOn_EachOther: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5274878a6af9c91dd3df6343974a4659679ccc573e9478bb26365cb6b8da8e4"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_Are_CqrsNamed: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c32a5fae3c2542a214dae9f2946d9bd4300aa2be098b2faec9b5345c83c7fcc"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_Have_RequestDto: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"31677b471185b54ae8d19d65ecfe8d5dc4475072268a3aa1555b255267683526"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_HaveResponseDto: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"985666392726cdf6a540e95a2932e5ce425880661ce3a914a0a05b58d4129d35"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: Domain_DependsOn_Nothing: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e104e3644e53257ec818e0ed56028eb2bed3aa22690ab1dbb6baf99bd11e77"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: DomainEntity_Id_IsStrongId: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e0aaf429d7b47c9a8144ef426a0121ab39556bbd6cce0d5d28c6e902b9efeb3"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_Are_Sealed: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"4527388f58fdcb5d062b93e62e53e5196e1527ef1884ae2c9b2e817b517fbc98"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_AreInternal: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"50fbccaeb8fb788944226524e9786ddb93eaadb0cf443fa6b3442619fcd0a834"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_Have_Endpoint: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7232ea6eeed5c3658b98b70c2f5648852c07c8879ebcb2cd84ddd0242d0ddd43"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_HaveChildClass_Request: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8412424a0391720628231dedcb88fd1609037ebbf80165b03cec1195a6218a"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_HaveChildClass_Response: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b6bdee2cf91c96b1fd82e1fe83bd9509808e9806c7a10ec6514343c3d6b257"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCases_Implement_RequestHandler: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"c313672c420debe621091cfc9c5c7b7e547a6057596423ceb3938b112ed64b7a"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCasesRequest_RespondsWith_SiblingResponse: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f0939e2eb03882015482063cf134f19f3bbe0276ec54036832cc199dd96cc4"}},{"ruleId":"D10","level":"note","message":{"text":"No direct assertions: UseCasesHandler_ImplementsFor_ChildDtos: No conventional assertion call was detected, and 17 of 17 tests in \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 read the same way \u2014 so this is treated as that project\u0027s convention rather than a broken test, and it does not drag the score. Two things look like this: verification that happens indirectly (an approval/verifier harness or BDD step methods), or a project of runnable samples compiled as tests, where a run that does not throw is the only check. If it is the latter, these methods genuinely verify nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Architecture.Tests/VerticalSliceArchitectureTests.cs"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"d281ea637108c519e40756597e436faeb5f889994beb96da2210bda9ed0eea2b"}},{"ruleId":"D18","level":"warning","message":{"text":"Build failed: The target solution did not build cleanly (errors: 34), which caps Solution Shape at 3/10 \u2014 the most basic shape signal is that it compiles. First errors: CS1040: Preprocessor directives must appear as the first non-whitespace character on a line; CS1028: Unexpected preprocessor directive."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"24ff41d1fc14d3a19b969001a7e9697d13d34fc0453d84646f56c980eff97f2b"}},{"ruleId":"D18","level":"note","message":{"text":"Thin analysable surface across projects: 1 project(s) carry only a thin slice of real code (e.g. \u0060VerticalSliceArchitectureTemplate.Architecture.Tests\u0060 with 39 significant line(s)). The mean analysable-surface weight is 93 %, lowering Solution Shape by about 0.6 point(s). Consolidate thin projects or grow them into substantial, well-scoped assemblies."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dd0b92fd965c2065080f16843920964ee00f7696ea03d87cdf61aed4cd2c746a"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022Check columns\u0022 \u2014 delete - the if statement is self-evident; only one of these four comments adds value (the diagonal check) and it\u0027s already flagged"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/src/VerticalSliceArchitectureTemplate/Domain/Game.cs"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8699a3ee0f714d0331d3ae232d88002e6444619aab0439bf703c53f98a3945"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022EF Core constructor\u0022 \u2014 delete - the ctor name restates this"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/src/VerticalSliceArchitectureTemplate/Domain/Game.cs"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9220c18b9cd1fa3be2ffa173487ebc3771cef45c253f050b579c4234ce63853"}},{"ruleId":"D24","level":"note","message":{"text":"redundant comment: \u0022X makes a useless move\u0022 \u2014 keep but link to why it\u0027s a bad move (e.g. stalemate, no captures) so readers can decide for themselves"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"template/tests/VerticalSliceArchitectureTemplate.Integration.Tests/Features/Games/PlayTurnCommandTests.cs"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee53f1e40a5a2eb52f3d34bd38333fb256ee92851c86775e710f2e3fc0d27aaf"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"fb267f2ab41c95615bf1fb1864a50cb936c7295ced6b7812fed0fd361697105a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ecead23b2a2e1384d11d9a96dfd51f9346d6291f835524ce90d33b2e165dbb3d"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"36d920e5c19412bea921dacd31ff3eebbf3c029ce52d47f77f6afdec7e5d69be"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"f9626daeec45df9983bf5816404126b37fed59ea986ba31c771203c573dcd3c1"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"81fdb848839a64c73efb4083041a2a2812d6905021f9228ca8d72c2e7cef7590"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c68da1c11231e28be06d41d5bb3ac9c83a08ad268f6c9c9ccadd407a71adb76a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"aaf3e89ec81fea8ee3f787f36dab5e149087619ced1afc836132886218b43e72"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"745773343b18eafeb7bcf8429d13daf5c425bda0277704bc31e7744b52bd2f08"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"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":"232013a63d845603c2a626f52ada8d8ad59691f3c568e940aad78d11f17c4f7b"}},{"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":"c8da92fcc8bb71c5617c4947e5017c9a3ad02922c721ec5792171aaa494988a9"}}],"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":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":11,"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."]}]}